Z0Z-tools 3.2.2__tar.gz → 3.2.4__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 (107) hide show
  1. {z0z_tools-3.2.2/Z0Z_tools.egg-info → z0z_tools-3.2.4}/PKG-INFO +2 -2
  2. {z0z_tools-3.2.2 → z0z_tools-3.2.4/Z0Z_tools.egg-info}/PKG-INFO +2 -2
  3. z0z_tools-3.2.4/humpy_cytoolz/functoolz.pyi +268 -0
  4. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/functoolz.py +7 -1
  5. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/pyproject.toml +2 -2
  6. z0z_tools-3.2.2/humpy_cytoolz/functoolz.pyi +0 -192
  7. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/LICENSE +0 -0
  8. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/LICENSE-Rocklin +0 -0
  9. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/LICENSE-Welch +0 -0
  10. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/README.md +0 -0
  11. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/Z0Z_tools/__init__.py +0 -0
  12. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/Z0Z_tools/functionsNeedAHome.py +0 -0
  13. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/Z0Z_tools/py.typed +0 -0
  14. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/Z0Z_tools.egg-info/SOURCES.txt +0 -0
  15. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/Z0Z_tools.egg-info/dependency_links.txt +0 -0
  16. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/Z0Z_tools.egg-info/requires.txt +0 -0
  17. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/Z0Z_tools.egg-info/top_level.txt +0 -0
  18. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/__init__.pxd +0 -0
  19. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/__init__.py +0 -0
  20. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/__init__.pyi +0 -0
  21. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/_signatures.py +0 -0
  22. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/_signatures.pyi +0 -0
  23. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/cpython.pxd +0 -0
  24. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/curried/__init__.py +0 -0
  25. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/curried/exceptions.py +0 -0
  26. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/curried/exceptions.pyi +0 -0
  27. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/curried/operator.py +0 -0
  28. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/dicttoolz.c +0 -0
  29. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/dicttoolz.pxd +0 -0
  30. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/dicttoolz.pyi +0 -0
  31. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/dicttoolz.pyx +0 -0
  32. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/functoolz.c +0 -0
  33. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/functoolz.pxd +0 -0
  34. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/functoolz.pyx +0 -0
  35. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/itertoolz.c +0 -0
  36. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/itertoolz.pxd +0 -0
  37. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/itertoolz.pyi +0 -0
  38. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/itertoolz.pyx +0 -0
  39. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/py.typed +0 -0
  40. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/recipes.c +0 -0
  41. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/recipes.pxd +0 -0
  42. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/recipes.pyi +0 -0
  43. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/recipes.pyx +0 -0
  44. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/__init__.py +0 -0
  45. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/dev_skip_test.py +0 -0
  46. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_curried.py +0 -0
  47. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_curried_toolzlike.py +0 -0
  48. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_dev_skip_test.py +0 -0
  49. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_dicttoolz.py +0 -0
  50. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_docstrings.py +0 -0
  51. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_doctests.py +0 -0
  52. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_embedded_sigs.py +0 -0
  53. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_functoolz.py +0 -0
  54. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_get.py +0 -0
  55. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_inspect_args.py +0 -0
  56. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_itertoolz.py +0 -0
  57. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_none_safe.py +0 -0
  58. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_recipes.py +0 -0
  59. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_serialization.py +0 -0
  60. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_signatures.py +0 -0
  61. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_stubs.py +0 -0
  62. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_tlz.py +0 -0
  63. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/test_utils.py +0 -0
  64. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/typeAssertions_dicttoolz.py +0 -0
  65. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/tests/typeAssertions_get.py +0 -0
  66. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/theTypes.py +0 -0
  67. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/utils.c +0 -0
  68. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/utils.pxd +0 -0
  69. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/utils.pyi +0 -0
  70. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_cytoolz/utils.pyx +0 -0
  71. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_tlz/__init__.py +0 -0
  72. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_tlz/_build_tlz.py +0 -0
  73. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/__init__.py +0 -0
  74. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/_signatures.py +0 -0
  75. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/curried/__init__.py +0 -0
  76. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/curried/exceptions.py +0 -0
  77. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/curried/operator.py +0 -0
  78. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/curried/toolz.py +0 -0
  79. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/dicttoolz.py +0 -0
  80. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/itertoolz.py +0 -0
  81. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/py.typed +0 -0
  82. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/recipes.py +0 -0
  83. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/sandbox/__init__.py +0 -0
  84. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/sandbox/core.py +0 -0
  85. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/sandbox/parallel.py +0 -0
  86. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/sandbox/tests/__init__.py +0 -0
  87. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/sandbox/tests/test_core.py +0 -0
  88. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/sandbox/tests/test_parallel.py +0 -0
  89. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/__init__.py +0 -0
  90. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/test_curried.py +0 -0
  91. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/test_curried_doctests.py +0 -0
  92. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/test_dicttoolz.py +0 -0
  93. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/test_functoolz.py +0 -0
  94. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/test_get.py +0 -0
  95. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/test_inspect_args.py +0 -0
  96. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/test_itertoolz.py +0 -0
  97. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/test_package.py +0 -0
  98. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/test_recipes.py +0 -0
  99. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/test_serialization.py +0 -0
  100. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/test_signatures.py +0 -0
  101. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/test_tlz.py +0 -0
  102. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/test_utils.py +0 -0
  103. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/typeAssertions_dicttoolz.py +0 -0
  104. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/tests/typeAssertions_get.py +0 -0
  105. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/theTypes.py +0 -0
  106. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/humpy_toolz/utils.py +0 -0
  107. {z0z_tools-3.2.2 → z0z_tools-3.2.4}/setup.cfg +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Z0Z_tools
