pythonic-fp-circulararray 6.0.4__tar.gz → 6.1.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 (41) hide show
  1. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/.github/workflows/static.yml +11 -6
  2. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/.gitignore +1 -2
  3. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/CHANGELOG.rst +9 -0
  4. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/PKG-INFO +6 -6
  5. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/README.rst +3 -3
  6. pythonic_fp_circulararray-6.1.0/docs/Makefile +78 -0
  7. pythonic_fp_circulararray-6.1.0/docs/gen_conf.py +109 -0
  8. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/pyproject.toml +6 -4
  9. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/src/pythonic_fp/circulararray/__init__.py +6 -8
  10. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/src/pythonic_fp/circulararray/auto.py +107 -91
  11. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/src/pythonic_fp/circulararray/fixed.py +112 -95
  12. pythonic_fp_circulararray-6.1.0/src/pythonic_fp/circulararray/py.typed +0 -0
  13. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/tests/auto/test_ca.py +2 -2
  14. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/tests/fixed/test_repr_str_fixed.py +1 -1
  15. pythonic_fp_circulararray-6.0.4/docs/Makefile +0 -47
  16. pythonic_fp_circulararray-6.0.4/docs/build/index.html +0 -44
  17. pythonic_fp_circulararray-6.0.4/docs/build/style.css +0 -44
  18. pythonic_fp_circulararray-6.0.4/docs/conf_devel.py +0 -68
  19. pythonic_fp_circulararray-6.0.4/docs/conf_release.py +0 -68
  20. pythonic_fp_circulararray-6.0.4/docs/index_devel.rst +0 -30
  21. pythonic_fp_circulararray-6.0.4/docs/index_release.rst +0 -30
  22. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/LICENSE +0 -0
  23. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/docs/requirements.txt +0 -0
  24. /pythonic_fp_circulararray-6.0.4/docs/build/.nojekyll → /pythonic_fp_circulararray-6.1.0/docs/source/_static/.gitkeep +0 -0
  25. /pythonic_fp_circulararray-6.0.4/src/pythonic_fp/circulararray/__init__.pyi → /pythonic_fp_circulararray-6.1.0/docs/source/_templates/.gitkeep +0 -0
  26. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/docs/source/changelog.rst +0 -0
  27. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/docs/source/description.rst +0 -0
  28. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/docs/source/docs/auto.rst +0 -0
  29. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/docs/source/docs/fixed.rst +0 -0
  30. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/docs/source/docs/index.rst +0 -0
  31. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/docs/source/releases.rst +0 -0
  32. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/docs/source/usage.rst +0 -0
  33. /pythonic_fp_circulararray-6.0.4/src/pythonic_fp/circulararray/py.typed → /pythonic_fp_circulararray-6.1.0/src/pythonic_fp/circulararray/__init__.pyi +0 -0
  34. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/src/pythonic_fp/circulararray/auto.pyi +0 -0
  35. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/src/pythonic_fp/circulararray/fixed.pyi +0 -0
  36. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/tests/auto/test_ca_capacity.py +0 -0
  37. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/tests/auto/test_ca_fold_with_none.py +0 -0
  38. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/tests/auto/test_repr_str_auto.py +0 -0
  39. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/tests/fixed/test_caf.py +0 -0
  40. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/tests/fixed/test_caf_capacity.py +0 -0
  41. {pythonic_fp_circulararray-6.0.4 → pythonic_fp_circulararray-6.1.0}/tests/fixed/test_caf_fold_with_none.py +0 -0
@@ -5,6 +5,11 @@ on:
5
5
  branches: ["main"]
6
6
  workflow_dispatch:
7
7
 
8
+ env:
9
+ RELEASE: '6.1.0'
10
+ DEVEL: '6.1.1'
11
+ PYTHON: '3.14'
12
+
8
13
  permissions:
9
14
  contents: read
10
15
  pages: write
@@ -27,23 +32,23 @@ jobs:
27
32
  - name: Select Python
28
33
  uses: actions/setup-python@v6
29
34
  with:
30
- python-version: '3.14'
35
+ python-version: ${{ env.PYTHON }}
31
36
 
32
37
  - name: Install Sphinx Dependencies
33
- run: pip install -r docs/requirements.txt
38
+ run: |
39
+ pip install -r docs/requirements.txt
40
+ sudo apt-get install -y graphviz
34
41
 
35
42
  - name: Build Release Docs
36
43
  run: |
37
44
  pip install pythonic-fp-circulararray
38
- cp docs/index_release.rst docs/source/index.rst
39
- cp docs/conf_release.py docs/source/conf.py
45
+ docs/gen_conf.py release ${{ env.RELEASE }} CircularArray circulararray > docs/source/conf.py
40
46
  sphinx-build -M html docs/source docs/build/release
41
47
 
42
48
  - name: Build Development Docs
43
49
  run: |
44
50
  pip install -e .
45
- cp docs/index_devel.rst docs/source/index.rst
46
- cp docs/conf_devel.py docs/source/conf.py
51
+ docs/gen_conf.py devel ${{ env.DEVEL }} CircularArray circulararray > docs/source/conf.py
47
52
  sphinx-build -M html docs/source docs/build/development
48
53
 
49
54
  - name: Setup Pages
@@ -1,8 +1,7 @@
1
1
  # Minimal version - only add to when necessary
2
2
  **/__pycache__/
3
3
  dist/
4
- docs/build/release/
5
- docs/build/development/
4
+ docs/build/
6
5
  docs/source/conf.py
7
6
  docs/source/index.rst
8
7
  **/.dmypy.json
@@ -17,6 +17,15 @@ See `Semantic Versioning 2.0.0 <https://semver.org>`_.
17
17
  Releases and Important Milestones
18
18
  ---------------------------------
19
19
 
20
+ PyPI 6.1.0 - 2026-05-03
21
+ ~~~~~~~~~~~~~~~~~~~~~~~
22
+
23
+ Migrated to the new document build system I developed for the
24
+ queue project.
25
+
26
+ Had to bump minor version number due to a small difference on what
27
+ CAF.__str__ and CA.__str__ now display.
28
+
20
29
  PyPI 6.0.3 - 2026-04-25
21
30
  ~~~~~~~~~~~~~~~~~~~~~~~
22
31
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonic-fp-circulararray
3
- Version: 6.0.4
3
+ Version: 6.1.0
4
4
  Summary: Circular Array
5
5
  Keywords: auto resizing,circular array,circulararray,dequeue,indexable,pop,push
6
6
  Author-email: "Geoffrey R. Scheller" <geoffrey@scheller.com>
@@ -17,8 +17,8 @@ License-File: LICENSE
17
17
  Requires-Dist: pythonic-fp-gadgets>=4.0.2
18
18
  Requires-Dist: pytest>=8.4.1 ; extra == "test"
19
19
  Project-URL: Changelog, https://github.com/grscheller/pythonic-fp-circulararray/blob/main/CHANGELOG.rst
20
- Project-URL: Documentation, https://grscheller.github.io/pythonic-fp-circulararray/
21
- Project-URL: Homepage, https://grscheller.github.io/pythonic-fp/homepage/html/
20
+ Project-URL: Documentation, https://grscheller.github.io/pythonic-fp/projects/circulararray.html
21
+ Project-URL: Homepage, https://grscheller.github.io/pythonic-fp/
22
22
  Project-URL: Source, https://github.com/grscheller/pythonic-fp-circulararray
23
23
  Provides-Extra: test
24
24
 
@@ -54,15 +54,15 @@ Python module implementing stateful circular array data structures.
54
54
 
55
55
  Part of the
56
56
  `pythonic-fp
57
- <https://grscheller.github.io/pythonic-fp>`_
57
+ <https://grscheller.github.io/pythonic-fp/>`_
58
58
  PyPI projects.
