pythonic-fp-gadgets 4.3.1__tar.gz → 4.4.0__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 (17) hide show
  1. {pythonic_fp_gadgets-4.3.1 → pythonic_fp_gadgets-4.4.0}/PKG-INFO +11 -10
  2. {pythonic_fp_gadgets-4.3.1 → pythonic_fp_gadgets-4.4.0}/README.md +9 -8
  3. {pythonic_fp_gadgets-4.3.1 → pythonic_fp_gadgets-4.4.0}/pyproject.toml +2 -1
  4. {pythonic_fp_gadgets-4.3.1 → pythonic_fp_gadgets-4.4.0}/src/pythonic_fp/gadgets/wrap.py +8 -9
  5. pythonic_fp_gadgets-4.3.1/src/pythonic_fp/gadgets/__init__.pyi +0 -6
  6. pythonic_fp_gadgets-4.3.1/src/pythonic_fp/gadgets/box.pyi +0 -27
  7. pythonic_fp_gadgets-4.3.1/src/pythonic_fp/gadgets/wrap.pyi +0 -23
  8. {pythonic_fp_gadgets-4.3.1 → pythonic_fp_gadgets-4.4.0}/LICENSE +0 -0
  9. {pythonic_fp_gadgets-4.3.1 → pythonic_fp_gadgets-4.4.0}/src/pythonic_fp/gadgets/__init__.py +0 -0
  10. {pythonic_fp_gadgets-4.3.1 → pythonic_fp_gadgets-4.4.0}/src/pythonic_fp/gadgets/box.py +0 -0
  11. {pythonic_fp_gadgets-4.3.1 → pythonic_fp_gadgets-4.4.0}/src/pythonic_fp/gadgets/py.typed +0 -0
  12. {pythonic_fp_gadgets-4.3.1 → pythonic_fp_gadgets-4.4.0}/src/pythonic_fp/gadgets/sentinels/__init__.py +0 -0
  13. {pythonic_fp_gadgets-4.3.1 → pythonic_fp_gadgets-4.4.0}/src/pythonic_fp/gadgets/sentinels/__init__.pyi +0 -0
  14. {pythonic_fp_gadgets-4.3.1 → pythonic_fp_gadgets-4.4.0}/src/pythonic_fp/gadgets/sentinels/flavored.py +0 -0
  15. {pythonic_fp_gadgets-4.3.1 → pythonic_fp_gadgets-4.4.0}/src/pythonic_fp/gadgets/sentinels/flavored.pyi +0 -0
  16. {pythonic_fp_gadgets-4.3.1 → pythonic_fp_gadgets-4.4.0}/src/pythonic_fp/gadgets/sentinels/novalue.py +0 -0
  17. {pythonic_fp_gadgets-4.3.1 → pythonic_fp_gadgets-4.4.0}/src/pythonic_fp/gadgets/sentinels/novalue.pyi +0 -0
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonic-fp-gadgets
3
- Version: 4.3.1
3
+ Version: 4.4.0
4
4
  Summary: Gadgets without external Pythonic FP dependencies.
5
- Keywords: gadgets
5
+ Keywords: gadgets,no-external-dependencies
6
6
  Author-email: "Geoffrey R. Scheller" <geoffrey@scheller.com>
7
7
  Requires-Python: >=3.14
8
8
  Description-Content-Type: text/markdown