3
- Version: 3.2.2
3
+ Version: 3.2.4
4
4
  Summary: Typing, documenting, and improving toolz and cytoolz.
5
5
  Author-email: Hunter Hogan <HunterHogan@pm.me>
6
6
  License-Expression: CC-BY-NC-4.0
7
- Project-URL: Context7, https://context7.com/hunterhogan/z0z-tools
7
+ Project-URL: Context7, https://context7.com/hunterhogan/z0z_tools
8
8
  Project-URL: Donate, https://www.patreon.com/integrated
9
9
  Project-URL: Download, https://pypi.org/project/Z0Z_tools
10
10
  Project-URL: Homepage, https://github.com/hunterhogan/Z0Z_tools
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Z0Z_tools
3
- Version: 3.2.2
3
+ Version: 3.2.4
4
4
  Summary: Typing, documenting, and improving toolz and cytoolz.
5
5
  Author-email: Hunter Hogan <HunterHogan@pm.me>
6
6
  License-Expression: CC-BY-NC-4.0
7
- Project-URL: Context7, https://context7.com/hunterhogan/z0z-tools
7
+ Project-URL: Context7, https://context7.com/hunterhogan/z0z_tools
8
8
  Project-URL: Donate, https://www.patreon.com/integrated
9
9
  Project-URL: Download, https://pypi.org/project/Z0Z_tools
10
10
  Project-URL: Homepage, https://github.com/hunterhogan/Z0Z_tools
