dominus-sdk-python 9.0.4__tar.gz → 9.0.5__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 (80) hide show
  1. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/PKG-INFO +2 -2
  2. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/README.md +1 -1
  3. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/__init__.py +1 -1
  4. dominus_sdk_python-9.0.5/dominus/contract/__init__.py +10 -0
  5. dominus_sdk_python-9.0.5/dominus/contract/envelope.py +23 -0
  6. dominus_sdk_python-9.0.5/dominus/contract/projections.py +22 -0
  7. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus_sdk_python.egg-info/PKG-INFO +2 -2
  8. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus_sdk_python.egg-info/SOURCES.txt +4 -0
  9. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/pyproject.toml +1 -1
  10. dominus_sdk_python-9.0.5/tests/test_contract.py +70 -0
  11. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/config/__init__.py +0 -0
  12. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/config/endpoints.py +0 -0
  13. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/errors.py +0 -0
  14. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/helpers/__init__.py +0 -0
  15. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/helpers/auth.py +0 -0
  16. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/helpers/cache.py +0 -0
  17. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/helpers/console_capture.py +0 -0
  18. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/helpers/core.py +0 -0
  19. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/helpers/crypto.py +0 -0
  20. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/helpers/sse.py +0 -0
  21. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/helpers/trace.py +0 -0
  22. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/__init__.py +0 -0
  23. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/admin.py +0 -0
  24. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/ai.py +0 -0
  25. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/artifacts.py +0 -0
  26. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/auth.py +0 -0
  27. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/authority.py +0 -0
  28. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/browser.py +0 -0
  29. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/coder.py +0 -0
  30. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/courier.py +0 -0
  31. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/db.py +0 -0
  32. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/ddl.py +0 -0
  33. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/deployer.py +0 -0
  34. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/fastapi.py +0 -0
  35. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/files.py +0 -0
  36. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/health.py +0 -0
  37. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/jobs.py +0 -0
  38. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/logs.py +0 -0
  39. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/platform.py +0 -0
  40. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/portal.py +0 -0
  41. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/processor.py +0 -0
  42. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/publisher.py +0 -0
  43. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/recipes.py +0 -0
  44. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/redis.py +0 -0
  45. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/secrets.py +0 -0
  46. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/secure.py +0 -0
  47. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/stash.py +0 -0
  48. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/sync.py +0 -0
  49. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/warden.py +0 -0
  50. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/namespaces/workflow.py +0 -0
  51. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/py.typed +0 -0
  52. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/services/__init__.py +0 -0
  53. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus/start.py +0 -0
  54. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus_sdk_python.egg-info/dependency_links.txt +0 -0
  55. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus_sdk_python.egg-info/requires.txt +0 -0
  56. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/dominus_sdk_python.egg-info/top_level.txt +0 -0
  57. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/setup.cfg +0 -0
  58. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_auth.py +0 -0
  59. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_authority_public_vocabulary.py +0 -0
  60. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_browser_namespace.py +0 -0
  61. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_control_plane_namespaces.py +0 -0
  62. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_error_recovery_action.py +0 -0
  63. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_errors.py +0 -0
  64. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_flat_commands.py +0 -0
  65. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_health.py +0 -0
  66. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_logs.py +0 -0
  67. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_namespace_barrel_exports.py +0 -0
  68. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_platform_coder_namespaces.py +0 -0
  69. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_provisioning_parity.py +0 -0
  70. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_public_exports.py +0 -0
  71. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_publisher_namespace.py +0 -0
  72. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_readme_quickstart_catalog.py +0 -0
  73. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_recipes_namespace.py +0 -0
  74. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_recipes_stash_routing.py +0 -0
  75. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_secrets_presence_contract.py +0 -0
  76. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_stash_artifact_facade.py +0 -0
  77. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_stash_tables_namespace.py +0 -0
  78. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_transport_compat.py +0 -0
  79. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_workflow_lifecycle.py +0 -0
  80. {dominus_sdk_python-9.0.4 → dominus_sdk_python-9.0.5}/tests/test_workflow_refs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dominus-sdk-python
3
- Version: 9.0.4
3
+ Version: 9.0.5
4
4
  Summary: Python SDK for the Dominus gateway-first platform
