effecton 0.3.0__tar.gz → 0.3.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.
Files changed (42) hide show
  1. {effecton-0.3.0 → effecton-0.3.1}/.gitignore +5 -0
  2. {effecton-0.3.0 → effecton-0.3.1}/CHANGELOG.md +7 -0
  3. effecton-0.3.1/PKG-INFO +43 -0
  4. effecton-0.3.1/README.md +25 -0
  5. {effecton-0.3.0 → effecton-0.3.1}/pyproject.toml +1 -1
  6. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/__init__.py +4 -0
  7. effecton-0.3.1/src/effecton/std/cli.py +658 -0
  8. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/process.py +18 -6
  9. effecton-0.3.1/src/effecton/std/schema.py +816 -0
  10. effecton-0.3.0/PKG-INFO +0 -714
  11. effecton-0.3.0/README.md +0 -696
  12. {effecton-0.3.0 → effecton-0.3.1}/LICENSE +0 -0
  13. {effecton-0.3.0 → effecton-0.3.1}/conftest.py +0 -0
  14. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/attempt.py +0 -0
  15. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/catch.py +0 -0
  16. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/effect.py +0 -0
  17. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/exit.py +0 -0
  18. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/gen.py +0 -0
  19. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/implicit_requirement.py +0 -0
  20. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/provide.py +0 -0
  21. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/py.typed +0 -0
  22. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/pytest_plugin.py +0 -0
  23. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/run_async.py +0 -0
  24. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/run_main.py +0 -0
  25. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/run_sync.py +0 -0
  26. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/__init__.py +0 -0
  27. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/clock.py +0 -0
  28. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/duration.py +0 -0
  29. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/fiber.py +0 -0
  30. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/file_system.py +0 -0
  31. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/http_client.py +0 -0
  32. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/logger.py +0 -0
  33. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/path.py +0 -0
  34. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/pretty_logger.py +0 -0
  35. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/race.py +0 -0
  36. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/random.py +0 -0
  37. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/retry.py +0 -0
  38. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/schedule.py +0 -0
  39. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/scope.py +0 -0
  40. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/timeout.py +0 -0
  41. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/std/tracer.py +0 -0
  42. {effecton-0.3.0 → effecton-0.3.1}/src/effecton/suspend.py +0 -0
@@ -19,3 +19,8 @@ docs/.vocs
19
19
  docs/src/pages.gen.ts
20
20
  # Generated by `uv run api-reference` (docs predev/prebuild)
21
21
  docs/src/pages/api.md
22
+
23
+ # Agent working artifacts: implementation plans and SDD ledgers stay local.
24
+ # Design specs are committed under docs/specs instead (see AGENTS.md).
25
+ docs/superpowers/
26
+ .superpowers/
@@ -1,5 +1,12 @@
1
1
  # effecton
2
2
 
