dirigent-integration 0.28.0__tar.gz → 0.30.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/PKG-INFO +11 -6
  2. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/README.md +9 -4
  3. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/pyproject.toml +17 -2
  4. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/pyproject.toml.orig +8 -3
  5. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/fhir/README.md +2 -3
  6. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/LICENSE +0 -0
  7. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/__init__.py +0 -0
  8. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/py.typed +0 -0
  9. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/dhis2-analytics-to-csv-report.yaml +0 -0
  10. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/dhis2-export-to-s3.yaml +0 -0
  11. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/dhis2-metadata-snapshot.yaml +0 -0
  12. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/dhis2-tracker-weekly-window.yaml +0 -0
  13. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/dhis2-values-per-org-unit-to-parquet.yaml +0 -0
  14. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/dhis2-values-to-parquet.yaml +0 -0
  15. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/fhir/dhis2-to-fhir-observations.yaml +0 -0
  16. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/fhir/fhir-capture-bundle-to-data-values.yaml +0 -0
  17. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/fhir/fhir-conceptmap-driven-mapping.yaml +0 -0
  18. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/fhir/fhir-encounter-to-event.yaml +0 -0
  19. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/fhir/fhir-measure-report-to-analytics-check.yaml +0 -0
  20. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/fhir/fhir-nightly-window-sync.yaml +0 -0
  21. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/fhir/fhir-patient-to-tracked-entity.yaml +0 -0
  22. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/fhir/fhir-questionnaire-response-to-data-values.yaml +0 -0
  23. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/fhir/fhir-subscription-to-dhis2.yaml +0 -0
  24. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/inbound/README.md +0 -0
  25. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/inbound/csv-drop-to-data-values.yaml +0 -0
  26. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/inbound/endpoint-payload-to-data-values.yaml +0 -0
  27. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/inbound/fan-out-per-facility-import.yaml +0 -0
  28. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/inbound/fhir-observations-to-data-values.yaml +0 -0
  29. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/inbound/http-json-to-data-values.yaml +0 -0
  30. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/inbound/outside-to-dhis2-with-checks.yaml +0 -0
  31. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/inbound/parquet-lakehouse-to-dhis2.yaml +0 -0
  32. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/inbound/weekly-window-pull-and-import.yaml +0 -0
  33. {dirigent_integration-0.28.0 → dirigent_integration-0.30.0}/src/dirigent_integration/shelves/parquet-to-dhis2-import.yaml +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirigent-integration
3
- Version: 0.28.0
3
+ Version: 0.30.0
4
4
  Summary: The control center for the dirigent plugin ecosystem: assemble every pack, run everyone's tests and examples together.
5
5
  License-Expression: LicenseRef-Proprietary
6
6
  License-File: LICENSE
7
- Requires-Dist: dirigent-plugin==0.28.0
7
+ Requires-Dist: dirigent-plugin==0.30.0
8
8
  Requires-Python: >=3.13
9
9
  Description-Content-Type: text/markdown
10
10
 
@@ -32,8 +32,12 @@ runnable at all.
32
32
  - **`ecosystem.yaml`** -- the manifest: every component and the ref it tracks, the source of
33
33
  truth for what gets assembled. `dirigent` (the runtime monorepo) is `role: runtime`,
34
34
  installed as dependencies and never cloned; each adapter is `role: pack`, cloned and
35
- self-tested here. `dirigent-dhis2` is the first; a future pack becomes real with a single
36
- entry.
35
+ self-tested here. `dirigent-dhis2`, `dirigent-contrib` (Chap and the open climate service)
36
+ and `dirigent-fhir` (one FHIR R4 server) are the three today; a future pack becomes real with
37
+ a single entry. A pack entry may name `pytest_args` for its suite and `examples` for its
38
+ example directories: contrib's and fhir's suites run with `-m "not live"`, leaving out the
39
+ tests that reach a real Chap, climate service or FHIR server, and their shelves under `src/`
40
+ are validated, never run.
37
41
  - **`pyproject.toml`** -- the assembled runtime: every dirigent runtime package plus every
38
42
  pack, wired through `[tool.uv.sources]` as git dependencies on `branch = main`, unpinned, so
39
43
  the integration always assembles the latest ecosystem.
@@ -59,8 +63,9 @@ make test
59
63
  One target, one green or red:
60
64
 
