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.
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/CHANGELOG.rst +70 -1
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/PKG-INFO +27 -12
- pythonic_fp_circulararray-6.0.0/README.rst +47 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/pyproject.toml +4 -2
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/src/pythonic_fp/circulararray/auto.py +230 -204
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/src/pythonic_fp/circulararray/fixed.py +171 -152
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/tests/auto/test_ca.py +10 -0
- pythonic_fp_circulararray-6.0.0/tests/auto/test_ca_fold_with_none.py +106 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/tests/fixed/test_caf.py +21 -10
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/tests/fixed/test_caf_capacity.py +3 -3
- pythonic_fp_circulararray-6.0.0/tests/fixed/test_caf_fold_with_none.py +106 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/tests/fixed/test_repr_str_fixed.py +3 -3
- pythonic_fp_circulararray-5.3.3/README.rst +0 -33
- pythonic_fp_circulararray-5.3.3/src/pythonic_fp/circulararray/__init__.pyi +0 -0
- pythonic_fp_circulararray-5.3.3/src/pythonic_fp/circulararray/auto.pyi +0 -43
- pythonic_fp_circulararray-5.3.3/src/pythonic_fp/circulararray/fixed.pyi +0 -32
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/.gitignore +0 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/LICENSE +0 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/src/pythonic_fp/circulararray/__init__.py +0 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/src/pythonic_fp/circulararray/py.typed +0 -0
- {pythonic_fp_circulararray-5.3.3 → pythonic_fp_circulararray-6.0.0}/tests/auto/test_ca_capacity.py +0 -0
- {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
|
-
|
|
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:
|
|
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
|
-
-
|
|
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 = "
|
|
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]
|