pythonic-fp-numpy 0.1.2__tar.gz → 1.0.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 (28) hide show
  1. pythonic_fp_numpy-1.0.0/.github/workflows/static.yml +64 -0
  2. {pythonic_fp_numpy-0.1.2 → pythonic_fp_numpy-1.0.0}/.gitignore +2 -0
  3. {pythonic_fp_numpy-0.1.2 → pythonic_fp_numpy-1.0.0}/CHANGELOG.rst +30 -0
  4. {pythonic_fp_numpy-0.1.2 → pythonic_fp_numpy-1.0.0}/PKG-INFO +10 -10
  5. {pythonic_fp_numpy-0.1.2 → pythonic_fp_numpy-1.0.0}/README.rst +4 -4
  6. pythonic_fp_numpy-1.0.0/docs/Makefile +78 -0
  7. pythonic_fp_numpy-1.0.0/docs/gen_conf.py +110 -0
  8. pythonic_fp_numpy-1.0.0/docs/requirements.txt +2 -0
  9. pythonic_fp_numpy-1.0.0/docs/source/_static/custom.css +3 -0
  10. pythonic_fp_numpy-1.0.0/docs/source/api/hashable_wrapped_ndarray.rst +6 -0
  11. pythonic_fp_numpy-1.0.0/docs/source/api/index.rst +13 -0
  12. pythonic_fp_numpy-1.0.0/docs/source/changelog.rst +7 -0
  13. pythonic_fp_numpy-1.0.0/docs/source/description.rst +7 -0
  14. pythonic_fp_numpy-1.0.0/docs/source/index.rst +30 -0
  15. pythonic_fp_numpy-1.0.0/docs/source/releases.rst +18 -0
  16. pythonic_fp_numpy-1.0.0/docs/source/usage.rst +32 -0
  17. {pythonic_fp_numpy-0.1.2 → pythonic_fp_numpy-1.0.0}/pyproject.toml +21 -17
  18. {pythonic_fp_numpy-0.1.2 → pythonic_fp_numpy-1.0.0}/src/pythonic_fp/numpy/__init__.py +6 -11
  19. pythonic_fp_numpy-1.0.0/src/pythonic_fp/numpy/__init__.pyi +0 -0
  20. pythonic_fp_numpy-1.0.0/src/pythonic_fp/numpy/hashable_wrapped_ndarray.py +411 -0
  21. pythonic_fp_numpy-1.0.0/src/pythonic_fp/numpy/py.typed +0 -0
  22. pythonic_fp_numpy-1.0.0/tests/hashable_wrapped_ndarray/test_HWrapNDArrayNumber.py +140 -0
  23. pythonic_fp_numpy-0.1.2/src/pythonic_fp/numpy/hashable_wrapped_ndarray.py +0 -235
  24. pythonic_fp_numpy-0.1.2/tests/hashable_wrapped_ndarray/test_HWrapNDArrayNumber.py +0 -86
  25. {pythonic_fp_numpy-0.1.2 → pythonic_fp_numpy-1.0.0}/LICENSE +0 -0
  26. /pythonic_fp_numpy-0.1.2/src/pythonic_fp/numpy/__init__.pyi → /pythonic_fp_numpy-1.0.0/docs/source/_static/.gitkeep +0 -0
  27. /pythonic_fp_numpy-0.1.2/src/pythonic_fp/numpy/py.typed → /pythonic_fp_numpy-1.0.0/docs/source/_templates/.gitkeep +0 -0
  28. {pythonic_fp_numpy-0.1.2 → pythonic_fp_numpy-1.0.0}/src/pythonic_fp/numpy/hashable_wrapped_ndarray.pyi +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: '1.0.0'
10
+ DEVEL: '1.0.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: '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-numpy
45
+ docs/gen_conf.py release ${{ env.RELEASE }} Numpy numpy > 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 }} Numpy numpy > 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,36 @@ See `Semantic Versioning 2.0.0 <https://semver.org>`_.
17
17
  Releases and Important Milestones
18
18
  ---------------------------------
19
19
 