61
65
  1. clone every `role: pack` in `ecosystem.yaml` into `checkouts/` (gitignored), at its ref;
62
- 2. run each pack's own pytest suite against the assembled environment;
63
- 3. validate each pack's own examples against the merged catalog;
66
+ 2. run each pack's own pytest suite against the assembled environment, with the arguments its
67
+ manifest entry names;
68
+ 3. validate each pack's own examples against the merged catalog, connection bodies included;
64
69
  4. validate the cross-boundary examples against the merged catalog;
65
70
  5. run the integration's own tests;
66
71
  6. ask every DHIS2 play demo an example names for its system info, and fail on any that no
@@ -22,8 +22,12 @@ runnable at all.
22
22
  - **`ecosystem.yaml`** -- the manifest: every component and the ref it tracks, the source of
23
23
  truth for what gets assembled. `dirigent` (the runtime monorepo) is `role: runtime`,
24
24
  installed as dependencies and never cloned; each adapter is `role: pack`, cloned and
25
- self-tested here. `dirigent-dhis2` is the first; a future pack becomes real with a single
26
- entry.
25
+ self-tested here. `dirigent-dhis2`, `dirigent-contrib` (Chap and the open climate service)
26
+ and `dirigent-fhir` (one FHIR R4 server) are the three today; a future pack becomes real with
27
+ a single entry. A pack entry may name `pytest_args` for its suite and `examples` for its
28
+ example directories: contrib's and fhir's suites run with `-m "not live"`, leaving out the
29
+ tests that reach a real Chap, climate service or FHIR server, and their shelves under `src/`
30
+ are validated, never run.
27
31
  - **`pyproject.toml`** -- the assembled runtime: every dirigent runtime package plus every
28
32
  pack, wired through `[tool.uv.sources]` as git dependencies on `branch = main`, unpinned, so
29
33
  the integration always assembles the latest ecosystem.
@@ -49,8 +53,9 @@ make test
49
53
  One target, one green or red:
50
54
 
51
55
  1. clone every `role: pack` in `ecosystem.yaml` into `checkouts/` (gitignored), at its ref;
52
- 2. run each pack's own pytest suite against the assembled environment;
53
- 3. validate each pack's own examples against the merged catalog;
56
+ 2. run each pack's own pytest suite against the assembled environment, with the arguments its
57
+ manifest entry names;
58
+ 3. validate each pack's own examples against the merged catalog, connection bodies included;
54
59
  4. validate the cross-boundary examples against the merged catalog;
55
60
  5. run the integration's own tests;
56
61
  6. ask every DHIS2 play demo an example names for its system info, and fail on any that no
@@ -1,12 +1,12 @@
1
1
  [project]
2
2
  name = "dirigent-integration"
3
- version = "0.28.0"
3
+ version = "0.30.0"
4
4
  description = "The control center for the dirigent plugin ecosystem: assemble every pack, run everyone's tests and examples together."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
7
7
  license = "LicenseRef-Proprietary"
8
8
  license-files = ["LICENSE"]
9
- dependencies = ["dirigent-plugin==0.28.0"]
9
+ dependencies = ["dirigent-plugin==0.30.0"]
10
10
 
11
11
  [project.entry-points."dirigent.plugins.v1"]
12
12
  integration = "dirigent_integration:plugin"
@@ -31,6 +31,8 @@ assembly = [
31
31
  "dirigent-client",
32
32
  "dirigent-examples",
33
33
  "dirigent-dhis2",
34
+ "dirigent-contrib",
35
+ "dirigent-fhir",
34
36
  ]