@@ -0,0 +1,268 @@
1
+ from collections.abc import Callable, Iterable, Mapping
2
+ from functools import partial
3
+ from typing import Any, Concatenate, overload
4
+ import inspect
5
+
6
+ type CurryState = tuple[Any, ...]
7
+ type _Getter[_Instance, _T] = Callable[[_Instance], _T]
8
+ type _Setter[_Instance, _T] = Callable[[_Instance, _T], None]
9
+ type _Deleter[_Instance] = Callable[[_Instance], None]
10
+ type InstancePropertyState[_Instance, _T] = tuple[
11
+ _Getter[_Instance, _T] | None, _Setter[_Instance, _T] | None, _Deleter[_Instance] | None, str | None, _T | None
12
+ ]
13
+ PYPY: bool
14
+ __all__: tuple[str, ...] = (
15
+ 'apply',
16
+ 'complement',
17
+ 'compose',
18
+ 'compose_left',
19
+ 'curry',
20
+ 'do',
21
+ 'excepts',
22
+ 'flip',
23
+ 'identity',
24
+ 'juxt',
25
+ 'memoize',
26
+ 'pipe',
27
+ 'thread_first',
28
+ 'thread_last',
29
+ )
30
+
31
+ def identity[T](x: T) -> T: ...
32
+ @overload
33
+ def apply[**P, T](func: Callable[P, T], *args: P.args, **kwargs: P.kwargs) -> T: ...
34
+ @overload
35
+ def apply(*func_and_args: Any, **kwargs: Any) -> Any: ...
36
+ def apply(*func_and_args: Any, **kwargs: Any) -> Any: ...
37
+ def thread_first[T, R](val: T, *forms: Callable[[T], R] | tuple[Callable[..., R], Any]) -> R: ...
38
+ def thread_last[T, U](val: T, *forms: Callable[[T], U] | tuple[Callable[..., U], ...]) -> U: ...
39
+ @overload
40
+ def instanceproperty[Instance, T](
41
+ fget: _Getter[Instance, T],
42
+ fset: _Setter[Instance, T] | None = ...,
43
+ fdel: _Deleter[Instance] | None = ...,
44
+ doc: str | None = ...,
45
+ classval: T | None = ...,
46
+ ) -> InstanceProperty[Instance, T]: ...
47
+ @overload
48
+ def instanceproperty[Instance, T](
49
+ fget: None = None,
50
+ fset: _Setter[Instance, T] | None = ...,
51
+ fdel: _Deleter[Instance] | None = ...,
52
+ doc: str | None = ...,
53
+ classval: T | None = ...,
54
+ ) -> Callable[[_Getter[Instance, T]], InstanceProperty[Instance, T]]: ...
55
+ def instanceproperty[Instance, T](
56
+ fget: _Getter[Instance, T] | None = None,
57
+ fset: _Setter[Instance, T] | None = None,
58
+ fdel: _Deleter[Instance] | None = None,
59
+ doc: str | None = None,
60
+ classval: T | None = None,
61
+ ) -> InstanceProperty[Instance, T] | Callable[[_Getter[Instance, T]], InstanceProperty[Instance, T]]: ...
62
+
63
+ class InstanceProperty[Instance, T](property):
64
+ def __init__(
65
+ self,
66
+ fget: _Getter[Instance, T] | None = None,
67
+ fset: _Setter[Instance, T] | None = None,
68
+ fdel: _Deleter[Instance] | None = None,
69
+ doc: str | None = None,
70
+ classval: T | None = None,
71
+ ) -> None: ...
72
+ @overload
73
+ def __get__(self, obj: None, type: type | None = ...) -> T | None: ...
74
+ @overload
75
+ def __get__(self, obj: Instance, type: type | None = ...) -> T: ...
76
+ def __get__(self, obj: Instance | None, type: type | None = None) -> T | None: ...
77
+ def __reduce__(self) -> tuple[type[InstanceProperty[Any, Any]], InstancePropertyState[Callable[..., Any], Any]]: ...
78
+
79
+ class curry[**P, T]:
80
+ @overload
81
+ def __init__(self, func: curry[P, T] | partial[T], /, *args: Any, **kwargs: Any) -> None: ...
82
+ @overload
83
+ def __init__(self, func: Callable[P, T], /, *args: Any, **kwargs: Any) -> None: ...
84
+ def __init__(self, *args: Any, **kwargs: Any) -> None: ...
85
+ @instanceproperty
86
+ def func(self) -> Callable[P, T]: ...
87
+ @instanceproperty
88
+ def __signature__(self) -> inspect.Signature: ...
89
+ @instanceproperty
90
+ def args(self) -> tuple[Any, ...]: ...
91
+ @instanceproperty
92
+ def keywords(self) -> dict[str, Any]: ...
93
+ @instanceproperty
94
+ def func_name(self) -> str: ...
95
+ def __hash__(self) -> int: ...
96
+ def __eq__(self, other: object) -> bool: ...
97
+ def __ne__(self, other: object) -> bool: ...
98
+ @overload
99
+ def __call__(self, *args: P.args, **kwargs: P.kwargs) -> T: ...
100
+ @overload
101
+ def __call__[First, **Remaining](self: curry[Concatenate[First, Remaining], T], first: First, /) -> curry[Remaining, T]: ...
102
+ @overload
103
+ def __call__[First, Second, **Remaining](
104
+ self: curry[Concatenate[First, Second, Remaining], T], first: First, second: Second, /
105
+ ) -> curry[Remaining, T]: ...
106
+ @overload
107
+ def __call__(self, *args: Any, **kwargs: Any) -> curry[P, T]: ...
108
+ def __call__(self, *args: Any, **kwargs: Any) -> T | curry[P, T]: ...
109
+ def _should_curry(self, args: tuple[Any, ...], kwargs: dict[str, Any], exc: TypeError | None = None) -> bool: ...
110
+ def bind(self, *args: Any, **kwargs: Any) -> curry[P, T]: ...
111
+ def call(self, *args: Any, **kwargs: Any) -> T: ...
112
+ def __get__(self, instance: object | None, owner: type | None) -> curry[P, T]: ...
113
+ def __reduce__(self) -> tuple[Callable[..., T], CurryState]: ...
114
+
115
+ def _restore_curry[**P, T](
116
+ cls: type[curry[P, T]],
117
+ func: str | Callable[P, T],
118
+ args: tuple[Any, ...],
119
+ kwargs: Mapping[str, Any] | None,
120
+ userdict: Iterable[tuple[str, Any]],
121
+ is_decorated: bool | None,
122
+ ) -> curry[P, T] | Callable[P, T]: ...
123
+ @curry
124
+ def memoize[T](
125
+ func: Callable[..., T], cache: dict[Any, T] | None = None, key: Callable[[tuple[Any, ...], Mapping[str, Any]], Any] | None = None
126
+ ) -> Callable[..., T]: ...
127
+
128
+ class Compose:
129
+ first: Callable[..., Any]
130
+ funcs: tuple[Callable[..., Any], ...]
131
+
132
+ def __init__(self, funcs: Iterable[Callable[..., Any]]) -> None: ...
133
+ def __call__(self, *args: Any, **kwargs: Any) -> Any: ...
134
+ def __getstate__(self) -> tuple[Callable[..., Any], tuple[Callable[..., Any], ...]]: ...
135
+ def __setstate__(self, state: tuple[Callable[..., Any], tuple[Callable[..., Any], ...]]) -> None: ...
136
+ __doc__: str
137
+
138
+ @property
139
+ def __name__(self) -> str: ...
140
+ def __eq__(self, other: object) -> bool: ...
141
+ def __ne__(self, other: object) -> bool: ...
142
+ def __hash__(self) -> int: ...
143
+ def __get__(self, obj: object | None, objtype: type | None = None) -> Compose: ...
144
+ @instanceproperty
145
+ def __signature__(self) -> inspect.Signature: ...
146
+
147
+ @overload
148
+ def compose[**P, T](fn_0: Callable[P, T]) -> Callable[P, T]: ...
149
+ @overload
150
+ def compose[**P, T0, T1](fn_0: Callable[[T0], T1], fn_1: Callable[P, T0]) -> Callable[P, T1]: ...
151
+ @overload
152
+ def compose[**P, T0, T1, T2](fn_0: Callable[[T1], T2], fn_1: Callable[[T0], T1], fn_2: Callable[P, T0]) -> Callable[P, T2]: ...
153
+ @overload
154
+ def compose[**P, T0, T1, T2, T3](
155
+ fn_0: Callable[[T2], T3], fn_1: Callable[[T1], T2], fn_2: Callable[[T0], T1], fn_3: Callable[P, T0]
156
+ ) -> Callable[P, T3]: ...
157
+ @overload
158
+ def compose[**P, T0, T1, T2, T3, T4](
159
+ fn_0: Callable[[T3], T4], fn_1: Callable[[T2], T3], fn_2: Callable[[T1], T2], fn_3: Callable[[T0], T1], fn_4: Callable[P, T0]
160
+ ) -> Callable[P, T4]: ...
161
+ @overload
162
+ def compose[**P, T0, T1, T2, T3, T4, T5](
163
+ fn_0: Callable[[T4], T5],
164
+ fn_1: Callable[[T3], T4],
165
+ fn_2: Callable[[T2], T3],
166
+ fn_3: Callable[[T1], T2],
167
+ fn_4: Callable[[T0], T1],
168
+ fn_5: Callable[P, T0],
169
+ ) -> Callable[P, T5]: ...
170
+ @overload
171
+ def compose(*funcs: Callable[..., Any]) -> Callable[..., Any]: ...
172
+ def compose(*funcs: Callable[..., Any]) -> Callable[..., Any]: ...
173
+ @overload
174
+ def compose_left[**P, T](fn_0: Callable[P, T]) -> Callable[P, T]: ...
175
+ @overload
176
+ def compose_left[**P, T0, T1](fn_0: Callable[P, T0], fn_1: Callable[[T0], T1]) -> Callable[P, T1]: ...
177
+ @overload
178
+ def compose_left[**P, T0, T1, T2](fn_0: Callable[P, T0], fn_1: Callable[[T0], T1], fn_2: Callable[[T1], T2]) -> Callable[P, T2]: ...
179
+ @overload
180
+ def compose_left[**P, T0, T1, T2, T3](
181
+ fn_0: Callable[P, T0], fn_1: Callable[[T0], T1], fn_2: Callable[[T1], T2], fn_3: Callable[[T2], T3]
182
+ ) -> Callable[P, T3]: ...
183
+ @overload
184
+ def compose_left[**P, T0, T1, T2, T3, T4](
185
+ fn_0: Callable[P, T0], fn_1: Callable[[T0], T1], fn_2: Callable[[T1], T2], fn_3: Callable[[T2], T3], fn_4: Callable[[T3], T4]
186
+ ) -> Callable[P, T4]: ...
187
+ @overload
188
+ def compose_left[**P, T0, T1, T2, T3, T4, T5](
189
+ fn_0: Callable[P, T0],
190
+ fn_1: Callable[[T0], T1],
191
+ fn_2: Callable[[T1], T2],
192
+ fn_3: Callable[[T2], T3],
193
+ fn_4: Callable[[T3], T4],
194
+ fn_5: Callable[[T4], T5],
195
+ ) -> Callable[P, T5]: ...
196
+ @overload
197
+ def compose_left(*funcs: Callable[..., Any]) -> Callable[..., Any]: ...
198
+ def compose_left(*funcs: Callable[..., Any]) -> Callable[..., Any]: ...
199
+ @overload
200
+ def pipe[T0, T1](data: T0, fn_0: Callable[[T0], T1]) -> T1: ...
201
+ @overload
202
+ def pipe[T0, T1, T2](data: T0, fn_0: Callable[[T0], T1], fn_1: Callable[[T1], T2]) -> T2: ...
203
+ @overload
204
+ def pipe[T0, T1, T2, T3](data: T0, fn_0: Callable[[T0], T1], fn_1: Callable[[T1], T2], fn_2: Callable[[T2], T3]) -> T3: ...
205
+ @overload
206
+ def pipe[T0, T1, T2, T3, T4](
207
+ data: T0, fn_0: Callable[[T0], T1], fn_1: Callable[[T1], T2], fn_2: Callable[[T2], T3], fn_3: Callable[[T3], T4]
208
+ ) -> T4: ...
209
+ @overload
210
+ def pipe[T0, T1, T2, T3, T4, T5](
211
+ data: T0,
212
+ fn_0: Callable[[T0], T1],
213
+ fn_1: Callable[[T1], T2],
214
+ fn_2: Callable[[T2], T3],
215
+ fn_3: Callable[[T3], T4],
216
+ fn_4: Callable[[T4], T5],
217
+ ) -> T5: ...
218
+ @overload
219
+ def pipe[T0, T1, T2, T3, T4, T5, T6](
220
+ data: T0,
221
+ fn_0: Callable[[T0], T1],
222
+ fn_1: Callable[[T1], T2],
223
+ fn_2: Callable[[T2], T3],
224
+ fn_3: Callable[[T3], T4],
225
+ fn_4: Callable[[T4], T5],
226
+ fn_5: Callable[[T5], T6],
227
+ ) -> T6: ...
228
+ @overload
229
+ def pipe(data: Any, *funcs: Callable[..., Any]) -> Any: ...
230
+ def pipe(data: Any, *funcs: Callable[..., Any]) -> Any: ...
231
+ def complement[**P](func: Callable[P, bool]) -> Callable[P, bool]: ...
232
+
233
+ class juxt[**P, T]:
234
+ funcs: tuple[Callable[..., Any], ...]
235
+
236
+ def __init__(self, *funcs: Callable[..., Any] | Iterable[Callable[..., Any]]) -> None: ...
237
+ def __call__(self, *args: Any, **kwargs: Any) -> tuple[Any, ...]: ...
238
+ def __getstate__(self) -> tuple[Callable[..., Any], ...]: ...
239
+ def __setstate__(self, state: tuple[Callable[..., Any], ...]) -> None: ...
240
+
241
+ def do[T](func: Callable[[T], Any], x: T) -> T: ...
242
+ @curry
243
+ def flip[T, U, R](func: Callable[[T, U], R], a: U, b: T) -> R: ...
244
+ def return_none(exc: Exception) -> None: ...
245
+
246
+ class excepts[**P, T]:
247
+ def __init__(
248
+ self, exc: type[Exception] | tuple[type[Exception], ...], func: Callable[P, T], handler: Callable[[Exception], T] = return_none
249
+ ) -> None: ...
250
+ def __call__(self, *args: P.args, **kwargs: P.kwargs) -> T: ...
251
+ __doc__: str
252
+
253
+ @property
254
+ def __name__(self) -> str: ...
255
+
256
+ def _check_sigspec[T](
257
+ sigspec: inspect.Signature | None, func: Callable[..., Any], builtin_func: Callable[..., T], *builtin_args: Any
258
+ ) -> tuple[inspect.Signature | None, T | bool | None]: ...
259
+ def num_required_args(func: Callable[..., Any], sigspec: inspect.Signature | None = None) -> int | None: ...
260
+ def has_varargs(func: Callable[..., Any], sigspec: inspect.Signature | None = None) -> bool | None: ...
261
+ def has_keywords(func: Callable[..., Any], sigspec: inspect.Signature | None = None) -> bool | None: ...
262
+ def is_valid_args(
263
+ func: Callable[..., Any], args: tuple[Any, ...], kwargs: Mapping[str, Any], sigspec: inspect.Signature | None = None
264
+ ) -> bool | None: ...
265
+ def is_partial_args(
266
+ func: Callable[..., Any], args: tuple[Any, ...], kwargs: Mapping[str, Any], sigspec: inspect.Signature | None = None
267
+ ) -> bool | None: ...
268
+ def is_arity(n: int, func: Callable[..., Any], sigspec: inspect.Signature | None = None) -> bool | None: ...
@@ -29,7 +29,7 @@ from humpy_toolz.utils import no_default
29
29
  from importlib import import_module
