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