pythonic-fp.iterables 5.1.3__tar.gz → 5.1.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 (35) hide show
  1. pythonic_fp_iterables-5.1.4/.github/workflows/static.yml +64 -0
  2. {pythonic_fp_iterables-5.1.3 → pythonic_fp_iterables-5.1.4}/.gitignore +2 -0
  3. {pythonic_fp_iterables-5.1.3 → pythonic_fp_iterables-5.1.4}/CHANGELOG.rst +6 -0
  4. {pythonic_fp_iterables-5.1.3 → pythonic_fp_iterables-5.1.4}/PKG-INFO +11 -10
  5. {pythonic_fp_iterables-5.1.3 → pythonic_fp_iterables-5.1.4}/README.rst +6 -5
  6. pythonic_fp_iterables-5.1.4/docs/Makefile +78 -0
  7. pythonic_fp_iterables-5.1.4/docs/gen_conf.py +110 -0
  8. pythonic_fp_iterables-5.1.4/docs/requirements.txt +2 -0
  9. pythonic_fp_iterables-5.1.4/docs/source/_static/custom.css +3 -0
  10. pythonic_fp_iterables-5.1.4/docs/source/api/drop_take.rst +6 -0
  11. pythonic_fp_iterables-5.1.4/docs/source/api/folding.rst +6 -0
  12. pythonic_fp_iterables-5.1.4/docs/source/api/index.rst +25 -0
  13. pythonic_fp_iterables-5.1.4/docs/source/api/merging.rst +6 -0
  14. pythonic_fp_iterables-5.1.4/docs/source/changelog.rst +7 -0
  15. pythonic_fp_iterables-5.1.4/docs/source/description.rst +7 -0
  16. pythonic_fp_iterables-5.1.4/docs/source/index.rst +30 -0
  17. pythonic_fp_iterables-5.1.4/docs/source/releases.rst +26 -0
  18. pythonic_fp_iterables-5.1.4/docs/source/usage.rst +30 -0
  19. {pythonic_fp_iterables-5.1.3 → pythonic_fp_iterables-5.1.4}/pyproject.toml +24 -17
  20. {pythonic_fp_iterables-5.1.3 → pythonic_fp_iterables-5.1.4}/src/pythonic_fp/iterables/__init__.py +6 -15
  21. pythonic_fp_iterables-5.1.4/src/pythonic_fp/iterables/__init__.pyi +0 -0
  22. pythonic_fp_iterables-5.1.4/src/pythonic_fp/iterables/drop_take.py +202 -0
  23. {pythonic_fp_iterables-5.1.3 → pythonic_fp_iterables-5.1.4}/src/pythonic_fp/iterables/folding.py +100 -77
  24. pythonic_fp_iterables-5.1.4/src/pythonic_fp/iterables/merging.py +168 -0
  25. pythonic_fp_iterables-5.1.4/src/pythonic_fp/iterables/py.typed +0 -0
  26. pythonic_fp_iterables-5.1.3/src/pythonic_fp/iterables/drop_take.py +0 -169
  27. pythonic_fp_iterables-5.1.3/src/pythonic_fp/iterables/merging.py +0 -154
  28. {pythonic_fp_iterables-5.1.3 → pythonic_fp_iterables-5.1.4}/LICENSE +0 -0
  29. /pythonic_fp_iterables-5.1.3/src/pythonic_fp/iterables/__init__.pyi → /pythonic_fp_iterables-5.1.4/docs/source/_static/.gitkeep +0 -0
  30. /pythonic_fp_iterables-5.1.3/src/pythonic_fp/iterables/py.typed → /pythonic_fp_iterables-5.1.4/docs/source/_templates/.gitkeep +0 -0
  31. {pythonic_fp_iterables-5.1.3 → pythonic_fp_iterables-5.1.4}/src/pythonic_fp/iterables/drop_take.pyi +0 -0
  32. {pythonic_fp_iterables-5.1.3 → pythonic_fp_iterables-5.1.4}/src/pythonic_fp/iterables/folding.pyi +0 -0
  33. {pythonic_fp_iterables-5.1.3 → pythonic_fp_iterables-5.1.4}/src/pythonic_fp/iterables/merging.pyi +0 -0
  34. {pythonic_fp_iterables-5.1.3 → pythonic_fp_iterables-5.1.4}/tests/test_fold.py +0 -0
  35. {pythonic_fp_iterables-5.1.3 → pythonic_fp_iterables-5.1.4}/tests/test_iterable.py +0 -0
@@ -0,0 +1,64 @@
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,6 +1,8 @@
1
1
  # Minimal version - only add to when necessary
2
2
  **/__pycache__/
3
3
  dist/
4
+ docs/build/
5
+ docs/source/conf.py
4
6
  **/.dmypy.json
5
7
  **/.mypy_cache/
6
8
  **/.pytest_cache/
@@ -17,6 +17,12 @@ See `Semantic Versioning 2.0.0 <https://semver.org>`_.
17
17
  Releases and Important Milestones
18
18
  ---------------------------------
19
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
+
20
26
  PyPI 5.1.1 - 2025-08-02
21
27
  ~~~~~~~~~~~~~~~~~~~~~~~
22
28
 
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonic-fp-iterables
3
- Version: 5.1.3
4
- Summary: Tools for iterables
3
+ Version: 5.1.4
4
+ Summary: .. admonition:: Composing and iterating iterables
5
5
  Keywords: iterables,iterators
6
6
  Author-email: "Geoffrey R. Scheller" <geoffrey@scheller.com>
7
7
  Requires-Python: >=3.13
@@ -11,15 +11,15 @@ 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
- Classifier: Programming Language :: Python :: 3.13
14
+ Classifier: Programming Language :: Python :: 3.14
15
15
  Classifier: Typing :: Typed
16
16
  License-File: LICENSE
17
17
  Requires-Dist: pythonic-fp-fptools>=5.2.0
18
18
  Requires-Dist: pythonic-fp-gadgets>=4.0.2
19
19
  Requires-Dist: pytest>=8.4.1 ; extra == "test"
20
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/iterables/development/build/html/
22
- Project-URL: Homepage, https://grscheller.github.io/pythonic-fp/homepage/build/html/
21
+ Project-URL: Documentation, https://grscheller.github.io/pythonic-fp/projects/iterables.html
22
+ Project-URL: Homepage, https://grscheller.github.io/pythonic-fp/
23
23
  Project-URL: Source, https://github.com/grscheller/pythonic-fp-iterables
24
24
  Provides-Extra: test
25
25
 
@@ -27,7 +27,8 @@ Pythonic FP - Tools for iterables
27
27
  =================================
28
28
 
29
29
  PyPI project
30
- `pythonic-fp.iterators <https://pypi.org/project/pythonic-fp.iterables>`_.
30
+ `pythonic-fp-iterators
31
+ <https://pypi.org/project/pythonic-fp-iterables>`_.
31
32
 
32
33
  Library of functions for iterating iterables.
33
34
 
@@ -44,19 +45,19 @@ Library of functions for iterating iterables.
44
45
 
45
46
  Part of the
46
47
  `pythonic-fp
47
- <https://grscheller.github.io/pythonic-fp>`_
48
+ <https://grscheller.github.io/pythonic-fp/>`_
48
49
  PyPI projects.
49
50
 
50
51
  Documentation
51
52
  -------------
52
53
 
53
- Documentation for this project is hosted on
54
+ Documentation and other links for this project are hosted on
54
55
  `GitHub Pages
55
- <https://grscheller.github.io/pythonic-fp/iterables>`_.
56
+ <https://grscheller.github.io/pythonic-fp/projects/iterables.html>`_.
56
57
 
57
58
  Copyright and License
58
59
  ---------------------
59
60
 
60
- Copyright (c) 2023-2025 Geoffrey R. Scheller. Licensed under the Apache
61
+ Copyright (c) 2023-2026 Geoffrey R. Scheller. Licensed under the Apache
61
62
  License, Version 2.0. See the LICENSE file for details.
62
63
 
@@ -2,7 +2,8 @@ Pythonic FP - Tools for iterables
2
2
  =================================
3
3
 
4
4
  PyPI project
5
- `pythonic-fp.iterators <https://pypi.org/project/pythonic-fp.iterables>`_.
5
+ `pythonic-fp-iterators
6
+ <https://pypi.org/project/pythonic-fp-iterables>`_.
6
7
 
7
8
  Library of functions for iterating iterables.
8
9
 
@@ -19,18 +20,18 @@ Library of functions for iterating iterables.
19
20
 
20
21
  Part of the
21
22
  `pythonic-fp
22
- <https://grscheller.github.io/pythonic-fp>`_
23
+ <https://grscheller.github.io/pythonic-fp/>`_
23
24
  PyPI projects.
24
25
 
25
26
  Documentation
26
27
  -------------
27
28
 
28
- Documentation for this project is hosted on
29
+ Documentation and other links for this project are hosted on
29
30
  `GitHub Pages
30
- <https://grscheller.github.io/pythonic-fp/iterables>`_.
31
+ <https://grscheller.github.io/pythonic-fp/projects/iterables.html>`_.
31
32
 
32
33
  Copyright and License
33
34
  ---------------------
34
35
 
35
- Copyright (c) 2023-2025 Geoffrey R. Scheller. Licensed under the Apache
36
+ Copyright (c) 2023-2026 Geoffrey R. Scheller. Licensed under the Apache
36
37
  License, Version 2.0. See the LICENSE file for details.
@@ -0,0 +1,78 @@
1
+ # Makefile for Sphinx documentation
2
+
3
+ # Last and future releases
4
+ # - former needs to agree with PyPI
5
+ # - later needs to agree with pyproject.toml
6
+ PROJECT_NAME = Iterables
7
+ PYPI_NAME = iterables
8
+ RELEASE_VERSION = 5.1.4
9
+ DEVEL_VERSION = 5.1.5
10
+ CUSTOM_VERSION = 0.0.0
11
+
12
+ SPHINXOPTS ?=
13
+ SPHINXBUILD ?= sphinx-build
14
+ SOURCEDIR = source
15
+ BUILDDIR = build
16
+
17
+ STATICDIR = source/_static
18
+ TEMPLATEDIR = source/_templates
19
+
20
+ # Put help first so that "make" without argument is like "make help".
21
+ help:
22
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS)
23
+
24
+ clean_source:
25
+ @rm -f "$(SOURCEDIR)"/conf.py
26
+
27
+ clean_devel:
28
+ @rm -rf "$(BUILDDIR)"/development
29
+
30
+ clean_release:
31
+ @rm -rf "$(BUILDDIR)"/release
32
+
33
+ clean_custom:
34
+ @rm -rf "$(BUILDDIR)"/custom
35
+
36
+ clean: clean_devel clean_release clean_custom clean_source
37
+ @rm -rf $(BUILDDIR)
38
+ @echo Removed all doc build artifacts.
39
+
40
+ setup_devel: clean_devel
41
+ @./gen_conf.py devel "$(DEVEL_VERSION)" "$(PROJECT_NAME)" "$(PYPI_NAME)" > "$(SOURCEDIR)"/conf.py
42
+
43
+ setup_release: clean_release
44
+ @./gen_conf.py release "$(RELEASE_VERSION)" "$(PROJECT_NAME)" "$(PYPI_NAME)" > "$(SOURCEDIR)"/conf.py
45
+
46
+ setup_custom: clean_custom
47
+ @./gen_conf.py custom "$(CUSTOM_VERSION)" "$(PROJECT_NAME)" "$(PYPI_NAME)" > "$(SOURCEDIR)"/conf.py
48
+
49
+ setup_redo: clean_custom
50
+ @echo Redoing custom build with a possibly reeditted conf.py
51
+ @./gen_conf.py redo "" "" ""
52
+
53
+ # Build development labeled html docs.
54
+ devel: Makefile setup_devel
55
+ @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)"/development $(SPHINXOPTS)
56
+
57
+ # Build release labeled html docs.
58
+ release: Makefile setup_release
59
+ @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)"/release $(SPHINXOPTS)
60
+
61
+ # Build custom labeled html docs.
62
+ custom: Makefile setup_custom
63
+ @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)"/custom $(SPHINXOPTS)
64
+
65
+ # Build HTML docs with previous generated (possibly hand edited) source/conf.py,
66
+ # put results in $(BUILDDIR)/custom.
67
+ redo: Makefile setup_redo
68
+ @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)"/custom $(SPHINXOPTS)
69
+
70
+ # Catch-all target: route all unknown targets to Sphinx and save to $(BUILDDIR)/custom.
71
+ # Reuse a previously generated source/conf.py.
72
+ %: Makefile setup_redo
73
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)"/custom $(SPHINXOPTS)
74
+
75
+ .PHONY: help Makefile
76
+ .PHONY: setup_devel setup_release setup_custom
77
+ .PHONY: devel release
78
+ .PHONY: clean_source clean_devel clean_release clean_custom clean
@@ -0,0 +1,110 @@
1
+ #!/usr/bin/env python
2
+ # Generate conf.py Sphinx configuration executable
3
+
4
+ import sys
5
+ import os
6
+
7
+ project_prefix = 'Pythonic FP'
8
+ pypi_prefix = 'pythonic-fp'
9
+ author = 'Geoffrey R. Scheller'
10
+ copyright = f'2023-2026, {author}'
11
+
12
+ args = sys.argv[1:]
13
+ num_args = len(args)
14
+
15
+ if num_args == 4:
16
+ build_type, version, project_name, pypi_name = args
17
+ project = project_prefix + ' - ' + project_name
18
+ pypi_project_repo = pypi_prefix + '-' + pypi_name
19
+ project_url_rst = f'`{project} <https://pypi.org/project/{pypi_project_repo}/>`_'
20
+ homepage_url_rst = f'`{project_prefix} <https://grscheller.github.io/{pypi_prefix}/>`_'
21
+
22
+ else:
23
+ sys.exit('Error: gen_conf.py takes exactly 4 arguments')
24
+
25
+ match build_type:
26
+ case 'custom':
27
+ release = f'{version}'
28
+ release_string = f'**Custom PyPI Non-release version {release}**'
29
+ case 'devel':
30
+ release = f'{version}'
31
+ release_string = f'**Proposed PyPI release version {release}**'
32
+ case 'release':
33
+ release = f'{version}'
34
+ release_string = f'**PyPI release version {release}**'
35
+ case 'redo':
36
+ if not os.path.isfile('source/conf.py'):
37
+ sys.exit('Error: cannot redo without source/conf.py')
38
+ sys.exit()
39
+ case _:
40
+ sys.exit(f'Error: unknown built_type {build_type} given')
41
+
42
+ print(f'''# Generated conf.py Sphinx configuration executable
43
+
44
+ from typing import Any
45
+ from sphinx.application import Sphinx
46
+
47
+ project = '{project}'
48
+ author = '{author}'
49
+ copyright = '{copyright}'
50
+ release = '{release}'
51
+ release_string = '{release_string}'
52
+
53
+ def skip_abc_methods(
54
+ app: Any, what: str, name: str, obj: Any, skip: bool, options: Any
55
+ ) -> bool:
56
+ if name in [
57
+ '__init_subclass__',
58
+ '__subclasshook__',
59
+ '__class_getitem__',
60
+ '__weakref__',
61
+ ]:
62
+ return True # Skip these members
63
+ return skip
64
+
65
+
66
+ def setup(app: Sphinx) -> None:
67
+ app.connect('autodoc-skip-member', skip_abc_methods)
68
+
69
+
70
+ extensions = [
71
+ 'sphinx.ext.autodoc',
72
+ 'sphinx.ext.graphviz',
73
+ ]
74
+
75
+ autodoc_default_options = {{
76
+ 'members': True,
77
+ 'private-members': True,
78
+ 'special-members': True,
79
+ 'inherited-members': False,
80
+ 'show-inheritance': True,
81
+ }}
82
+ autodoc_member_order = 'bysource'
83
+ autoclass_content = 'class'
84
+ autodoc_class_signature = 'separated'
85
+ autodoc_typehints_format = 'short'
86
+ autodoc_use_type_comments = True
87
+ autodoc_docstring_signature = False
88
+ autodoc_preserve_defaults = True
89
+ autodoc_warningiserror = False
90
+
91
+ templates_path = ['_templates']
92
+ exclude_patterns: list[str] = []
93
+
94
+ html_theme_options = {{
95
+ 'light_css_variables': {{
96
+ 'color-link--visited': 'var(--color-link)',
97
+ }},
98
+ 'dark_css_variables': {{
99
+ 'color-link--visited': 'var(--color-link)',
100
+ }},
101
+ }}
102
+ html_theme = 'furo'
103
+ html_static_path = ['_static']
104
+ html_css_files = ['custom.css']
105
+
106
+ rst_epilog = """
107
+ .. |RELEASE_STRING| replace:: {release_string}
108
+
109
+ """
110
+ ''')
@@ -0,0 +1,2 @@
1
+ sphinx>=9.1
2
+ furo
@@ -0,0 +1,3 @@
1
+ dl.field-list > dt {
2
+ text-transform: none !important;
3
+ }
@@ -0,0 +1,6 @@
1
+ drop_take
2
+ =========
3
+
4
+ .. automodule:: pythonic_fp.iterables.drop_take
5
+ :members:
6
+ :special-members:
@@ -0,0 +1,6 @@
1
+ folding
2
+ =======
3
+
4
+ .. automodule:: pythonic_fp.iterables.folding
5
+ :members:
6
+ :special-members:
@@ -0,0 +1,25 @@
1
+ Iterables
2
+ =========
3
+
4
+ .. automodule:: pythonic_fp.iterables
5
+ :no-members:
6
+ :ignore-module-all:
7
+ :no-index:
8
+
9
+ .. toctree::
10
+ :caption: Dropping and Taking
11
+ :maxdepth: 1
12
+
13
+ drop_take
14
+
15
+ .. toctree::
16
+ :caption: Merging Iterables
17
+ :maxdepth: 1
18
+
19
+ merging
20
+
21
+ .. toctree::
22
+ :caption: Folding (Reducing)
23
+ :maxdepth: 1
24
+
25
+ folding
@@ -0,0 +1,6 @@
1
+ merging
2
+ =======
3
+
4
+ .. automodule:: pythonic_fp.iterables.merging
5
+ :members:
6
+ :special-members:
@@ -0,0 +1,7 @@
1
+ Changelog
2
+ ---------
3
+
4
+ Change log for the
5
+ `pythonic-fp-iterables
6
+ <https://github.com/grscheller/pythonic-fp-iterables/blob/main/CHANGELOG.rst>`_
7
+ PyPI project.
@@ -0,0 +1,7 @@
1
+ Description
2
+ -----------
3
+
4
+ .. automodule:: pythonic_fp.iterables
5
+ :synopsis:
6
+ :noindex:
7
+
@@ -0,0 +1,30 @@
1
+ pythonic-fp-iterables
2
+ =====================
3
+
4
+ Project
5
+ `Pythonic FP - Iterables <https://pypi.org/project/pythonic-fp-iterables/>`_
6
+ one of the
7
+ `Pythonic FP <https://grscheller.github.io/pythonic-fp/>`_
8
+ PyPI projects.
9
+
10
+ |RELEASE_STRING|
11
+
12
+ .. toctree::
13
+ :caption: Overview
14
+ :hidden:
15
+
16
+ self
17
+
18
+ .. toctree::
19
+ :caption: User Documentation
20
+
21
+ description
22
+ usage
23
+ releases
24
+ changelog
25
+
26
+ .. toctree::
27
+ :caption: API Documentation
28
+ :maxdepth: 1
29
+
30
+ api/index
@@ -0,0 +1,26 @@
1
+ PyPI releases
2
+ =============
3
+
4
+ **pythonic-fp-iterables:** pythonic_fp.iterables
5
+
6
+ +---------------------------------------------------------------------------------------+--------------+
7
+ | PyPI Release | Release date |
8
+ +=======================================================================================+==============+
9
+ | `development <https://grscheller.github.io/pythonic-fp-iterables/development/html/>`_ | |
10
+ +---------------------------------------------------------------------------------------+--------------+
11
+ | `v5.1.4 <https://grscheller.github.io/pythonic-fp-iterables/release/html/>`_ | 2026-05-15 |
12
+ +---------------------------------------------------------------------------------------+--------------+
13
+ | v5.1.3 | 2026-01-18 |
14
+ +---------------------------------------------------------------------------------------+--------------+
15
+ | v5.1.2 | 2025-09-26 |
16
+ +---------------------------------------------------------------------------------------+--------------+
17
+ | v5.1.1 | 2025-09-09 |
18
+ +---------------------------------------------------------------------------------------+--------------+
19
+ | v5.1.0 | 2025-09-09 |
20
+ +---------------------------------------------------------------------------------------+--------------+
21
+ | v5.0.0 | 2025-08-02 |
22
+ +---------------------------------------------------------------------------------------+--------------+
23
+ | v4.0.0 | 2025-07-15 |
24
+ +---------------------------------------------------------------------------------------+--------------+
25
+ | v3.0.0 | 2025-07-06 |
26
+ +---------------------------------------------------------------------------------------+--------------+
@@ -0,0 +1,30 @@
1
+ Usage
2
+ =====
3
+
4
+ How to install the package
5
+ --------------------------
6
+
7
+ Install the project into your Python environment:
8
+
9
+ .. code:: console
10
+
11
+ $ pip install pythonic-fp.iterables
12
+
13
+ Importing the package
14
+ ---------------------
15
+
16
+ Import the functions and the enum into your code.
17
+
18
+ .. code:: python
19
+
20
+ from pythonic_fp.iterables.merging import concat, merge, exhaust
21
+ from pythonic_fp.iterables.merging import MergeEnum, blend
22
+
23
+ from pythonic_fp.iterables.drop_take import drop, drop_while
24
+ from pythonic_fp.iterables.drop_take import take, take_while
25
+ from pythonic_fp.iterables.drop_take import take_split, take_while_split
26
+
27
+ from pythonic_fp.iterables.folding import accumulate
28
+ from pythonic_fp.iterables.folding import reduce_left
29
+ from pythonic_fp.iterables.folding import fold_left, maybe_fold_left
30
+ from pythonic_fp.iterables.folding import sc_reduce_left, sc_reduce_right
@@ -1,18 +1,26 @@
1
+ [build-system]
2
+ requires = ["flit_core>=3.12,<4"]
3
+ build-backend = "flit_core.buildapi"
4
+
1
5
  [project]
