pythonic-fp.splitends 1.0.1__tar.gz → 2.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 (21) hide show
  1. pythonic_fp_splitends-2.0.0/CHANGELOG.rst +496 -0
  2. {pythonic_fp_splitends-1.0.1 → pythonic_fp_splitends-2.0.0}/PKG-INFO +10 -11
  3. {pythonic_fp_splitends-1.0.1 → pythonic_fp_splitends-2.0.0}/README.rst +4 -5
  4. {pythonic_fp_splitends-1.0.1 → pythonic_fp_splitends-2.0.0}/pyproject.toml +6 -6
  5. pythonic_fp_splitends-2.0.0/src/pythonic_fp/splitends/__init__.py +37 -0
  6. pythonic_fp_splitends-2.0.0/src/pythonic_fp/splitends/py.typed +0 -0
  7. pythonic_fp_splitends-2.0.0/src/pythonic_fp/splitends/splitend.py +248 -0
  8. pythonic_fp_splitends-2.0.0/src/pythonic_fp/splitends/splitend.pyi +31 -0
  9. pythonic_fp_splitends-2.0.0/src/pythonic_fp/splitends/splitend_node.py +137 -0
  10. pythonic_fp_splitends-2.0.0/src/pythonic_fp/splitends/splitend_node.pyi +20 -0
  11. {pythonic_fp_splitends-1.0.1 → pythonic_fp_splitends-2.0.0}/tests/test_splitend.py +77 -36
  12. {pythonic_fp_splitends-1.0.1 → pythonic_fp_splitends-2.0.0}/tests/test_splitend_node.py +57 -16
  13. pythonic_fp_splitends-1.0.1/CHANGELOG.rst +0 -591
  14. pythonic_fp_splitends-1.0.1/src/pythonic_fp/splitends/__init__.py +0 -34
  15. pythonic_fp_splitends-1.0.1/src/pythonic_fp/splitends/splitend.py +0 -154
  16. pythonic_fp_splitends-1.0.1/src/pythonic_fp/splitends/splitend.pyi +0 -38
  17. pythonic_fp_splitends-1.0.1/src/pythonic_fp/splitends/splitend_node.py +0 -134
  18. pythonic_fp_splitends-1.0.1/src/pythonic_fp/splitends/splitend_node.pyi +0 -36
  19. {pythonic_fp_splitends-1.0.1 → pythonic_fp_splitends-2.0.0}/.gitignore +0 -0
  20. {pythonic_fp_splitends-1.0.1 → pythonic_fp_splitends-2.0.0}/LICENSE +0 -0
  21. /pythonic_fp_splitends-1.0.1/src/pythonic_fp/splitends/py.typed → /pythonic_fp_splitends-2.0.0/src/pythonic_fp/splitends/__init__.pyi +0 -0
@@ -0,0 +1,496 @@
1
+ CHANGELOG
2
+ =========
3
+
4
+ PyPI pythonic-fp.splitends 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 2.0.0 - 2025-09-09
21
+ ~~~~~~~~~~~~~~~~~~~~~~~
22
+
23
+ - major API changes
24
+
25
+ PyPI 1.0.2 - 2025-09-09
26
+ ~~~~~~~~~~~~~~~~~~~~~~~
27
+
28
+ Docs problems with previous commit.
29
+
30
+ PyPI 1.0.1 - 2025-09-09
31
+ ~~~~~~~~~~~~~~~~~~~~~~~
32
+
33
+ Increased required versions fptools >= 5.1.0
34
+ Increased required versions iterables >= 5.1.0
35
+
36
+ PyPI 1.0.0 - 2025-08-02
37
+ ~~~~~~~~~~~~~~~~~~~~~~~
38
+
39
+ API Improvements.
40
+
41
+ - plugged leaking abstractions from class SENode
42
+ - leaning harder into hair analogies.
43
+ - SplitEnd.pop -> SplitEnd.snip
44
+ - SplitEnd.push -> SplitEnd.extend
45
+
46
+ Sphinx docstring improvements.
47
+
48
+ PyPI 0.30.0 - 2025-07-06
49
+ ~~~~~~~~~~~~~~~~~~~~~~~~
50
+
51
+ First PyPI release as the pythonic-fp.splitends project.
52
+
53
+ PyPI 0.28.1 - 2025-04-22
54
+ ~~~~~~~~~~~~~~~~~~~~~~~~
55
+
56
+ Fixed mistake README.md on last PyPI release.
57
+
58
+ PyPI 0.28.0 - 2025-04-22
59
+ ~~~~~~~~~~~~~~~~~~~~~~~~
60
+
61
+ - first PyPI release as dtools.splitends
62
+ - docstring changes
63
+ - pyproject.toml standardization
64
+
65
+ Version 0.27.1.0 - 2025-04-22 (Devel environment only)
66
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
67
+
68
+ New repo dtools.splitends. Development only.
69
+
70
+ - first development release
71
+ - dtools.splitends split out of dtools.queues
72
+ - first PyPI release will be 0.28.0
73
+
74
+ PyPI 0.27.0 - 2025-04-07
75
+ ~~~~~~~~~~~~~~~~~~~~~~~~
76
+
77
+ - first PyPI release as dtools.queues
78
+ - split dtools.datastructures into
79
+ - dtools.queues
80
+ - dtools.tuples
81
+
82
+ - typing improvements
83
+
84
+ PyPI 0.25.0 - 2025-01-17
85
+ ~~~~~~~~~~~~~~~~~~~~~~~~
86
+
87
+ First release under dtools.datastructures name.
88
+
89
+ PyPI 0.22.1 - 2024-10-20
90
+ ~~~~~~~~~~~~~~~~~~~~~~~~
91
+
92
+ Removed docs from repo. Documentation
93
+ for all grscheller namespace projects maintained
94
+ `here <https://grscheller.github.io/grscheller-pypi-namespace-docs/>`_.
95
+
96
+ PyPI 0.21.0 - 2024-08-20
97
+ ~~~~~~~~~~~~~~~~~~~~~~~~
98
+
99
+ Got back to a state maintainer is happy with. Many dependencies needed updating
100
+ first.
101
+
102
+ 0.20.5.1 - 2024-08-19 (Devel environment only)
103
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
104
+
105
+ Datastructures coming back together.
106
+
107
+ - works with all the current versions of fp and circular-array
108
+ - preparing for PyPI 0.21.0 release
109
+
110
+ 0.20.2.0 - 2024-08-03 (Devel environment only)
111
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
112
+
113
+ Going down a typing rabbit hole.
114
+
115
+ - updated to use grscheller.circular-array version 3.3.0 (3.2.3.0)
116
+ - updated to use grscheller.fp version 0.3.0 (0.2.3.0)
117
+ - removed grscheller.circular-array dependency from datastructures.SplitEnd
118
+ - still preparing for the 1.0.0 datastructures release
119
+
120
+ As I tighten up typing, I find I must do so for dependencies too.
121
+ Using ``# type: ignore`` is a band-aid, use ``@overload`` and ``cast``
122
+ instead. Using ``@overload`` to "untype" optional parameters is the
123
+ way to go. Use ``cast`` only when you have knowledge beyond what
124
+ the typechecker can know.
125
+
126
+ PyPI 0.19.0 - 2024-07-15
127
+ ~~~~~~~~~~~~~~~~~~~~~~~~
128
+
129
+ - continuing to prepare for PyPI release 1.0.0
130
+ - cleaned up docstrings for a 1.0.0 release
131
+ - considering requiring grscheller.fp as a dependency
132
+
133
+ 0.18.0.0
134
+ ~~~~~~~~
135
+
136
+ Beginning to prepare for PyPI release 1.0.0
137
+
138
+ - first devel version requiring circular-array 3.1.0
139
+ - still some design work to be done
140
+ - TODO: Verify flatMap family yields results in "natural" order
141
+
142
+ 0.17.0.4
143
+ ~~~~~~~~
144
+
145
+ Start of effort to relax None restrictions.
146
+
147
+ - have begun relaxing the requirement of not storing None as a value
148
+ - completed for queues.py
149
+ - requires grscheller.circular-array >= 3.0.3.0
150
+ - perhaps next PyPI release will be v1.0.0 ???
151
+
152
+ 0.16.0.0
153
+ ~~~~~~~~
154
+
155
+ Preparing to support PEP 695 generics. Devel environment only.
156
+
157
+ - Requires Python >= 3.12
158
+ - preparing to support PEP 695 generics
159
+ - will require Python 3.12
160
+ - will not have to import typing for Python 3.12 and beyond
161
+ - BUT... mypy does not support PEP 695 generics yet (Pyright does)
162
+ - bumped minimum Python version to >= 3.12 in pyproject.toml
163
+ - map methods mutating objects don't play nice with typing
164
+ - map methods now return copies
165
+ - therefore, tests need to be completely overhauled
166
+
167
+ 0.14.1.1
168
+ ~~~~~~~~
169
+
170
+ Preparing to add TypeVars
171
+
172
+ - tests working with grscheller.circular-array >= 3.0.0, \<3.2
173
+ - lots of mypy complaints
174
+ - first version using TypeVars will be 0.15.0.0
175
+
176
+ PyPI 0.14.0 - 2024-03-09
177
+ ~~~~~~~~~~~~~~~~~~~~~~~~
178
+
179
+ Updated dependency on CircularArray class.
180
+
181
+ - ``dependencies = ["grscheller.circular-array >= 0.2.0, < 2.1"]``
182
+ - minor README.md wordsmithing
183
+ - keeping project an Alpha release for now
184
+
185
+ PyPI 0.13.0 - 2024-01-30
186
+ ~~~~~~~~~~~~~~~~~~~~~~~~
187
+
188
+ BREAKING API CHANGE - CircularArray class removed.
189
+
190
+ - CircularArray moved to its own PyPI & GitHub repos
191
+
192
+ - https://pypi.org/project/grscheller.circular-array/
193
+ - https://github.com/grscheller/circular-array
194
+
195
+ - Fix various out-of-date docstrings
196
+
197
+ PyPI 0.12.3 - 2024-01-20
198
+ ~~~~~~~~~~~~~~~~~~~~~~~~
199
+
200
+ Cutting next PyPI release from development (main).
201
+
202
+ - if experiment works, will drop release branch
203
+ - will not include ``docs/``
204
+ - will not include ``.gitignore`` and ``.github/``
205
+ - will include ``tests/``
206
+ - made pytest >= 7.4 an optional test dependency
207
+
208
+ PyPI 0.12.0 - 2024-01-14
209
+ ~~~~~~~~~~~~~~~~~~~~~~~~
210
+
211
+ - Considerable future-proofing for first real Beta release
212
+
213
+ 0.11.3.4 - Devel environment only
214
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
215
+
216
+ Finally decided to make next PyPI release Beta.
217
+
218
+ - Package structure mature and not subject to change beyond additions
219
+ - Will endeavor to keep top level & core module names the same
220
+ - API changes will be deprecated before removed
221
+
222
+ 0.10.14.0 - 2023-12-09 (Devel environment only)
223
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
224
+
225
+ - Finished massive renaming & repackaging effort
226
+ - to help with future growth
227
+ - name choices more self-documenting
228
+ - top level modules
229
+ - ``array``
230
+ - ``CLArray``
231
+ - ``queue``
232
+ - ``FIFOQueue`` (formerly ``SQueue``)
233
+ - ``LIFOQueue`` (lifo version of above)
234
+ - ``DoubleQueue`` (formerly ``DQueue``)
235
+ - ``stack``
236
+ - ``Stack`` (formerly ``PStack``)
237
+ - ``FStack``
238
+ - ``tuple_like``
239
+ - ``FTuple``
240
+
241
+ PyPI 0.10.9 - 2023-11-21
242
+ ~~~~~~~~~~~~~~~~~~~~~~~~
243
+
244
+ - Bumping requires-python = ">=3.11" in pyproject.toml
245
+ - Currently developing & testing on Python 3.11.5
246
+ - 0.10.7.X will be used on the GitHub pypy3 branch
247
+ - Pypy3 (7.3.13) using Python (3.10.13)
248
+ - tests pass but are 4X slower
249
+ - LSP almost useless due to more primitive typing module
250
+
251
+ Version 0.10.7.0 - 2023-11-18 (Devel environment only)
252
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
253
+
254
+ Overhauled ``__repr__`` and ``__str__`` methods for all classes.
255
+ Tested that ``ds == eval(repr(ds))`` for all data structures ``ds``
256
+ in the package. Also, Updated markdown overview documentation.
257
+
258
+ Version 0.10.1.0 - 2023-11-11 (Devel environment only)
259
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
260
+
261
+ - Removed flatMap methods from stateful objects
262
+ - ``FLArray``, ``DQueue``, ``SQueue``, ``PStack``
263
+ - kept the ``map`` method for each
264
+ - some restructuring so package will scale better in the future
265
+
266
+ PyPI 0.9.1 - 2023-11-09
267
+ ~~~~~~~~~~~~~~~~~~~~~~~
268
+
269
+ - First Beta release of grscheller.datastructures on PyPI
270
+ - Infrastructure stable
271
+ - Existing datastructures only should need API additions
272
+ - Type annotations working extremely well
273
+ - Using Pdoc3 to generate documentation on GitHub
274
+ - see https://grscheller.github.io/datastructures/
275
+ - All iterators conform to Python language "iterator protocol"
276
+ - Improved docstrings
277
+ - Future directions:
278
+ - Develop some "typed" containers
279
+ - Need to use this package in other projects to gain insight
280
+
281
+ Version 0.8.6.0 - 2023-11-05 (Devel environment only)
282
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
283
+
284
+ - Finally got queue.py & stack.py inheritance sorted out
285
+ - LSP with Pyright working quite well
286
+ - Goals for next PyPI release:
287
+ - combine methods
288
+ - ``tail`` and ``tailOr``
289
+ - ``cons`` and ``consOr``
290
+ - ``head`` and ``headOr``
291
+
292
+ Version 0.8.3.0 - 2023-11-02 (Devel environment only)
293
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
294
+
295
+ Major API breaking change. ``Dqueue`` renamed ``DQueue``.
296
+ Tests now work.
297
+
298
+ PyPI 0.8.0.0 - 2023-10-28
299
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
300
+
301
+ - API breaking changes
302
+ - did not find everything returning self upon mutation
303
+ - Efforts for future directions
304
+ - decided to use pdoc3 over sphinx to generate API documentation
305
+ - need to resolve tension of package being Pythonic and Functional
306
+
307
+ Version 0.7.5.0 - 2023-10-26 (Devel environment only)
308
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
309
+
310
+ - Moved pytest test suite to root of the repo.
311
+ - src/grscheller/datastructures/tests -> tests/
312
+ - seems to be the canonical location for the test suite
313
+
314
+ PyPI 0.7.4.0 - 2023-10-25
315
+ ~~~~~~~~~~~~~~~~~~~~
316
+
317
+ - More mature
318
+ - More Pythonic
319
+ - Major API changes
320
+ - Still tagging it an Alpha release
321
+
322
+ 0.7.2.0 - 2023-10-18
323
+ ~~~~~~~~~~~~~~~~~~~~
324
+
325
+ ``Queue`` & ``Dqueue`` no longer return ``Maybe`` objects
326
+
327
+ - Neither store ``None`` as a value
328
+ - Now safe to return ``None`` for non-existent values
329
+ - like popping or peaking from an empty ``queue`` or ``dqueue``
330
+
331
+ Version 0.7.0.0 - 2023-10-16 (Devel environment only)
332
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
333
+
334
+ - added ``Queue`` data structure representing a FIFO queue
335
+ - renamed two ``Dqueue`` methods
336
+ - ``headR`` -> ``peakLastIn``
337
+ - ``headL`` -> ``peakNextOut``
338
+ - went ahead and removed the ``Stack`` head method
339
+ - fair since I still labeling releases as alpha releases
340
+ - the API is still a work in progress
341
+ - updated README.md
342
+ - foreshadowing making a distinction between
343
+ - objects "sharing" their data -> FP methods return copies
344
+ - objects "contain" their data -> FP methods mutate object
345
+ - added info on class ``Queue``
346
+
347
+ PyPI 0.6.9.0 - 2023-10-09
348
+ ~~~~~~~~~~~~~~~~~~~~
349
+
350
+ - renamed core module to ``iterlib`` module
351
+ - library just contained functions for manipulating iterators
352
+ - TODO: use ``mergeIters`` as a guide for an iterator "zip" function
353
+ - class Stack better in alignment with:
354
+ - Python lists
355
+ - more natural for Stack to iterate backwards starting from head
356
+ - removed Stack's ``__getitem__`` method
357
+ - both pop and push/append from end
358
+ - ``Dqueue`` which wraps a ``Circle`` instance
359
+ - also ``Dqueue`` does not have a ``__getitem__`` method
360
+ - ``Circle`` implements a circular array with a Python List
361
+
362
+ Version 0.6.8.6 - 2023-10-08 (Devel environment only)
363
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
364
+
365
+ Three new methods for class ``Circle`` and ``Dqueue``.
366
+
367
+ - ``mapSelf``, ``flatMapSelf``, ``mergeMapSelf``
368
+ - these correspond to ``map``, ``flatMap``, ``mergeMap``
369
+ - except they act on the class objects themselves
370
+ - not new instances
371
+
372
+ Not worth the maintenance effort maintaining two version
373
+ of ``Dqueue``.
374
+
375
+ - one returning new instances
376
+ - the other modifying the object in place
377
+
378
+ Version 0.6.8.3 - 2023-10-06 (Devel environment only)
379
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
380
+
381
+ Class ``Carray`` renamed to ``Circle``
382
+
383
+ - implements a circular array based on a Python List
384
+ - resizes itself as needed
385
+ - will handle ``None`` values being pushed and popped from it
386
+ - implemented in the grscheller.datastructures.circle module
387
+ - O(1) pushing/popping to/from either end
388
+ - O(1) length determination
389
+ - O(1) indexing for setting and getting values.
390
+
391
+ Now ``Dqueue`` is implemented with the ``Circle`` class
392
+ instead of ``list`` directly. Ensures that ``None`` is
393
+ never pushed to ``Stack`` and ``Dqueue`` objects.
394
+
395
+ Version 0.6.3.2 - 2023-09-30 (Devel environment only)
396
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
397
+
398
+ - Improved comments and type annotations
399
+ - Removed isEmpty method from ``Dqueue`` class
400
+ - Both ``Dqueue`` & ``Stack`` objects evaluate true when non-empty
401
+ - Beginning preparations for the next PyPI release
402
+ - Want to make next PyPI release a Beta release
403
+ - Need to improve test suite first
404
+
405
+ Version 0.6.2.0 - 2023-09-25 (Devel environment only)
406
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
407
+
408
+ Removed ``isEmpty`` method from ``Stack`` class.
409
+
410
+ Version 0.6.1.0 - 2023-09-25 (Devel environment only)
411
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
412
+
413
+ - Maybe ``get()`` and ``getOrElse()`` API changes
414
+ - getting a better handle on type annotation
415
+ - work-in-progress
416
+ - erroneous LSP error messages greatly reduced
417
+
418
+ PyPI 0.5.2.1 - 2023-09-24
419
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
420
+
421
+ - data structures now support a much more FP style for Python
422
+ - introduces the use of type annotations for this effort
423
+ - much better test coverage
424
+
425
+ PyPI 0.3.0.2 - 2023-09-09
426
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
427
+
428
+ - updated class ``Dqueue``
429
+ - added ``__eq__`` method
430
+ - added equality tests to tests/test_dqueue.py
431
+
432
+ - improved docstrings
433
+
434
+ PyPI 0.2.2.2 - 2023-09-04
435
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
436
+
437
+ - decided base package should have no dependencies other than
438
+ - Python version (>=2.10 due to use of Python match statement)
439
+ - Python standard libraries
440
+ - made pytest an optional [test] dependency
441
+ - added src/ as a top level directory as per
442
+ - ``https://packaging.python.org/en/latest/tutorials/packaging-projects/``
443
+ - could not do the same for tests/ if end users are to have access
444
+
445
+ PyPI 0.2.1.0 - 2023-09-03
446
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
447
+
448
+ First Version uploaded to PyPI.
449
+
450
+ - https://pypi.org/project/grscheller.datastructures/
451
+ - Install from PyPI
452
+ - ``$ pip install grscheller.datastructures==0.2.1.0``
453
+ - ``$ pip install grscheller.datastructures # for top level version``
454
+ - Install from GitHub
455
+ - ``$ pip install git+https://github.com/grscheller/datastructures@v0.2.1.0``
456
+ - pytest made a dependency
457
+ - useful & less confusing to developers and end users
458
+ - good for systems I have not tested on
459
+ - prevents another pytest from being picked up from shell $PATH
460
+ - using a different python version
461
+ - giving "package not found" errors
462
+ - for CI/CD pipelines requiring unit testing
463
+
464
+ Version 0.2.0.2 - 2023-08-29 (GitHub only)
465
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
466
+
467
+ First installable version of grscheller.datastructures
468
+ install from GitHub with pip via:
469
+ ``$ pip install git+https://github.com/grscheller/datastructures@v0.2.0.2``
470
+
471
+ Version 0.2.0.0 - 2023-08-29 (Devel environment only)
472
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
473
+
474
+ - BREAKING API CHANGE!!!
475
+ - the Dqueue pushL & pushR methods now return references to self
476
+ - these methods used to return the data being pushed
477
+ - now able to "." chain push methods together
478
+ - updated tests - before making API changes
479
+ - first version to be "released" on GitHub
480
+
481
+ Version 0.1.1.0 - 2023-08-27 (Devel environment only)
482
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
483
+
484
+ - grscheller.datastructures moved to its own GitHub repo
485
+ - https://github.com/grscheller/datastructures
486
+ - GitHub and PyPI user names just a happy coincidence
487
+
488
+ Version 0.1.0.0 - 2023-08-27 (Devel environment only)
489
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
490
+
491
+ Package implementing data structures which do not throw exceptions
492
+
493
+ - ``dqueue`` - implements a double sided queue class ``Dqueue``
494
+ - ``stack`` - implements a LIFO stack class ``Stack``
495
+
496
+ Did not push to PyPI until version ``0.2.1.0``.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythonic-fp-splitends
3
- Version: 1.0.1
3
+ Version: 2.0.0
4
4
  Summary: Mutable stack objects that can safely share data.
5
5
  Keywords: SplitEnd,lifo,stack
6
6
  Author-email: "Geoffrey R. Scheller" <geoffrey@scheller.com>
@@ -14,13 +14,13 @@ 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-fptools>=5.1.0
18
- Requires-Dist: pythonic-fp-iterables>=5.1.0
17
+ Requires-Dist: pythonic-fp-fptools>=5.1.2
18
+ Requires-Dist: pythonic-fp-iterables>=5.1.2
19
+ Requires-Dist: pythonic-fp-queues>=5.1.0
19
20
  Requires-Dist: pytest>=8.4.1 ; extra == "test"
20
- Requires-Dist: pythonic-fp-gadgets>=3.0.1 ; extra == "test"
21
21
  Project-URL: Changelog, https://github.com/grscheller/pythonic-fp-splitends/blob/main/CHANGELOG.rst
22
- Project-URL: Documentation, https://grscheller.github.io/pythonic-fp/splitends/development/build/html/releases.html
23
- Project-URL: Homepage, https://github.com/grscheller/pythonic-fp/blob/main/README.md
22
+ Project-URL: Documentation, https://grscheller.github.io/pythonic-fp/splitends/development/build/html/
23
+ Project-URL: Homepage, https://grscheller.github.io/pythonic-fp/homepage/build/html/
24
24
  Project-URL: Source, https://github.com/grscheller/pythonic-fp-splitends
25
25
  Provides-Extra: test
26
26
 
@@ -43,11 +43,10 @@ between themselves.
43
43
  - the ``SplitEnd`` copy method and ``len`` are O(1)
44
44
  - in boolean context returns true if the ``SplitEnd`` is not just a "root"
45
45
 
46
- This PyPI project is part of of the grscheller
47
- `pythonic-fp namespace projects <https://github.com/grscheller/pythonic-fp/blob/main/README.md>`_
48
-
49
- **Warning:** This PyPI project is Alpha level software and subject to
50
- change.
46
+ Part of the
47
+ `pythonic-fp
48
+ <https://grscheller.github.io/pythonic-fp/homepage/build/html/index.html>`_
49
+ PyPI projects.
51
50
 
52
51
  Documentation
53
52
  -------------
@@ -17,11 +17,10 @@ between themselves.
17
17
  - the ``SplitEnd`` copy method and ``len`` are O(1)
18
18
  - in boolean context returns true if the ``SplitEnd`` is not just a "root"
19
19
 
20
- This PyPI project is part of of the grscheller
21
- `pythonic-fp namespace projects <https://github.com/grscheller/pythonic-fp/blob/main/README.md>`_
22
-
23
- **Warning:** This PyPI project is Alpha level software and subject to
24
- change.
20
+ Part of the
21
+ `pythonic-fp
22
+ <https://grscheller.github.io/pythonic-fp/homepage/build/html/index.html>`_
23
+ PyPI projects.
25
24
 
26
25
  Documentation
27
26
  -------------
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pythonic-fp-splitends"
3
- version = "1.0.1"
3
+ version = "2.0.0"
4
4
  readme = "README.rst"
5
5
  requires-python = ">=3.13"
6
6
  license = { file = "LICENSE" }
@@ -16,21 +16,21 @@ classifiers = [
16
16
  "Typing :: Typed",
17
17
  ]
18
18
  dependencies = [
19
- "pythonic-fp-fptools>=5.1.0",
20
- "pythonic-fp-iterables>=5.1.0",
19
+ "pythonic-fp-fptools>=5.1.2",
20
+ "pythonic-fp-iterables>=5.1.2",
21
+ "pythonic-fp-queues>=5.1.0",
21
22
  ]
22
23
  dynamic = ["description"]
23
24
 
24
25
  [project.urls]
25
26
  Changelog = "https://github.com/grscheller/pythonic-fp-splitends/blob/main/CHANGELOG.rst"
26
- Documentation = "https://grscheller.github.io/pythonic-fp/splitends/development/build/html/releases.html"
27
- Homepage = "https://github.com/grscheller/pythonic-fp/blob/main/README.md"
27
+ Documentation = "https://grscheller.github.io/pythonic-fp/splitends/development/build/html/"
28
+ Homepage = "https://grscheller.github.io/pythonic-fp/homepage/build/html/"
28
29
  Source = "https://github.com/grscheller/pythonic-fp-splitends"