20
+ PyPI v1.0.0 - 2026-05-14
21
+ ~~~~~~~~~~~~~~~~~~~~~~~~
22
+
23
+ Now repr() produces something you can eval() to reproduce a ``HWrapNDArray``.
24
+
25
+ ```python
26
+
27
+ import numpy as np
28
+ from pythonic_fp.numpy.hashable_wrapped_ndarray import HWrapNDArrayNumber
29
+
30
+ foo = HWrapNDArrayNumber(
31
+ np.array(
32
+ [[2, -3, 6],
33
+ [1, -1, 2],
34
+ [17, 18, -11],
35
+ [2, 1, 11]],
36
+ dtype=np.int32,
37
+ )
38
+ )
39
+
40
+ assert foo == eval(repr(foo))
41
+
42
+ ```
43
+
44
+ Development Status Reappraisal - 2026-05-05
45
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46
+
47
+ Maintainer appraised the Development Status for
48
+ pythonic-fp-numpy to be ``"3 - Alpha"``.
49
+
20
50
  PyPI v0.1.2 - 2026-01-16
21
51
  ~~~~~~~~~~~~~~~~~~~~~~~~
22
52
 
@@ -1,29 +1,29 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonic-fp-numpy
3
- Version: 0.1.2
4
- Summary: FP NumPy Tools
3
+ Version: 1.0.0
4
+ Summary: NumPy Tools
5
5
  Keywords: numpy,ndarray,hashable,wrap
6
6
  Author-email: "Geoffrey R. Scheller" <geoffrey@scheller.com>
7
7
  Requires-Python: >=3.13
8
8
  Description-Content-Type: text/x-rst
9
- Classifier: Development Status :: 4 - Beta
9
+ Classifier: Development Status :: 3 - Alpha
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
- 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: numpy>=2.3.4
18
18
  Requires-Dist: boring-math-abstract-algebra>=1.1.0 ; extra == "test"
19
19
  Requires-Dist: pytest>=8.4.1 ; extra == "test"
20
20
  Project-URL: Changelog, https://github.com/grscheller/pythonic-fp-numpy/blob/main/CHANGELOG.rst
21
- Project-URL: Documentation, https://grscheller.github.io/pythonic-fp/numpy/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/numpy.html
22
+ Project-URL: Homepage, https://grscheller.github.io/pythonic-fp/
23
23
  Project-URL: Source, https://github.com/grscheller/pythonic-fp-numpy
24
24
  Provides-Extra: test
25
25
 
26
- Pythonic FP - FP NumPy
26
+ Pythonic FP - FP Numpy
27
27
  ======================
28
28
 
29
29
  PyPI project
@@ -34,7 +34,7 @@ Python package implementing functional programming for NumPy.
34
34
 
35
35
  Part of the
36
36
  `pythonic-fp
37
- <https://grscheller.github.io/pythonic-fp>`_
37
+ <https://grscheller.github.io/pythonic-fp/>`_
38
38
  PyPI projects.
39
39
 
40
40
  Modules
@@ -50,9 +50,9 @@ Module hashable_wrapped_ndarray
50
50
  Documentation
51
51
  -------------
52
52
 
53
- Documentation for this project is hosted on
53
+ Documentation and other links for this project are hosted on
54
54
  `GitHub Pages
55
- <https://grscheller.github.io/pythonic-fp/numpy>`_.
55
+ <https://grscheller.github.io/pythonic-fp/projects/numpy.html>`_.
56
56
 
57
57
  Copyright and License
58
58
  ---------------------
@@ -1,4 +1,4 @@
1
- Pythonic FP - FP NumPy
1
+ Pythonic FP - FP Numpy
2
2
  ======================
3
3
 
4
4
  PyPI project
@@ -9,7 +9,7 @@ Python package implementing functional programming for NumPy.
9
9
 
10
10
  Part of the
11
11
  `pythonic-fp
12
- <https://grscheller.github.io/pythonic-fp>`_
12
+ <https://grscheller.github.io/pythonic-fp/>`_
13
13
  PyPI projects.
14
14
 
15
15
  Modules
@@ -25,9 +25,9 @@ Module hashable_wrapped_ndarray
25
25
  Documentation
26
26
  -------------
27
27
 
28
- Documentation for this project is hosted on
28
+ Documentation and other links for this project are hosted on
29
29
  `GitHub Pages
30
- <https://grscheller.github.io/pythonic-fp/numpy>`_.
30
+ <https://grscheller.github.io/pythonic-fp/projects/numpy.html>`_.
31
31
 