30
30
  from operator import attrgetter, not_
31
31
  from types import MethodType
32
- from typing import overload, TYPE_CHECKING
32
+ from typing import Concatenate, overload, TYPE_CHECKING
33
33
  import contextlib
34
34
  import inspect
35
35
  import sys
@@ -394,6 +394,12 @@ class curry[**P, T]:
394
394
  @overload
395
395
  def __call__(self, *args: P.args, **kwargs: P.kwargs) -> T: ...
396
396
 
397
+ @overload
398
+ def __call__[First, **Remaining](self: curry[Concatenate[First, Remaining], T], first: First, /) -> curry[Remaining, T]: ...
399
+
400
+ @overload
401
+ def __call__[First, Second, **Remaining](self: curry[Concatenate[First, Second, Remaining], T], first: First, second: Second, /) -> curry[Remaining, T]: ...
402
+
397
403
  @overload
398
404
  def __call__(self, *args: Any, **kwargs: Any) -> curry[P, T]: ...
399
405
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "Z0Z_tools"
3
- version = "3.2.2"
3
+ version = "3.2.4"
4
4
  description = "Typing, documenting, and improving toolz and cytoolz."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -33,7 +33,7 @@ optional-dependencies = { development = [
33
33
  ], testing = ["pytest"] }
34
34
 
