pythonic-fp-gadgets 4.1.0__tar.gz → 4.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 (48) hide show
  1. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/PKG-INFO +21 -30
  2. pythonic_fp_gadgets-4.1.0/README.rst → pythonic_fp_gadgets-4.2.0/README.md +13 -21
  3. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/pyproject.toml +29 -24
  4. pythonic_fp_gadgets-4.1.0/.github/workflows/static.yml +0 -64
  5. pythonic_fp_gadgets-4.1.0/.gitignore +0 -9
  6. pythonic_fp_gadgets-4.1.0/CHANGELOG.rst +0 -117
  7. pythonic_fp_gadgets-4.1.0/docs/Makefile +0 -78
  8. pythonic_fp_gadgets-4.1.0/docs/gen_conf.py +0 -110
  9. pythonic_fp_gadgets-4.1.0/docs/requirements.txt +0 -2
  10. pythonic_fp_gadgets-4.1.0/docs/source/_static/.gitkeep +0 -0
  11. pythonic_fp_gadgets-4.1.0/docs/source/_static/custom.css +0 -3
  12. pythonic_fp_gadgets-4.1.0/docs/source/_templates/.gitkeep +0 -0
  13. pythonic_fp_gadgets-4.1.0/docs/source/api/box.rst +0 -6
  14. pythonic_fp_gadgets-4.1.0/docs/source/api/functions/first_common_ancestor.rst +0 -4
  15. pythonic_fp_gadgets-4.1.0/docs/source/api/functions/index.rst +0 -8
  16. pythonic_fp_gadgets-4.1.0/docs/source/api/functions/iterate_over_arguments.rst +0 -4
  17. pythonic_fp_gadgets-4.1.0/docs/source/api/index.rst +0 -31
  18. pythonic_fp_gadgets-4.1.0/docs/source/api/sentinels/flavored.rst +0 -8
  19. pythonic_fp_gadgets-4.1.0/docs/source/api/sentinels/index.rst +0 -14
  20. pythonic_fp_gadgets-4.1.0/docs/source/api/sentinels/novalue.rst +0 -11
  21. pythonic_fp_gadgets-4.1.0/docs/source/api/wrap.rst +0 -6
  22. pythonic_fp_gadgets-4.1.0/docs/source/changelog.rst +0 -7
  23. pythonic_fp_gadgets-4.1.0/docs/source/description.rst +0 -8
  24. pythonic_fp_gadgets-4.1.0/docs/source/index.rst +0 -30
  25. pythonic_fp_gadgets-4.1.0/docs/source/releases.rst +0 -28
  26. pythonic_fp_gadgets-4.1.0/docs/source/usage.rst +0 -160
  27. pythonic_fp_gadgets-4.1.0/tests/sentinels/test_novalue.py +0 -83
  28. pythonic_fp_gadgets-4.1.0/tests/sentinels/test_sentinel_hidden_implemetation_detail.py +0 -70
  29. pythonic_fp_gadgets-4.1.0/tests/sentinels/test_sentinel_with_functions.py +0 -31
  30. pythonic_fp_gadgets-4.1.0/tests/test_box.py +0 -95
  31. pythonic_fp_gadgets-4.1.0/tests/test_first_common_ancestor.py +0 -115
  32. pythonic_fp_gadgets-4.1.0/tests/test_hwrap.py +0 -76
  33. pythonic_fp_gadgets-4.1.0/tests/test_iterate_over_arguments.py +0 -46
  34. pythonic_fp_gadgets-4.1.0/tests/test_wrap.py +0 -71
  35. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/LICENSE +0 -0
  36. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/src/pythonic_fp/gadgets/__init__.py +0 -0
  37. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/src/pythonic_fp/gadgets/__init__.pyi +0 -0
  38. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/src/pythonic_fp/gadgets/box.py +0 -0
  39. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/src/pythonic_fp/gadgets/box.pyi +0 -0
  40. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/src/pythonic_fp/gadgets/py.typed +0 -0
  41. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/src/pythonic_fp/gadgets/sentinels/__init__.py +0 -0
  42. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/src/pythonic_fp/gadgets/sentinels/__init__.pyi +0 -0
  43. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/src/pythonic_fp/gadgets/sentinels/flavored.py +0 -0
  44. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/src/pythonic_fp/gadgets/sentinels/flavored.pyi +0 -0
  45. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/src/pythonic_fp/gadgets/sentinels/novalue.py +0 -0
  46. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/src/pythonic_fp/gadgets/sentinels/novalue.pyi +0 -0
  47. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/src/pythonic_fp/gadgets/wrap.py +0 -0
  48. {pythonic_fp_gadgets-4.1.0 → pythonic_fp_gadgets-4.2.0}/src/pythonic_fp/gadgets/wrap.pyi +0 -0
