pythonic-fp-circulararray 5.3.3__tar.gz → 5.4.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 (22) hide show
  1. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/CHANGELOG.rst +58 -1
  2. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/PKG-INFO +27 -12
  3. pythonic_fp_circulararray-5.4.0/README.rst +47 -0
  4. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/pyproject.toml +4 -2
  5. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/src/pythonic_fp/circulararray/auto.py +226 -199
  6. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/src/pythonic_fp/circulararray/auto.pyi +12 -3
  7. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/src/pythonic_fp/circulararray/fixed.py +157 -132
  8. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/src/pythonic_fp/circulararray/fixed.pyi +15 -3
  9. pythonic_fp_circulararray-5.4.0/tests/auto/test_ca_fold_with_none.py +106 -0
  10. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/tests/fixed/test_caf.py +1 -1
  11. pythonic_fp_circulararray-5.4.0/tests/fixed/test_caf_fold_with_none.py +106 -0
  12. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/tests/fixed/test_repr_str_fixed.py +1 -1
  13. pythonic_fp_circulararray-5.3.3/README.rst +0 -33
  14. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/.gitignore +0 -0
  15. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/LICENSE +0 -0
  16. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/src/pythonic_fp/circulararray/__init__.py +0 -0
  17. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/src/pythonic_fp/circulararray/__init__.pyi +0 -0
  18. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/src/pythonic_fp/circulararray/py.typed +0 -0
  19. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/tests/auto/test_ca.py +0 -0
  20. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/tests/auto/test_ca_capacity.py +0 -0
  21. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/tests/auto/test_repr_str_auto.py +0 -0
  22. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/tests/fixed/test_caf_capacity.py +0 -0
@@ -17,6 +17,23 @@ See `Semantic Versioning 2.0.0 <https://semver.org>`_.
17
17
  Releases and Important Milestones
18
18
  ---------------------------------
19
19
 
20
+ PyPI 5.4.0 - TBD
21
+ ~~~~~~~~~~~~~~~~
22
+
23
+ - updated README.rst
24
+
25
+ - previous version never fully updated for two circular array types
26
+
27
+ - realized that both circular array types cannot store None as a value
28
+
29
+ - now using pythonic_fp.gadgets.sentinels.novalue.NoValue as the sentinel
30
+
31
+ - typing for foldl & foldr a bit quirky (mypy bug?)
32
+
33
+ - bumping minor version number
34
+
35
+ - more than a bug fix but not really an API change either
36
+
20
37
  PyPI 5.3.3 - 2025-09-21
21
38
  ~~~~~~~~~~~~~~~~~~~~~~~
22
39
 
@@ -27,7 +44,9 @@ PyPI 5.3.2 - 2025-09-04
27
44
 
28
45
  - removed TypeVar declarations
29
46
  - removed Never from union return types
47
+
30
48
  - seems Never is now interpreted as a bottom
49
+
31
50
  - regenerated .pyi files with mypy's stubgen
32
51
  - updated docstrings for Sphinx documentation
33
52
 
@@ -46,8 +65,10 @@ API addition, removed position only parameters from API `/`
46
65
 
47
66
  - new API should not affect old code
48
67
  - adapted overall Sphinx documentation structure from pythonic-fp.queues
68
+
49
69
  - document generation now done in pythonic-fp repo
50
70
  - pythonic_fp.circulararray docstrings still a bit rough
71
+
51
72
  - fixed broken PyPI links
52
73
 
53
74
  PyPI 5.1.2 - 2025-07-06
@@ -63,6 +84,7 @@ Devel environment and documentation changes only.
63
84
  - documentation improvements
64
85
  - forgot to updated changelog.rst before PyPI release
65
86
  - Pythonic FP homepage now points to its GitHub README.md
87
+
66
88
  - used to point to its GH-Pages
67
89
 
68
90
  PyPI 5.1.0 - 2025-07-04
@@ -71,16 +93,22 @@ PyPI 5.1.0 - 2025-07-04
71
93
  First PyPI Release with Sphinx replacing pdoc.
72
94
 
73
95
  - switched from ``pdoc`` to ``sphinx`` for document generation
96
+
74
97
  - no longer source code controlling generated HTML (too wasteful)
75
98
  - using ``sphinx.ext.githubpages`` extension to publish from this repo
76
99
  - using ``sphinx.ext.autodoc`` to generate detailed API documentation
77
100
  - using the ``piccolo-theme at https://pypi.org/project/piccolo-theme/``
101
+
78
102
  - beautiful dark mode
79
103
  - plays nice with ``autodoc`` and ``DarkReader``
104
+
80
105
  - some formatting changes
106
+
81
107
  - no actual code changes
82
108
  - did remove TypeVar hack used for pdoc
109
+
83
110
  - made pyproject.toml improvements
111
+
84
112
  - better tooling configurations
85
113
  - removed all version caps from pyproject.toml, see this
86
114
  `blog post <https://iscinumpy.dev/post/bound-version-constraints>`_.
@@ -91,7 +119,9 @@ PyPI 5.0.0 - 2025-05-23
91
119
  First PyPI release as ``pythonic-fp.circular-array``.
92
120
 
93
121
  - there was already a PyPI project with the dtools name
122
+
94
123
  - the name pythonic-fp was not taken
124
+
95
125
  - using it as the namespace name for the entire group
96
126
  - does exist as an "skeleton" project just to claim the name
97
127
  - installing it will break all the namespace packages
@@ -114,6 +144,7 @@ Version no longer determined dynamically.
114
144
  - version now set in pyproject.toml
115
145
  - no longer doing 4 part development versioning
116
146
  - version will either denote
147
+
117
148
  - the current PyPI release - if no substantive changes made
118
149
  - the next PyPI release - what development is working toward
119
150
 
@@ -136,6 +167,7 @@ PyPI 3.11.0 - 2025-04-06
136
167
  Major API change.
137
168
 
138
169
  - swapped names `ca` and `CA`
170
+
139
171
  - class name now `CA`
140
172
  - factory function taking variable number of arguments is now `ca`
141
173
 
@@ -144,13 +176,18 @@ Major API change.
144
176
  - still want this class to behave like a builtin
145
177
  - but got tired fighting linters
146
178
  - maybe being "Pythonic" means
179
+
147
180
  - that only builtins should break naming conventions
148
181
  - naming conventions being
182
+
149
183
  - snake_case for functions and method names
150
184
  - CamelCase for class names
185
+
151
186
  - perhaps a visual distinction is useful to tell when you
187
+
152
188
  - are dealing with user/library Python code
153
189
  - C code presenting itself as a Python class
190
+
154
191
  - typing improvements
155
192
 
156
193
  PyPI 3.10.1 - 2025-04-03
@@ -159,16 +196,25 @@ PyPI 3.10.1 - 2025-04-03
159
196
  Major API changes.
160
197
 
161
198
  - class name still `ca`
199
+
162
200
  - initializer takes 1 or 0 iterables
201
+
163
202
  - like Python builtin types `list` or `tuple`
203
+
164
204
  - factory function `CA` provided to create a `ca` from mult args
205
+
165
206
  - like `[]` or `{}`
207
+
166
208
  - otherwise, method names are all snake_case compatible
209
+
167
210
  - examples
211
+
168
212
  - popL -> popl
169
213
  - pushR -> pushr
170
214
  - fractionFilled -> fraction_filled
215
+
171
216
  - updated pyproject.toml
217
+
172
218
  - to better match other dtools namespace projects
173
219
 
174
220
  PyPI 3.9.1 - 2025-02-16
@@ -257,8 +303,10 @@ PyPI 3.4.0 - 2024-08-15
257
303
  Updated `__eq__` comparisons.
258
304
 
259
305
  - first compare elements by identity before equality
306
+
260
307
  - I noticed that is what Python builtins do
261
308
  - makes dealing with grscheller.fp.nada module easier
309
+
262
310
  - standardizing docstrings across grscheller PyPI projects
263
311
 
264
312
  Version 3.3.0.1 - 2024-08-05
@@ -269,6 +317,7 @@ Just a commit, made a paradigm "regression".
269
317
  - made a paradigm "regression", preparing for a 3.4.0 release
270
318
  - felt CA was becoming way too complicated
271
319
  - grscheller.datastructures needed it to fully embrace type annotations
320
+
272
321
  - but I was shifting too many features back into grscheller.circular-array
273
322
  - want ca to be useful for non-functional applications
274
323
 
@@ -282,12 +331,17 @@ The changes made were
282
331
  - changed nomenclature from "left/right" to "front/rear"
283
332
  - unsafe and safe versions of pop & fold functionality
284
333
  - left and right folds improvements
334
+
285
335
  - consolidated `foldL, foldL1, foldR, foldR1` into `foldL` & `foldR`
336
+
286
337
  - tests working
338
+
287
339
  - basically I changed pops to unsafe pops and added `try except` blocks
288
340
  - safe versions tests needed
341
+
289
342
  - safe pops return multiple values in tuples
290
343
  - will take a `default` value to return
344
+
291
345
  - if only asked to return 1 value and CA is empty
292
346
  - seems to work properly from iPython
293
347
 
@@ -333,10 +387,13 @@ Version 1.1.0.0 - 2024-03-08
333
387
  Just a commit to prepare for PyPI release 2.0.0!!!
334
388
 
335
389
  - BUGFIX: Fixed a subtle resizing bug
390
+
336
391
  - bug probably present in all previous versions
337
392
  - not previously identified due to inadequate test coverage
338
393
  - test coverage improved vastly
394
+
339
395
  - made some major code API changes
396
+
340
397
  - upon initialization minimizing size of the CircularArray
341
398
  - have some ideas on how to improve API for resizing CircularArrays
342
399
  - need to test my other 2 PyPI projects, both use circular-array as a dependency
@@ -356,7 +413,7 @@ PyPI 0.1.1 - 2024-01-30
356
413
 
357
414
  Changed circular-array from a package to just a module, actually a breaking API
358
415
  change. Version number should have been 0.2.0 Also, gave CircularArray class
359
- `foldL` & `foldR` methods.
416
+ ``foldL`` & ``foldR`` methods.
360
417
 
361
418
  PyPI 0.1.0 - 2024-01-28
362
419
  ~~~~~~~~~~~~~~~~~~~~~~~
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonic-fp-circulararray
3
- Version: 5.3.3
3
+ Version: 5.4.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>
@@ -14,6 +14,7 @@ Classifier: Operating System :: OS Independent
14
14
  Classifier: Programming Language :: Python :: 3.13
15
15
  Classifier: Typing :: Typed
16
16
  License-File: LICENSE
17
+ Requires-Dist: pythonic-fp-gadgets>=3.1.0
17
18
  Requires-Dist: pytest>=8.4.1 ; extra == "test"
18
19
  Project-URL: Changelog, https://github.com/grscheller/pythonic-fp-circulararray/blob/main/CHANGELOG.rst
19
20
  Project-URL: Documentation, https://grscheller.github.io/pythonic-fp/circulararray/development/build/html/index.html
@@ -30,17 +31,31 @@ PyPI project
30
31
 
31
32
  Python module implementing stateful circular array data structures.
32
33
 
