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