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