33
- - O(1) pops either end
34
- - O(1) amortized pushes either end
35
- - O(1) indexing, fully supports slicing
36
- - Auto-resizing larger when necessary, manually compatible
37
- - iterable, can safely mutate while iterators continue iterating over previous state
38
- - comparisons compare identity before equality, like builtins
39
- - in boolean context returns true when not empty, false when empty
40
-
41
- This PyPI project is part of of the grscheller
42
- `pythonic-fp namespace projects
43
- <https://github.com/grscheller/pythonic-fp/blob/main/README.md>`_
34
+ - variable storage capacity circular array
35
+
36
+ - O(1) pops either end
37
+ - O(1) amortized pushes either end
38
+ - O(1) indexing, fully supports slicing
39
+ - auto-resizing more storage capacity when necessary, manually compatible
40
+ - iterable, safely mutates while iterators iterating over previous state
41
+ - comparisons compare identity before equality, like builtins
42
+ - in boolean context, falsy when empty, otherwise truthy
43
+ - function ``ca`` produces auto-resizing circular array from arguments
44
+
45
+ - fixed storage capacity circular array
46
+
47
+ - O(1) pops and pushes either end
48
+ - O(1) indexing, does not support slicing
49
+ - fixed total storage capacity
50
+ - iterable, safely mutates while iterators iterating over previous state
51
+ - comparisons compare identity before equality, like builtins
52
+ - in boolean context, falsy when either empty or full, otherwise truthy
53
+ - function ``caf`` produces fixed capacity circular array from arguments
54
+
55
+ Part of the
56
+ `pythonic-fp
57
+ <https://grscheller.github.io/pythonic-fp/homepage/build/html/index.html>`_
58
+ PyPI projects.
44
59
 
45
60
  Documentation
46
61
  -------------
@@ -0,0 +1,47 @@
1
+ Pythonic FP - Circular Array
2
+ ============================
3
+
4
+ PyPI project
5
+ `pythonic-fp-circulararray
6
+ <https://pypi.org/project/pythonic-fp-circulararray>`_.
7
+
8
+ Python module implementing stateful circular array data structures.
9
+
10
+ - variable storage capacity circular array
11
+
12
+ - O(1) pops either end
13
+ - O(1) amortized pushes either end
14
+ - O(1) indexing, fully supports slicing
15
+ - auto-resizing more storage capacity when necessary, manually compatible
16
+ - iterable, safely mutates while iterators iterating over previous state
17
+ - comparisons compare identity before equality, like builtins
18
+ - in boolean context, falsy when empty, otherwise truthy
19
+ - function ``ca`` produces auto-resizing circular array from arguments
20
+
21
+ - fixed storage capacity circular array
22
+
23
+ - O(1) pops and pushes either end
24
+ - O(1) indexing, does not support slicing
25
+ - fixed total storage capacity
26
+ - iterable, safely mutates while iterators iterating over previous state
27
+ - comparisons compare identity before equality, like builtins
28
+ - in boolean context, falsy when either empty or full, otherwise truthy
29
+ - function ``caf`` produces fixed capacity circular array from arguments
30
+
31
+ Part of the
32
+ `pythonic-fp
33
+ <https://grscheller.github.io/pythonic-fp/homepage/build/html/index.html>`_
34
+ PyPI projects.
35
+
36
+ Documentation
37
+ -------------
38
+
39
+ Documentation for this project is hosted on
40
+ `GitHub Pages
41
+ <https://grscheller.github.io/pythonic-fp/circulararray/development/build/html>`_.
42
+
43
+ Copyright and License
44
+ ---------------------
45
+
46
+ Copyright (c) 2023-2025 Geoffrey R. Scheller. Licensed under the Apache
47
+ License, Version 2.0. See the LICENSE file for details.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pythonic-fp-circulararray"
3
- version = "5.3.3"
3
+ version = "5.4.0"
4
4
  readme = "README.rst"
5
5
  requires-python = ">=3.13"
6
6
  license = { file = "LICENSE" }
@@ -23,7 +23,9 @@ classifiers = [
23
23
  "Programming Language :: Python :: 3.13",
24
24
  "Typing :: Typed",
25
25
  ]
26
- dependencies = []
26
+ dependencies = [
27
+ "pythonic-fp-gadgets>=3.1.0",
28
+ ]
27
29
  dynamic = ["description"]
28
30
 
29
31
  [project.urls]