59
59
 
60
60
  Documentation
61
61
  -------------
62
62
 
63
- Documentation for this project is hosted on
63
+ Documentation and other links for this project are hosted on
64
64
  `GitHub Pages
65
- <https://grscheller.github.io/pythonic-fp-circulararray>`_.
65
+ <https://grscheller.github.io/pythonic-fp/projects/circulararray.html>`_.
66
66
 
67
67
  Copyright and License
68
68
  ---------------------
@@ -30,15 +30,15 @@ Python module implementing stateful circular array data structures.
30
30
 
31
31
  Part of the
32
32
  `pythonic-fp
33
- <https://grscheller.github.io/pythonic-fp>`_
33
+ <https://grscheller.github.io/pythonic-fp/>`_
34
34
  PyPI projects.
35
35
 
36
36
  Documentation
37
37
  -------------
38
38
 
39
- Documentation for this project is hosted on
39
+ Documentation and other links for this project are hosted on
40
40
  `GitHub Pages
41
- <https://grscheller.github.io/pythonic-fp-circulararray>`_.
41
+ <https://grscheller.github.io/pythonic-fp/projects/circulararray.html>`_.
42
42
 
43
43
  Copyright and License
44
44
  ---------------------
@@ -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 = CircularArray
7
+ PYPI_NAME = circularArray
8
+ RELEASE_VERSION = 6.1.0
9
+ DEVEL_VERSION = 6.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
@@ -0,0 +1,109 @@
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
+
105
+ rst_epilog = """
106
+ .. |RELEASE_STRING| replace:: {release_string}
107
+
108
+ """
109
+ ''')
@@ -4,10 +4,12 @@ build-backend = "flit_core.buildapi"
4
4
 
5
5
  [project]
6
6
  name = "pythonic-fp-circulararray"
7
- version = "6.0.4"
7
+ version = "6.1.0"
8
8
  readme = "README.rst"
9
9
  requires-python = ">=3.13"
10
- authors = [{ name = "Geoffrey R. Scheller", email = "geoffrey@scheller.com" }]
10
+ authors = [
11
+ { name = "Geoffrey R. Scheller", email = "geoffrey@scheller.com" },
12
+ ]
11
13
  keywords = [
12
14
  "auto resizing",
13
15
  "circular array",
@@ -33,8 +35,8 @@ dynamic = ["description"]
33
35
 
34
36
  [project.urls]
35
37
  Changelog = "https://github.com/grscheller/pythonic-fp-circulararray/blob/main/CHANGELOG.rst"
36
- Documentation = "https://grscheller.github.io/pythonic-fp-circulararray/"
37
- Homepage = "https://grscheller.github.io/pythonic-fp/homepage/html/"
38
+ Documentation = "https://grscheller.github.io/pythonic-fp/projects/circulararray.html"
39
+ Homepage = "https://grscheller.github.io/pythonic-fp/"
38
40
  Source = "https://github.com/grscheller/pythonic-fp-circulararray"
39
41
 
40
42
  [project.optional-dependencies]
@@ -14,19 +14,17 @@
14
14
 
15
15
  """
16
16
  Circular Array
17
- --------------
17
+ ==============
18
18
 
19
- .. admonition:: Stateful circular array data structures.
19
+ .. admonition:: Stateful circular array data structures
20
20
 
21
- - O(1) pops and pushes either end
21
+ - O(1) pops and pushes on either side
22
22
  - O(1) size determination
23
23
  - O(1) indexing
24
- - Two types of circular arrays, fixed and variable capacity
24
+ - two types of circular arrays
25
25
 
26
- .. note::
27
-
28
- - Class constructors ``CA`` and ``CAF`` take an optional iterator to populate circular array.
29
- - Factory Functions ``ca`` and ``caf`` take a variable number of parameters to populate circular array.
26
+ - fixed capacity: ``CAF``
27
+ - variable capacity: ``CA``
30
28
 
31
29
  """
32
30