pythonic-fp-queues 5.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.
@@ -0,0 +1,6 @@
1
+ # Minimal version - only add to when necessary
2
+ **/__pycache__/
3
+ dist/
4
+ **/.mypy_cache/
5
+ **/.pytest_cache/
6
+ **/.ruff_cache
@@ -0,0 +1,557 @@
1
+ CHANGELOG
2
+ =========
3
+
4
+ PyPI pythonic-fp.queues project.
5
+
6
+ Semantic Versioning
7
+ -------------------
8
+
9
+ Strict 3 digit semantic versioning adopted 2025-05-19.
10
+
11
+ - **MAJOR** version incremented for incompatible API changes
12
+ - **MINOR** version incremented for backward compatible added functionality
13
+ - **PATCH** version incremented for backward compatible bug fixes
14
+
15
+ See `Semantic Versioning 2.0.0 <https://semver.org>`_.
16
+
17
+ Releases and Important Milestones
18
+ ---------------------------------
19
+
20
+ PyPI 5.1.0 - 2025-09-25
21
+ ~~~~~~~~~~~~~~~~~~~~~~~
22
+
23
+ Updated API for pythonic_fp.circulararray.auto changes. Gained
24
+ the ability to store None as a value.
25
+
26
+ Had planned to deprecating pythonic-fp-queues as a separate
27
+ PyPI project. Continued development as a part of
28
+ pythonic-fp.containers for a while. Decided to move development
29
+ back to its own PyPI pythonic-fp-queues project again.
30
+
31
+ PyPI 4.0.0 - 2025-07-12
32
+ ~~~~~~~~~~~~~~~~~~~~~~~
33
+
34
+ Removed the ability to index FIFOQueue, LIFOQueue, and DEQueue
35
+
36
+ - No cutting in line!
37
+ - Moved all Sphinx documentation to pythonic-fp repo
38
+
39
+ PyPI 3.0.0 - 2025-07-06
40
+ ~~~~~~~~~~~~~~~~~~~~~~~
41
+
42
+ First PyPI release as pythonic-fp.queues
43
+
44
+ PyPI 2.0.0 - 2025-05-22
45
+ ~~~~~~~~~~~~~~~~~~~~~~~
46
+
47
+ Last PyPI release as dtools.queues
48
+
49
+ PyPI 1.0.0 - 2025-04-22
50
+ ~~~~~~~~~~~~~~~~~~~~~~~
51
+
52
+ - docstring changes
53
+ - pyproject.toml standardization
54
+ - moved dtools.queues.splitends module to its own dtools repo
55
+
56
+ PyPI 0.27.0 - 2025-04-07
57
+ ~~~~~~~~~~~~~~~~~~~~~~~~
58
+
59
+ - First PyPI release as dtools.queues
60
+
61
+ - split dtools.datastructures into
62
+
63
+ - dtools.queues
64
+ - dtools.tuples
65
+
66
+ - Typing improvements
67
+
68
+ PyPI 0.25.1 - 2025-01-16
69
+ ~~~~~~~~~~~~~~~~~~~~~~~~
70
+
71
+ Fixed pdoc issues with new typing notation
72
+
73
+ - updated docstrings
74
+ - had to add TypeVars
75
+
76
+ PyPI 0.25.0 - 2025-01-17
77
+ ~~~~~~~~~~~~~~~~~~~~~~~~
78
+
79
+ First release under dtools.datastructures name
80
+
81
+ PyPI 0.24.0 - 2024-11-18
82
+ ~~~~~~~~~~~~~~~~~~~~~~~~
83
+
84
+ Changed flatMap to bind thru out project
85
+
86
+ PyPI 0.22.1 - 2024-10-20
87
+ ~~~~~~~~~~~~~~~~~~~~~~~~
88
+
89
+ - removed docs from repo
90
+ - docs for all grscheller namespace projects maintained
91
+ [here](https://grscheller.github.io/grscheller-pypi-namespace-docs/).
92
+
93
+ PyPI 0.21.0 - 2024-08-20
94
+ ~~~~~~~~~~~~~~~~~~~~~~~~
95
+
96
+ - Got back to a state maintainer is happy with
97
+ - Many dependencies needed updating first
98
+
99
+ Version 0.20.5.1 - 2024-08-19 (Devel environment only)
100
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
101
+
102
+ - Datastructures coming back together
103
+
104
+ - works with all the current versions of fp and circular-array
105
+ - preparing for PyPI 0.21.0 release
106
+
107
+ Version 0.20.2.0 - 2024-08-03 (Devel environment only)
108
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
109
+
110
+ Going down a typing rabbit hole.
111
+
112
+ - updated to use grscheller.circular-array version 3.3.0 (3.2.3.0)
113
+ - updated to use grscheller.fp version 0.3.0 (0.2.3.0)
114
+ - removed grscheller.circular-array dependency from datastructures.SplitEnd
115
+ - still preparing for the 1.0.0 datastructures release
116
+
117
+ - as I tighten up typing, I find I must do so for dependencies too
118
+ - using ``# type: ignore`` is a band-aid, use ``@overload`` and ``cast`` instead
119
+ - using ``@overload`` to "untype" optional parameters is the way to go
120
+ - use ``cast`` only when you have knowledge beyond what the typechecker can know
121
+
122
+ PyPI 0.19.0 - 2024-07-15
123
+ ~~~~~~~~~~~~~~~~~~~~~~~~
124
+
125
+ Continuing to prepare for PyPI release 1.0.0
126
+
127
+ - cleaned up docstrings for a 1.0.0 release
128
+ - considering requiring grscheller.fp as a dependency
129
+
130
+ Version 0.18.0.0 - Devel environment only
131
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
132
+
133
+ Beginning to prepare for PyPI release 1.0.0
134
+
135
+ - first devel version requiring circular-array 3.1.0
136
+ - still some design work to be done
137
+ - TODO: Verify flatMap family yields results in "natural" order
138
+
139
+ Version 0.17.0.4 - Devel environment only
140
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
141
+
142
+ Devel environment only. Start of effort to relax None restrictions.
143
+
144
+ - have begun relaxing the requirement of not storing None as a value
145
+ - completed for queues.py
146
+
147
+ - requires grscheller.circular-array >= 3.0.3.0
148
+ - perhaps next PyPI release will be v1.0.0 ???
149
+
150
+ Version 0.16.0.0 - Devel environment only
151
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
152
+
153
+ Devel environment only. Preparing to support PEP 695 generics.
154
+
155
+ - Requires Python >= 3.12
156
+ - preparing to support PEP 695 generics
157
+
158
+ - will require Python 3.12
159
+ - will not have to import typing for Python 3.12 and beyond
160
+ - BUT... mypy does not support PEP 695 generics yet (Pyright does)
161
+
162
+ - bumped minimum Python version to >= 3.12 in pyproject.toml
163
+ - map methods mutating objects don't play nice with typing
164
+
165
+ - map methods now return copies
166
+ - THEREFORE: tests need to be completely overhauled
167
+
168
+ Version 0.14.1.1 - Devel environment only
169
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
170
+
171
+ Preparing to add TypeVars.
172
+
173
+ - tests working with ``grscheller.circular-array >= 3.0.0, \<3.2``
174
+
175
+ - lots of mypy complaints
176
+ - first version using TypeVars will be 0.15.0.0
177
+
178
+ PyPI 0.14.0 - 2024-03-09
179
+ ~~~~~~~~~~~~~~~~~~~~~~~~
180
+
181
+ - updated dependency on CircularArray class
182
+
183
+ - dependencies = ["grscheller.circular-array >= 0.2.0, < 2.1"]
184
+
185
+ - minor README.md woodsmithing
186
+ - keeping project an Alpha release for now
187
+
188
+ PyPI 0.13.0 - 2024-01-30
189
+ ~~~~~~~~~~~~~~~~~~~~~~~~
190
+
191
+ - BREAKING API CHANGE - CircularArray class removed
192
+ - CircularArray moved to its own PyPI & GitHub repos
193
+
194
+ - https://pypi.org/project/grscheller.circular-array/
195
+ - https://github.com/grscheller/circular-array
196
+
197
+ - Fix various out-of-date docstrings
198
+
199
+ PyPI 0.12.3 - 2024-01-20
200
+ ~~~~~~~~~~~~~~~~~~~~~~~~
201
+
202
+ Cutting next PyPI release from development (main)
203
+
204
+ - If experiment works, will drop release branch
205
+ - Will not include ``docs/``
206
+ - Will not include ``.gitignore`` and ``.github/``
207
+ - Will include ``tests/``
208
+ - Made pytest >= 7.4 an optional test dependency
209
+
210
+ PyPI 0.12.0 - 2024-01-14
211
+ ~~~~~~~~~~~~~~~~~~~~~~~~
212
+
213
+ Considerable future-proofing for first real Beta release
214
+
215
+ 0.11.3.4 - Devel environment only
216
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
217
+
218
+ - Finally decided to make next PyPI release Beta
219
+
220
+ - Package structure mature and not subject to change beyond additions
221
+ - Will endeavor to keep top level & core module names the same
222
+ - API changes will be deprecated before removed
223
+
224
+ 0.10.14.0 - 2023-12-09 (Devel environment only)
225
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
226
+
227
+ - Finished massive renaming & repackaging effort
228
+
229
+ - to help with future growth
230
+ - name choices more self-documenting
231
+ - top level modules
232
+
233
+ - array
234
+
235
+ - CLArray
236
+
237
+ - queue
238
+
239
+ - FIFOQueue (formerly SQueue)
240
+ - LIFOQueue (LIFO version of above)
241
+ - DoubleQueue (formerly DQueue)
242
+
243
+ - stack
244
+
245
+ - Stack (formerly PStack)
246
+ - FStack
247
+
248
+ - tuple-like
249
+
250
+ - FTuple
251
+
252
+ 0.10.8.0 - 2023-11-18 (Devel environment only)
253
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
254
+
255
+ - Bumping requires-python = ">=3.11" in pyproject.toml
256
+ - Currently developing & testing on Python 3.11.5
257
+ - 0.10.7.X will be used on the GitHub pypy3 branch
258
+
259
+ - Pypy3 (7.3.13) using Python (3.10.13)
260
+ - tests pass but are 4X slower
261
+ - LSP almost useless due to more primitive typing module
262
+
263
+ 0.10.7.0 - 2023-11-18 (Devel environment only)
264
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
265
+
266
+ - Overhauled __repr__ & __str__ methods for all classes
267
+
268
+ - tests that ds == eval(repr(ds)) for all data structures ds in package
269
+
270
+ - Updated markdown overview documentation
271
+
272
+ 0.10.1.0 - 2023-11-11 (Devel environment only)
273
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
274
+
275
+ - Removed flatMap methods from stateful objects
276
+
277
+ - FLArray, DQueue, SQueue, PStack
278
+ - kept the map method for each
279
+
280
+ - Some restructuring so package will scale better in the future
281
+
282
+ PyPI 0.9.1 - 2023-11-09
283
+ ~~~~~~~~~~~~~~~~~~~~~~~
284
+
285
+ - First Beta release of grscheller.datastructures on PyPI
286
+ - Infrastructure stable
287
+ - Existing datastructures only should need API additions
288
+ - Type annotations working extremely well
289
+ - Using Pdoc3 to generate documentation on GitHub
290
+
291
+ - see https://grscheller.github.io/datastructures/
292
+
293
+ - All iterators conform to Python language "iterator protocol"
294
+ - Improved docstrings
295
+ - Future directions:
296
+
297
+ - Develop some "typed" containers
298
+ - Need to use this package in other projects to gain insight
299
+
300
+ PyPI 0.8.6.0 - 2023-11-05
301
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
302
+
303
+ - Finally got queue.py & stack.py inheritance sorted out
304
+ - LSP with Pyright working quite well
305
+ - Goals for next PyPI release:
306
+
307
+ - combine methods
308
+
309
+ - tail and tailOr
310
+ - cons and consOr
311
+ - head and headOr
312
+
313
+ 0.8.3.0 - 2023-11-02 (Devel environment only)
314
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
315
+
316
+ Major API breaking change, Dqueue renamed DQueue. Tests now work.
317
+
318
+ 0.8.0.0 - 2023-10-28 (Devel environment only)
319
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
320
+
321
+ - API breaking changes
322
+
323
+ - did not find everything returning self upon mutation
324
+
325
+ - Efforts for future directions
326
+
327
+ - decided to use pdoc3 over sphinx to generate API documentation
328
+ - need to resolve tension of package being Pythonic and Functional
329
+
330
+ 0.7.5.0 - 2023-10-26 (Devel environment only)
331
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
332
+
333
+ - Moved pytest test suite to root of the repo
334
+
335
+ - src/grscheller/datastructures/tests -> tests/
336
+ - seems to be the canonical location of a test suite
337
+
338
+ - Instructions to run test suite in tests/__init__.py
339
+
340
+ PyPI 0.7.4.0 - 2023-10-25
341
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
342
+
343
+ - More mature
344
+ - More Pythonic
345
+ - Major API changes
346
+ - Still tagging it an Alpha release
347
+
348
+ 0.7.2.0 - 2023-10-18 (Devel environment only)
349
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
350
+
351
+ - Queue & Dqueue no longer return Maybe objects
352
+
353
+ - Neither store None as a value
354
+ - Now safe to return None for non-existent values
355
+
356
+ - like popping or peaking from an empty queue or dqueue
357
+
358
+ 0.7.0.0 - 2023-10-16 (Devel environment only)
359
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
360
+
361
+ - Added Queue data structure representing a FIFO queue
362
+ - Renamed two Dqueue methods
363
+
364
+ - headR -> peakLastIn
365
+ - headL -> peakNextOut
366
+
367
+ - Went ahead and removed Stack head method
368
+
369
+ - fair since I still labeling releases as alpha releases
370
+ - the API is still a work in progress
371
+
372
+ - Updated README.md
373
+
374
+ - foreshadowing making a distinction between
375
+
376
+ - objects "sharing" their data -> FP methods return copies
377
+ - objects "contain" their data -> FP methods mutate object
378
+
379
+ - added info on class Queue
380
+
381
+ PyPI 0.6.9.0 - 2023-10-09
382
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
383
+
384
+ - Renamed core module to iterlib module
385
+
386
+ - library just contained functions for manipulating iterators
387
+ - TODO: use mergeIters as a guide for an iterator "zip" function
388
+
389
+ - Class Stack better in alignment with:
390
+
391
+ - Python lists
392
+
393
+ - more natural for Stack to iterate backwards starting from head
394
+ - removed Stack's __getitem__ method
395
+ - both pop and push/append from end
396
+
397
+ - Dqueue which wraps a Circle instance
398
+
399
+ - also Dqueue does not have a __getitem__ method
400
+
401
+ - Circle which implements a circular array with a Python List
402
+
403
+ 0.6.8.6 - 2023-10-08 (Devel environment only)
404
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
405
+
406
+ - 3 new methods for class Circle and Dqueue
407
+
408
+ - mapSelf, flatMapSelf, mergeMapSelf
409
+
410
+ - these correspond to map, flatMap, mergeMap
411
+ - except they act on the class objects themselves, not new instances
412
+
413
+ - not worth the maintenance effort maintaining two version of Dqueue
414
+
415
+ - one returning new instances
416
+ - the other modifying the object in place
417
+
418
+ 0.6.8.3 - 2023-10-06 (Devel environment only)
419
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
420
+
421
+ - Class Carray renamed to Circle
422
+
423
+ - implements a circular array based on a Python List
424
+ - resizes itself as needed
425
+ - will handle None values being pushed and popped from it
426
+ - implemented in the grscheller.datastructures.circle module
427
+
428
+ - in the src/grscheller/datastructures/circle.py file
429
+
430
+ - O(1) pushing/popping to/from either end
431
+ - O(1) length determination
432
+ - O(1) indexing for setting and getting values.
433
+
434
+ - Dqueue implemented with Circle class instead of List class directly
435
+ - Ensured that None is never pushed to Stack & Dqueue objects
436
+
437
+ 0.6.3.2 - 2023-09-30 (Devel environment only)
438
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
439
+
440
+ - Improved comments and type annotations
441
+ - Removed isEmpty method from Dqueue class
442
+ - Both Dqueue & Stack objects evaluate true when non-empty
443
+ - Beginning preparations for the next PyPI release
444
+
445
+ - Want to make next PyPI release a Beta release
446
+ - Need to improve test suite first
447
+
448
+ 0.6.2.0 - 2023-09-25 (Devel environment only)
449
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
450
+
451
+ Devel environment only.
452
+
453
+ - removed isEmpty method from Stack class
454
+
455
+ 0.6.1.0 - 2023-09-25 (Devel environment only)
456
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
457
+
458
+ - Maybe get() and getOrElse() API changes
459
+ - getting a better handle on type annotation
460
+
461
+ - work-in-progress
462
+ - erroneous LSP error messages greatly reduced
463
+
464
+ PyPI 0.5.2.1 - 2023-09-24
465
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
466
+
467
+ - Data structures now support a much more FP style for Python
468
+
469
+ - introduces the use of type annotations for this effort
470
+ - much better test coverage
471
+
472
+ PyPI 0.3.0.2 - 2023-09-09
473
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
474
+
475
+ - Updated class Dqueue
476
+
477
+ - added __eq__ method
478
+ - added equality tests to tests/test_dqueue.py
479
+
480
+ - Improved docstrings
481
+
482
+ PyPI 0.2.2.2 - 2023-09-04
483
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
484
+
485
+ - Decided base package should have no dependencies other than
486
+
487
+ - Python version (>=2.10 due to use of Python match statement)
488
+ - Python standard libraries
489
+
490
+ - Made pytest an optional [test] dependency
491
+ - Added src/ as a top level directory as per
492
+
493
+ - https://packaging.python.org/en/latest/tutorials/packaging-projects/
494
+ - could not do the same for tests/ if end users are to have access
495
+
496
+ PyPI 0.2.1.0 - 2023-09-03
497
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
498
+
499
+ First Version uploaded to PyPI: ``https://pypi.org/project/grscheller.datastructures/``
500
+
501
+ - Install from PyPI
502
+
503
+ - ``$ pip install grscheller.datastructures==0.2.1.0``
504
+
505
+ - Install from GitHub
506
+
507
+ - ``$ pip install git+https://github.com/grscheller/datastructures@v0.2.1.0``
508
+
509
+ - Made pytest a dependency
510
+
511
+ - useful & less confusing to developers and end users
512
+
513
+ - good for systems I have not tested on
514
+ - prevents another pytest from being picked up from shell $PATH
515
+
516
+ - using a different python version
517
+ - giving "package not found" errors
518
+
519
+ - for CI/CD pipelines requiring unit testing
520
+
521
+ Version 0.2.0.2 - 2023-08-29 (GitHub only release)
522
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
523
+
524
+ First version of grscheller.datastructures installed from GitHub with pip
525
+ ``$ pip install git+https://github.com/grscheller/datastructures@v0.2.0.2``
526
+
527
+ Version 0.2.0.0 - 2023-08-29 (Devel environment only)
528
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
529
+
530
+ - BREAKING API CHANGE!!!
531
+ - Dqueue pushL & pushR methods now return references to self
532
+
533
+ - These methods used to return the data being pushed
534
+ - Now able to "." chain push methods together
535
+
536
+ - Updated tests - before making API changes
537
+ - Preparing first version to be "released" on GitHub
538
+
539
+ Version 0.1.1.0 - 2023-08-27 (Devel environment only)
540
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
541
+
542
+ - grscheller.datastructures moved to its own GitHub repo
543
+ - https://github.com/grscheller/datastructures
544
+
545
+ - GitHub and PyPI user names just a happy coincidence
546
+
547
+ Version 0.1.0.0 - 2023-08-27 (Devel environment only)
548
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
549
+
550
+ Initial version.
551
+
552
+ - Package implementing data structures which do not throw exceptions
553
+ - Did not push to PyPI until version 0.2.1.0
554
+ - Initial Python grscheller.datastructures for 0.1.0.0 commit:
555
+
556
+ - dqueue - implements a double sided queue class Dqueue
557
+ - stack - implements a LIFO stack class Stack