Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
9ef20fc
feat: Models the core contract needs
Oct 2, 2026
771d48a
Feat: Protocols and Exceptions added for the core contract
Oct 2, 2026
5fe30c2
Feat: Private protocols for the BatchBackend
Oct 2, 2026
89d0bc9
feat: a fake backend to run unit tests against
Oct 6, 2026
af4c436
fix: some code cleanup in the helper functions
Oct 6, 2026
99f82ae
feat: setup for the unit test suite
Oct 6, 2026
e041acf
chore: style fix
Oct 6, 2026
d287307
chore: styling, unit test fixture
Oct 6, 2026
e830545
chore: single letter var `h` refering to hanlde changed to `handle`
Oct 6, 2026
be1e998
fix: unused parameter in `test_injected_failure_is_reported_per_job()…
Oct 6, 2026
2aeb589
chore: Making room in local fork for my documentation so i can easily…
Oct 7, 2026
5024ce9
fix: placed in the wrong folder :/
Oct 7, 2026
2c32012
chore: added testplan
Oct 7, 2026
3bf4210
feat: Models the core contract needs
Oct 2, 2026
0a6a9e1
Feat: Protocols and Exceptions added for the core contract
Oct 2, 2026
36cf7df
Feat: Private protocols for the BatchBackend
Oct 2, 2026
357050e
feat: a fake backend to run unit tests against
Oct 6, 2026
56bce86
fix: some code cleanup in the helper functions
Oct 6, 2026
5923545
feat: setup for the unit test suite
Oct 6, 2026
1f92acf
chore: style fix
Oct 6, 2026
f7cf50c
chore: styling, unit test fixture
Oct 6, 2026
bab3989
chore: single letter var `h` refering to hanlde changed to `handle`
Oct 6, 2026
eb3c644
fix: unused parameter in `test_injected_failure_is_reported_per_job()…
Oct 6, 2026
f727cbb
Merge branch 'feat/core-contract' of github.com:Alexander-Auer/interc…
Oct 7, 2026
feaf5e7
fix: made the OutputSpec optional as it is not suppoerted by all and …
Oct 7, 2026
46fd1a3
Feat: Core contract issue #16 (#1)
Alexander-Auer Oct 7, 2026
42dce34
fix: These documents should not exist in this way in the main repository
Oct 7, 2026
d67d380
fix: None check for the outputs in submissionspec
Oct 7, 2026
910b0b0
chore: trailing white spaces
Oct 7, 2026
a9fcca0
chore: fixed pre commit locally
Oct 7, 2026
74c40a7
chore: removed pdf, as they just take up space and no one will use th…
Oct 9, 2026
5cb1ee3
fix: JobHandle key is now a combination of the handle's fields instea…
Oct 19, 2026
b6af530
Merge branch 'main' into feat/core-contract
Alexander-Auer Oct 19, 2026
f90cdd4
feat: backend configuration and a closed registry
Alexander-Auer Oct 19, 2026
ceed1df
Merge branch 'main' into feat/core-contract
Alexander-Auer Oct 23, 2026
d310fe8
test: trim the unit tests to logical cases that can happen
Oct 23, 2026
529fa75
Merge branch 'feat/core-contract' into stack/registry
Oct 23, 2026
5d94d0f
test: trim the registry and configuration tests to logical cases
Oct 23, 2026
a644ce6
docs: follow the Diátaxis structure for the user documentation
Oct 23, 2026
b6e172f
fix: address the review of the core contract
Oct 23, 2026
bc5619e
Merge branch 'feat/core-contract' into stack/registry
Oct 23, 2026
7391fbe
fix: no references to the ADRs in the registry and configuration
Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,4 @@ repos:
hooks:
- id: mypy
exclude: tests
additional_dependencies: ["pydantic>=2.0.0"]
2 changes: 1 addition & 1 deletion docs/dev/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ DiracX projects:
- [Reference](reference/index.md): technical details
- [Explanations](explanations/index.md): why things are done this way

User documentation (`docs/user/`) will come once the library has a public API.
For code that uses interCEde, see the [user documentation](../user/index.md).
13 changes: 13 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# interCEde

Unified interfaces to Computing Elements and batch systems for DIRAC / DiracX.

A consumer submits and monitors jobs through one set of protocols, whatever the resource behind
them. interCEde is stateless: it never changes a job on its own, and the consumer stores the job
handles it gets back.

- [User documentation](user/index.md): for code that uses interCEde, such as DiracX. Start with
the [API reference](user/reference/api.md): the protocols, data types and exceptions a consumer
may import.
- [Developer documentation](dev/index.md): for working on interCEde itself, including the
integration test stacks.
8 changes: 8 additions & 0 deletions docs/user/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# User documentation