35
37
  dev = [
36
38
  "dirigent-testing",
@@ -138,6 +140,11 @@ git = "https://github.com/winterop-com/dirigent"
138
140
  subdirectory = "packages/dirigent-examples"
139
141
  branch = "main"
140
142
 
143
+ [tool.uv.sources.dirigent-mcp]
144
+ git = "https://github.com/winterop-com/dirigent"
145
+ subdirectory = "packages/dirigent-mcp"
146
+ branch = "main"
147
+
141
148
  [tool.uv.sources.dirigent-testing]
142
149
  git = "https://github.com/winterop-com/dirigent"
143
150
  subdirectory = "packages/dirigent-testing"
@@ -147,6 +154,14 @@ branch = "main"
147
154
  git = "https://github.com/winterop-com/dirigent-dhis2"
148
155
  branch = "main"
149
156
 
157
+ [tool.uv.sources.dirigent-contrib]
158
+ git = "https://github.com/winterop-com/dirigent-contrib"
159
+ branch = "main"
160
+
161
+ [tool.uv.sources.dirigent-fhir]
162
+ git = "https://github.com/winterop-com/dirigent-fhir"
163
+ branch = "main"
164
+
150
165
  [tool.pytest.ini_options]
151
166
  asyncio_mode = "auto"
152
167
  testpaths = ["tests"]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dirigent-integration"
3
- version = "0.28.0"
3
+ version = "0.30.0"
4
4
  description = "The control center for the dirigent plugin ecosystem: assemble every pack, run everyone's tests and examples together."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -10,7 +10,7 @@ license-files = ["LICENSE"]
10
10
  # A published install carries the cross-boundary shelves and nothing else: each document
11
11
  # names the packs it needs under requires, and the Examples screen marks what is missing.
12
12
  dependencies = [
13
- "dirigent-plugin==0.28.0",
13
+ "dirigent-plugin==0.30.0",
14
14
  ]
15
15
 
16
16
  # dirigent-testing is dev-only: the packs' suites import it, and nothing at runtime does,
@@ -38,6 +38,8 @@ assembly = [
38
38
  "dirigent-client",
39
39
  "dirigent-examples",
40
40
  "dirigent-dhis2",
41
+ "dirigent-contrib",
42
+ "dirigent-fhir",
41
43
  ]
42
44
  dev = [
43
45
  "dirigent-testing",
@@ -51,7 +53,7 @@ dev = [
51
53
 
52
54
  # All component packages ride their tracked branch, unpinned: the integration always assembles
53
55
  # the latest ecosystem. The dirigent runtime packages come from the monorepo by subdirectory;
54
- # dirigent-dhis2 comes from its own repository.
56
+ # dirigent-dhis2, dirigent-contrib and dirigent-fhir come from their own repositories.
55
57
  [tool.uv]
56
58
  default-groups = ["dev", "assembly"]
57
59
 
@@ -74,8 +76,11 @@ dirigent-plugin = { git = "https://github.com/winterop-com/dirigent", subdirecto
74
76
  dirigent-common = { git = "https://github.com/winterop-com/dirigent", subdirectory = "packages/dirigent-common", branch = "main" }
75
77
  dirigent-client = { git = "https://github.com/winterop-com/dirigent", subdirectory = "packages/dirigent-client", branch = "main" }
76
78
  dirigent-examples = { git = "https://github.com/winterop-com/dirigent", subdirectory = "packages/dirigent-examples", branch = "main" }
79
+ dirigent-mcp = { git = "https://github.com/winterop-com/dirigent", subdirectory = "packages/dirigent-mcp", branch = "main" }
77
80
  dirigent-testing = { git = "https://github.com/winterop-com/dirigent", subdirectory = "packages/dirigent-testing", branch = "main" }
78
81
  dirigent-dhis2 = { git = "https://github.com/winterop-com/dirigent-dhis2", branch = "main" }
82
+ dirigent-contrib = { git = "https://github.com/winterop-com/dirigent-contrib", branch = "main" }
83
+ dirigent-fhir = { git = "https://github.com/winterop-com/dirigent-fhir", branch = "main" }
79
84
 
80
85
  # The control center is itself a distribution: it registers one plugin whose only
81
86
  # contribution is the cross-boundary shelves the module carries.
@@ -6,9 +6,8 @@ validate blocks from the runtime, and neither knows the other exists -- only an
6
6
  environment runs any of these at all.
7
7
 
8
8
  Most of them read a `d2w fhir serve` facade, which publishes one DHIS2 instance as a FHIR
9
- endpoint and takes captures back. Two are running on this machine at `http://localhost:8095`
10
- and `http://localhost:8096`; `fhir_base` defaults to the first, so every read below works
11
- against a real server. Where a general-purpose FHIR server is the point -- an Encounter, an
9
+ endpoint and takes captures back. Their `fhir-facade` connection points at one on
10
+ `http://localhost:8095`, so start a facade there, or repoint the connection, before a run. Where a general-purpose FHIR server is the point -- an Encounter, an
12
11
  Observation, a Subscription, a `_lastUpdated` search, none of which the facade serves -- the
13
12
  default is the public HAPI R4 sandbox at `https://hapi.fhir.org/baseR4` instead, and the
14
13
  document's header says why.