domain-errors 0.2.0__tar.gz → 0.2.1__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.
- {domain_errors-0.2.0 → domain_errors-0.2.1}/CHANGELOG.md +6 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/PKG-INFO +3 -1
- {domain_errors-0.2.0 → domain_errors-0.2.1}/README.md +2 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/config/_version.py +1 -1
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/decorators/wrap_errors/wrap_errors_client.py +2 -16
- {domain_errors-0.2.0 → domain_errors-0.2.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/.github/workflows/ci.yml +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/.github/workflows/cleanup-guard.yml +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/.github/workflows/dto-strict.yml +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/.github/workflows/no-ai-attribution.yml +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/.github/workflows/publish.yml +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/.github/workflows/ruff.yml +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/.gitignore +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/CODE_OF_CONDUCT.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/CONTRIBUTING.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/LICENSE +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/SECURITY.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/apps/chain.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/apps/cloud.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/apps/diagrams.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/apps/domain_error.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/apps/http.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/apps/python.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/apps/wrap_errors.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/architecture/.gitkeep +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/audits/.gitkeep +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/audits/2026-06-13-chain-security-audit.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/audits/2026-06-13-domain_error-security-audit.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/audits/2026-06-14-cloud-security-audit.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/audits/2026-06-14-http-security-audit.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/audits/2026-06-14-python-security-audit.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/audits/2026-06-14-wrap_errors-security-audit.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/reviews/.gitkeep +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/reviews/2026-06-13-chain-review.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/reviews/2026-06-13-domain_error-review.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/reviews/2026-06-14-cloud-review.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/reviews/2026-06-14-http-review.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/reviews/2026-06-14-python-review.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/docs/reviews/2026-06-14-wrap_errors-review.md +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/common/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/common/constants/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/common/constants/tests.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/common/tests/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/config/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/decorators/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/decorators/tests/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/decorators/tests/test_wrap_errors/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/decorators/tests/test_wrap_errors/conftest.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/decorators/tests/test_wrap_errors/test_wrap_errors_client.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/decorators/wrap_errors/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/cloud/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/cloud/cloud_client.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/constants/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/constants/cloud.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/constants/domain_error.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/constants/http.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/constants/python.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/domain_error/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/domain_error/domain_error.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/http/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/http/http_client.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/python/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/python/python_client.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_cloud/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_cloud/conftest.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_cloud/test_cloud_client.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_domain_error/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_domain_error/conftest.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_domain_error/test_domain_error.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_http/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_http/conftest.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_http/test_http_client.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_python/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_python/conftest.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_python/test_python_client.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/py.typed +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/services/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/services/chain/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/services/chain/chain_client.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/services/chain/chain_objects.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/services/constants/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/services/constants/chain.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/services/constants/services.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/services/tests/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/services/tests/test_chain/__init__.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/services/tests/test_chain/conftest.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/services/tests/test_chain/test_chain_client.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/services/tests/test_chain/test_chain_objects.py +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/pyproject.toml +0 -0
- {domain_errors-0.2.0 → domain_errors-0.2.1}/uv.lock +0 -0
|
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.1] - 2026-07-11
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Final pointer release: this package is consolidated into `domain-suite` (import roots unchanged there). This distribution remains installable but receives no further releases.
|
|
15
|
+
|
|
10
16
|
## [0.2.0] - 2026-07-06
|
|
11
17
|
|
|
12
18
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: domain-errors
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Typed domain error hierarchy with wrapping and chaining for Python services
|
|
5
5
|
Project-URL: Homepage, https://pypi.org/project/domain-errors/
|
|
6
6
|
Project-URL: Repository, https://github.com/jekhator/domain-errors
|
|
@@ -20,6 +20,8 @@ Classifier: Typing :: Typed
|
|
|
20
20
|
Requires-Python: >=3.11
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
|
|
23
|
+
> **This package is consolidated into [domain-suite](https://github.com/jekhator/domain-suite) (PyPI: `domain-suite`).** Import roots are unchanged there; this repository is frozen for new features and receives pointer releases only.
|
|
24
|
+
|
|
23
25
|
# domain-errors
|
|
24
26
|
|
|
25
27
|
[](https://pypi.org/project/domain-errors/)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
> **This package is consolidated into [domain-suite](https://github.com/jekhator/domain-suite) (PyPI: `domain-suite`).** Import roots are unchanged there; this repository is frozen for new features and receives pointer releases only.
|
|
2
|
+
|
|
1
3
|
# domain-errors
|
|
2
4
|
|
|
3
5
|
[](https://pypi.org/project/domain-errors/)
|
|
@@ -39,13 +39,7 @@ class WrapErrorsClient:
|
|
|
39
39
|
return cls(as_=as_, catch=catch, message=message, capture=capture)
|
|
40
40
|
|
|
41
41
|
def __call__(self, target: Any) -> Any:
|
|
42
|
-
"""Wrap target (callable or class)
|
|
43
|
-
|
|
44
|
-
On a callable: applies the decorator directly (sync + async support).
|
|
45
|
-
On a class: fans out over public callables, preserving sync/async dispatch.
|
|
46
|
-
DomainError instances pass through unchanged.
|
|
47
|
-
Raises TypeError if target is neither class nor callable.
|
|
48
|
-
"""
|
|
42
|
+
"""Wrap target (callable or class) into DomainError, fanning out over public methods on classes."""
|
|
49
43
|
if inspect.isclass(target):
|
|
50
44
|
return self._decorate_class(target)
|
|
51
45
|
if callable(target):
|
|
@@ -88,15 +82,7 @@ class WrapErrorsClient:
|
|
|
88
82
|
return wrapper
|
|
89
83
|
|
|
90
84
|
def _decorate_class(self, cls: type[Any]) -> type[Any]:
|
|
91
|
-
"""Fan out @wrap_errors over all public callables
|
|
92
|
-
|
|
93
|
-
Rules:
|
|
94
|
-
- Only callables in cls.__dict__ (not inherited)
|
|
95
|
-
- Skip: _-prefixed, dunders, properties, nested classes
|
|
96
|
-
- Preserve: classmethod/staticmethod via unwrap/rewrap
|
|
97
|
-
- Override: methods already marked with WRAP_ERRORS_MARKER are left untouched
|
|
98
|
-
- Config: catch, as_, message, capture applied uniformly to each method
|
|
99
|
-
"""
|
|
85
|
+
"""Fan out @wrap_errors over all public callables, skipping private/dunder/property/nested."""
|
|
100
86
|
for name, method in list(cls.__dict__.items()):
|
|
101
87
|
if name.startswith("_"):
|
|
102
88
|
continue
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{domain_errors-0.2.0 → domain_errors-0.2.1}/docs/audits/2026-06-13-domain_error-security-audit.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{domain_errors-0.2.0 → domain_errors-0.2.1}/docs/audits/2026-06-14-wrap_errors-security-audit.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/decorators/wrap_errors/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/domain_error/domain_error.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_cloud/__init__.py
RENAMED
|
File without changes
|
{domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_cloud/conftest.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_http/__init__.py
RENAMED
|
File without changes
|
{domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_http/conftest.py
RENAMED
|
File without changes
|
|
File without changes
|
{domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_python/__init__.py
RENAMED
|
File without changes
|
{domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/domains/tests/test_python/conftest.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/services/tests/test_chain/__init__.py
RENAMED
|
File without changes
|
{domain_errors-0.2.0 → domain_errors-0.2.1}/domain_errors/services/tests/test_chain/conftest.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|