@@ -31,18 +31,19 @@ Part of the
31
31
  [pythonic-fp](https://grscheller.github.io/pythonic-fp/)
32
32
  PyPI projects.
33
33
 
34
- ## Documentation
34
+ ## Description
35
35
 
36
+ Project Pythonic FP Gadgets contains
37
+
38
+ - single item box
39
+ - immutable wrapper classes, matchable, hashable and non-hashable versions
40
+ - sentinel values
41
+ - function returning iterator of its arguments
42
+ - function to find the latest common ancestor of two classes
43
+
36
44
  Documentation and other links for this project are hosted on
37
45
  [GitHub Pages](https://grscheller.github.io/pythonic-fp/projects/gadgets.html).
38
46
 
39
- - Gadgets
40
- - single item box
41
- - immutable wrapped (hashable) references
42
- - function returning iterator of its arguments
43
- - function to find the latest common ancestor of two classes
44
- - sentinel values
45
-
46
47
  ## Copyright and License
47
48
 
48
49
  Copyright (c) 2025-2026 Geoffrey R. Scheller. Licensed under the Apache
@@ -9,18 +9,19 @@ Part of the
9
9
  [pythonic-fp](https://grscheller.github.io/pythonic-fp/)
10
10
  PyPI projects.
11
11
 
12
- ## Documentation
12
+ ## Description
13
13
 
14
+ Project Pythonic FP Gadgets contains
15
+
16
+ - single item box
17
+ - immutable wrapper classes, matchable, hashable and non-hashable versions
18
+ - sentinel values
19
+ - function returning iterator of its arguments
20
+ - function to find the latest common ancestor of two classes
21
+
14
22
  Documentation and other links for this project are hosted on
15
23
  [GitHub Pages](https://grscheller.github.io/pythonic-fp/projects/gadgets.html).
16
24
 
17
- - Gadgets
18
- - single item box
19
- - immutable wrapped (hashable) references
20
- - function returning iterator of its arguments
21
- - function to find the latest common ancestor of two classes
22
- - sentinel values
23
-
24
25
  ## Copyright and License
25
26
 
26
27
  Copyright (c) 2025-2026 Geoffrey R. Scheller. Licensed under the Apache
@@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi"
4
4
 
5
5
  [project]
6
6
  name = "pythonic-fp-gadgets"
7
- version = "4.3.1"
7
+ version = "4.4.0"
8
8
  description = "Gadgets without external Pythonic FP dependencies."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.14" # floor: PEP 649/749 deferred annotations — class-level self-reference (SBool in its own ClassVar annotation) NameErrors on <3.14
@@ -13,6 +13,7 @@ authors = [
13
13
  ]
14
14
  keywords = [
15
15
  "gadgets",
16
+ "no-external-dependencies",
16
17
  ]
17
18
  classifiers = [
18
19
  "Development Status :: 4 - Beta",
@@ -12,12 +12,11 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- __all__ = ['Wrap', 'HWrap']
16
-
17
- from collections.abc import Callable, Iterator, Hashable
15
+ from collections.abc import Callable, Hashable, Iterator
18
16
 
17
+ __all__ = ['Wrap', 'HWrap']
19
18
 
20
- class Wrap[T]():
19
+ class Wrap[T]:
21
20
  """
22
21
  .. admonition:: Wrap
23
22
 
@@ -115,7 +114,7 @@ class Wrap[T]():
115
114
  """
116
115
  return 'Wrap(' + str(self._item) + ')'
117
116
 
118
- def map[U](self, f: Callable[[T], U]) -> 'Wrap[U]':
117
+ def map[U](self, f: Callable[[T], U]) -> Wrap[U]:
119
118
  """
120
119
  .. admonition:: map
121
120
 
@@ -127,7 +126,7 @@ class Wrap[T]():
127
126
  """
128
127
  return Wrap(f(self._item))
129
128
 
130
- def bind[U](self, f: Callable[[T], 'Wrap[U]']) -> 'Wrap[U]':
129
+ def bind[U](self, f: Callable[[T], Wrap[U]]) -> Wrap[U]:
131
130
  """
132
131
  .. admonition:: bind
133
132
 
@@ -152,7 +151,7 @@ class HWrap[T: Hashable](Hashable):
152
151
 
153
152
  """
154
153
 
155
- __slots__ = ('_item', '_hash')
154
+ __slots__ = ('_hash', '_item')
156
155
  __match_args__ = ('_item',)
157
156
 
158
157
  def __init__(self, item: T) -> None:
@@ -244,7 +243,7 @@ class HWrap[T: Hashable](Hashable):
244
243
  """
245
244
  return 'Wrap(' + str(self._item) + ')'
246
245
 
247
- def map[U](self, f: Callable[[T], U]) -> 'HWrap[U]':
246
+ def map[U](self, f: Callable[[T], U]) -> HWrap[U]:
248
247
  """
249
248
  .. admonition:: map
250
249
 
@@ -257,7 +256,7 @@ class HWrap[T: Hashable](Hashable):
257
256
  """
258
257
  return HWrap(f(self._item))
259
258
 
260
- def bind[U](self, f: Callable[[T], 'HWrap[U]']) -> 'HWrap[U]':
259
+ def bind[U](self, f: Callable[[T], HWrap[U]]) -> HWrap[U]:
261
260
  """
262
261
  .. admonition:: bind
263
262
 
@@ -1,6 +0,0 @@
1
- from collections.abc import Iterator
2
-
3
- __all__ = ['first_common_ancestor', 'iterate_over_arguments']
4
-
5
- def first_common_ancestor(cls1: type, cls2: type) -> type: ...
6
- def iterate_over_arguments[A](*args: A) -> Iterator[A]: ...
@@ -1,27 +0,0 @@
1
- from _typeshed import Incomplete
2
- from collections.abc import Callable, Iterator
3
- from typing import overload
4
-
5
- __all__ = ['Box']
6
-
7
- type _Sentinel = object
8
- class Box[T]:
9
- __match_args__: Incomplete
10
- @overload
11
- def __init__(self, item: T) -> None: ...
12
- @overload
13
- def __init__(self) -> None: ...
14
- def __bool__(self) -> bool: ...
15
- def __iter__(self) -> Iterator[T]: ...
16
- def __len__(self) -> int: ...
17
- def __eq__(self, other: object) -> bool: ...
18
- @overload
19
- def get(self) -> T: ...
20
- @overload
21
- def get(self, alt: T) -> T: ...
22
- def pop(self) -> T: ...
23
- def push(self, item: T) -> None: ...
24
- def put(self, item: T) -> None: ...
25
- def exchange(self, new_item: T) -> T: ...
26
- def map[U](self, f: Callable[[T], U]) -> Box[U]: ...
27
- def bind[U](self, f: Callable[[T], 'Box[U]']) -> Box[U]: ...
@@ -1,23 +0,0 @@
1
- from _typeshed import Incomplete
2
- from collections.abc import Callable, Hashable, Iterator
3
-
4
- __all__ = ['Wrap', 'HWrap']
5
-
6
- class Wrap[T]:
7
- __match_args__: Incomplete
8
- def __init__(self, item: T) -> None: ...
9
- def __bool__(self) -> bool: ...
10
- def __iter__(self) -> Iterator[T]: ...
11
- def __eq__(self, other: object) -> bool: ...
12
- def map[U](self, f: Callable[[T], U]) -> Wrap[U]: ...
13
- def bind[U](self, f: Callable[[T], 'Wrap[U]']) -> Wrap[U]: ...
14
-
15
- class HWrap[T: Hashable](Hashable):
16
- __match_args__: Incomplete
17
- def __init__(self, item: T) -> None: ...
18
- def __hash__(self) -> int: ...
19
- def __bool__(self) -> bool: ...
20
- def __iter__(self) -> Iterator[T]: ...
21
- def __eq__(self, other: object) -> bool: ...
22
- def map[U](self, f: Callable[[T], U]) -> HWrap[U]: ...
23
- def bind[U](self, f: Callable[[T], 'HWrap[U]']) -> HWrap[U]: ...