pythonic-fp.containers 2.0.0__tar.gz → 3.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 (26) hide show
  1. pythonic_fp_containers-3.0.0/.gitignore +6 -0
  2. pythonic_fp_containers-3.0.0/CHANGELOG.rst +671 -0
  3. pythonic_fp_containers-3.0.0/PKG-INFO +63 -0
  4. pythonic_fp_containers-3.0.0/README.rst +34 -0
  5. {pythonic_fp_containers-2.0.0 → pythonic_fp_containers-3.0.0}/pyproject.toml +33 -26
  6. pythonic_fp_containers-3.0.0/src/pythonic_fp/containers/__init__.py +35 -0
  7. {pythonic_fp_containers-2.0.0 → pythonic_fp_containers-3.0.0}/src/pythonic_fp/containers/functional_tuple.py +51 -56
  8. {pythonic_fp_containers-2.0.0 → pythonic_fp_containers-3.0.0}/src/pythonic_fp/containers/immutable_list.py +50 -54
  9. pythonic_fp_containers-3.0.0/src/pythonic_fp/containers/queues/__init__.py +31 -0
  10. pythonic_fp_containers-3.0.0/src/pythonic_fp/containers/queues/de.py +180 -0
  11. pythonic_fp_containers-3.0.0/src/pythonic_fp/containers/queues/fifo.py +145 -0
  12. pythonic_fp_containers-3.0.0/src/pythonic_fp/containers/queues/lifo.py +136 -0
  13. pythonic_fp_containers-3.0.0/src/pythonic_fp/containers/queues/py.typed +0 -0
  14. pythonic_fp_containers-3.0.0/tests/queues/test_queues.py +558 -0
  15. pythonic_fp_containers-3.0.0/tests/test_functional_tuple.py +174 -0
  16. pythonic_fp_containers-3.0.0/tests/test_immutable_list.py +154 -0
  17. pythonic_fp_containers-3.0.0/tests/test_immutable_list_fp.py +105 -0
  18. pythonic_fp_containers-2.0.0/.github/workflows/static.yml +0 -43
  19. pythonic_fp_containers-2.0.0/PKG-INFO +0 -50
  20. pythonic_fp_containers-2.0.0/README.md +0 -26
  21. pythonic_fp_containers-2.0.0/src/pythonic_fp/containers/__init__.py +0 -19
  22. pythonic_fp_containers-2.0.0/src/pythonic_fp/containers/box.py +0 -159
  23. pythonic_fp_containers-2.0.0/src/pythonic_fp/containers/maybe.py +0 -226
  24. pythonic_fp_containers-2.0.0/src/pythonic_fp/containers/xor.py +0 -314
  25. {pythonic_fp_containers-2.0.0 → pythonic_fp_containers-3.0.0}/LICENSE +0 -0
  26. {pythonic_fp_containers-2.0.0 → pythonic_fp_containers-3.0.0}/src/pythonic_fp/containers/py.typed +0 -0