@@ -1,11 +1,11 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: pythonic-fp-gadgets
3
- Version: 4.1.0
4
- Summary: Gadgets
3
+ Version: 4.2.0
4
+ Summary: Gadgets without external Pythonic FP dependencies.
5
5
  Keywords: gadgets
6
6
  Author-email: "Geoffrey R. Scheller" <geoffrey@scheller.com>
7
7
  Requires-Python: >=3.13
8
- Description-Content-Type: text/x-rst
8
+ Description-Content-Type: text/markdown
9
9
  Classifier: Development Status :: 4 - Beta
10
10
  Classifier: Framework :: Pytest
11
11
  Classifier: Intended Audience :: Developers
@@ -14,46 +14,37 @@ Classifier: Operating System :: OS Independent
14
14
  Classifier: Programming Language :: Python :: 3.14
15
15
  Classifier: Typing :: Typed
16
16
  License-File: LICENSE
17
- Requires-Dist: pytest>=8.4.1 ; extra == "test"
18
- Requires-Dist: pythonic-fp-circulararray>=6.0.4 ; extra == "test"
19
- Project-URL: Changelog, https://github.com/grscheller/pythonic-fp-gadgets/blob/main/CHANGELOG.rst
20
- Project-URL: Documentation, https://grscheller.github.io/pythonic-fp/projects/gadgets.html
17
+ Project-URL: Changelog, https://github.com/grscheller/pythonic-fp-gadgets/blob/main/CHANGELOG.md
18
+ Project-URL: Documentation, https://grscheller.github.io/pythonic-fp-gadgets/release/html/
21
19
  Project-URL: Homepage, https://grscheller.github.io/pythonic-fp/
22
20
  Project-URL: Source, https://github.com/grscheller/pythonic-fp-gadgets
23
- Provides-Extra: test
21
+ Import-Name: pythonic_fp.gadgets
22
+ Import-Namespace: pythonic_fp
24
23
 
25
- Pythonic FP - Gadgets
26
- =====================
27
-
28
- PyPI project
29
- `pythonic-fp-gadgets
30
- <https://pypi.org/project/pythonic-fp-gadgets>`_.
24
+ # Pythonic FP - Gadgets
31
25
 
32
26
  Library of simple, but useful, classes and functions with no dependencies
33
27
  outside the Python Standard Library.
34
28
 
