pythonic-fp.iterables 5.1.4__tar.gz → 5.2.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 (33) hide show
  1. {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/PKG-INFO +21 -31
  2. pythonic_fp_iterables-5.1.4/README.rst → pythonic_fp_iterables-5.2.0/README.md +12 -21
  3. {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/pyproject.toml +28 -24
  4. {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/src/pythonic_fp/iterables/__init__.py +1 -1
  5. {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/src/pythonic_fp/iterables/drop_take.py +4 -4
  6. {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/src/pythonic_fp/iterables/folding.py +14 -12
  7. {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/src/pythonic_fp/iterables/merging.py +9 -5
  8. pythonic_fp_iterables-5.1.4/.github/workflows/static.yml +0 -64
  9. pythonic_fp_iterables-5.1.4/.gitignore +0 -9
  10. pythonic_fp_iterables-5.1.4/CHANGELOG.rst +0 -201
  11. pythonic_fp_iterables-5.1.4/docs/Makefile +0 -78
  12. pythonic_fp_iterables-5.1.4/docs/gen_conf.py +0 -110
  13. pythonic_fp_iterables-5.1.4/docs/requirements.txt +0 -2
  14. pythonic_fp_iterables-5.1.4/docs/source/_static/.gitkeep +0 -0
  15. pythonic_fp_iterables-5.1.4/docs/source/_static/custom.css +0 -3
  16. pythonic_fp_iterables-5.1.4/docs/source/_templates/.gitkeep +0 -0
  17. pythonic_fp_iterables-5.1.4/docs/source/api/drop_take.rst +0 -6
  18. pythonic_fp_iterables-5.1.4/docs/source/api/folding.rst +0 -6
  19. pythonic_fp_iterables-5.1.4/docs/source/api/index.rst +0 -25
  20. pythonic_fp_iterables-5.1.4/docs/source/api/merging.rst +0 -6
  21. pythonic_fp_iterables-5.1.4/docs/source/changelog.rst +0 -7
  22. pythonic_fp_iterables-5.1.4/docs/source/description.rst +0 -7
  23. pythonic_fp_iterables-5.1.4/docs/source/index.rst +0 -30
  24. pythonic_fp_iterables-5.1.4/docs/source/releases.rst +0 -26
  25. pythonic_fp_iterables-5.1.4/docs/source/usage.rst +0 -30
  26. pythonic_fp_iterables-5.1.4/src/pythonic_fp/iterables/__init__.pyi +0 -0
  27. pythonic_fp_iterables-5.1.4/src/pythonic_fp/iterables/drop_take.pyi +0 -10
  28. pythonic_fp_iterables-5.1.4/src/pythonic_fp/iterables/folding.pyi +0 -13
  29. pythonic_fp_iterables-5.1.4/src/pythonic_fp/iterables/merging.pyi +0 -14
  30. pythonic_fp_iterables-5.1.4/tests/test_fold.py +0 -365
  31. pythonic_fp_iterables-5.1.4/tests/test_iterable.py +0 -279
  32. {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/LICENSE +0 -0
  33. {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/src/pythonic_fp/iterables/py.typed +0 -0
@@ -1,62 +1,52 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonic-fp-iterables
3
- Version: 5.1.4
4
- Summary: .. admonition:: Composing and iterating iterables
3
+ Version: 5.2.0
4
+ Summary: Composing and iterating iterables.
5
5
  Keywords: iterables,iterators
6
6
  Author-email: "Geoffrey R. Scheller" <geoffrey@scheller.com>
7
- Requires-Python: >=3.13
8
- Description-Content-Type: text/x-rst
7
+ Requires-Python: >=3.14
8
+ Description-Content-Type: text/markdown
9
9
  Classifier: Development Status :: 5 - Production/Stable
10
10
  Classifier: Framework :: Pytest
11
11
  Classifier: Intended Audience :: Developers
12
12
  Classifier: License :: OSI Approved :: Apache Software License
13
13
  Classifier: Operating System :: OS Independent
14
14
  Classifier: Programming Language :: Python :: 3.14
15
+ Classifier: Programming Language :: Python :: 3.15
15
16
  Classifier: Typing :: Typed
16
17
  License-File: LICENSE
17
- Requires-Dist: pythonic-fp-fptools>=5.2.0
18
- Requires-Dist: pythonic-fp-gadgets>=4.0.2
19
- Requires-Dist: pytest>=8.4.1 ; extra == "test"
20
- Project-URL: Changelog, https://github.com/grscheller/pythonic-fp-iterables/blob/main/CHANGELOG.rst
21
- Project-URL: Documentation, https://grscheller.github.io/pythonic-fp/projects/iterables.html
18
+ Requires-Dist: pythonic-fp-fptools>=6,<6.2
19
+ Requires-Dist: pythonic-fp-gadgets>=4.5,<6
20
+ Project-URL: Changelog, https://github.com/grscheller/pythonic-fp-iterables/blob/main/CHANGELOG.md
21
+ Project-URL: Documentation, https://grscheller.github.io/pythonic-fp-iterables/release/html/
22
22
  Project-URL: Homepage, https://grscheller.github.io/pythonic-fp/
23
23
  Project-URL: Source, https://github.com/grscheller/pythonic-fp-iterables
24
- Provides-Extra: test
25
24
 
26
- Pythonic FP - Tools for iterables
27
- =================================
25
+ # Pythonic FP - Tools for iterables
26
+
27
+ Library of functions for iterating iterables.
28
28
 
29
29
  PyPI project
30
- `pythonic-fp-iterators
31
- <https://pypi.org/project/pythonic-fp-iterables>`_.
30
+ [pythonic-fp-iterators](https://pypi.org/project/pythonic-fp-iterables).
31
+ Part of the
32
+ [pythonic-fp](https://grscheller.github.io/pythonic-fp/)
33
+ PyPI projects.
32
34
 
33
- Library of functions for iterating iterables.
35
+ ## Documentation
36
+
37
+ Documentation and other links for this project are hosted on
38
+ [GitHub Pages](https://grscheller.github.io/pythonic-fp/projects/iterables.html).
34
39
 
35
40
  - Concatenating and merging iterables
36
41
  - Dropping and taking values from iterables
37
42
  - Reducing and accumulating iterables
38
43
  - Assumptions
39
-
40
44
  - iterables are not necessarily iterators
41
45
  - at all times iterator protocol is assumed to be followed
42
-
43
46
  - all iterators are assumed to be iterable
44
47
  - for all iterators ``foo`` we assume ``iter(foo) is foo``
45
48
 
46
- Part of the
47
- `pythonic-fp
48
- <https://grscheller.github.io/pythonic-fp/>`_
49
- PyPI projects.
50
-
51
- Documentation
52
- -------------
53
-
54
- Documentation and other links for this project are hosted on
55
- `GitHub Pages
56
- <https://grscheller.github.io/pythonic-fp/projects/iterables.html>`_.
57
-
58
- Copyright and License
59
- ---------------------
49
+ ## Copyright and License
60
50
 
61
51
  Copyright (c) 2023-2026 Geoffrey R. Scheller. Licensed under the Apache
62
52
  License, Version 2.0. See the LICENSE file for details.
@@ -1,37 +1,28 @@
1
- Pythonic FP - Tools for iterables
2
- =================================
1
+ # Pythonic FP - Tools for iterables
2
+
3
+ Library of functions for iterating iterables.
3
4
 
4
5
  PyPI project
5
- `pythonic-fp-iterators
6
- <https://pypi.org/project/pythonic-fp-iterables>`_.
6
+ [pythonic-fp-iterators](https://pypi.org/project/pythonic-fp-iterables).
7
+ Part of the
8
+ [pythonic-fp](https://grscheller.github.io/pythonic-fp/)
9
+ PyPI projects.
7
10
 
8
- Library of functions for iterating iterables.
11
+ ## Documentation
12
+
13
+ Documentation and other links for this project are hosted on
14
+ [GitHub Pages](https://grscheller.github.io/pythonic-fp/projects/iterables.html).
9
15
 
10
16
  - Concatenating and merging iterables
11
17
  - Dropping and taking values from iterables
12
18
  - Reducing and accumulating iterables
13
19
  - Assumptions
14
-
15
20
  - iterables are not necessarily iterators
16
21
  - at all times iterator protocol is assumed to be followed
17
-
18
22
  - all iterators are assumed to be iterable
19
23
  - for all iterators ``foo`` we assume ``iter(foo) is foo``
20
24
 
21
- Part of the
22
- `pythonic-fp
23
- <https://grscheller.github.io/pythonic-fp/>`_
24
- PyPI projects.
25
-
26
- Documentation
27
- -------------
28
-
29
- Documentation and other links for this project are hosted on
30
- `GitHub Pages
31
- <https://grscheller.github.io/pythonic-fp/projects/iterables.html>`_.
32
-
33
- Copyright and License
34
- ---------------------
25
+ ## Copyright and License
35
26
 
36
27
  Copyright (c) 2023-2026 Geoffrey R. Scheller. Licensed under the Apache
37
28
  License, Version 2.0. See the LICENSE file for details.
@@ -4,9 +4,10 @@ build-backend = "flit_core.buildapi"
4
4
 
5
5
  [project]
6
6
  name = "pythonic-fp-iterables"
7
- version = "5.1.4"
8
- readme = "README.rst"
9
- requires-python = ">=3.13"
7
+ version = "5.2.0"
8
+ description = "Composing and iterating iterables."
9
+ readme = "README.md"
10
+ requires-python = ">=3.14" # floor: PEP 649/749 deferred annotations — class-level self-reference
10
11
  authors = [
11
12
  { name = "Geoffrey R. Scheller", email = "geoffrey@scheller.com" },
12
13
  ]
@@ -21,21 +22,25 @@ classifiers = [
21
22
  "License :: OSI Approved :: Apache Software License",
22
23
  "Operating System :: OS Independent",
23
24
  "Programming Language :: Python :: 3.14",
25
+ "Programming Language :: Python :: 3.15",
24
26
  "Typing :: Typed",
25
27
  ]
26
28
  dependencies = [
27
- "pythonic-fp-fptools>=5.2.0",
28
- "pythonic-fp-gadgets>=4.0.2",
29
+ "pythonic-fp-fptools>=6,<6.2",
30
+ "pythonic-fp-gadgets>=4.5,<6",
29
31
  ]
30
- dynamic = ["description"]
31
32
 
32
33
  [project.urls]
33
- Changelog = "https://github.com/grscheller/pythonic-fp-iterables/blob/main/CHANGELOG.rst"
34
- Documentation = "https://grscheller.github.io/pythonic-fp/projects/iterables.html"
34
+ Changelog = "https://github.com/grscheller/pythonic-fp-iterables/blob/main/CHANGELOG.md"
35
+ Documentation ="https://grscheller.github.io/pythonic-fp-iterables/release/html/"
35
36
  Homepage = "https://grscheller.github.io/pythonic-fp/"
36
37
  Source = "https://github.com/grscheller/pythonic-fp-iterables"
37
38
 
38
- [project.optional-dependencies]
39
+ [dependency-groups]
40
+ docs = [
41
+ "furo>=2025.12.19",
42
+ "sphinx>=9.1",
43
+ ]
39
44
  test = [
40
45
  "pytest>=8.4.1",
41
46
  ]
@@ -43,6 +48,17 @@ test = [
43
48
  [tool.flit.module]
44
49
  name = "pythonic_fp.iterables"
45
50
 
51
+ [tool.flit.sdist]
52
+ exclude = [
53
+ "docs/",
54
+ "tests/",
55
+ ]
56
+
57
+ [tool.pytest]
58
+ addopts = ["-ra"]
59
+ consider_namespace_packages = true
60
+ testpaths = ["tests/"]
61
+
46
62
  [tool.mypy]
47
63
  explicit_package_bases = true
48
64
  local_partial_types = true
@@ -51,23 +67,12 @@ warn_redundant_casts = true
51
67
  warn_return_any = true
52
68
  warn_unused_configs = true
53
69
 
54
- [tool.pylsp-mypy]
55
- enabled = true
56
- live-mode = true
57
- dmypy = false
58
- strict = true
59
- report_progress = true
60
-
61
- [tool.pytest]
62
- addopts = [
63
- "-ra",
64
- ]
65
- consider_namespace_packages = true
66
- testpaths = ["tests/"]
67
-
68
70
  [tool.ruff]
69
71
  target-version = "py314"
70
72
 
73
+ [tool.ruff.lint]
74
+ ignore = ["RUF022", "E741"]
75
+
71
76
  [tool.ruff.lint.flake8-quotes]
72
77
  docstring-quotes = "double"
73
78
 
@@ -76,7 +81,6 @@ docstring-quotes = "double"
76
81
  "E731",
77
82
  "C901",
78
83
  ]
79
- "**/*.py" = ["E741"]
80
84
 
81
85
  [tool.ruff.format]
82
86
  quote-style = "single"
@@ -27,7 +27,7 @@
27
27
  - at all times iterator protocol is assumed to be followed
28
28
 
29
29
  - all iterators are assumed to be iterable
30
- - for all iterators ``foobar`` we assume ``iter(foobar) is foobar``
30
+ - for all iterators ``foo`` we assume ``iter(foo) is foo``
31
31
 
32
32
  """
33
33
 
@@ -74,7 +74,7 @@ def drop_while[D](iterable: Iterable[D], pred: Callable[[D], bool]) -> Iterator[
74
74
  Drop initial items from iterable while predicate is true.
75
75
 
76
76
  :param iterable: Iterable whose items are to be dropped.
77
- :param pred: Single argument Boolean items function, the "predicate".
77
+ :param pred: Single argument Boolean valued function.
78
78
  :yields: items starting when ``pred`` returns ``False``.
79
79
 
80
80
  """
@@ -117,7 +117,7 @@ def take_while[D](iterable: Iterable[D], pred: Callable[[D], bool]) -> Iterator[
117
117
  Return an iterator of items until predicate false.
118
118
 
119
119
  :param iterable: Iterable providing the items to be taken.
120
- :param pred: Single argument Boolean valued function, the "predicate".
120
+ :param pred: Single argument Boolean valued function.
121
121
  :yields: Items from iterable while predicate is true.
122
122
 
123
123
  .. warning::
@@ -146,7 +146,7 @@ def take_split[D](iterable: Iterable[D], n: int) -> tuple[Iterator[D], Iterator[
146
146
 
147
147
  .. admonition:: CONTRACT
148
148
 
149
- **CONTRACT:** Do not access the second iterator until
149
+ **IMPORTANT:** Do not access the second iterator until
150
150
  the first one is completely exhausted.
151
151
 
152
152
  :param iterable: Iterable providing the items to be taken.
@@ -172,7 +172,7 @@ def take_while_split[D](
172
172
 
173
173
  .. admonition:: CONTRACT
174
174
 
175
- **CONTRACT:** Do not access the second iterator until
175
+ **IMPORTANT:** Do not access the second iterator until
176
176
  the first one is completely exhausted.
177
177
 
178
178
  :param iterable: Iterable providing the items to be taken.
@@ -42,11 +42,11 @@ def accumulate[D, L](
42
42
  """
43
43
  .. admonition:: accumulate
44
44
 
45
- Returns an iterator of partial fold items. A pure Python
46
- version of
45
+ Returns an iterator of partially folded items.
47
46
 
48
47
  :param iterable: Iterable to be folded.
49
- :param f: Two parameter function, first parameter for accumulated items.
48
+ :param f: Two parameter function, first parameter is for
49
+ the accumulator.
50
50
  :param initial: Optional ``initial`` item to start fold.
51
51
  :yields: The intermediate folded items.
52
52
 
@@ -90,7 +90,8 @@ def reduce_left[D](iterable: Iterable[D], f: Callable[[D, D], D]) -> D | Never:
90
90
  Fold an iterable left with a function.
91
91
 
92
92
  :param iterable: Iterable to be reduced (folded).
93
- :param f: Two parameter function, first parameter for accumulated items.
93
+ :param f: Two parameter function, first parameter is for
94
+ the accumulator.
94
95
  :return: Reduced item from the iterable.
95
96
  :raises StopIteration: When called on an empty iterable.
96
97
  :raises Exception: Does not catch any exceptions from ``f``.
@@ -98,7 +99,7 @@ def reduce_left[D](iterable: Iterable[D], f: Callable[[D, D], D]) -> D | Never:
98
99
  .. warning::
99
100
 
100
101
  - never returns if given an infinite iterable
101
- - does not catch or re-raises exceptions raised by ``f``
102
+ - does not catch or re-raise exceptions raised by ``f``
102
103
 
103
104
  """
104
105
  it = iter(iterable)
@@ -126,10 +127,11 @@ def fold_left[D, L](
126
127
  - initial item is required, does not default to ``0``
127
128
  - handles non-numeric data just find
128
129
 
129
- :param iterable: iterable to be folded
130
- :param f: two parameter function, first parameter for accumulated item
131
- :param initial: mandatory initial item to start fold
132
- :return: the folded item
130
+ :param iterable: Iterable to be folded.
131
+ :param f: Two parameter function, first parameter is for
132
+ the accumulator.
133
+ :param initial: Mandatory initial item to start fold
134
+ :return: The folded item.
133
135
 
134
136
  .. warning::
135
137
 
@@ -155,7 +157,7 @@ def maybe_fold_left[D, L](
155
157
  - if iterable empty and no ``initial`` item given, return ``MayBe()``
156
158
 
157
159
  :param iterable: The iterable to be folded.
158
- :param f: First argument is for the accumulated items.
160
+ :param f: First argument is for the accumulator.
159
161
  :param initial: Mandatory initial item to start fold.
160
162
  :return: ``MayBe`` of a successfully folded item,
161
163
  otherwise returns ``MayBe()``.
@@ -199,7 +201,7 @@ def sc_reduce_left[D](
199
201
  Short circuit version of a left fold.
200
202
 
201
203
  :param iterable: Iterable to be reduced from the left.
202
- :param f: Two parameter function, first parameter for
204
+ :param f: Two parameter function, first parameter is for
203
205
  the accumulator.
204
206
  :param start: Delay starting the fold until it returns true.
205
207
  :param stop: Prematurely stop the fold when it returns true.
@@ -261,7 +263,7 @@ def sc_reduce_right[D](
261
263
  Short circuit version of a right fold.
262
264
 
263
265
  :param iterable: Iterable to be reduced from the right.
264
- :param f: Two parameter function, second parameter for
266
+ :param f: Two parameter function, second parameter is for
265
267
  the accumulator.
266
268
  :param start: Delay starting the fold until it returns true.
267
269
  :param stop: Prematurely stop the fold when it returns true.
@@ -35,9 +35,9 @@ class MergeEnum(Enum):
35
35
  """
36
36
  .. admonition:: Iterable Blending Enums.
37
37
 
38
- - **MergeEnum.Concat:** Concatenate first to last
39
- - **MergeEnum.Merge:** Merge until one is exhausted
40
- - **MergeEnum.Exhaust:** Merge until all are exhausted
38
+ - **Concat:** Concatenate first to last
39
+ - **Merge:** Merge until one is exhausted
40
+ - **Exhaust:** Merge until all are exhausted
41
41
 
42
42
  """
43
43
  Concat = auto()
@@ -76,7 +76,7 @@ def merge[D](*iterables: Iterable[D], yield_partials: bool = False) -> Iterator[
76
76
  """
77
77
  .. admonition:: merge iterables
78
78
 
79
- Merge multiple iterables until one is exhausted.
79
+ Merge multiple iterables until one of them is exhausted.
80
80
 
81
81
  :param iterables: Iterables to merge until one gets exhausted.
82
82
  :param yield_partials: Yield any unpaired yielded items from other iterables.
@@ -112,7 +112,7 @@ def exhaust[D](*iterables: Iterable[D]) -> Iterator[D]:
112
112
  """
113
113
  .. admonition:: exhaustively merge iterables
114
114
 
115
- Merge multiple iterables until all are exhausted.
115
+ Merge multiple iterables until all of them are exhausted.
116
116
 
117
117
  :param iterables: Iterables to exhaustively merge.
118
118
  :yields: Merged items from the iterables until all of the
@@ -150,6 +150,10 @@ def blend[D](
150
150
 
151
151
  Merge behavior based on value of merge_enum parameter.
152
152
 
153
+ - Concat: Concatenate first to last
154
+ - Merge: Merge until one is exhausted
155
+ - Exhaust: Merge until all are exhausted
156
+
153
157
  :param iterables: Iterables to blend together.
154
158
  :param merge_enum: ``MergeEnum`` to determine merging behavior.
155
159
  :param yield_partials: Yield unpaired items from other iterables.
@@ -1,64 +0,0 @@
1
- name: Build and Deploy Furo Themed Sphinx Documentation
2
-
3
- on:
4
- push:
5
- branches: ["main"]
6
- workflow_dispatch:
7
-
8
- env:
9
- RELEASE: '5.1.4'
10
- DEVEL: '5.1.5'
11
- PYTHON: '3.14'
12
-
13
- permissions:
14
- contents: read
15
- pages: write
16
- id-token: write
17
-
18
- concurrency:
19
- group: "pages"
20
- cancel-in-progress: false
21
-
22
- jobs:
23
- deploy:
24
- runs-on: ubuntu-latest
25
- environment:
26
- name: github-pages
27
- url: ${{ steps.deployment.outputs.page_url }}
28
- steps:
29
- - name: Checkout
30
- uses: actions/checkout@v6
31
-
32
- - name: Select Python
33
- uses: actions/setup-python@v6
34
- with:
35
- python-version: '3.14'
36
-
37
- - name: Install Sphinx Dependencies
38
- run: |
39
- pip install -r docs/requirements.txt
40
- sudo apt-get install -y graphviz
41
-
42
- - name: Build Release Docs
43
- run: |
44
- pip install pythonic-fp-iterables
45
- docs/gen_conf.py release ${{ env.RELEASE }} Iterables iterables > docs/source/conf.py
46
- sphinx-build -M html docs/source docs/build/release
47
-
48
- - name: Build Development Docs
49
- run: |
50
- pip install -e .
51
- docs/gen_conf.py devel ${{ env.DEVEL }} Iterables iterables > docs/source/conf.py
52
- sphinx-build -M html docs/source docs/build/development
53
-
54
- - name: Setup Pages
55
- uses: actions/configure-pages@v6
56
-
57
- - name: Upload Artifact
58
- uses: actions/upload-pages-artifact@v5
59
- with:
60
- path: docs/build
61
-
62
- - name: Deploy to GitHub Pages
63
- uses: actions/deploy-pages@v5
64
- id: deployment
@@ -1,9 +0,0 @@
1
- # Minimal version - only add to when necessary
2
- **/__pycache__/
3
- dist/
4
- docs/build/
5
- docs/source/conf.py
6
- **/.dmypy.json
7
- **/.mypy_cache/
8
- **/.pytest_cache/
9
- **/.ruff_cache
@@ -1,201 +0,0 @@
1
- CHANGELOG
2
- =========
3
-
4
- PyPI pythonic-fp.iterables project.
5
-
6
- Semantic Versioning
7
- -------------------
8
-
9
- Strict 3 digit semantic versioning adopted 2025-05-19.
10
-
11
- - **MAJOR** version incremented for incompatible API changes
12
- - **MINOR** version incremented for backward compatible added functionality
13
- - **PATCH** version incremented for backward compatible bug fixes
14
-
15
- See `Semantic Versioning 2.0.0 <https://semver.org>`_.
16
-
17
- Releases and Important Milestones
18
- ---------------------------------
19
-
20
- Development Status Reappraisal - 2026-05-05
21
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22
-
23
- Maintainer appraised the Development Status for
24
- pythonic-fp-iterables to be ``"5 - Production/Stable"``.
25
-
26
- PyPI 5.1.1 - 2025-08-02
27
- ~~~~~~~~~~~~~~~~~~~~~~~
28
-
29
- Only docstring changes.
30
-
31
- PyPI 5.1.0 - 2025-08-02
32
- ~~~~~~~~~~~~~~~~~~~~~~~
33
-
34
- - changed singletons -> sentinels
35
- - Removed "from __future__ import annotations"
36
- - Added .pyi files
37
-
38
- PyPI 5.0.0 - 2025-08-02
39
- ~~~~~~~~~~~~~~~~~~~~~~~
40
-
41
- General consistency tweaks and fixes across all pythonic-fp projects.
42
-
43
- PyPI 4.0.0 - 2025-07-16
44
- ~~~~~~~~~~~~~~~~~~~~~~~
45
-
46
- Primary purpose was to bring Sphinx documentation in alignment
47
- with other pythonic-fp projects. Ended up making substantial
48
- Sphinx documentation improvements. Will use this documentation
49
- for the other pythonic-fp projects.
50
-
51
- - API change
52
-
53
- - renamed pythonic_fp.iterables.foldl to pythonic_fp.iterables.fold_left
54
-
55
- PyPI 3.0.0 - 2025-07-06
56
- ~~~~~~~~~~~~~~~~~~~~~~~
57
-
58
- First PyPI release as ``pythonic-fp.iterables``
59
-
60
- - dropping dtools namespace name because there is a repo by that name.
61
-
62
- PyPI 2.0.0 - 2025-05-22
63
- ~~~~~~~~~~~~~~~~~~~~~~~
64
-
65
- - Moved dtools.fp.iterables to its own PyPI project
66
-
67
- - dtools.iterables
68
-
69
- - Moved dtools.fp.err_handling to the dtools.containers PyPI project
70
-
71
- - Moved class MayBe -> module dtools.containers.maybe
72
- - Moved class Xor -> module dtools.containers.xor
73
- - dropped lazy methods
74
-
75
- - will import dtools.fp.lazy directly for this functionality
76
-
77
- PyPI 1.7.0 - 2025-04-22
78
- ~~~~~~~~~~~~~~~~~~~~~~~
79
-
80
- Last PyPI release as dtools.fp
81
-
82
- - API changes along the lines of dtools.ca 3.12
83
- - typing improvements
84
- - docstring changes
85
- - pyproject.toml standardization
86
-
87
- PyPI 1.6.0 - 2025-04-07
88
- ~~~~~~~~~~~~~~~~~~~~~~~
89
-
90
- - typing improvements
91
-
92
- PyPI 1.4.0 - 2025-03-16
93
- ~~~~~~~~~~~~~~~~~~~~~~~
94
-
95
- - much work dtools.iterables
96
-
97
- - finally implemented scReduceL and scReduceR functions
98
- - tweaked API across iterables module
99
-
100
- PyPI 1.3.0 - 2025-01-17
101
- ~~~~~~~~~~~~~~~~~~~~~~~
102
-
103
- First release as dtools.fp
104
-
105
- Repo name changes.
106
-
107
- - GitHub: fp -> dtools-fp
108
- - PyPI: grscheller.fp -> dtools.fp
109
-
110
- PyPI 1.0.1 - 2024-10-20
111
- ~~~~~~~~~~~~~~~~~~~~~~~
112
-
113
- - removed docs from repo
114
- - docs for all grscheller namespace projects maintained here
115
-
116
- - https://grscheller.github.io/grscheller-pypi-namespace-docs/
117
-
118
- PyPI 1.0.0 - 2024-10-18
119
- ~~~~~~~~~~~~~~~~~~~~~~~
120
-
121
- Decided to make this release first stable release.
122
-
123
- - renamed module fp.woException to fp.err_handling
124
- - pytest improvements based on pytest documentation
125
-
126
- PyPI 0.4.0 - 2024-10-03
127
- ~~~~~~~~~~~~~~~~~~~~~~~
128
-
129
- Long overdue PyPI release.
130
-
131
- Version 0.3.4.0 - 2024-09-30 (Devel environment only)
132
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
133
-
134
- API change for fp.iterables.
135
-
136
- - function name changes
137
-
138
- - ``foldL``, ``foldR``, ``foldLsc``, ``foldRsc``
139
- - ``sc`` stands for "short circuit"
140
-
141
- - all now return class woException.MB
142
-
143
- Version 0.3.3.7 - 2024-09-22 (Devel environment only)
144
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
145
-
146
- Added more functions to fp.iterables module.
147
-
148
- - take(it: Iterable[D], n: int) -> Iterator[D]
149
- - takeWhile(it: Iterable[D], pred: Callable\[[D], bool\]) -> Iterator[D]
150
- - drop(it: Iterable[D], n: int) -> Iterator[D]
151
- - dropWhile(it: Iterable[D], pred: Callable\[[D], bool\]) -> Iterator[D]
152
-
153
- Version 0.3.3.4 - 2024-09-16 (Devel environment only)
154
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
155
-
156
- Both ``foldL_sc`` and ``foldR_sc`` now have a common paradigm
157
- and similar signatures.
158
-
159
- Version 0.3.3.3 - 2024-09-15 (Devel environment only)
160
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
161
-
162
- Added fp.iterables function ``foldR_sc``
163
-
164
- - shortcut version of ``foldR``
165
- - not fully tested
166
- - docstring not updated
167
-
168
- Version 0.3.3.2 - 2024-09-14 (Devel environment only)
169
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
170
-
171
- Added ``foldL_sc``, shortcut version of foldL,
172
- to fp.iterables.
173
-
174
-
175
- PyPI 0.3.1 - 2024-08-20
176
- ~~~~~~~~~~~~~~~~~~~~~~~
177
-
178
- Now fp.iterables no longer exports ``CONCAT``, ``MERGE``, ``EXHAUST``.
179
-
180
- - for grscheller.datastructures
181
-
182
- - grscheller.datastructures.ftuple
183
- - grscheller.datastructures.split_ends
184
-
185
- PyPI 0.2.0 - 2024-07-26
186
- ~~~~~~~~~~~~~~~~~~~~~~~
187
-
188
- - from last PyPI release
189
-
190
- - added accumulate function to fp.iterators
191
-
192
- - overall much better docstrings
193
-
194
- PyPI 0.1.0 - 2024-07-11
195
- ~~~~~~~~~~~~~~~~~~~~~~~
196
-
197
- Initial PyPI release as grscheller.fp
198
-
199
- Replicated functionality from grscheller.datastructures.
200
-
201
- - ``grscheller.core.iterlib -> grscheller.fp.iterators``