5
5
  Author-email: CareBridge Systems <dev@carebridge.io>
6
6
  License-Expression: LicenseRef-Proprietary
@@ -48,7 +48,7 @@ cleanup audit is `docs/janitor/2026-08-04-sdk-python-cleanup-audit.md`.
48
48
  - Gateway-scoped client mode for MCP and other user-JWT sessions
49
49
  - Transport compatibility for wrapped `{success,data}` responses and unwrapped Warden/control-plane success objects
50
50
  - Local helpers for JWT verification, trace propagation, retries, and console capture
51
- - Current package version: `9.0.4`
51
+ - Current package version: `9.0.5`
52
52
 
53
53
  ## Install
54
54
 
@@ -15,7 +15,7 @@ cleanup audit is `docs/janitor/2026-08-04-sdk-python-cleanup-audit.md`.
15
15
  - Gateway-scoped client mode for MCP and other user-JWT sessions
16
16
  - Transport compatibility for wrapped `{success,data}` responses and unwrapped Warden/control-plane success objects
17
17
  - Local helpers for JWT verification, trace propagation, retries, and console capture
18
- - Current package version: `9.0.4`
18
+ - Current package version: `9.0.5`
19
19
 
20
20
  ## Install
21
21
 
@@ -178,7 +178,7 @@ from .errors import (
178
178
  TimeoutError as DominusTimeoutError,
179
179
  )
180
180
 