35
35
  [project.urls]
36
- Context7 = "https://context7.com/hunterhogan/z0z-tools"
36
+ Context7 = "https://context7.com/hunterhogan/z0z_tools"
37
37
  Donate = "https://www.patreon.com/integrated"
38
38
  Download = "https://pypi.org/project/Z0Z_tools"
39
39
  Homepage = "https://github.com/hunterhogan/Z0Z_tools"
@@ -1,192 +0,0 @@
1
-
2
- from collections.abc import Callable, Iterable, Mapping
3
- from typing import Any, overload
4
- import inspect
5
-
6
- type CurryState = tuple[Any, ...]
7
- type _Getter[_Instance, _T] = Callable[[_Instance], _T]
8
- type _Setter[_Instance, _T] = Callable[[_Instance, _T], None]
9
- type _Deleter[_Instance] = Callable[[_Instance], None]
10
- type InstancePropertyState[_Instance, _T] = tuple[_Getter[_Instance, _T] | None, _Setter[_Instance, _T] | None, _Deleter[_Instance] | None, str | None, _T | None]
11
- PYPY: bool
12
- __all__: tuple[str, ...] = ('apply', 'complement', 'compose', 'compose_left', 'curry', 'do', 'excepts', 'flip', 'identity', 'juxt', 'memoize', 'pipe', 'thread_first', 'thread_last')
13
-
14
- def identity[T](x: T) -> T:
15
- ...
16
-
17
- @overload
18
- def apply[**P, T](func: Callable[P, T], *args: P.args, **kwargs: P.kwargs) -> T:
19
- ...
20
-
21
- @overload
22
- def apply(*func_and_args: Any, **kwargs: Any) -> Any:
23
- ...
24
-
25
- def apply(*func_and_args: Any, **kwargs: Any) -> Any:
26
- ...
27
-
28
- def thread_first[T, R](val: T, *forms: Callable[[T], R] | tuple[Callable[..., R], Any]) -> R:
29
- ...
30
-
31
- def thread_last[T, U](val: T, *forms: Callable[[T], U] | tuple[Callable[..., U], ...]) -> U:
32
- ...
33
-
34
- @overload
35
- def instanceproperty[Instance, T](fget: _Getter[Instance, T], fset: _Setter[Instance, T] | None = ..., fdel: _Deleter[Instance] | None = ..., doc: str | None = ..., classval: T | None = ...) -> InstanceProperty[Instance, T]:
36
- ...
37
-
38
- @overload
39
- def instanceproperty[Instance, T](fget: None = None, fset: _Setter[Instance, T] | None = ..., fdel: _Deleter[Instance] | None = ..., doc: str | None = ..., classval: T | None = ...) -> Callable[[_Getter[Instance, T]], InstanceProperty[Instance, T]]:
40
- ...
41
-
42
- def instanceproperty[Instance, T](fget: _Getter[Instance, T] | None = None, fset: _Setter[Instance, T] | None = None, fdel: _Deleter[Instance] | None = None, doc: str | None = None, classval: T | None = None) -> InstanceProperty[Instance, T] | Callable[[_Getter[Instance, T]], InstanceProperty[Instance, T]]:
43
- ...
44
-
45
- class InstanceProperty[Instance, T](property):
46
- ...
47
-
48
- class curry[**P, T]:
49
- ...
50
-
51
- def _restore_curry[**P, T](cls: type[curry[P, T]], func: str | Callable[P, T], args: tuple[Any, ...], kwargs: Mapping[str, Any] | None, userdict: Iterable[tuple[str, Any]], is_decorated: bool | None) -> curry[P, T] | Callable[P, T]:
52
- ...
53
-
54
- @curry
55
- def memoize[T](func: Callable[..., T], cache: dict[Any, T] | None = None, key: Callable[[tuple[Any, ...], Mapping[str, Any]], Any] | None = None) -> Callable[..., T]:
56
- ...
57
-
58
- class Compose:
59
- ...
60
-
61
- @overload
62
- def compose[**P, T](fn_0: Callable[P, T]) -> Callable[P, T]:
63
- ...
64
-
65
- @overload
66
- def compose[**P, T0, T1](fn_0: Callable[[T0], T1], fn_1: Callable[P, T0]) -> Callable[P, T1]:
67
- ...
68
-
69
- @overload
70
- def compose[**P, T0, T1, T2](fn_0: Callable[[T1], T2], fn_1: Callable[[T0], T1], fn_2: Callable[P, T0]) -> Callable[P, T2]:
71
- ...
72
-
73
- @overload
74
- def compose[**P, T0, T1, T2, T3](fn_0: Callable[[T2], T3], fn_1: Callable[[T1], T2], fn_2: Callable[[T0], T1], fn_3: Callable[P, T0]) -> Callable[P, T3]:
75
- ...
76
-
77
- @overload
78
- def compose[**P, T0, T1, T2, T3, T4](fn_0: Callable[[T3], T4], fn_1: Callable[[T2], T3], fn_2: Callable[[T1], T2], fn_3: Callable[[T0], T1], fn_4: Callable[P, T0]) -> Callable[P, T4]:
79
- ...
80
-
81
- @overload
82
- def compose[**P, T0, T1, T2, T3, T4, T5](fn_0: Callable[[T4], T5], fn_1: Callable[[T3], T4], fn_2: Callable[[T2], T3], fn_3: Callable[[T1], T2], fn_4: Callable[[T0], T1], fn_5: Callable[P, T0]) -> Callable[P, T5]:
83
- ...
84
-
85
- @overload
86
- def compose(*funcs: Callable[..., Any]) -> Callable[..., Any]:
87
- ...
88
-
89
- def compose(*funcs: Callable[..., Any]) -> Callable[..., Any]:
90
- ...
91
-
92
- @overload
93
- def compose_left[**P, T](fn_0: Callable[P, T]) -> Callable[P, T]:
94
- ...
95
-
96
- @overload
97
- def compose_left[**P, T0, T1](fn_0: Callable[P, T0], fn_1: Callable[[T0], T1]) -> Callable[P, T1]:
98
- ...
99
-
100
- @overload
101
- def compose_left[**P, T0, T1, T2](fn_0: Callable[P, T0], fn_1: Callable[[T0], T1], fn_2: Callable[[T1], T2]) -> Callable[P, T2]:
102
- ...
103
-
104
- @overload
105
- def compose_left[**P, T0, T1, T2, T3](fn_0: Callable[P, T0], fn_1: Callable[[T0], T1], fn_2: Callable[[T1], T2], fn_3: Callable[[T2], T3]) -> Callable[P, T3]:
106
- ...
107
-
108
- @overload
109
- def compose_left[**P, T0, T1, T2, T3, T4](fn_0: Callable[P, T0], fn_1: Callable[[T0], T1], fn_2: Callable[[T1], T2], fn_3: Callable[[T2], T3], fn_4: Callable[[T3], T4]) -> Callable[P, T4]:
110
- ...
111
-
112
- @overload
113
- def compose_left[**P, T0, T1, T2, T3, T4, T5](fn_0: Callable[P, T0], fn_1: Callable[[T0], T1], fn_2: Callable[[T1], T2], fn_3: Callable[[T2], T3], fn_4: Callable[[T3], T4], fn_5: Callable[[T4], T5]) -> Callable[P, T5]:
114
- ...
115
-
116
- @overload
117
- def compose_left(*funcs: Callable[..., Any]) -> Callable[..., Any]:
118
- ...
119
-
120
- def compose_left(*funcs: Callable[..., Any]) -> Callable[..., Any]:
121
- ...
122
-
123
- @overload
124
- def pipe[T0, T1](data: T0, fn_0: Callable[[T0], T1]) -> T1:
125
- ...
126
-
127
- @overload
128
- def pipe[T0, T1, T2](data: T0, fn_0: Callable[[T0], T1], fn_1: Callable[[T1], T2]) -> T2:
129
- ...
130
-
131
- @overload
132
- def pipe[T0, T1, T2, T3](data: T0, fn_0: Callable[[T0], T1], fn_1: Callable[[T1], T2], fn_2: Callable[[T2], T3]) -> T3:
133
- ...
134
-
135
- @overload
136
- def pipe[T0, T1, T2, T3, T4](data: T0, fn_0: Callable[[T0], T1], fn_1: Callable[[T1], T2], fn_2: Callable[[T2], T3], fn_3: Callable[[T3], T4]) -> T4:
137
- ...
138
-
139
- @overload
140
- def pipe[T0, T1, T2, T3, T4, T5](data: T0, fn_0: Callable[[T0], T1], fn_1: Callable[[T1], T2], fn_2: Callable[[T2], T3], fn_3: Callable[[T3], T4], fn_4: Callable[[T4], T5]) -> T5:
141
- ...
142
-
143
- @overload
144
- def pipe[T0, T1, T2, T3, T4, T5, T6](data: T0, fn_0: Callable[[T0], T1], fn_1: Callable[[T1], T2], fn_2: Callable[[T2], T3], fn_3: Callable[[T3], T4], fn_4: Callable[[T4], T5], fn_5: Callable[[T5], T6]) -> T6:
145
- ...
146
-
147
- @overload
148
- def pipe(data: Any, *funcs: Callable[..., Any]) -> Any:
149
- ...
150
-
151
- def pipe(data: Any, *funcs: Callable[..., Any]) -> Any:
152
- ...
153
-
154
- def complement[**P](func: Callable[P, bool]) -> Callable[P, bool]:
155
- ...
156
-
157
- class juxt[**P, T]:
158
- ...
159
-
160
- def do[T](func: Callable[[T], Any], x: T) -> T:
161
- ...
162
-
163
- @curry
164
- def flip[T, U, R](func: Callable[[T, U], R], a: U, b: T) -> R:
165
- ...
166
-
167
- def return_none(exc: Exception) -> None:
168
- ...
169
-
170
- class excepts[**P, T]:
171
- ...
172
-
173
- def _check_sigspec[T](sigspec: inspect.Signature | None, func: Callable[..., Any], builtin_func: Callable[..., T], *builtin_args: Any) -> tuple[inspect.Signature | None, T | bool | None]:
174
- ...
175
-
176
- def num_required_args(func: Callable[..., Any], sigspec: inspect.Signature | None = None) -> int | None:
177
- ...
178
-
179
- def has_varargs(func: Callable[..., Any], sigspec: inspect.Signature | None = None) -> bool | None:
180
- ...
181
-
182
- def has_keywords(func: Callable[..., Any], sigspec: inspect.Signature | None = None) -> bool | None:
183
- ...
184
-
185
- def is_valid_args(func: Callable[..., Any], args: tuple[Any, ...], kwargs: Mapping[str, Any], sigspec: inspect.Signature | None = None) -> bool | None:
186
- ...
187
-
188
- def is_partial_args(func: Callable[..., Any], args: tuple[Any, ...], kwargs: Mapping[str, Any], sigspec: inspect.Signature | None = None) -> bool | None:
189
- ...
190
-
191
- def is_arity(n: int, func: Callable[..., Any], sigspec: inspect.Signature | None = None) -> bool | None:
192
- ...
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes