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.
- {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/PKG-INFO +21 -31
- pythonic_fp_iterables-5.1.4/README.rst → pythonic_fp_iterables-5.2.0/README.md +12 -21
- {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/pyproject.toml +28 -24
- {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/src/pythonic_fp/iterables/__init__.py +1 -1
- {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/src/pythonic_fp/iterables/drop_take.py +4 -4
- {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/src/pythonic_fp/iterables/folding.py +14 -12
- {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/src/pythonic_fp/iterables/merging.py +9 -5
- pythonic_fp_iterables-5.1.4/.github/workflows/static.yml +0 -64
- pythonic_fp_iterables-5.1.4/.gitignore +0 -9
- pythonic_fp_iterables-5.1.4/CHANGELOG.rst +0 -201
- pythonic_fp_iterables-5.1.4/docs/Makefile +0 -78
- pythonic_fp_iterables-5.1.4/docs/gen_conf.py +0 -110
- pythonic_fp_iterables-5.1.4/docs/requirements.txt +0 -2
- pythonic_fp_iterables-5.1.4/docs/source/_static/.gitkeep +0 -0
- pythonic_fp_iterables-5.1.4/docs/source/_static/custom.css +0 -3
- pythonic_fp_iterables-5.1.4/docs/source/_templates/.gitkeep +0 -0
- pythonic_fp_iterables-5.1.4/docs/source/api/drop_take.rst +0 -6
- pythonic_fp_iterables-5.1.4/docs/source/api/folding.rst +0 -6
- pythonic_fp_iterables-5.1.4/docs/source/api/index.rst +0 -25
- pythonic_fp_iterables-5.1.4/docs/source/api/merging.rst +0 -6
- pythonic_fp_iterables-5.1.4/docs/source/changelog.rst +0 -7
- pythonic_fp_iterables-5.1.4/docs/source/description.rst +0 -7
- pythonic_fp_iterables-5.1.4/docs/source/index.rst +0 -30
- pythonic_fp_iterables-5.1.4/docs/source/releases.rst +0 -26
- pythonic_fp_iterables-5.1.4/docs/source/usage.rst +0 -30
- pythonic_fp_iterables-5.1.4/src/pythonic_fp/iterables/__init__.pyi +0 -0
- pythonic_fp_iterables-5.1.4/src/pythonic_fp/iterables/drop_take.pyi +0 -10
- pythonic_fp_iterables-5.1.4/src/pythonic_fp/iterables/folding.pyi +0 -13
- pythonic_fp_iterables-5.1.4/src/pythonic_fp/iterables/merging.pyi +0 -14
- pythonic_fp_iterables-5.1.4/tests/test_fold.py +0 -365
- pythonic_fp_iterables-5.1.4/tests/test_iterable.py +0 -279
- {pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/LICENSE +0 -0
- {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.
|
|
4
|
-
Summary:
|
|
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.
|
|
8
|
-
Description-Content-Type: text/
|
|
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>=
|
|
18
|
-
Requires-Dist: pythonic-fp-gadgets>=4.
|
|
19
|
-
|
|
20
|
-
Project-URL:
|
|
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
|
-
|
|
31
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
6
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
8
|
-
|
|
9
|
-
|
|
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>=
|
|
28
|
-
"pythonic-fp-gadgets>=4.
|
|
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.
|
|
34
|
-
Documentation =
|
|
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
|
-
[
|
|
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"
|
{pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/src/pythonic_fp/iterables/drop_take.py
RENAMED
|
@@ -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
|
|
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
|
|
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
|
-
**
|
|
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
|
-
**
|
|
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.
|
{pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/src/pythonic_fp/iterables/folding.py
RENAMED
|
@@ -42,11 +42,11 @@ def accumulate[D, L](
|
|
|
42
42
|
"""
|
|
43
43
|
.. admonition:: accumulate
|
|
44
44
|
|
|
45
|
-
Returns an iterator of
|
|
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
|
|
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
|
|
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-
|
|
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:
|
|
130
|
-
:param f:
|
|
131
|
-
|
|
132
|
-
:
|
|
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
|
|
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.
|
{pythonic_fp_iterables-5.1.4 → pythonic_fp_iterables-5.2.0}/src/pythonic_fp/iterables/merging.py
RENAMED
|
@@ -35,9 +35,9 @@ class MergeEnum(Enum):
|
|
|
35
35
|
"""
|
|
36
36
|
.. admonition:: Iterable Blending Enums.
|
|
37
37
|
|
|
38
|
-
- **
|
|
39
|
-
- **
|
|
40
|
-
- **
|
|
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,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``
|