2
6
  name = "pythonic-fp-iterables"
3
- version = "5.1.3"
7
+ version = "5.1.4"
4
8
  readme = "README.rst"
5
9
  requires-python = ">=3.13"
6
- license = { file = "LICENSE" }
7
- authors = [{ name = "Geoffrey R. Scheller", email = "geoffrey@scheller.com" }]
8
- keywords = ["iterables", "iterators"]
10
+ authors = [
11
+ { name = "Geoffrey R. Scheller", email = "geoffrey@scheller.com" },
12
+ ]
13
+ keywords = [
14
+ "iterables",
15
+ "iterators",
16
+ ]
9
17
  classifiers = [
10
18
  "Development Status :: 5 - Production/Stable",
11
19
  "Framework :: Pytest",
12
20
  "Intended Audience :: Developers",
13
21
  "License :: OSI Approved :: Apache Software License",
14
22
  "Operating System :: OS Independent",
15
- "Programming Language :: Python :: 3.13",
23
+ "Programming Language :: Python :: 3.14",
16
24
  "Typing :: Typed",
17
25
  ]
18
26
  dependencies = [
@@ -23,8 +31,8 @@ dynamic = ["description"]
23
31
 
24
32
  [project.urls]
25
33
  Changelog = "https://github.com/grscheller/pythonic-fp-iterables/blob/main/CHANGELOG.rst"
26
- Documentation = "https://grscheller.github.io/pythonic-fp/iterables/development/build/html/"
27
- Homepage = "https://grscheller.github.io/pythonic-fp/homepage/build/html/"
34
+ Documentation = "https://grscheller.github.io/pythonic-fp/projects/iterables.html"
35
+ Homepage = "https://grscheller.github.io/pythonic-fp/"
28
36
  Source = "https://github.com/grscheller/pythonic-fp-iterables"
29
37
 
30
38
  [project.optional-dependencies]
@@ -32,17 +40,11 @@ test = [
32
40
  "pytest>=8.4.1",
33
41
  ]
34
42
 
35
- [build-system]
36
- requires = ["flit_core>=3.12,<4"]
37
- build-backend = "flit_core.buildapi"
38
-
39
43
  [tool.flit.module]
40
44
  name = "pythonic_fp.iterables"
41
45
 
42
46
  [tool.mypy]
43
- enable_incomplete_feature = "NewGenericSyntax"
44
47
  explicit_package_bases = true
45
- implicit_reexport = false
46
48
  local_partial_types = true
47
49
  namespace_packages = true
48
50
  warn_redundant_casts = true
@@ -56,19 +58,24 @@ dmypy = false
56
58
  strict = true
57
59
  report_progress = true
58
60
 
59
- [tool.pytest.ini_options]
60
- addopts = "-ra"
61
+ [tool.pytest]
62
+ addopts = [
63
+ "-ra",
64
+ ]
61
65
  consider_namespace_packages = true
62
66
  testpaths = ["tests/"]
63
67
 
64
68
  [tool.ruff]
65
- target-version = "py313"
69
+ target-version = "py314"
66
70
 
67
71
  [tool.ruff.lint.flake8-quotes]
68
72
  docstring-quotes = "double"
69
73
 
70
74
  [tool.ruff.lint.per-file-ignores]
71
- "tests/*" = ["C901"]
75
+ "tests/**/*.py" = [
76
+ "E731",
77
+ "C901",
78
+ ]
72
79
  "**/*.py" = ["E741"]
73
80
 
74
81
  [tool.ruff.format]
@@ -13,20 +13,11 @@
13
13
  # limitations under the License.
14
14
 
15
15
  """
16
- Tools for iterables
17
- -------------------
16
+ .. admonition:: Composing and iterating iterables
18
17
 
19
- .. admonition:: Library of functions for iterating iterables
20
-
21
- +-----------+-------------------------------------------+
22
- | Module | Description |
23
- +===========+===========================================+
24
- | merging | Concatenating and merging iterables |
25
- +-----------+-------------------------------------------+
26
- | drop_take | Dropping and taking values from iterables |
27
- +-----------+-------------------------------------------+
28
- | folding | Reducing and accumulating iterables |
29
- +-----------+-------------------------------------------+
18
+ - module **merging:** Concatenating and merging iterables.
19
+ - module **drop_take:** Dropping and taking values from iterables.
20
+ - module **folding:** Reducing and accumulating iterables.
30
21
 
31
22
  .. important::
32
23
 
@@ -35,8 +26,8 @@ Tools for iterables
35
26
  - iterables are not necessarily iterators
36
27
  - at all times iterator protocol is assumed to be followed
37
28
 
38
- - all iterators are assumed to be iterable
39
- - for all iterators ``foobar`` we assume ``iter(foobar) is foobar``
29
+ - all iterators are assumed to be iterable
30
+ - for all iterators ``foobar`` we assume ``iter(foobar) is foobar``
40
31
 
41
32
  """
42
33