dtools.datastructures 0.25.1__tar.gz → 0.25.2__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. dtools_datastructures-0.25.2/CHANGELOG.md +613 -0
  2. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/PKG-INFO +26 -20
  3. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/README.md +21 -16
  4. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/pyproject.toml +8 -6
  5. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/src/dtools/datastructures/__init__.py +9 -9
  6. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/src/dtools/datastructures/nodes.py +31 -23
  7. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/src/dtools/datastructures/queues.py +33 -29
  8. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/src/dtools/datastructures/splitends/__init__.py +3 -3
  9. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/src/dtools/datastructures/splitends/se.py +26 -23
  10. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/src/dtools/datastructures/tuples.py +41 -30
  11. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/tests/grscheller/datastructures/test_ftuple.py +2 -2
  12. dtools_datastructures-0.25.1/CHANGELOG.md +0 -616
  13. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/LICENSE +0 -0
  14. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/pytest.ini +0 -0
  15. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/src/dtools/datastructures/py.typed +0 -0
  16. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/src/dtools/datastructures/splitends/py.typed +0 -0
  17. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/tests/grscheller/datastructures/splitends/test_se.py +0 -0
  18. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/tests/grscheller/datastructures/test_functional.py +0 -0
  19. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/tests/grscheller/datastructures/test_node.py +0 -0
  20. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/tests/grscheller/datastructures/test_queue.py +0 -0
  21. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/tests/grscheller/datastructures/test_repr.py +0 -0
  22. {dtools_datastructures-0.25.1 → dtools_datastructures-0.25.2}/tests/grscheller/datastructures/test_str.py +0 -0
@@ -0,0 +1,613 @@
1
+ # CHANGELOG
2
+
3
+ PyPI grscheller.datastructures project.
4
+
5
+ - first digit - major event, epoch, or paradigm shift
6
+ - second digit - breaking API changes, major changes
7
+ - third digit - bug fixes, API additions, breaking API in dev env
8
+ - forth digit - commit count changes/regressions (dev environment only)
9
+
10
+ ## Releases and other important milestones
11
+
12
+ ### Version 0.25.1 - PyPI release date 2025-01-16
13
+
14
+ - Fixed pdoc issues with new typing notation
15
+ - updated docstrings
16
+ - had to add TypeVars
17
+
18
+ ### Version 0.25.0 - PyPI release date 2025-01-17
19
+
20
+ - First release under dtools.datastructures name
21
+
22
+ ### Version 0.24.0 - PyPI release date 2024-11-18
23
+
24
+ - Changed flatMap to bind thru out project
25
+
26
+ ### Version 0.23.1 - PyPI release date 2024-11-18
27
+
28
+ - Fixed bug with datastructures.tuple module
29
+ - forgot to import std lib typing.cast into tuples.py
30
+
31
+ ### Version 0.23.0 - PyPI release date 2024-11-18
32
+
33
+ - publishing previous change and grscheller consistency changes
34
+ - suspect SplitEnd class needs more work, not just clean up
35
+ - not prepared to wrap my brain around it right now
36
+ - don't want to delay PyPI releases for other repos
37
+ - once splitends under control, will consider a 1.0.0 release
38
+
39
+ ### Version 0.22.3.0 - Preparing for a 0.23.0 PyPI release
40
+
41
+ - renamed class FTuple -> ftuple
42
+ - ftuple now takes 0 or 1 iterables, like list and tuple do
43
+ - created factory function for original constructor use case
44
+ - FT\[D\](\*ds: D) -> ftuple[D]
45
+
46
+ ### Version 0.22.1 - PyPI release date 2024-10-20
47
+
48
+ - removed docs from repo
49
+ - docs for all grscheller namespace projects maintained
50
+ [here](https://grscheller.github.io/grscheller-pypi-namespace-docs/).
51
+
52
+ ### Version 0.22.0 - PyPI release date 2024-10-18
53
+
54
+ - Major refactoring of SplitEnd class
55
+ - splitends is now a subpackage containing the se module
56
+ - removed supporting classes
57
+ - can now be empty
58
+ - grscheller.datastructures no longer uses nada as a sentinel value
59
+ - replaced with grscheller.fp.nothingness.noValue
60
+ - made classes in nodes module less passive with better encapsulation
61
+ - compatible with:
62
+ - grscheller.fp >= 1.0.0 < 1.01
63
+ - grscheller.circular-array >= 3.6.1 < 3.7
64
+
65
+ ### Version 0.21.1.1 - BROKEN as of 2024-10-03
66
+
67
+ - Does not work with either
68
+ - grscheller.fp 0.3.3 (version working for 0.21.0 release)
69
+ - grscheller.fp 0.4.0 (latest version of fp)
70
+ - Needs an upgrade
71
+ - TODO: replace Nada with MB as was done for grscheller.fp.iterables
72
+
73
+ ### Version 0.21.1.0 - mostly docstring updates 2024-09-17
74
+
75
+ - renamed module `split_ends` -> `stacks`
76
+
77
+ ### Version 0.21.0 - PyPI release date 2024-08-20
78
+
79
+ - got back to a state maintainer is happy with
80
+ - many dependencies needed updating first
81
+
82
+ ### Version 0.20.5.1 - datastructures coming back together 2024-08-19
83
+
84
+ - works with all the current versions of fp and circular-array
85
+ - preparing for PyPI 0.21.0 release
86
+
87
+ ### Version 0.20.5.0 - datastructures coming back together 2024-08-17
88
+
89
+ - updated to use grscheller.fp.nada instead of grscheller.untyped.nothing
90
+ - made debugging tons easier
91
+ - updated to use all latest PyPI versions of dependencies
92
+ - three failed tests involving class SplitEnd
93
+ - putting off PyPI v1.0.0 release indefinitely
94
+ - all dependencies need to be at v1.0+
95
+ - need to work out SplitEnd bugs
96
+ - still need to finalize design (need to use it!)
97
+ - need to find good SplitEnd use case
98
+ - other Stack variants like SplintEnd??? (shared data/node variants?)
99
+
100
+ ### Version 0.20.2.0 - Going down a typing rabbit hole 2024-08-03
101
+
102
+ - updated to use grscheller.circular-array version 3.3.0 (3.2.3.0)
103
+ - updated to use grscheller.fp version 0.3.0 (0.2.3.0)
104
+ - removed grscheller.circular-array dependency from datastructures.SplitEnd
105
+ - still preparing for the 1.0.0 datastructures release
106
+ - as I tighten up typing, I find I must do so for dependencies too
107
+ - using `# type: ignore` is a band-aid, use `@overload` and `cast` instead
108
+ - using `@overload` to "untype" optional parameters is the way to go
109
+ - use `cast` only when you have knowledge beyond what the typechecker can know
110
+
111
+ ### Version 0.19.0 - PyPI release date 2024-07-15
112
+
113
+ - continuing to prepare for PyPI release 1.0.0
114
+ - cleaned up docstrings for a 1.0.0 release
115
+ - changed accumulate1 to accumulate for FTuple
116
+ - considering requiring grscheller.fp as a dependency
117
+
118
+ ### Version 0.18.0.0 - Beginning to prepare for PyPI release 1.0.0
119
+
120
+ - first devel version requiring circular-array 3.1.0
121
+ - still some design work to be done
122
+ - gave Class SplitEnd fold and fold1 methods
123
+ - TODO: Verify flatMap family yields results in "natural" order
124
+
125
+ ### Version 0.17.0.4 - Start of effort to relax None restrictions
126
+
127
+ - have begun relaxing the requirement of not storing None as a value
128
+ - completed for queues.py
129
+ - requires grscheller.circular-array >= 3.0.3.0
130
+ - perhaps next PyPI release will be v1.0.0 ???
131
+
132
+ ### Version 0.16.0.0 - Preparing to support PEP 695 generics
133
+
134
+ - Requires Python >= 3.12
135
+ - preparing to support PEP 695 generics
136
+ - will require Python 3.12
137
+ - will not have to import typing for Python 3.12 and beyond
138
+ - BUT... mypy does not support PEP 695 generics yet (Pyright does)
139
+ - bumped minimum Python version to >= 3.12 in pyproject.toml
140
+ - map methods mutating objects don't play nice with typing
141
+ - map methods now return copies
142
+ - THEREFORE: tests need to be completely overhauled
143
+
144
+ ### Version 0.14.1.1 - Preparing to add TypeVars
145
+
146
+ - tests working with grscheller.circular-array >= 3.0.0, \<3.2
147
+ - lots of mypy complaints
148
+ - first version using TypeVars will be 0.15.0.0
149
+
150
+ ### Version 0.14.0 - PyPI release date 2024-03-09
151
+
152
+ - updated dependency on CircularArray class
153
+ - dependencies = ["grscheller.circular-array >= 0.2.0, < 2.1"]
154
+ - minor README.md woodsmithing
155
+ - keeping project an Alpha release for now
156
+
157
+ ### Version 0.13.3.1 - Preparing for another PyPI release soon
158
+
159
+ - overhauled docstrings with Markdown markup
160
+ - updated pyproject.py to drop project back to an Alpha release
161
+ - allows more renaming flexibility
162
+ - intending to develop more graph based data structures
163
+ - renamed class core.nodes.Tree_Node to core.node.BT_Node
164
+ - BT for Binary Tree (data in each node of tree)
165
+ - created class core.nodes.LT_Node
166
+ - LT for Leaf Tree (data are the leaves of the tree)
167
+ - removed deprecated reduce method from various classes
168
+ - use foldL instead
169
+
170
+ ### Version 0.13.2 - PyPI release date 2024-02-20
171
+
172
+ - Forgot to update pyproject.toml dependencies
173
+ - dependencies = ["grscheller.circular-array >= 0.1.1, < 1.1"]
174
+
175
+ ### Version 0.13.1 - PyPI Release date 2024-01-31
176
+
177
+ - FTuple now supports both slicing and indexing
178
+ - more tests for FTuple
179
+ - slicing and indexing
180
+ - map, foldL, accumulate methods
181
+ - flatMap, mergeMap, exhaustMap methods
182
+ - forgot to update CHANGELOG for v0.13.0 release
183
+
184
+ ### Version 0.13.0 - PyPI Release date 2024-01-30
185
+
186
+ - BREAKING API CHANGE - CircularArray class removed
187
+ - CircularArray moved to its own PyPI & GitHub repos
188
+ - https://pypi.org/project/grscheller.circular-array/
189
+ - https://github.com/grscheller/circular-array
190
+ - Fix various out-of-date docstrings
191
+
192
+ ### Version 0.12.3 - PyPI Release date 2024-01-20
193
+
194
+ - cutting next PyPI release from development (main)
195
+ - if experiment works, will drop release branch
196
+ - will not include `docs/`
197
+ - will not include `.gitignore` and `.github/`
198
+ - will include `tests/`
199
+ - made pytest >= 7.4 an optional test dependency
200
+
201
+ ### Version 0.12.2 - PyPI Release date 2024-01-17
202
+
203
+ - designing sensible reduce & accumulate overrides for Maybe & Either
204
+ - default implementations were not that useful
205
+ - taking their behavior as bugs and not API changes
206
+ - more tests for accumulate & reduce
207
+ - fixed Stack reverse() method
208
+ - should have caught this when I fixed FStack on last PyPI release
209
+ - more Stack tests
210
+ - many more FP tests
211
+
212
+ ### Version 0.12.1 - PyPI Release date 2024-01-15
213
+
214
+ - BUG FIX: FStack reverse() method
215
+ - added more tests
216
+
217
+ ### Version 0.12.0 - PyPI Release date 2024-01-14
218
+
219
+ - Considerable future-proofing for first real Beta release
220
+
221
+ ### Version 0.11.3.4 - Finally decided to make next PyPI release Beta
222
+
223
+ - Package structure mature and not subject to change beyond additions
224
+ - Will endeavor to keep top level & core module names the same
225
+ - API changes will be deprecated before removed
226
+
227
+ ### Version 0.11.0 - PyPI Release date 2023-12-20
228
+
229
+ - A lot of work done on class CLArray
230
+ - probably will change its name before the next PyPI Release
231
+ - perhaps to "ProcessArray" or "PArray"
232
+ - Keeping this release an Alpha version
233
+ - mostly for the freedom to rename and restructure the package
234
+
235
+ ### Version 0.10.17.0+ (0.11.0-RC2) - 2023-12-17
236
+
237
+ - Second release candidate - probably will become next PyPI release
238
+ - main now development branch, release will be release branch
239
+ - decided to drop it back to Alpha
240
+ - making datastructures a Beta release was premature
241
+ - classifier "Development Status :: 3 - Alpha"
242
+ - will cut next PyPI release with Flit from release branch
243
+ - will need to regenerate docs on release & move to main
244
+ - things to add in main before next release
245
+ - will not make Maybe Nothing a singleton
246
+ - last touched CLArray refactor
247
+ - improve CLArray test coverage
248
+ - Things for future PYPI releases
249
+ - inherit FTuple from Tuple (use __new__) for performance boost
250
+ - hold off using __slots__ until I understand them better
251
+
252
+ ### Version 0.10.14.2 (0.11.0-RC1) - 2023-12-11
253
+
254
+ - First release candidate - unlikely this will be the next PyPI release
255
+ - will cut next PyPI release with Flit from main branch
256
+ - removed docs directory before merge (docs/ will be main only)
257
+ - things to add in main before next release
258
+ - make Maybe Nothing a singleton (use __new__)
259
+ - derive FTuple from Tuple (use __new__) for performance boost
260
+ - simplify CLArray to use a Queue instead of CircularArray & iterator
261
+ - start using __slots__ for performance boost to data structures
262
+ - efficiency trumps extensibility
263
+ - prevents client code adding arbitrary attributes & methods
264
+ - smaller size & quicker method/attribute lookups
265
+ - big difference when dealing with huge number of data structures
266
+
267
+ ### Version 0.10.14.0 - commit date 2023-12-09
268
+
269
+ - Finished massive renaming & repackaging effort
270
+ - to help with future growth in future
271
+ - name choices more self-documenting
272
+ - top level modules
273
+ - array
274
+ - CLArray
275
+ - queue
276
+ - FIFOQueue (formerly SQueue)
277
+ - LIFOQueue (LIFO version of above)
278
+ - DoubleQueue (formerly DQueue)
279
+ - stack
280
+ - Stack (formerly PStack)
281
+ - FStack
282
+ - tuple-like
283
+ - FTuple
284
+
285
+ ### Version 0.10.11.0 - commit date 2023-11-27
286
+
287
+ - Created new datastructures class CLArray
288
+ - more imperative version of FCLArray
289
+ - has an iterator to swap None values instead of a default value
290
+ - when iterator is exhausted, will swap in () for None
291
+ - no flatMap type methods
292
+ - map method mutates self
293
+ - can be resized
294
+ - returns false when CLArray contains no non-() elements
295
+ - TODO: does not yet handle StopIteration events properly
296
+ - made package more overall "atomic"
297
+
298
+ ### Version 0.10.10.0 - commit date 2023-11-26
299
+
300
+ - More or less finalized FCLArray API
301
+ - finished overriding default flatMap, mergeMap & exhaustMap from FP
302
+ - need mergeMap & exhaustMap versions of unit tests
303
+ - found this data structure very interesting
304
+ - hopefully find a use for it
305
+ - considering a simpler CLArray version
306
+
307
+ ### Version 0.10.9 - PyPI release date 2023-11-21
308
+
309
+ ### Version 0.10.8.0 - commit date 2023-11-18
310
+
311
+ - Bumping requires-python = ">=3.11" in pyproject.toml
312
+ - Currently developing & testing on Python 3.11.5
313
+ - 0.10.7.X will be used on the GitHub pypy3 branch
314
+ - Pypy3 (7.3.13) using Python (3.10.13)
315
+ - tests pass but are 4X slower
316
+ - LSP almost useless due to more primitive typing module
317
+
318
+ ### Version 0.10.7.0 - commit date 2023-11-18
319
+
320
+ - Overhauled __repr__ & __str__ methods for all classes
321
+ - tests that ds == eval(repr(ds)) for all data structures ds in package
322
+ - CLArray API is in a state of flux
323
+ - no longer stores None as a value
324
+ - __add__ concatenates, no longer component adds
325
+ - maybe allow zero length CLArrays?
326
+ - would make it a monoid and not just a semigroup
327
+ - make an immutable version too?
328
+ - Updated markdown overview documentation
329
+
330
+ ### Version 0.10.1.0 - commit date 2023-11-11
331
+
332
+ - Removed flatMap methods from stateful objects
333
+ - FLArray, DQueue, SQueue, PStack
334
+ - kept the map method for each
335
+ - some restructuring so package will scale better in the future
336
+
337
+ ### Version 0.9.1 - PyPI release date: 2023-11-09
338
+
339
+ - First Beta release of grscheller.datastructures on PyPI
340
+ - Infrastructure stable
341
+ - Existing datastructures only should need API additions
342
+ - Type annotations working extremely well
343
+ - Using Pdoc3 to generate documentation on GitHub
344
+ - see https://grscheller.github.io/datastructures/
345
+ - All iterators conform to Python language "iterator protocol"
346
+ - Improved docstrings
347
+ - Future directions:
348
+ - Develop some "typed" containers
349
+ - Add sequence & transverse methods to functional subpackage classes
350
+ - Monad transformers???
351
+ - Need to use this package in other projects to gain insight
352
+
353
+ ### Version 0.8.6.0 - PyPI release date: 2023-11-05
354
+
355
+ - Finally got queue.py & stack.py inheritance sorted out
356
+ - LSP with Pyright working quite well
357
+ - Goals for next PyPI release:
358
+ - combine methods
359
+ - tail and tailOr
360
+ - cons and consOr
361
+ - head and headOr
362
+
363
+ ### Version 0.8.4.0 - commit date 2023-11-03
364
+
365
+ - new data structure FTuple added
366
+ - wrapped tuple with a FP interface
367
+ - initial minimal viable product
368
+
369
+ ### Version 0.8.3.0 - commit date 2023-11-02
370
+
371
+ - major API breaking change
372
+ - now two versions of Stack class
373
+ - PStack (stateful) with push, pop, peak methods
374
+ - FStack (immutable) with cons, tail, head methods
375
+ - Dqueue renamed DQueue
376
+ - FLarray renamed FLArray
377
+ - tests now work
378
+
379
+ ### Version 0.8.0.0 - commit date 2023-10-28
380
+
381
+ - API breaking changes
382
+ - did not find everything returning self upon mutation
383
+ - Efforts for future directions
384
+ - decided to use pdoc3 over sphinx to generate API documentation
385
+ - need to resolve tension of package being Pythonic and Functional
386
+
387
+ ### Version 0.7.5.0 - commit date 2023-10-26
388
+
389
+ - moved pytest test suite to root of the repo
390
+ - src/grscheller/datastructures/tests -> tests/
391
+ - seems to be the canonical location of a test suite
392
+ - instructions to run test suite in tests/__init__.py
393
+
394
+ ### Version 0.7.4.0 - PyPI release date: 2023-10-25
395
+
396
+ - More mature
397
+ - More Pythonic
398
+ - Major API changes
399
+ - Still tagging it an Alpha release
400
+
401
+ ### Version 0.7.2.0 - commit date 2023-10-18
402
+
403
+ - Queue & Dqueue no longer return Maybe objects
404
+ - Neither store None as a value
405
+ - Now safe to return None for non-existent values
406
+ - like popping or peaking from an empty queue or dqueue
407
+
408
+ ### Version 0.7.0.0 - commit date 2023-10-16
409
+
410
+ - added Queue data structure representing a FIFO queue
411
+ - renamed two Dqueue methods
412
+ - headR -> peakLastIn
413
+ - headL -> peakNextOut
414
+ - went ahead and removed Stack head method
415
+ - fair since I still labeling releases as alpha releases
416
+ - the API is still a work in progress
417
+ - updated README.md
418
+ - foreshadowing making a distinction between
419
+ - objects "sharing" their data -> FP methods return copies
420
+ - objects "contain" their data -> FP methods mutate object
421
+ - added info on class Queue
422
+
423
+ ### Version 0.6.9.0 - PyPI release date: 2023-10-09
424
+
425
+ - deprecated Stack head() method
426
+ - replaced with peak() method
427
+ - renamed core module to iterlib module
428
+ - library just contained functions for manipulating iterators
429
+ - TODO: use mergeIters as a guide for an iterator "zip" function
430
+ - class Stack better in alignment with:
431
+ - Python lists
432
+ - more natural for Stack to iterate backwards starting from head
433
+ - removed Stack's __getitem__ method
434
+ - both pop and push/append from end
435
+ - Dqueue which wraps a Circle instance
436
+ - also Dqueue does not have a __getitem__ method
437
+ - Circle which implements a circular array with a Python List
438
+ - Stack now implements map, flatMap, mergeMap methods
439
+ - each returns a new Stack instance, with new nodes
440
+
441
+ ### Version 0.6.8.6 - commit date: 2023-10-08
442
+
443
+ - 3 new methods for class Circle and Dqueue
444
+ - mapSelf, flatMapSelf, mergeMapSelf
445
+ - these correspond to map, flatMap, mergeMap
446
+ - except they act on the class objects themselves, not new instances
447
+ - these new methods will NOT be added to the Stack class
448
+ - they would destroy node sharing
449
+ - did add a map method which returns a new instance (with new nodes)
450
+ - TODO: add flatMap and mergeMap methods
451
+ - probably will add them to the Dqueue class too
452
+ - not worth the maintenance effort maintaining two version of Dqueue
453
+ - one returning new instances
454
+ - the other modifying the object in place
455
+
456
+ ### Version 0.6.8.3 - commit date: 2023-10-06
457
+
458
+ - Stack now works with Python Reversed builtin function
459
+ - using a __reversed__ method which is O(n)
460
+ - never figured out why reversed() failed with __getitems__ & __len__
461
+ - this would have been O(n^2) anyway
462
+ - Stack no longer implements the __getitems__ method
463
+ - class Carray renamed to Circle
464
+ - implements a circular array based on a Python List
465
+ - resizes itself as needed
466
+ - will handle None values being pushed and popped from it
467
+ - implemented in the grscheller.datastructures.circle module
468
+ - in the src/grscheller/datastructures/circle.py file
469
+ - O(1) pushing/popping to/from either end
470
+ - O(1) length determination
471
+ - O(1) indexing for setting and getting values.
472
+ - Dqueue implemented with Circle class instead of List class directly
473
+ - Ensured that None is never pushed to Stack & Dqueue objects
474
+
475
+ ### Version 0.6.4.1 - commit date: 2023-10-01
476
+
477
+ - Initial prototypes for map and flatMap for Dqueue class
478
+ - Started grscheller.datastructures.core module
479
+ - used for grscheller.datastructures implementation
480
+ - no particular need to indicate them to be \_private
481
+ - exports the following functions so far
482
+ - concatIters - sequentially concatenate multiple iterators
483
+ - mergeIters - merge multiple iterators until one is exhausted
484
+ - mapIter - lazily map a function over an iterator stream
485
+ - Decided to keep Alpha for next PyPI release
486
+
487
+ ### Version 0.6.3.2 - commit date: 2023-09-30
488
+
489
+ - Made functional module into a sub package of datastructures
490
+ - Improved comments and type annotations
491
+ - Removed isEmpty method from Dqueue class
492
+ - Both Dqueue & Stack objects evaluate true when non-empty
493
+ - Beginning preparations for the next PyPI release
494
+ - Want to make next PyPI release a Beta release
495
+ - Need to improve test suite first
496
+
497
+ ### Version 0.6.2.0 - commit date: 2023-09-25
498
+
499
+ - Started work on a Left biased Either Monad
500
+ - removed isEmpty method from Stack class
501
+
502
+ ### Version 0.6.1.0 - commit date: 2023-09-25
503
+
504
+ - Maybe get() and getOrElse() API changes
505
+ - getting a better handle on type annotation
506
+ - work-in-progress
507
+ - erroneous LSP error messages greatly reduced
508
+
509
+ ### Version 0.5.2.1 - PyPI release date: 2023-09-24
510
+
511
+ - data structures now support a much more FP style for Python
512
+ - implemented Maybe monad
513
+ - introduces the use of type annotations for this effort
514
+ - much better test coverage
515
+
516
+ ### Version 0.5.0.0 - commit date: 2023-09-20
517
+
518
+ - begin work on a more functional approach
519
+ - create a monadic Option class
520
+ - drop the subclassing of NONE
521
+ - put this effort on a new branch: feature_maybe
522
+ - some flaws with previous approach
523
+ - the OO redirection not best
524
+ - for a class used in computationally intense contexts
525
+ - adds way too much complexity to the design
526
+ - some Python library probably already implemented this
527
+ - without looking, these probably throw tons of exceptions
528
+ - more fun implementing it myself
529
+ - then being dissatisfied with someone else's design
530
+
531
+ ### Version 0.4.0.0 - commit date: 2023-09-11
532
+
533
+ - subtle paradigm shift for Stack class
534
+ - empty Stacks no longer returned for nonexistent stacks
535
+ - like the tail of an empty stack
536
+ - singleton Stack.stackNONE class object returned instead
537
+ - Stack & \_StackNONE classes inherit from \_StackBase
538
+ - still working out the API
539
+
540
+ ### Version 0.3.0.2 - PyPI release date: 2023-09-09
541
+
542
+ - updated class Dqueue
543
+ - added __eq__ method
544
+ - added equality tests to tests/test_dqueue.py
545
+ - improved docstrings
546
+
547
+ ### Version 0.2.3.0 - commit date: 2023-09-06
548
+
549
+ - added __eq__ method to Stack class
550
+ - added some preliminary tests
551
+ - more tests are needed
552
+ - worst case O(n)
553
+ - will short circuit fast if possible
554
+
555
+ ### Version 0.2.2.2 - PyPI release date: 2023-09-04
556
+
557
+ - decided base package should have no dependencies other than
558
+ - Python version (>=2.10 due to use of Python match statement)
559
+ - Python standard libraries
560
+ - made pytest an optional [test] dependency
561
+ - added src/ as a top level directory as per
562
+ - https://packaging.python.org/en/latest/tutorials/packaging-projects/
563
+ - could not do the same for tests/ if end users are to have access
564
+
565
+ ### Version 0.2.1.0 - PyPI release date: 2023-09-03
566
+
567
+ - first Version uploaded to PyPI
568
+ - https://pypi.org/project/grscheller.datastructures/
569
+ - Install from PyPI
570
+ - $ pip install grscheller.datastructures==0.2.1.0
571
+ - $ pip install grscheller.datastructures # for top level version
572
+ - Install from GitHub
573
+ - $ pip install git+https://github.com/grscheller/datastructures@v0.2.1.0
574
+ - pytest made a dependency
575
+ - useful & less confusing to developers and end users
576
+ - good for systems I have not tested on
577
+ - prevents another pytest from being picked up from shell $PATH
578
+ - using a different python version
579
+ - giving "package not found" errors
580
+ - for CI/CD pipelines requiring unit testing
581
+
582
+ ### Version 0.2.0.2 - github only release date: 2023-08-29
583
+
584
+ - First version able to be installed from GitHub with pip
585
+ - $ pip install git+https://github.com/grscheller/datastructures@v0.2.0.2
586
+
587
+ ### Version 0.2.0.1 - commit date: 2023-08-29
588
+
589
+ - First failed attempt to make package installable from GitHub with pip
590
+
591
+ ### Version 0.2.0.0 - commit date: 2023-08-29
592
+
593
+ - BREAKING API CHANGE!!!
594
+ - Stack push method now returns reference to self
595
+ - Dqueue pushL & pushR methods now return references to self
596
+ - These methods used to return the data being pushed
597
+ - Now able to "." chain push methods together
598
+ - Updated tests - before making API changes
599
+ - First version to be "released" on GitHub
600
+
601
+ ### Version 0.1.1.0 - commit date: 2023-08-27
602
+
603
+ - grscheller.datastructures moved to its own GitHub repo
604
+ - https://github.com/grscheller/datastructures
605
+ - GitHub and PyPI user names just a happy coincidence
606
+
607
+ ### Version 0.1.0.0 - initial version: 2023-08-27
608
+
609
+ - Package implementing data structures which do not throw exceptions
610
+ - Did not push to PyPI until version 0.2.1.0
611
+ - Initial Python grscheller.datastructures for 0.1.0.0 commit:
612
+ - dqueue - implements a double sided queue class Dqueue
613
+ - stack - implements a LIFO stack class Stack
@@ -1,18 +1,19 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: dtools.datastructures
3
- Version: 0.25.1
4
- Summary: ### package datastructures
3
+ Version: 0.25.2
4
+ Summary: ### Developer Tools - data structures for algorithms **DEPRICATED**
5
5
  Keywords: datastructures,data structures,fifo,lifo,stack,queue,SplitEnd
6
6
  Author-email: "Geoffrey R. Scheller" <geoffrey@scheller.com>
7
7
  Requires-Python: >=3.12
8
8
  Description-Content-Type: text/markdown
9
- Classifier: Development Status :: 4 - Beta
9
+ Classifier: Development Status :: 7 - Inactive
10
10
  Classifier: Framework :: Pytest
11
11
  Classifier: Intended Audience :: Developers
12
12
  Classifier: License :: OSI Approved :: Apache Software License
13
13
  Classifier: Operating System :: OS Independent
14
14
  Classifier: Programming Language :: Python :: 3.13
15
15
  Classifier: Typing :: Typed
16
+ License-File: LICENSE
16
17
  Requires-Dist: dtools.circular-array >= 3.9.0, < 3.10
17
18
  Requires-Dist: dtools.fp >= 1.4.0, < 1.5
18
19
  Requires-Dist: pytest >=8.3.2 ; extra == "test"
@@ -21,21 +22,27 @@ Project-URL: Documentation, https://grscheller.github.io/dtools-docs/datastructu
21
22
  Project-URL: Source, https://github.com/grscheller/dtools-datastructures
22
23
  Provides-Extra: test
23
24
 
24
- # Developer Tools - Datastructures Useful for Algorithms
25
+ # Developer Tools - data structures useful for algorithms
26
+
27
+ **DEPRECATED** This project was broken up into separate projects.
28
+
29
+ * package dtools.datastructures.splitends `->` dtools.splitends
30
+ * module dtools.datastructures.tuples `->` dtools.tuples
31
+ * module dtools.datastructures.queues `->` dtools.queues
25
32
 
26
33
  Python package of data structures which support the use and
27
34
  implementation of algorithms.
28
35
 
29
- * **Repositories**
30
- * [dtools.datastructures][1] project on *PyPI*
31
- * [Source code][2] on *GitHub*
32
- * **Detailed documentation**
33
- * [Detailed API documentation][3] on *GH-Pages*
36
+ - **Repositories**
37
+ - [dtools.datastructures][1] project on *PyPI*
38
+ - [Source code][2] on *GitHub*
39
+ - **Detailed documentation**
40
+ - [Detailed API documentation][3] on *GH-Pages*
34
41
 
35
42
  This project is part of the
36
43
  [Developer Tools for Python][4] **dtools.** namespace project.
37
44
 
38
- ### Overview
45
+ ## Overview
39
46
 
40
47
  Data structures allowing developers to focus on the algorithms they are
41
48
  using instead of all the "bit fiddling" required to implement behaviors,
@@ -47,23 +54,22 @@ introducing inordinate complexity. Some of these data structures allow
47
54
  data to be safely shared between multiple data structure instances by
48
55
  making shared data immutable and inaccessible to client code.
49
56
 
50
- * functional & imperative programming styles supported
51
- * functional programming encouraged
52
- * project endeavors to remain Pythonic
53
- * methods which mutate objects don't return anything
54
- * like Python lists
55
- * in caparisons identity is considered before equality
56
- * like Python builtins
57
+ - functional & imperative programming styles supported
58
+ - functional programming encouraged
59
+ - project endeavors to remain Pythonic
60
+ - methods which mutate objects don't return anything
61
+ - like Python lists
62
+ - in caparisons identity is considered before equality
63
+ - like Python builtins
57
64
 
58
65
  Sometimes the real power of a data structure comes not from what it
59
66
  empowers you to do, but from what it prevents you from doing to
60
67
  yourself.
61
68
 
62
- ---
69
+ ______________________________________________________________________
63
70
 
64
71
  [1]: https://pypi.org/project/dtools.datastructures/
65
72
  [2]: https://github.com/grscheller/dtools-datastructures/
66
73
  [3]: https://grscheller.github.io/dtools-docs/datastructures/
67
74
  [4]: https://github.com/grscheller/dtools-docs
68
75
 
69
-