mixinv2 0.4.0.post85.dev0__tar.gz → 0.4.0.post89.dev0__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 (51) hide show
  1. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/.gitignore +2 -2
  2. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/PKG-INFO +3 -2
  3. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/docs/tutorial.rst +6 -3
  4. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/pyproject.toml +6 -5
  5. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/src/mixinv2/_core.py +1 -2
  6. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/src/mixinv2/_runtime.py +2 -1
  7. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/README.md +0 -0
  8. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/docs/Makefile +0 -0
  9. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/docs/_static/favicon.svg +0 -0
  10. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/docs/_static/logo.svg +0 -0
  11. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/docs/conf.py +0 -0
  12. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/docs/index.rst +0 -0
  13. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/docs/installation.rst +0 -0
  14. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/docs/mixinv2-tutorial.rst +0 -0
  15. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/docs/specification.md +0 -0
  16. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/src/mixinv2/__init__.py +0 -0
  17. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/src/mixinv2/_config.py +0 -0
  18. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/src/mixinv2/_interned_linked_list.py +0 -0
  19. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/src/mixinv2/_mixin_directory.py +0 -0
  20. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/src/mixinv2/_mixin_parser.py +0 -0
  21. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/LetXEqualsXInX.mixin.yaml +0 -0
  22. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/SelfReferenceTest.mixin.yaml +0 -0
  23. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/__snapshots__/test_multi_module_composition.ambr +0 -0
  24. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/CircularLazy.mixin.yaml +0 -0
  25. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/MultiModuleComposition.mixin.yaml +0 -0
  26. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/OuterVsLexicalOuter.mixin.yaml +0 -0
  27. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/__init__.py +0 -0
  28. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/nested_pkg/__init__.py +0 -0
  29. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/nested_pkg/child/__init__.py +0 -0
  30. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/nested_pkg/child/grandchild.py +0 -0
  31. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/ns_pkg/mod_a.py +0 -0
  32. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/ns_pkg/mod_b.py +0 -0
  33. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/regular_mod.py +0 -0
  34. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/regular_pkg/__init__.py +0 -0
  35. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/regular_pkg/child.py +0 -0
  36. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/union_mount/__init__.py +0 -0
  37. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/union_mount/branch0.py +0 -0
  38. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/union_mount/branch1.py +0 -0
  39. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/fixtures/union_mount/branch2.py +0 -0
  40. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/test_circular_lazy.py +0 -0
  41. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/test_debug.py +0 -0
  42. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/test_evaluation_semantics.py +0 -0
  43. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/test_get_symbol.py +0 -0
  44. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/test_interned_linked_list.py +0 -0
  45. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/test_mixin_parser.py +0 -0
  46. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/test_mixinject.py +0 -0
  47. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/test_multi_module_composition.py +0 -0
  48. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/test_outer_vs_lexical_outer.py +0 -0
  49. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/test_resource_reference.py +0 -0
  50. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/test_stdlib_python_port.py +0 -0
  51. {mixinv2-0.4.0.post85.dev0 → mixinv2-0.4.0.post89.dev0}/tests/test_v2.py +0 -0
@@ -236,6 +236,6 @@ experiment_results.db
236
236
  # nixago: ignore-linked-files
237
237
  /.vscode/extensions.json
238
238
 
239
- /inheritance-calculus/arxiv-submission.tar.gz
239
+ arxiv-submission.tar.gz
240
240
  node_modules/
241
- inheritance-calculus/comment.cut
241
+ comment.cut
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mixinv2
3
- Version: 0.4.0.post85.dev0
3
+ Version: 0.4.0.post89.dev0
4
4
  Summary: A dependency injection framework with pytest-fixture syntax, plus a configuration language for declarative programming
5
5
  Project-URL: Repository, https://github.com/Atry/MIXINv2
6
6
  Author-email: "Yang, Bo" <yang-bo@yang-bo.com>
@@ -12,9 +12,10 @@ Classifier: Programming Language :: Python :: 3.14
12
12
  Requires-Python: >=3.13
13
13
  Requires-Dist: fixpoints
14
14
  Requires-Dist: pyyaml>=6.0.3
15
+ Requires-Dist: typing-extensions>=4.0.0
15
16
  Provides-Extra: docs
16
17
  Requires-Dist: sphinx-mdinclude>=0.6.2; extra == 'docs'
17
- Requires-Dist: sphinx>=9.1.0; extra == 'docs'
18
+ Requires-Dist: sphinx<9,>=8.1.0; extra == 'docs'
18
19
  Description-Content-Type: text/markdown
19
20
 
20
21
  # mixinv2
@@ -118,9 +118,12 @@ by ``HttpHandlers.Request``) flows automatically into ``currentUser`` (looked up
118
118
  in the DB by ``UserRepository.Request``) without any glue code.
119
119
 
120
120
  ``responseSent`` is an IO resource: it sends the HTTP response as a side effect and
121
- returns ``None``. The handler body is a single attribute access all logic lives in
122
- the DI graph. In an async framework (e.g. FastAPI), return an ``asyncio.Task[None]``
123
- instead of a coroutine, which cannot be safely awaited in multiple dependents.
121
+ returns ``None``. The ``_Handler`` class is defined at module level and accesses the
122
+ ``Request`` factory through ``self.server.request_scope_factory``; the ``server``
123
+ resource stores it on the ``HTTPServer`` instance. The handler body is a single
124
+ attribute access; all logic lives in the DI graph. In an async framework (e.g.
125
+ FastAPI), return an ``asyncio.Task[None]`` instead of a coroutine, which cannot be
126
+ safely awaited in multiple dependents.
124
127
 
125
128
  .. literalinclude:: ../../mixinv2-examples/src/mixinv2_examples/app_decorator/step4_http_server.py
126
129
  :language: python
@@ -26,13 +26,14 @@ classifiers = [
26
26
  "Programming Language :: Python :: 3.13",
27
27
  "Programming Language :: Python :: 3.14",
28
28
  ]
29
- dependencies = ["pyyaml>=6.0.3", "fixpoints"]
29
+ dependencies = [
30
+ "pyyaml>=6.0.3",
31
+ "fixpoints",
32
+ "typing-extensions>=4.0.0",
33
+ ]
30
34
 
31
35
  [project.optional-dependencies]
32
- docs = ["sphinx>=9.1.0", "sphinx-mdinclude>=0.6.2"]
33
-
34
- [tool.uv]
35
- sources = { fixpoints = { workspace = true } }
36
+ docs = ["sphinx>=8.1.0,<9", "sphinx-mdinclude>=0.6.2"]
36
37
 
37
38
  [tool.hatch.build.targets.wheel]
38
39
  packages = ["src/mixinv2"]
@@ -566,9 +566,8 @@ from typing import (
566
566
  TypeVar,
567
567
  cast,
568
568
  final,
569
- override,
570
- assert_never,
571
569
  )
570
+ from typing_extensions import assert_never, override
572
571
 
573
572
 
574
573
  if TYPE_CHECKING:
@@ -672,7 +672,8 @@ def evaluate(
672
672
  """
673
673
  from dataclasses import replace
674
674
  from types import ModuleType
675
- from typing import assert_never
675
+
676
+ from typing_extensions import assert_never
676
677
 
677
678
  from mixinv2._core import (
678
679
  MixinSymbol,