32
32
  Copyright and License
33
33
  ---------------------
@@ -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 = Numpy
7
+ PYPI_NAME = numpy
8
+ RELEASE_VERSION = 1.0.0
9
+ DEVEL_VERSION = 1.0.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
@@ -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
+ hashable_wrapped_ndarray
2
+ ------------------------
3
+
4
+ .. automodule:: pythonic_fp.numpy.hashable_wrapped_ndarray
5
+ :show-inheritance:
6
+ :exclude-members: __weakref__
@@ -0,0 +1,13 @@
1
+ FP Numpy
2
+ ========
3
+
4
+ .. automodule:: pythonic_fp.iterables
5
+ :no-members:
6
+ :ignore-module-all:
7
+ :no-index:
8
+
9
+ .. toctree::
10
+ :caption: Wrapprd Hashable NDArray
11
+ :maxdepth: 1
12
+
13
+ hashable_wrapped_ndarray
@@ -0,0 +1,7 @@
1
+ changelog
2
+ ---------
3
+
4
+ Changelog for the
5
+ `pythonic-fp-numpy
6
+ <https://github.com/grscheller/pythonic-fp-numpy/blob/main/CHANGELOG.rst>`_
7
+ PyPI project.
@@ -0,0 +1,7 @@
1
+ Description
2
+ -----------
3
+
4
+ .. automodule:: pythonic_fp.numpy
5
+ :synopsis:
6
+ :noindex:
7
+
@@ -0,0 +1,30 @@
1
+ pythonic-fp-numpy
2
+ =================
3
+
4
+ Project
5
+ `Pythonic FP - Numpy <https://pypi.org/project/pythonic-fp-numpy/>`_
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,18 @@
1
+ PyPI releases
2
+ =============
3
+
4
+ **pythonic-fp-numpy:** pythonic_fp.numpy
5
+
6
+ +-----------------------------------------------------------------------------------+--------------+
7
+ | PyPI Release | Release date |
8
+ +===================================================================================+==============+
9
+ | `development <https://grscheller.github.io/pythonic-fp-numpy/development/html/>`_ | |
10
+ +-----------------------------------------------------------------------------------+--------------+
11
+ | `v1.0.0 <https://grscheller.github.io/pythonic-fp-numpy/release/html/>`_ | 2026-05-14 |
12
+ +-----------------------------------------------------------------------------------+--------------+
13
+ | v0.1.2 | 2026-01-16 |
14
+ +-----------------------------------------------------------------------------------+--------------+
15
+ | v0.1.1 | 2025-12-01 |
16
+ +-----------------------------------------------------------------------------------+--------------+
17
+ | v0.1.0 | 2025-11-30 |
18
+ +-----------------------------------------------------------------------------------+--------------+
@@ -0,0 +1,32 @@
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.numpy
12
+
13
+ Importing the package
14
+ ---------------------
15
+
16
+ Import the modules.
17
+
18
+ .. code:: python
19
+
20
+ from pythonic_fp.numpy.hashable_wrapped_ndarray import HWrapNDArrayNumber
21
+ from pythonic_fp.numpy.hashable_wrapped_ndarray import HWrapNDArrayString
22
+ from pythonic_fp.numpy.hashable_wrapped_ndarray import HWrapNDArrayBytes
23
+ from pythonic_fp.numpy.hashable_wrapped_ndarray import HWrapNDArrayVoid
24
+ from pythonic_fp.numpy.hashable_wrapped_ndarray import HWrapNDArrayObject
25
+ from pythonic_fp.numpy.hashable_wrapped_ndarray import HWrapNDArrayDateTime
26
+ from pythonic_fp.numpy.hashable_wrapped_ndarray import HWrapNDArrayTimeDelta
27
+ from pythonic_fp.numpy.hashable_wrapped_ndarray import HWrapNDArrayBool
28
+
29
+ Use case examples
30
+ -----------------
31
+
32
+ TODO:
@@ -1,10 +1,15 @@
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-numpy"
3
- version = "0.1.2"
7
+ version = "1.0.0"
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" }]
10
+ authors = [
11
+ { name = "Geoffrey R. Scheller", email = "geoffrey@scheller.com" },
12
+ ]
8
13
  keywords = [
9
14
  "numpy",
10
15
  "ndarray",
@@ -12,12 +17,12 @@ keywords = [
12
17
  "wrap",
13
18
  ]
14
19
  classifiers = [
15
- "Development Status :: 4 - Beta",
20
+ "Development Status :: 3 - Alpha",
16
21
  "Framework :: Pytest",
17
22
  "Intended Audience :: Developers",
18
23
  "License :: OSI Approved :: Apache Software License",
19
24
  "Operating System :: OS Independent",
20
- "Programming Language :: Python :: 3.13",
25
+ "Programming Language :: Python :: 3.14",
21
26
  "Typing :: Typed",
22
27
  ]
23
28
  dependencies = [
@@ -27,8 +32,8 @@ dynamic = ["description"]
27
32
 
28
33
  [project.urls]
29
34
  Changelog = "https://github.com/grscheller/pythonic-fp-numpy/blob/main/CHANGELOG.rst"
30
- Documentation = "https://grscheller.github.io/pythonic-fp/numpy/development/build/html/"
31
- Homepage = "https://grscheller.github.io/pythonic-fp/homepage/build/html/"
35
+ Documentation = "https://grscheller.github.io/pythonic-fp/projects/numpy.html"
36
+ Homepage = "https://grscheller.github.io/pythonic-fp/"
32
37
  Source = "https://github.com/grscheller/pythonic-fp-numpy"
33
38
 
34
39
  [project.optional-dependencies]
@@ -37,17 +42,11 @@ test = [
37
42
  "pytest>=8.4.1",
38
43
  ]
39
44
 
40
- [build-system]
41
- requires = ["flit_core>=3.12,<4"]
42
- build-backend = "flit_core.buildapi"
43
-
44
45
  [tool.flit.module]
45
46
  name = "pythonic_fp.numpy"
46
47
 
47
48
  [tool.mypy]
48
- enable_incomplete_feature = "NewGenericSyntax"
49
49
  explicit_package_bases = true
50
- implicit_reexport = false
51
50
  local_partial_types = true
52
51
  namespace_packages = true
53
52
  warn_redundant_casts = true
@@ -61,19 +60,24 @@ dmypy = false
61
60
  strict = true
62
61
  report_progress = true
63
62
 
64
- [tool.pytest.ini_options]
65
- addopts = "-ra"
63
+ [tool.pytest]
64
+ addopts = [
65
+ "-ra",
66
+ ]
66
67
  consider_namespace_packages = true
67
68
  testpaths = ["tests/"]
68
69
 
69
70
  [tool.ruff]
70
- target-version = "py313"
71
+ target-version = "py314"
71
72
 
72
73
  [tool.ruff.lint.flake8-quotes]
73
74
  docstring-quotes = "double"
74
75
 
75
76
  [tool.ruff.lint.per-file-ignores]
76
- "tests/*" = ["C901"]
77
+ "tests/**/*.py" = [
78
+ "E731",
79
+ "C901",
80
+ ]
77
81
  "**/*.py" = ["E741"]
78
82
 
79
83
  [tool.ruff.format]
@@ -1,4 +1,4 @@
1
- # Copyright 2024-2025 Geoffrey R. Scheller
1
+ # Copyright 2024-2026 Geoffrey R. Scheller
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -13,19 +13,14 @@
13
13
  # limitations under the License.
14
14
 
15
15
  """
16
- FP NumPy Tools
17
- ==============
16
+ NumPy Tools
17
+ -----------
18
18
 
19
- Package implementing functional programming tools for NumPy.
19
+ .. admonition:: Functional Tools for Numpy
20
20
 
21
- Modules
22
- -------
21
+ Package implementing functional programming tools for NumPy.
23
22
 
24
- +-------------------------------+--------------------------------------+
25
- | Module | Description |
26
- +===============================+======================================+
27
- | **hashable_wrapped_ndarray** | Make non-writable NDArrays hashable. |
28
- +-------------------------------+--------------------------------------+
23
+ - module **hashable_wrapped_ndarray:** Wrap a non-writable NDArray making result hashable.
29
24
 
30
25
  """
31
26