pythonic-fp-circulararray 5.3.3__tar.gz → 6.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 (22) hide show
  1. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/CHANGELOG.rst +70 -1
  2. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/PKG-INFO +27 -12
  3. pythonic_fp_circulararray-6.0.0/README.rst +47 -0
  4. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/pyproject.toml +4 -2
  5. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/src/pythonic_fp/circulararray/auto.py +230 -204
  6. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/src/pythonic_fp/circulararray/fixed.py +171 -152
  7. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/tests/auto/test_ca.py +10 -0
  8. pythonic_fp_circulararray-6.0.0/tests/auto/test_ca_fold_with_none.py +106 -0
  9. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/tests/fixed/test_caf.py +21 -10
  10. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/tests/fixed/test_caf_capacity.py +3 -3
  11. pythonic_fp_circulararray-6.0.0/tests/fixed/test_caf_fold_with_none.py +106 -0
  12. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/tests/fixed/test_repr_str_fixed.py +3 -3
  13. pythonic_fp_circulararray-5.3.3/README.rst +0 -33
  14. pythonic_fp_circulararray-5.3.3/src/pythonic_fp/circulararray/__init__.pyi +0 -0
  15. pythonic_fp_circulararray-5.3.3/src/pythonic_fp/circulararray/auto.pyi +0 -43
  16. pythonic_fp_circulararray-5.3.3/src/pythonic_fp/circulararray/fixed.pyi +0 -32
  17. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/.gitignore +0 -0
  18. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/LICENSE +0 -0
  19. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/src/pythonic_fp/circulararray/__init__.py +0 -0
  20. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/src/pythonic_fp/circulararray/py.typed +0 -0
  21. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/tests/auto/test_ca_capacity.py +0 -0
  22. {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/tests/auto/test_repr_str_auto.py +0 -0
@@ -17,6 +17,35 @@ See `Semantic Versioning 2.0.0 <https://semver.org>`_.
17
17
  Releases and Important Milestones
18
18
  ---------------------------------
19
19
 
20
+ PyPI 6.0.0 - 2025-09-25
21
+ ~~~~~~~~~~~~~~~~~~~~~~~
22
+
23
+ Changed how "optional" iterator in initializer signature is handled.
24
+
25
+ - same trick as is done in queues project.
26
+ - no longer need to use a sentinel in the signature
27
+ - less typing boilerplate
28
+ - required a bump in major version number
29
+
30
+ PyPI 5.4.0 - 2025-09-25
31
+ ~~~~~~~~~~~~~~~~~~~~~~~
32
+
33
+ Gave both circular arrays the ability to store None as a value.
34
+
35
+ - realized that both circular array types cannot store None as a value
36
+
37
+ - now using pythonic_fp.gadgets.sentinels.novalue.NoValue as the sentinel
38
+
39
+ - typing for foldl & foldr a bit quirky (mypy bug?)
40
+
41
+ - bumping minor version number to 5.4.0
42
+
43
+ - more than a bug fix but not really an API change either
44
+
45
+ - updated README.rst for last two PyPI releases
46
+
47
+ - previous version never fully updated for two circular array types
48
+
20
49
  PyPI 5.3.3 - 2025-09-21
21
50
  ~~~~~~~~~~~~~~~~~~~~~~~
22
51
 
@@ -27,7 +56,9 @@ PyPI 5.3.2 - 2025-09-04
27
56
 
28
57
  - removed TypeVar declarations
29
58
  - removed Never from union return types
59
+
30
60
  - seems Never is now interpreted as a bottom
61
+
31
62
  - regenerated .pyi files with mypy's stubgen
32
63
  - updated docstrings for Sphinx documentation
33
64
 
@@ -46,8 +77,10 @@ API addition, removed position only parameters from API `/`
46
77
 
47
78
  - new API should not affect old code
48
79
  - adapted overall Sphinx documentation structure from pythonic-fp.queues
80
+
49
81
  - document generation now done in pythonic-fp repo
50
82
  - pythonic_fp.circulararray docstrings still a bit rough
83
+
51
84
  - fixed broken PyPI links
52
85
 
53
86
  PyPI 5.1.2 - 2025-07-06
@@ -63,6 +96,7 @@ Devel environment and documentation changes only.
63
96
  - documentation improvements
64
97
  - forgot to updated changelog.rst before PyPI release
65
98
  - Pythonic FP homepage now points to its GitHub README.md
99
+
66
100
  - used to point to its GH-Pages
67
101
 
68
102
  PyPI 5.1.0 - 2025-07-04
@@ -71,16 +105,22 @@ PyPI 5.1.0 - 2025-07-04
71
105
  First PyPI Release with Sphinx replacing pdoc.
72
106
 
73
107
  - switched from ``pdoc`` to ``sphinx`` for document generation
108
+
74
109
  - no longer source code controlling generated HTML (too wasteful)
75
110
  - using ``sphinx.ext.githubpages`` extension to publish from this repo
76
111
  - using ``sphinx.ext.autodoc`` to generate detailed API documentation
77
112
  - using the ``piccolo-theme at https://pypi.org/project/piccolo-theme/``
113
+
78
114
  - beautiful dark mode
79
115
  - plays nice with ``autodoc`` and ``DarkReader``
116
+
80
117
  - some formatting changes
118
+
81
119
  - no actual code changes
82
120
  - did remove TypeVar hack used for pdoc
121
+
83
122
  - made pyproject.toml improvements
123
+
84
124
  - better tooling configurations
85
125
  - removed all version caps from pyproject.toml, see this
86
126
  `blog post <https://iscinumpy.dev/post/bound-version-constraints>`_.
@@ -91,7 +131,9 @@ PyPI 5.0.0 - 2025-05-23
91
131
  First PyPI release as ``pythonic-fp.circular-array``.
92
132
 
93
133
  - there was already a PyPI project with the dtools name
134
+
94
135
  - the name pythonic-fp was not taken
136
+
95
137
  - using it as the namespace name for the entire group
96
138
  - does exist as an "skeleton" project just to claim the name
97
139
  - installing it will break all the namespace packages
@@ -114,6 +156,7 @@ Version no longer determined dynamically.
114
156
  - version now set in pyproject.toml
115
157
  - no longer doing 4 part development versioning
116
158
  - version will either denote
159
+
117
160
  - the current PyPI release - if no substantive changes made
118
161
  - the next PyPI release - what development is working toward
119
162
 
@@ -136,6 +179,7 @@ PyPI 3.11.0 - 2025-04-06
136
179
  Major API change.
137
180
 
138
181
  - swapped names `ca` and `CA`
182
+
139
183
  - class name now `CA`
140
184
  - factory function taking variable number of arguments is now `ca`
141
185
 
@@ -144,13 +188,18 @@ Major API change.
144
188
  - still want this class to behave like a builtin
145
189
  - but got tired fighting linters
146
190
  - maybe being "Pythonic" means
191
+
147
192
  - that only builtins should break naming conventions
148
193
  - naming conventions being
194
+
149
195
  - snake_case for functions and method names
150
196
  - CamelCase for class names
197
+
151
198
  - perhaps a visual distinction is useful to tell when you
199
+
152
200
  - are dealing with user/library Python code
153
201
  - C code presenting itself as a Python class
202
+
154
203
  - typing improvements
155
204
 
156
205
  PyPI 3.10.1 - 2025-04-03
@@ -159,16 +208,25 @@ PyPI 3.10.1 - 2025-04-03
159
208
  Major API changes.
160
209
 
161
210
  - class name still `ca`
211
+
162
212
  - initializer takes 1 or 0 iterables
213
+
163
214
  - like Python builtin types `list` or `tuple`
215
+
164
216
  - factory function `CA` provided to create a `ca` from mult args
217
+
165
218
  - like `[]` or `{}`
219
+
166
220
  - otherwise, method names are all snake_case compatible
221
+
167
222
  - examples
223
+
168
224
  - popL -> popl
169
225
  - pushR -> pushr
170
226
  - fractionFilled -> fraction_filled
227
+
171
228
  - updated pyproject.toml
229
+
172
230
  - to better match other dtools namespace projects
173
231
 
174
232
  PyPI 3.9.1 - 2025-02-16
@@ -257,8 +315,10 @@ PyPI 3.4.0 - 2024-08-15
257
315
  Updated `__eq__` comparisons.
258
316
 
259
317
  - first compare elements by identity before equality
318
+
260
319
  - I noticed that is what Python builtins do
261
320
  - makes dealing with grscheller.fp.nada module easier
321
+
262
322
  - standardizing docstrings across grscheller PyPI projects
263
323
 
264
324
  Version 3.3.0.1 - 2024-08-05
@@ -269,6 +329,7 @@ Just a commit, made a paradigm "regression".
269
329
  - made a paradigm "regression", preparing for a 3.4.0 release
270
330
  - felt CA was becoming way too complicated
271
331
  - grscheller.datastructures needed it to fully embrace type annotations
332
+
272
333
  - but I was shifting too many features back into grscheller.circular-array
273
334
  - want ca to be useful for non-functional applications
274
335
 
@@ -282,12 +343,17 @@ The changes made were
282
343
  - changed nomenclature from "left/right" to "front/rear"
283
344
  - unsafe and safe versions of pop & fold functionality
284
345
  - left and right folds improvements
346
+
285
347
  - consolidated `foldL, foldL1, foldR, foldR1` into `foldL` & `foldR`
348
+
286
349
  - tests working
350
+
287
351
  - basically I changed pops to unsafe pops and added `try except` blocks
288
352
  - safe versions tests needed
353
+
289
354
  - safe pops return multiple values in tuples
290
355
  - will take a `default` value to return
356
+
291
357
  - if only asked to return 1 value and CA is empty
292
358
  - seems to work properly from iPython
293
359
 
@@ -333,10 +399,13 @@ Version 1.1.0.0 - 2024-03-08
333
399
  Just a commit to prepare for PyPI release 2.0.0!!!
334
400
 
335
401
  - BUGFIX: Fixed a subtle resizing bug
402
+
336
403
  - bug probably present in all previous versions
337
404
  - not previously identified due to inadequate test coverage
338
405
  - test coverage improved vastly
406
+
339
407
  - made some major code API changes
408
+
340
409
  - upon initialization minimizing size of the CircularArray
341
410
  - have some ideas on how to improve API for resizing CircularArrays
342
411
  - need to test my other 2 PyPI projects, both use circular-array as a dependency
@@ -356,7 +425,7 @@ PyPI 0.1.1 - 2024-01-30
356
425
 
357
426
  Changed circular-array from a package to just a module, actually a breaking API
358
427
  change. Version number should have been 0.2.0 Also, gave CircularArray class
359
- `foldL` & `foldR` methods.
428
+ ``foldL`` & ``foldR`` methods.
360
429
 
361
430
  PyPI 0.1.0 - 2024-01-28
362
431
  ~~~~~~~~~~~~~~~~~~~~~~~
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonic-fp-circulararray
3
- Version: 5.3.3
3
+ Version: 6.0.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 = "6.0.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]