35
- - Gadgets
29
+ PyPI project
30
+ [pythonic-fp-gadgets](https://pypi.org/project/pythonic-fp-gadgets).
31
+ Part of the
32
+ [pythonic-fp](https://grscheller.github.io/pythonic-fp/)
33
+ PyPI projects.
34
+
35
+ ## Documentation
36
+
37
+ Documentation and other links for this project are hosted on
38
+ [GitHub Pages](https://grscheller.github.io/pythonic-fp/projects/gadgets.html).
36
39
 
40
+ - Gadgets
37
41
  - single item box
38
42
  - immutable wrapped (hashable) references
39
43
  - function returning iterator of its arguments
40
44
  - function to find the latest common ancestor of two classes
41
45
  - sentinel values
42
46
 
43
- Part of the
44
- `pythonic-fp
45
- <https://grscheller.github.io/pythonic-fp/>`_
46
- PyPI projects.
47
-
48
- Documentation
49
- -------------
50
-
51
- Documentation and other links for this project are hosted on
52
- `GitHub Pages
53
- <https://grscheller.github.io/pythonic-fp/projects/gadgets.html>`_.
54
-
55
- Copyright and License
56
- ---------------------
47
+ ## Copyright and License
57
48
 
58
49
  Copyright (c) 2025-2026 Geoffrey R. Scheller. Licensed under the Apache
59
50
  License, Version 2.0. See the LICENSE file for details.
@@ -1,35 +1,27 @@
1
- Pythonic FP - Gadgets
2
- =====================
3
-
4
- PyPI project
5
- `pythonic-fp-gadgets
6
- <https://pypi.org/project/pythonic-fp-gadgets>`_.
1
+ # Pythonic FP - Gadgets
7
2
 
8
3
  Library of simple, but useful, classes and functions with no dependencies
9
4
  outside the Python Standard Library.
10
5
 
11
- - Gadgets
6
+ PyPI project
7
+ [pythonic-fp-gadgets](https://pypi.org/project/pythonic-fp-gadgets).
8
+ Part of the
9
+ [pythonic-fp](https://grscheller.github.io/pythonic-fp/)
10
+ PyPI projects.
11
+
12
+ ## Documentation
13
+
14
+ Documentation and other links for this project are hosted on
15
+ [GitHub Pages](https://grscheller.github.io/pythonic-fp/projects/gadgets.html).
12
16
 
17
+ - Gadgets
13
18
  - single item box
14
19
  - immutable wrapped (hashable) references
15
20
  - function returning iterator of its arguments
16
21
  - function to find the latest common ancestor of two classes
17
22
  - sentinel values
18
23
 
19
- Part of the
20
- `pythonic-fp
21
- <https://grscheller.github.io/pythonic-fp/>`_
22
- PyPI projects.
23
-
24
- Documentation
25
- -------------
26
-
27
- Documentation and other links for this project are hosted on
28
- `GitHub Pages
29
- <https://grscheller.github.io/pythonic-fp/projects/gadgets.html>`_.
30
-
31
- Copyright and License
32
- ---------------------
24
+ ## Copyright and License
33
25
 
34
26
  Copyright (c) 2025-2026 Geoffrey R. Scheller. Licensed under the Apache
35
27
  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-gadgets"
7
- version = "4.1.0"
8
- readme = "README.rst"
9
- requires-python = ">=3.13"
7
+ version = "4.2.0"
8
+ description = "Gadgets without external Pythonic FP dependencies."
9
+ readme = "README.md"
10
+ requires-python = ">=3.13" # syntactic floor: known to SyntaxError below this
10
11
  authors = [
11
12
  { name = "Geoffrey R. Scheller", email = "geoffrey@scheller.com" },
12
13
  ]
@@ -19,27 +20,43 @@ classifiers = [
19
20
  "Intended Audience :: Developers",
20
21
  "License :: OSI Approved :: Apache Software License",
21
22
  "Operating System :: OS Independent",
22
- "Programming Language :: Python :: 3.14",
23
+ "Programming Language :: Python :: 3.14", # tested: pytest test suite successful
23
24
  "Typing :: Typed",
24
25
  ]
25
26
  dependencies = []
26
- dynamic = ["description"]
27
27
 
28
28
  [project.urls]
29
- Changelog = "https://github.com/grscheller/pythonic-fp-gadgets/blob/main/CHANGELOG.rst"
30
- Documentation = "https://grscheller.github.io/pythonic-fp/projects/gadgets.html"
29
+ Changelog = "https://github.com/grscheller/pythonic-fp-gadgets/blob/main/CHANGELOG.md"
30
+ Documentation ="https://grscheller.github.io/pythonic-fp-gadgets/release/html/"
31
31
  Homepage = "https://grscheller.github.io/pythonic-fp/"
32
32
  Source = "https://github.com/grscheller/pythonic-fp-gadgets"
33
33
 
34
- [project.optional-dependencies]
34
+ [dependency-groups]
35
+ docs = [
36
+ "furo>=2025.12.19",
37
+ "sphinx>=9.1",
38
+ ]
39
+ pub = [
40
+ "flit",
41
+ ]
35
42
  test = [
36
43
  "pytest>=8.4.1",
37
- "pythonic-fp-circulararray>=6.0.4",
38
44
  ]
39
45
 
40
46
  [tool.flit.module]
41
47
  name = "pythonic_fp.gadgets"
42
48
 
49
+ [tool.flit.sdist]
50
+ exclude = [
51
+ "docs/",
52
+ "tests/",
53
+ ]
54
+
55
+ [tool.pytest]
56
+ addopts = ["-ra"]
57
+ consider_namespace_packages = true
58
+ testpaths = ["tests/"]
59
+
43
60
  [tool.mypy]
44
61
  explicit_package_bases = true
45
62
  local_partial_types = true
@@ -48,23 +65,12 @@ warn_redundant_casts = true
48
65
  warn_return_any = true
49
66
  warn_unused_configs = true
50
67
 
51
- [tool.pylsp-mypy]
52
- enabled = true
53
- live-mode = true
54
- dmypy = false
55
- strict = true
56
- report_progress = true
57
-
58
- [tool.pytest]
59
- addopts = [
60
- "-ra",
61
- ]
62
- consider_namespace_packages = true
63
- testpaths = ["tests/"]
64
-
65
68
  [tool.ruff]
66
69
  target-version = "py314"
67
70
 
71
+ [tool.ruff.lint]
72
+ ignore = ["RUF022", "E741"]
73
+
68
74
  [tool.ruff.lint.flake8-quotes]
69
75
  docstring-quotes = "double"
70
76
 
@@ -73,7 +79,6 @@ docstring-quotes = "double"
73
79
  "E731",
74
80
  "C901",
75
81
  ]
76
- "**/*.py" = ["E741"]
77
82
 
78
83
  [tool.ruff.format]
79
84
  quote-style = "single"
@@ -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: '4.1.0'
10
- DEVEL: '4.1.1'
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: ${{ env.PYTHON }}
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-gadgets
45
- docs/gen_conf.py release ${{ env.RELEASE }} Gadgets gadgets > 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 }} Gadgets gadgets > 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,117 +0,0 @@
1
- CHANGELOG
2
- =========
3
-
4
- PyPI pythonic-fp-gadgets project.
5
-
6
- Semantic Versioning
7
- -------------------
8
-
9
- Strict 3 digit semantic versioning
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
- PyPI 4.1.0 - 2026-05-12
21
- ~~~~~~~~~~~~~~~~~~~~~~~
22
-
23
- - documentation now in maintenance mode
24
- - development status now "4 - Beta"
25
- - added a few missing methods
26
-
27
- PyPI 4.0.4 - 2026-04-26
28
- ~~~~~~~~~~~~~~~~~~~~~~~
29
-
30
- Much docstring work for sentinels. Need to push now to fix
31
- broken links on PyPI before going into documentation maintenance.
32
-
33
- Development Status Reappraisal - 2026-05-05
34
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
35
-
36
- Maintainer appraised the Development Status for
37
- pythonic-fp-gadgets to be "3 - Alpha".
38
-
39
- PyPI 4.0.3 - 2026-04-26
40
- ~~~~~~~~~~~~~~~~~~~~~~~
41
-
42
- Redoing docs based on circulararray and booleans.
43
-
44
- - made some innovations which I will back port to the above two.
45
-
46
-
47
- PyPI 4.0.2 - 2026-01-08
48
- ~~~~~~~~~~~~~~~~~~~~~~~
49
-
50
- Docstring improvements based on lessons learned from my PyPI
51
- boring-math-abstract-algebra project.
52
-
53
- PyPI v4.0.1 - 2025-12-02
54
- ~~~~~~~~~~~~~~~~~~~~~~~~
55
-
56
- Move functions out of their own packages to __init__.py (2025-10-13).
57
-
58
- - latest_common_ancestor.lca -> first_common_ancestor
59
- - iterate_arguments.ita -> iterate_over_arguments
60
-
61
- Unfortunately I forgot to push these changes to PyPI for a
62
- month and a half!
63
-
64
- PyPI v3.0.1 - 2025-09-09
65
- ~~~~~~~~~~~~~~~~~~~~~~~~
66
-
67
- Corrected incorrect dependencies.
68
-
69
- PyPI v3.0.0 - 2025-08-31
70
- ~~~~~~~~~~~~~~~~~~~~~~~~
71
-
72
- Discovered I was not quite compliant with
73
- Python typing 3.12+ conventions.
74
-
75
- - No longer explicitly using TypeVar directly.
76
-
77
- - Removed Unions with Never from .py files
78
-
79
- - the "happy path" returns just types (pythonic convention)
80
- - stubgen actually puts them back in .pyi files
81
-
82
- - renamed it.it -> iterate_arguments.ita
83
- - renamed lca.latest_common_ancestor -> latest_common_ancestor.lca
84
-
85
- PyPI v2.2.0 - 2025-08-30
86
- ~~~~~~~~~~~~~~~~~~~~~~~~
87
-
88
- Moved for pythonic_fp.gadgets package to a new GitHub repo,
89
- pythonic-fp-gadgets. Replaced it with the empty Python
90
- module pythonic_fp.name_claim in pythonic-fp.
91
-
92
- The gadgets package being different from the other namespace
93
- packages was throwing off my workflow.
94
-
95
- - added function it.it
96
- - added function lca.latest_common_ancestor
97
-
98
- Update - 2025-08-09
99
- ~~~~~~~~~~~~~~~~~~~
100
-
101
- Preparing for upcoming PyPI release for gadgets.
102
-
103
- - decided to make gadget's pyproject.toml the exemplar for rest of pythonic-fp namespace
104
- - pythonic_fp.gadget works with previous and next release of singletons
105
-
106
- PyPI v1.1.0 - 2025-08-02
107
- ~~~~~~~~~~~~~~~~~~~~~~~~
108
-
109
- Released pythonic-fp v1.1.0 which contains pythonic_fp.gadgets package.
110
-
111
- Update - 2025-08-01
112
- ~~~~~~~~~~~~~~~~~~~
113
-
114
- Added package pythonic_fp.gadgets to the "name-claim" PyPI
115
- project pythonic-fp. The gadgets library is for simple,
116
- but useful, functions and data structures with minimal
117
- dependencies.
@@ -1,78 +0,0 @@
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 = Gadgets
7
- PYPI_NAME = gadgets
8
- RELEASE_VERSION = 4.1.0
9
- DEVEL_VERSION = 4.1.1
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
@@ -1,110 +0,0 @@
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
- ''')
@@ -1,2 +0,0 @@
1
- sphinx>=9.1
2
- furo
File without changes
@@ -1,3 +0,0 @@
1
- dl.field-list > dt {
2
- text-transform: none !important;
3
- }
File without changes
@@ -1,6 +0,0 @@
1
- box
2
- ===
3
-
4
- .. automodule:: pythonic_fp.gadgets.box
5
- :members:
6
- :special-members:
@@ -1,4 +0,0 @@
1
- First common ancestor
2
- ---------------------
3
-
4
- .. autofunction:: pythonic_fp.gadgets.first_common_ancestor
@@ -1,8 +0,0 @@
1
- functions
2
- =========
3
-
4
- .. toctree::
5
- :caption: Functions
6
-
7
- first_common_ancestor
8
- iterate_over_arguments
@@ -1,4 +0,0 @@
1
- Iterate over arguments
2
- ----------------------
3
-
4
- .. autofunction:: pythonic_fp.gadgets.iterate_over_arguments
@@ -1,31 +0,0 @@
1
- Gadgets
2
- =======
3
-
4
- .. automodule:: pythonic_fp.gadgets
5
- :no-members:
6
- :ignore-module-all:
7
- :no-index:
8
-
9
- .. toctree::
10
- :caption: functions
11
- :maxdepth: 1
12
-
13
- functions/index
14
-
15
- .. toctree::
16
- :caption: module box
17
- :maxdepth: 1
18
-
19
- box
20
-
21
- .. toctree::
22
- :caption: module wrap
23
- :maxdepth: 1
24
-
25
- wrap
26
-
27
- .. toctree::
28
- :caption: module sentinels
29
- :maxdepth: 1
30
-
31
- sentinels/index
@@ -1,8 +0,0 @@
1
- flavored
2
- ========
3
-
4
- **Sentinel values "indexed" by hashable values of a given type.**
5
-
6
- .. automodule:: pythonic_fp.gadgets.sentinels.flavored
7
- :members:
8
- :special-members: