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.
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/CHANGELOG.rst +58 -1
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/PKG-INFO +27 -12
- pythonic_fp_circulararray-5.4.0/README.rst +47 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/pyproject.toml +4 -2
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/src/pythonic_fp/circulararray/auto.py +226 -199
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/src/pythonic_fp/circulararray/auto.pyi +12 -3
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/src/pythonic_fp/circulararray/fixed.py +157 -132
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/src/pythonic_fp/circulararray/fixed.pyi +15 -3
- pythonic_fp_circulararray-5.4.0/tests/auto/test_ca_fold_with_none.py +106 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/tests/fixed/test_caf.py +1 -1
- pythonic_fp_circulararray-5.4.0/tests/fixed/test_caf_fold_with_none.py +106 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/tests/fixed/test_repr_str_fixed.py +1 -1
- pythonic_fp_circulararray-5.3.3/README.rst +0 -33
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/.gitignore +0 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/LICENSE +0 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/src/pythonic_fp/circulararray/__init__.py +0 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/src/pythonic_fp/circulararray/__init__.pyi +0 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/src/pythonic_fp/circulararray/py.typed +0 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/tests/auto/test_ca.py +0 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/tests/auto/test_ca_capacity.py +0 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-5.4.0}/tests/auto/test_repr_str_auto.py +0 -0
- {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
|
-
|
|
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
|
+
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
|
-
-
|
|
34
|
-
|
|
35
|
-
- O(1)
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
+
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]
|