29
30
 
30
31
  [project.optional-dependencies]
31
32
  test = [
32
33
  "pytest>=8.4.1",
33
- "pythonic-fp-gadgets>=3.0.1",
34
34
  ]
35
35
 
36
36
  [build-system]
@@ -0,0 +1,37 @@
1
+ # Copyright 2024-2025 Geoffrey R. Scheller
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ """Mutable stack objects that can safely share data.
16
+
17
+ Python package implementing a singularly linked stack of nodes called a ``SplitEnd``.
18
+ While mutable, these data structures can safely share immutable data nodes between
19
+ themselves. These nodes, of type ``SENode``, always contain data. A root node is
20
+ a node whose previous node is itself. Root nodes mark the bottom of the stack.
21
+
22
+ Like one of many "split ends" from shafts of hair, a ``SplitEnd`` can be "snipped"
23
+ shorter or "extended" further from its "end" node at the top of the stack. Its "root"
24
+ node is at the bottom of the stack and can not be "snipped" or "cut" off.
25
+
26
+ A ``SplitEnd`` can be duplicated onto a compatible root node. By compatible, the
27
+ new root must contain data that compares as equal to the old root node.
28
+
29
+ TODO: A ``scalp`` is a container of root nodes all of whose contained data must be
30
+ hashable. The ``scalp.add(d)`` method will return the unique root node with data
31
+ that compares as equal to ``d``, or create a new root node if such a contained node
32
+ does not exist.
33
+ """
34
+
35
+ __author__ = 'Geoffrey R. Scheller'
36
+ __copyright__ = 'Copyright (c) 2023-2025 Geoffrey R. Scheller'
37
+ __license__ = 'Apache License 2.0'