3
+ ## 0.3.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Add E.Schema: two-way schemas with Struct classes, combinators, guarded transforms (`to=`, `S.instance_of`) and `Check` refinements applied with `schema.check(...)`, whose decode and encode fail with a ParseError listing every issue ([#32](https://github.com/krzkaczor/effecton/pull/32))
8
+ - Add E.Cli: annotated Args classes decoded through E.Schema, nested commands, --help, --version and a UsageError carrying the reason; add E.Process.argv() ([#34](https://github.com/krzkaczor/effecton/pull/34))
9
+
3
10
  ## 0.3.0
4
11
 
5
12
  ### Minor Changes
@@ -0,0 +1,43 @@
1
+ Metadata-Version: 2.5
2
+ Name: effecton
3
+ Version: 0.3.1
4
+ Summary: A typed effect system for Python, inspired by Effect-TS
5
+ Project-URL: Repository, https://github.com/krzkaczor/effecton
6
+ Author-email: Krzysztof Kaczor <chris@kaczor.io>
7
+ License-Expression: MIT
8
+ License-File: LICENSE
9
+ Keywords: dependency-injection,effect-system,effect-ts,functional,typed
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Programming Language :: Python :: 3.14
12
+ Classifier: Typing :: Typed
13
+ Requires-Python: >=3.14
14
+ Requires-Dist: aiofiles>=25.1
15
+ Requires-Dist: httpx2>=2.12
16
+ Requires-Dist: typing-extensions>=4.16.0
17
+ Description-Content-Type: text/markdown
18
+
19
+ <p align="center">
20
+ <a href="https://effecton.dev">
21
+ <picture>
22
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/krzkaczor/effecton/main/docs/public/logo-wordmark-white.svg">
23
+ <img alt="effecton" src="https://raw.githubusercontent.com/krzkaczor/effecton/main/docs/public/logo-wordmark.svg" width="320">
24
+ </picture>
25
+ </a>
26
+ </p>
27
+
28
+ <p align="center">A typed effect system for Python, inspired by <a href="https://effect.website/">Effect-TS</a>.</p>
29
+
30
+ <p align="center">
31
+ <a href="https://pypi.org/project/effecton/"><img alt="PyPI" src="https://img.shields.io/pypi/v/effecton?logo=pypi&logoColor=white"></a>
32
+ <a href="https://discord.gg/fNhY7AxMyh"><img alt="Discord" src="https://img.shields.io/badge/Discord-join%20chat-5865F2?logo=discord&logoColor=white"></a>
33
+ </p>
34
+
35
+ <p align="center">
36
+ <a href="https://effecton.dev/introduction">Documentation</a> ·
37
+ <a href="https://effecton.dev/api">API Reference</a> ·
38
+ <a href="https://github.com/krzkaczor/effecton/blob/main/CONTRIBUTING.md">Contributing</a>
39
+ </p>
40
+
41
+ ```sh
42
+ uv add effecton
43
+ ```
@@ -0,0 +1,25 @@
1
+ <p align="center">
2
+ <a href="https://effecton.dev">
3
+ <picture>
4
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/krzkaczor/effecton/main/docs/public/logo-wordmark-white.svg">
5
+ <img alt="effecton" src="https://raw.githubusercontent.com/krzkaczor/effecton/main/docs/public/logo-wordmark.svg" width="320">
6
+ </picture>
7
+ </a>
8
+ </p>
9
+
10
+ <p align="center">A typed effect system for Python, inspired by <a href="https://effect.website/">Effect-TS</a>.</p>
11
+
12
+ <p align="center">
13
+ <a href="https://pypi.org/project/effecton/"><img alt="PyPI" src="https://img.shields.io/pypi/v/effecton?logo=pypi&logoColor=white"></a>
14
+ <a href="https://discord.gg/fNhY7AxMyh"><img alt="Discord" src="https://img.shields.io/badge/Discord-join%20chat-5865F2?logo=discord&logoColor=white"></a>
15
+ </p>
16
+
17
+ <p align="center">
18
+ <a href="https://effecton.dev/introduction">Documentation</a> ·
19
+ <a href="https://effecton.dev/api">API Reference</a> ·
20
+ <a href="https://github.com/krzkaczor/effecton/blob/main/CONTRIBUTING.md">Contributing</a>
21
+ </p>
22
+
23
+ ```sh
24
+ uv add effecton
25
+ ```
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "effecton"
3
- version = "0.3.0"
3
+ version = "0.3.1"
4
4
  description = "A typed effect system for Python, inspired by Effect-TS"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -28,11 +28,13 @@ from effecton.run_sync import (
28
28
  run_sync,
29
29
  run_sync_exit,
30
30
  )
31
+ from effecton.std import cli as Cli
31
32
  from effecton.std import clock as Clock
32
33
  from effecton.std import file_system as FileSystem
33
34
  from effecton.std import http_client as HttpClient
34
35
  from effecton.std import process as Process
35
36
  from effecton.std import random as Random
37
+ from effecton.std import schema as Schema
36
38
  from effecton.std import tracer as Tracer
37
39
  from effecton.std.clock import _now as now
38
40
  from effecton.std.clock import _sleep as sleep
@@ -70,6 +72,7 @@ from effecton.suspend import suspend
70
72
  __all__ = [
71
73
  "AsyncEffectInSyncRun",
72
74
  "Cause",
75
+ "Cli",
73
76
  "Clock",
74
77
  "CurrentLogAnnotations",
75
78
  "CurrentLogLevel",
@@ -96,6 +99,7 @@ __all__ = [
96
99
  "Process",
97
100
  "Random",
98
101
  "Schedule",
102
+ "Schema",
99
103
  "Scope",
100
104
  "Severity",
101
105
  "Succeeded",