@@ -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,671 @@
1
+ CHANGELOG
2
+ =========
3
+
4
+ PyPI pythonic-fp.containers 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
+ 3.0.0 - TBD
21
+ ~~~~~~~~~~~
22
+
23
+ Coordinated entire project pythonic-fp PyPI deployment.
24
+
25
+ - moved maybe.py and xor.py to fptools, renamed xor.py -> either.py.
26
+ - duplicated pythonic_fp.queues -> pythonic_fp.containers.queues
27
+
28
+ - deprecating pythonic-fp.queues
29
+
30
+ 2.0.0 - 2025-07-06
31
+ ~~~~~~~~~~~~~~~~~~
32
+
33
+ First PyPI release as pythonic-fp.containers
34
+
35
+ - switched from pdoc to Sphinx for docstring documentation generation.
36
+
37
+ 1.0.0 - 2025-05-22
38
+ ~~~~~~~~~~~~~~~~~~
39
+
40
+ First PyPI release as dtools.containers
41
+
42
+ - box.py -> stateful (mutable) container that can contain 0 ot 1 items
43
+ - functional_tuple.py -> easier starting point to inherit from tuple
44
+ - immutable_list.py -> immutable, guaranteed hashable "list"
45
+ - maybe.py -> implements the "maybe" monad from FP
46
+ - xor.py -> implements a left biased either monad from FP
47
+
48
+ 0.27.1 - 2025-04-22
49
+ ~~~~~~~~~~~~~~~~~~~
50
+
51
+ - replaced camelCaseNames method names with snake_case_names
52
+ - docstring changes
53
+ - pyproject.toml standardization
54
+
55
+ 0.27.0 - 2025-04-07
56
+ ~~~~~~~~~~~~~~~~~~~
57
+
58
+ - first PyPI release as dtools.tuples
59
+
60
+ - split dtools.datastructures into
61
+
62
+ - dtools.tuples
63
+ - dtools.queues
64
+
65
+ - typing improvements
66
+
67
+ 0.25.1 - 2025-01-16
68
+ ~~~~~~~~~~~~~~~~~~~
69
+
70
+ - Fixed pdoc issues with new typing notation
71
+
72
+ - updated docstrings
73
+ - had to add TypeVars
74
+
75
+ 0.25.0 - 2025-01-17
76
+ ~~~~~~~~~~~~~~~~~~~
77
+
78
+ - First release under dtools.datastructures name
79
+
80
+ 0.24.0 - 2024-11-18
81
+ ~~~~~~~~~~~~~~~~~~~
82
+
83
+ - Changed flatMap to bind thru out project
84
+
85
+ 0.23.1 - 2024-11-18
86
+ ~~~~~~~~~~~~~~~~~~~
87
+
88
+ - Fixed bug with datastructures.tuple module
89
+
90
+ - forgot to import std lib typing.cast into tuples.py
91
+
92
+ - renamed class FTuple -> ftuple
93
+
94
+ - ftuple now takes 0 or 1 iterables, like list and tuple do
95
+
96
+ - created factory function for original constructor use case
97
+
98
+ - ``FT[D](*ds: D) -> ftuple[D]``
99
+
100
+ 0.22.1 - 2024-10-20
101
+ ~~~~~~~~~~~~~~~~~~~
102
+
103
+ Removed docs from repo. Documentation for all grscheller namespace
104
+ projects is now maintained
105
+ here: https://grscheller.github.io/grscheller-pypi-namespace-docs/
106
+
107
+ 0.22.0 - 2024-10-18
108
+ ~~~~~~~~~~~~~~~~~~~
109
+
110
+ - made classes in nodes module less passive with better encapsulation
111
+ - compatible with:
112
+
113
+ - grscheller.fp >= 1.0.0 < 1.0.1
114
+ - grscheller.circular-array >= 3.6.1 < 3.7
115
+
116
+ 0.21.0 - 2024-08-20
117
+ ~~~~~~~~~~~~~~~~~~~
118
+
119
+ Got back to a state maintainer is happy with. Many dependencies needed
120
+ updating first.
121
+
122
+ - works with all the current versions of fp and circular-array
123
+ - preparing for PyPI 0.21.0 release
124
+
125
+ 0.20.5.0 - 2024-08-17
126
+ ~~~~~~~~~~~~~~~~~~~~~
127
+
128
+ Development environment only. Datastructures coming back together
129
+
130
+ - updated to use grscheller.fp.nada instead of grscheller.untyped.nothing
131
+
132
+ - made debugging tons easier
133
+
134
+ - updated to use all latest PyPI versions of dependencies
135
+ - three failed tests involving class SplitEnd
136
+ - putting off PyPI v1.0.0 release indefinitely
137
+
138
+ - all dependencies need to be at v1.0+
139
+ - need to work out SplitEnd bugs
140
+ - still need to finalize design (need to use it!)
141
+ - need to find good SplitEnd use case
142
+ - other Stack variants like SplintEnd??? (shared data/node variants?)
143
+
144
+ 0.20.2.0 - 2024-08-03
145
+ ~~~~~~~~~~~~~~~~~~~~~
146
+
147
+ Development environment only.
148
+ Still preparing for 1.0.0 datastructures release.
149
+
150
+ - Going down a typing rabbit hole
151
+
152
+ - as I tighten up typing, I find I must do so for dependencies too
153
+ - using `# type: ignore` is a band-aid, use `@overload` and `cast` instead
154
+ - using `@overload` to "untype" optional parameters is the way to go
155
+ - use `cast` only when you have knowledge beyond what the typechecker can know
156
+
157
+ 0.19.0 - 2024-07-15
158
+ ~~~~~~~~~~~~~~~~~~~
159
+
160
+ - continuing to prepare for PyPI release 1.0.0
161
+ - cleaned up docstrings for a 1.0.0 release
162
+ - changed accumulate1 to accumulate for FTuple
163
+ - considering requiring grscheller.fp as a dependency
164
+
165
+ 0.18.0.0 - Beginning to prepare for PyPI release 1.0.0
166
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
167
+
168
+ Devel environment only.
169
+
170
+ - first devel version requiring circular-array 3.1.0
171
+ - still some design work to be done
172
+ - TODO: Verify flatMap family yields results in "natural" order
173
+
174
+ 0.17.0.4 - Start of effort to relax None restrictions
175
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
176
+
177
+ Devel environment only.
178
+
179
+ - have begun relaxing the requirement of not storing None as a value
180
+
181
+ - completed for queues.py
182
+
183
+ - requires grscheller.circular-array >= 3.0.3.0
184
+ - perhaps next PyPI release will be v1.0.0 ???
185
+
186
+ 0.16.0.0 - Preparing to support PEP 695 generics
187
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
188
+
189
+ Devel environment only.
190
+
191
+ - Requires Python >= 3.12
192
+ - preparing to support PEP 695 generics
193
+
194
+ - will require Python 3.12
195
+ - will not have to import typing for Python 3.12 and beyond
196
+ - BUT... mypy does not support PEP 695 generics yet (Pyright does)
197
+
198
+ - bumped minimum Python version to >= 3.12 in pyproject.toml
199
+ - map methods mutating objects don't play nice with typing
200
+
201
+ - map methods now return copies
202
+ - THEREFORE: tests need to be completely overhauled
203
+
204
+ 0.14.1.1 - Preparing to add TypeVars
205
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
206
+
207
+ Devel environment only.
208
+
209
+ - tests working with grscheller.circular-array >= 3.0.0, \<3.2
210
+
211
+ - lots of mypy complaints
212
+ - first version using TypeVars will be 0.15.0.0
213
+
214
+ 0.14.0 - 2024-03-09
215
+ ~~~~~~~~~~~~~~~~~~~
216
+
217
+ - updated dependency on CircularArray class
218
+
219
+ - dependencies = ["grscheller.circular-array >= 0.2.0, < 2.1"]
220
+
221
+ - minor README.md wordsmithing
222
+ - keeping project an Alpha release for now
223
+
224
+ 0.13.3.1 - Preparing for another PyPI release soon
225
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
226
+
227
+ Devel environment only.
228
+
229
+ - overhauled docstrings with Markdown markup
230
+ - updated pyproject.py to drop project back to an Alpha release
231
+
232
+ - allows more renaming flexibility
233
+ - intending to develop more graph based data structures
234
+
235
+ - renamed class core.nodes.Tree_Node to core.node.BT_Node
236
+
237
+ - BT for Binary Tree (data in each node of tree)
238
+
239
+ - created class core.nodes.LT_Node
240
+
241
+ - LT for Leaf Tree (data are the leaves of the tree)
242
+
243
+ - removed deprecated reduce method from various classes
244
+
245
+ - use foldL instead
246
+
247
+ 0.13.2 - 2024-02-20
248
+ ~~~~~~~~~~~~~~~~~~~
249
+
250
+ Forgot to update pyproject.toml dependencies.
251
+
252
+ - ``dependencies = ["grscheller.circular-array >= 0.1.1, < 1.1"]``
253
+
254
+ 0.13.1 - 2024-01-31
255
+ ~~~~~~~~~~~~~~~~~~~
256
+
257
+ - FTuple now supports both slicing and indexing
258
+
259
+ - more tests for FTuple
260
+
261
+ - slicing and indexing
262
+ - ``map``, ``foldL``, ``accumulate`` methods
263
+ - ``flatMap``, ``mergeMap``, ``exhaustMap`` methods
264
+
265
+ - forgot to update CHANGELOG for v0.13.0 release
266
+
267
+ 0.13.0 - 2024-01-30
268
+ ~~~~~~~~~~~~~~~~~~~
269
+
270
+ - BREAKING API CHANGE - CircularArray class removed
271
+ - CircularArray moved to its own PyPI & GitHub repos
272
+
273
+ - https://pypi.org/project/grscheller.circular-array/
274
+ - https://github.com/grscheller/circular-array
275
+
276
+ - Fix various out-of-date docstrings
277
+
278
+ 0.12.3 - 2024-01-20
279
+ ~~~~~~~~~~~~~~~~~~~
280
+
281
+ - cutting next PyPI release from development (main)
282
+
283
+ - if experiment works, will drop release branch
284
+ - will not include ``docs/``
285
+ - will not include ``.gitignore`` and ``.github/``
286
+ - will include ``tests/``
287
+ - made pytest >= 7.4 an optional test dependency
288
+
289
+ 0.12.2 - 2024-01-17
290
+ ~~~~~~~~~~~~~~~~~~~
291
+
292
+ - fixed Stack reverse() method
293
+
294
+ - should have caught this when I fixed FStack on last PyPI release
295
+ - more Stack tests
296
+
297
+ 0.12.1 - 2024-01-15
298
+ ~~~~~~~~~~~~~~~~~~~
299
+
300
+ - BUG FIX: FStack reverse() method
301
+ - added more tests
302
+
303
+ 0.12.0 - PyPI Release date 2024-01-14
304
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
305
+
306
+ - Considerable future-proofing for first real Beta release
307
+
308
+ 0.11.3.4 - Finally decided to make next PyPI release Beta
309
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
310
+
311
+ Devel environment only.
312
+
313
+ - Package structure mature and not subject to change beyond additions
314
+ - Will endeavor to keep top level & core module names the same
315
+ - API changes will be deprecated before removed
316
+
317
+ 0.11.0 - 2023-12-20
318
+ ~~~~~~~~~~~~~~~~~~~
319
+
320
+ - A lot of work done on class CLArray
321
+
322
+ - probably will change its name before the next PyPI Release
323
+ - perhaps to "ProcessArray" or "PArray"
324
+
325
+ - Keeping this release an Alpha version
326
+
327
+ - mostly for the freedom to rename and restructure the package
328
+
329
+ 0.10.17.0+ (0.11.0-RC2) - 2023-12-17
330
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
331
+
332
+ Devel environment only.
333
+
334
+ - Second release candidate - probably will become next PyPI release
335
+
336
+ - main now development branch, release will be release branch
337
+ - decided to drop it back to Alpha
338
+
339
+ - making datastructures a Beta release was premature
340
+ - classifier "Development Status :: 3 - Alpha"
341
+
342
+ - will cut next PyPI release with Flit from release branch
343
+ - will need to regenerate docs on release & move to main
344
+ - things to add in main before next release
345
+
346
+ - will not make ``Maybe`` or ``Nothing`` a singleton
347
+ - last touched ``CLArray`` refactor
348
+ - improve ``CLArray`` test coverage
349
+
350
+ - Things for future PYPI releases
351
+
352
+ - inherit ``FTuple`` from ``Tuple`` (use ``__new__``) for performance boost
353
+ - hold off using ``__slots__`` until I understand them better
354
+
355
+ 0.10.14.2 (0.11.0-RC1) - 2023-12-11
356
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
357
+
358
+ Devel environment only.
359
+
360
+ - First release candidate - unlikely this will be the next PyPI release
361
+
362
+ - will cut next PyPI release with Flit from main branch
363
+ - removed docs directory before merge (docs/ will be main only)
364
+ - things to add in main before next release
365
+
366
+ - make Maybe Nothing a singleton (use ``__new__``)
367
+ - derive FTuple from Tuple (use ``__new__``) for performance boost
368
+ - simplify CLArray to use a Queue instead of CircularArray & iterator
369
+ - start using ``__slots__`` for performance boost to data structures
370
+
371
+ - efficiency trumps extensibility
372
+ - prevents client code adding arbitrary attributes & methods
373
+ - smaller size & quicker method/attribute lookups
374
+ - big difference when dealing with huge number of data structures
375
+
376
+ 0.10.14.0 - 2023-12-09
377
+ ~~~~~~~~~~~~~~~~~~~~~~
378
+
379
+ Devel environment only.
380
+
381
+ - Finished massive renaming & repackaging effort
382
+
383
+ - to help with future growth in future
384
+ - name choices more self-documenting
385
+ - top level modules
386
+
387
+ - array
388
+
389
+ - ``CLArray``
390
+
391
+ - queue
392
+
393
+ - ``FIFOQueue`` (formerly ``SQueue``)
394
+ - ``LIFOQueue`` (LIFO version of above)
395
+ - ``DoubleQueue`` (formerly ``DQueue``)
396
+
397
+ - stack
398
+
399
+ - ``Stack`` (formerly ``PStack``)
400
+ - ``FStack``
401
+
402
+ - tuple-like
403
+
404
+ - ``FTuple``
405
+
406
+ 0.10.11.0 - 2023-11-27
407
+ ~~~~~~~~~~~~~~~~~~~~~~
408
+
409
+ Devel environment only.
410
+
411
+ - Created new datastructures class ``CLArray``
412
+
413
+ - more imperative version of ``FCLArray``
414
+
415
+ - has an iterator to swap None values instead of a default value
416
+
417
+ - when iterator is exhausted, will swap in ``()`` for ``None``
418
+
419
+ - no ``flatMap`` type methods
420
+ - ``map`` method mutates ``self``
421
+ - can be resized
422
+ - returns false when ``CLArray`` contains no non-``()`` elements
423
+
424
+ - TODO: does not yet handle StopIteration events properly
425
+
426
+ - made package more overall "atomic"
427
+
428
+ 0.10.10.0 - 2023-11-26
429
+ ~~~~~~~~~~~~~~~~~~~~~~
430
+
431
+ Devel environment only.
432
+
433
+ - More or less finalized ``FCLArray`` API
434
+
435
+ - finished overriding default ``flatMap``, ``mergeMap`` & ``exhaustMap`` from FP
436
+ - need ``mergeMap`` & ``exhaustMap`` versions of unit tests
437
+ - found this data structure very interesting
438
+
439
+ - hopefully find a use for it
440
+
441
+ - considering a simpler ``CLArray`` version
442
+
443
+ 0.10.8.0 - 2023-11-18
444
+ ~~~~~~~~~~~~~~~~~~~~~
445
+
446
+ Devel environment only.
447
+
448
+ - Bumping requires-python = ">=3.11" in pyproject.toml
449
+
450
+ - Currently developing & testing on Python 3.11.5
451
+ - 0.10.7.X will be used on the GitHub pypy3 branch
452
+
453
+ - Pypy3 (7.3.13) using Python (3.10.13)
454
+ - tests pass but are 4X slower
455
+ - LSP almost useless due to more primitive typing module
456
+
457
+ 0.10.7.0 - 2023-11-18
458
+ ~~~~~~~~~~~~~~~~~~~~~
459
+
460
+ Devel environment only.
461
+
462
+ - Overhauled ``__repr__`` & ``__str__`` methods for all classes
463
+
464
+ - tests that ``ds == eval(repr(ds))`` for all data structures ``ds`` in package
465
+
466
+ - CLArray API is in a state of flux
467
+
468
+ - no longer stores ``None`` as a value
469
+ - ``__add__`` concatenates, no longer component adds
470
+ - maybe allow zero length ``CLArrays``?
471
+
472
+ - would make it a monoid and not just a semigroup
473
+ - make an immutable version too?
474
+
475
+ - Updated markdown overview documentation
476
+
477
+ 0.10.1.0 - 2023-11-11
478
+ ~~~~~~~~~~~~~~~~~~~~~
479
+
480
+ Devel environment only.
481
+
482
+ - Removed ``flatMap`` methods from stateful objects
483
+
484
+ - ``FLArray``, ``DQueue``, ``SQueue``, ``PStack``
485
+ - kept the ``map`` method for each
486
+
487
+ - some restructuring so package will scale better in the future
488
+
489
+ 0.9.1 - 2023-11-09
490
+ ~~~~~~~~~~~~~~~~~~
491
+
492
+ - First Beta release of grscheller.datastructures on PyPI
493
+ - Infrastructure stable
494
+ - Existing datastructures only should need API additions
495
+ - Type annotations working extremely well
496
+ - Using Pdoc3 to generate documentation on GitHub
497
+
498
+ - see https://grscheller.github.io/datastructures/
499
+
500
+ - All iterators conform to Python language "iterator protocol"
501
+ - Improved docstrings
502
+ - Future directions:
503
+
504
+ - Develop some "typed" containers
505
+ - Add sequence & transverse methods to functional subpackage classes
506
+ - Monad transformers???
507
+ - Need to use this package in other projects to gain insight
508
+
509
+ 0.8.4.0 - 2023-11-03
510
+ ~~~~~~~~~~~~~~~~~~~~
511
+
512
+ Devel environment only.
513
+
514
+ - new data structure ``FTuple`` added
515
+
516
+ - wrapped tuple with a FP interface
517
+ - initial minimal viable product
518
+
519
+ 0.8.3.0 - 2023-11-02
520
+ ~~~~~~~~~~~~~~~~~~~~
521
+
522
+ Devel environment only.
523
+
524
+ - major API breaking change
525
+
526
+ - now two versions of ``Stack`` class
527
+
528
+ - ``PStack`` (stateful) with ``push``, ``pop``, ``peak`` methods
529
+ - ``FStack`` (immutable) with ``cons``, ``tail``, ``head`` methods
530
+
531
+ - ``FLarray`` renamed ``FLArray``
532
+
533
+ - tests now work
534
+
535
+ 0.8.0.0 - 2023-10-28
536
+ ~~~~~~~~~~~~~~~~~~~~
537
+
538
+ Devel environment only.
539
+
540
+ - API breaking changes
541
+
542
+ - did not find everything returning self upon mutation
543
+
544
+ - Efforts for future directions
545
+
546
+ - decided to use pdoc3 over sphinx to generate API documentation
547
+ - need to resolve tension of package being Pythonic and Functional
548
+
549
+ 0.7.5.0 - 2023-10-26
550
+ ~~~~~~~~~~~~~~~~~~~~
551
+
552
+ - moved pytest test suite to root of the repo
553
+
554
+ - src/grscheller/datastructures/tests -> tests/
555
+ - seems to be the canonical location of a test suite
556
+
557
+ - instructions to run test suite in ``tests/__init__.py``
558
+
559
+ 0.7.4.0 - 2023-10-25
560
+ ~~~~~~~~~~~~~~~~~~~~
561
+
562
+ Devel environment only.
563
+
564
+ - More mature
565
+ - More Pythonic
566
+ - Major API changes
567
+ - Still tagging it an Alpha release
568
+
569
+ 0.7.0.0 - 2023-10-16
570
+ ~~~~~~~~~~~~~~~~~~~~
571
+
572
+ Devel environment only.
573
+
574
+ - updated README.md
575
+
576
+ - foreshadowing making a distinction between
577
+
578
+ - objects "sharing" their data -> FP methods return copies
579
+ - objects "contain" their data -> FP methods mutate object
580
+
581
+ 0.6.9.0 - 2023-10-09
582
+ ~~~~~~~~~~~~~~~~~~~~
583
+
584
+ Devel environment only.
585
+
586
+ - renamed core module to iterlib module
587
+
588
+ - library just contained functions for manipulating iterators
589
+ - TODO: use ``mergeIters`` as a guide for an iterator "zip" function
590
+
591
+ - class Stack better in alignment with:
592
+
593
+ - Python lists
594
+
595
+ - more natural for ``Stack`` to iterate backwards starting from head
596
+ - removed Stack's ``__getitem__`` method
597
+ - both pop and push/append from end
598
+
599
+ 0.2.2.2 - 2023-09-04
600
+ ~~~~~~~~~~~~~~~~~~~~
601
+
602
+ PyPI release.
603
+
604
+ - decided base package should have no dependencies other than
605
+
606
+ - Python version (>=2.10 due to use of Python match statement)
607
+ - Python standard libraries
608
+
609
+ - made pytest an optional [test] dependency
610
+ - added src/ as a top level directory as per
611
+
612
+ - https://packaging.python.org/en/latest/tutorials/packaging-projects/
613
+ - could not do the same for tests/ if end users are to have access
614
+
615
+ 0.2.1.0 - 2023-09-03
616
+ ~~~~~~~~~~~~~~~~~~~~
617
+
618
+ PyPI release.
619
+
620
+ - first Version uploaded to PyPI
621
+ - https://pypi.org/project/grscheller.datastructures/
622
+ - Install from PyPI
623
+
624
+ - ``$ pip install grscheller.datastructures==0.2.1.0``
625
+ - ``$ pip install grscheller.datastructures # for top level version``
626
+
627
+ - Install from GitHub
628
+
629
+ - ``$ pip install git+https://github.com/grscheller/datastructures@v0.2.1.0``
630
+
631
+ - pytest made a dependency
632
+
633
+ - useful & less confusing to developers and end users
634
+
635
+ - good for systems I have not tested on
636
+ - prevents another pytest from being picked up from shell ``$PATH``
637
+
638
+ - using a different python version
639
+ - giving "package not found" errors
640
+
641
+ - for CI/CD pipelines requiring unit testing
642
+
643
+ 0.2.0.2 - 2023-08-29
644
+ ~~~~~~~~~~~~~~~~~~~~
645
+
646
+ GitHub only release date.
647
+
648
+ - First version able to be installed from GitHub with pip
649
+ - ``$ pip install git+https://github.com/grscheller/datastructures@v0.2.0.2``
650
+
651
+ 0.1.1.0 - 2023-08-27
652
+ ~~~~~~~~~~~~~~~~~~~~
653
+
654
+ Devel environment only.
655
+
656
+ - grscheller.datastructures moved to its own GitHub repo
657
+ - https://github.com/grscheller/datastructures
658
+
659
+ - GitHub and PyPI user names just a happy coincidence
660
+
661
+ 0.1.0.0 - 2023-08-27
662
+ ~~~~~~~~~~~~~~~~~~~~
663
+
664
+ Initial version, devel environment only.
665
+
666
+ - Package implementing data structures which do not throw exceptions
667
+ - Did not push to PyPI until version 0.2.1.0
668
+ - Initial Python grscheller.datastructures for 0.1.0.0 commit:
669
+
670
+ - ``dqueue`` implements a double sided queue ``class Dqueue``
671
+ - ``stack`` implements a LIFO stack ``class Stack``