181
- __version__ = "9.0.4"
181
+ __version__ = "9.0.5"
182
182
  __all__ = [
183
183
  # Main SDK instance
184
184
  "dominus",
@@ -0,0 +1,10 @@
1
+ """Python SDK contract module (S-4.8): envelope + projection helpers."""
2
+ from .envelope import python_envelope, python_raise_for_status
3
+ from .projections import Projections, python_projections
4
+
5
+ __all__ = [
6
+ "Projections",
7
+ "python_envelope",
8
+ "python_projections",
9
+ "python_raise_for_status",
10
+ ]
@@ -0,0 +1,23 @@
1
+ """Surface-adapter view of the canonical error envelope.
2
+
3
+ Wraps existing ``DominusError.to_dict()`` / ``raise_for_status`` — no
4
+ wire-shape change. Existing call sites stay on those APIs directly.
5
+ """
6
+ from __future__ import annotations
7
+
8
+ from typing import Any, Dict, Optional
9
+
10
+ from dominus.errors import DominusError, raise_for_status
11
+
12
+
13
+ def python_envelope(error: DominusError) -> Dict[str, Any]:
14
+ return error.to_dict()
15
+
16
+
17
+ def python_raise_for_status(
18
+ status_code: int,
19
+ message: str,
20
+ details: Optional[Dict[str, Any]] = None,
21
+ endpoint: Optional[str] = None,
22
+ ) -> None:
23
+ raise_for_status(status_code, message, details, endpoint)
@@ -0,0 +1,22 @@
1
+ """Typed passthrough builder for per-surface name projections (ADR-0009).
2
+
3
+ This SDK has no projection catalog; the helper accepts a projections
4
+ object and returns it unchanged.
5
+ """
6
+ from __future__ import annotations
7
+
8
+ from typing import TypedDict
9
+
10
+
11
+ class Projections(TypedDict, total=False):
12
+ gateway_path: str
13
+ sdk_python: str
14
+ sdk_nodejs: str
15
+ error_code_prefix: str
16
+ log_event_name: str
17
+ timeline_event_type: str
18
+ deploy_class: str
19
+
20
+
21
+ def python_projections(projections: Projections) -> Projections:
22
+ return projections
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dominus-sdk-python
3
- Version: 9.0.4
3
+ Version: 9.0.5
4
4
  Summary: Python SDK for the Dominus gateway-first platform
5
5
  Author-email: CareBridge Systems <dev@carebridge.io>
6
6
  License-Expression: LicenseRef-Proprietary
@@ -48,7 +48,7 @@ cleanup audit is `docs/janitor/2026-08-04-sdk-python-cleanup-audit.md`.
48
48
  - Gateway-scoped client mode for MCP and other user-JWT sessions
49
49
  - Transport compatibility for wrapped `{success,data}` responses and unwrapped Warden/control-plane success objects
50
50
  - Local helpers for JWT verification, trace propagation, retries, and console capture
51
- - Current package version: `9.0.4`
51
+ - Current package version: `9.0.5`
52
52
 
53
53
  ## Install
54
54
 
@@ -6,6 +6,9 @@ dominus/py.typed
6
6
  dominus/start.py
7
7
  dominus/config/__init__.py
8
8
  dominus/config/endpoints.py
9
+ dominus/contract/__init__.py
10
+ dominus/contract/envelope.py
11
+ dominus/contract/projections.py
9
12
  dominus/helpers/__init__.py
10
13
  dominus/helpers/auth.py
11
14
  dominus/helpers/cache.py
@@ -52,6 +55,7 @@ dominus_sdk_python.egg-info/top_level.txt
52
55
  tests/test_auth.py
53
56
  tests/test_authority_public_vocabulary.py
54
57
  tests/test_browser_namespace.py
58
+ tests/test_contract.py
55
59
  tests/test_control_plane_namespaces.py
56
60
  tests/test_error_recovery_action.py
57
61
  tests/test_errors.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "dominus-sdk-python"
7
- version = "9.0.4"
7
+ version = "9.0.5"
8
8
  description = "Python SDK for the Dominus gateway-first platform"
9
9
  readme = "README.md"
10
10
  license = "LicenseRef-Proprietary"
@@ -0,0 +1,70 @@
1
+ from dominus.errors import DominusError, raise_for_status
2
+ from dominus.contract import python_envelope, python_projections, python_raise_for_status
3
+
4
+
5
+ def test_python_envelope_wraps_to_dict_without_changing_wire_shape():
6
+ error = DominusError(
7
+ "Missing resource",
8
+ status_code=404,
9
+ details={
10
+ "code": "authority.resource.not_found",
11
+ "kind": "not_found",
12
+ "request_id": "req-python-contract-1",
13
+ "correlation_id": "corr-python-contract-1",
14
+ },
15
+ endpoint="/svc/authority/runs/status",
16
+ )
17
+
18
+ from_class = error.to_dict()
19
+ from_contract = python_envelope(error)
20
+
21
+ assert from_contract == from_class
22
+ assert from_contract["kind"] == "not_found"
23
+ assert from_contract["code"] == "authority.resource.not_found"
24
+ assert from_contract["request_id"] == "req-python-contract-1"
25
+ assert from_contract["http_status"] == 404
26
+ assert from_contract["envelope_version"] == "1"
27
+
28
+
29
+ def test_python_raise_for_status_wraps_existing_raise_for_status():
30
+ try:
31
+ python_raise_for_status(
32
+ 401,
33
+ "bad token",
34
+ {"kind": "unauthorized", "code": "kernel.auth.token_invalid"},
35
+ )
36
+ except DominusError as error:
37
+ assert error.kind == "unauthorized"
38
+ assert python_envelope(error) == error.to_dict()
39
+ else:
40
+ raise AssertionError("python_raise_for_status should raise DominusError")
41
+
42
+
43
+ def test_python_raise_for_status_matches_raise_for_status_class():
44
+ raised = None
45
+ wrapped = None
46
+ try:
47
+ raise_for_status(404, "gone")
48
+ except DominusError as error:
49
+ raised = type(error)
50
+ try:
51
+ python_raise_for_status(404, "gone")
52
+ except DominusError as error:
53
+ wrapped = type(error)
54
+ assert raised is not None and raised is wrapped
55
+
56
+
57
+ def test_python_projections_is_typed_passthrough_builder():
58
+ incoming = {
59
+ "gateway_path": "/svc/authority/runs/ensure",
60
+ "sdk_python": "dominus.workflow.ensure",
61
+ "sdk_nodejs": "dominus.workflow.ensure",
62
+ "error_code_prefix": "authority.",
63
+ "log_event_name": "authority.run.ensure",
64
+ "timeline_event_type": "authority.run.ensured",
65
+ "deploy_class": "worker_ga",
66
+ }
67
+
68
+ out = python_projections(incoming)
69
+ assert out is incoming
70
+ assert out == incoming