For code that uses interCEde, such as DiracX. Organised following [Diátaxis](https://diataxis.fr/),
like the developer documentation:

- [Reference](reference/index.md): the public API

Tutorials, how-to guides and explanations will follow as the backends land.
24 changes: 24 additions & 0 deletions docs/user/reference/api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# API reference

Everything listed here is importable from `intercede` and follows SemVer.
Anything else, including every name starting with `_`, is internal.

## Protocols

::: intercede.protocols

## Data types

::: intercede.models

## Configuration

::: intercede.config

## Registry

::: intercede.registry

## Exceptions

::: intercede.exceptions
3 changes: 3 additions & 0 deletions docs/user/reference/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Reference

- [API reference](api.md): the protocols, data types and exceptions a consumer may import
25 changes: 25 additions & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
site_name: interCEde
site_description: Unified interfaces to Computing Elements and batch systems for DIRAC / DiracX
repo_url: https://github.com/DIRACGrid/intercede

theme:
name: material
logo: assets/intercede-icon.svg
favicon: assets/intercede-icon.svg

plugins:
- search
- mkdocstrings:
handlers:
python:
paths: [src]
options:
show_source: false
members_order: source
merge_init_into_class: true

validation:
links:
# The developer docs link to repository files outside docs/ (e.g. renovate.json),
# which resolve on GitHub but not in the built site.
not_found: info
22 changes: 18 additions & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@ requires-python = ">=3.11"
keywords = []
license = { text = "GPL-3.0-only" }
dynamic = ["version"]
dependencies = []
dependencies = [
"pydantic>=2"
]
classifiers = [
"Intended Audience :: Science/Research",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
Expand All @@ -40,9 +42,6 @@ testing = [
"ty",
]

[tool.setuptools.packages.find]
where = ["src"]

[tool.pytest.ini_options]
pythonpath = ["src"]
testpaths = ["tests"]
Expand All @@ -60,6 +59,10 @@ markers = [
"destructive_fetch: asserts one-shot/destructive output-retrieval semantics",
]

[tool.mypy]
strict = true
plugins = ["pydantic.mypy"]
files = ["src"]

[tool.ruff]
src = ["src", "tests"]
Expand Down Expand Up @@ -122,6 +125,7 @@ py311 = { features = ["testing", "py311"] }
py312 = { features = ["testing", "py312"] }
py313 = { features = ["testing", "py313"] }
py314 = { features = ["testing", "py314"] }
docs = { features = ["docs"], solve-group = "default" }

[tool.pixi.feature.testing.pypi-dependencies]
intercede = { path = ".", editable = true }
Expand All @@ -134,6 +138,16 @@ pre-commit = "*"
pre-commit = { cmd = "pre-commit", description = "Run pre-commit" }


# Features for building the documentation
[tool.pixi.feature.docs.pypi-dependencies]
intercede = { path = ".", editable = true }
mkdocs = "<2"
mkdocs-material = "*"
mkdocstrings = { version = "*", extras = ["python"] }
[tool.pixi.feature.docs.tasks]
docs = { cmd = "mkdocs build --strict", description = "Build the documentation" }


[tool.pixi.tasks]
unit-test = { cmd = "pytest -v", description = "Run the unit tests" }

Expand Down
79 changes: 76 additions & 3 deletions src/intercede/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,83 @@
from importlib.metadata import PackageNotFoundError
from importlib.metadata import version as get_version

from intercede import registry
from intercede.config import BackendConfig
from intercede.exceptions import (
AuthenticationError,
ConfigurationError,
InterCEdeError,
RegistryError,
ResourceUnavailableError,
SpecificationRejectedError,
)
from intercede.models import (
ContainerSpec,
CopyVars,
Diagnostics,
FileRef,
JobHandle,
JobID,
JobOutput,
JobStatus,
OpOutcome,
OutputMember,
OutputSpec,
Resources,
StatusMap,
Submission,
SubmissionSpec,
)
from intercede.protocols import (
Diagnosable,
JobBackend,
Killable,
OutputRetriever,
Purgeable,
StatusReporter,
Submitter,
)

try:
__version__ = get_version(__name__)
version = __version__
except PackageNotFoundError:
version = "Unknown"
__version__ = "unknown"
version = __version__

__all__ = ["__version__"]
__all__ = [
"__version__",
"registry",
# protocols
"Diagnosable",
"JobBackend",
"Killable",
"OutputRetriever",
"Purgeable",
"StatusReporter",
"Submitter",
# data types
"ContainerSpec",
"CopyVars",
"Diagnostics",
"FileRef",
"JobHandle",
"JobID",
"JobOutput",
"JobStatus",
"OpOutcome",
"OutputMember",
"OutputSpec",
"Resources",
"StatusMap",
"Submission",
"SubmissionSpec",
# configuration
"BackendConfig",
# exceptions
"AuthenticationError",
"ConfigurationError",
"InterCEdeError",
"RegistryError",
"ResourceUnavailableError",
"SpecificationRejectedError",
]
1 change: 1 addition & 0 deletions src/intercede/_backends/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Internal backend implementations. Nothing here is public API."""
1 change: 1 addition & 0 deletions src/intercede/_backends/batch/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""The composed backend: a transport combined with a scheduler."""
Loading
Loading