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.
- pythonic_fp_splitends-2.0.0/CHANGELOG.rst +496 -0
- {pythonic_fp_splitends-1.0.1 → pythonic_fp_splitends-2.0.0}/PKG-INFO +10 -11
- {pythonic_fp_splitends-1.0.1 → pythonic_fp_splitends-2.0.0}/README.rst +4 -5
- {pythonic_fp_splitends-1.0.1 → pythonic_fp_splitends-2.0.0}/pyproject.toml +6 -6
- pythonic_fp_splitends-2.0.0/src/pythonic_fp/splitends/__init__.py +37 -0
- pythonic_fp_splitends-2.0.0/src/pythonic_fp/splitends/py.typed +0 -0
- pythonic_fp_splitends-2.0.0/src/pythonic_fp/splitends/splitend.py +248 -0
- pythonic_fp_splitends-2.0.0/src/pythonic_fp/splitends/splitend.pyi +31 -0
- pythonic_fp_splitends-2.0.0/src/pythonic_fp/splitends/splitend_node.py +137 -0
- pythonic_fp_splitends-2.0.0/src/pythonic_fp/splitends/splitend_node.pyi +20 -0
- {pythonic_fp_splitends-1.0.1 → pythonic_fp_splitends-2.0.0}/tests/test_splitend.py +77 -36
- {pythonic_fp_splitends-1.0.1 → pythonic_fp_splitends-2.0.0}/tests/test_splitend_node.py +57 -16
- pythonic_fp_splitends-1.0.1/CHANGELOG.rst +0 -591
- pythonic_fp_splitends-1.0.1/src/pythonic_fp/splitends/__init__.py +0 -34
- pythonic_fp_splitends-1.0.1/src/pythonic_fp/splitends/splitend.py +0 -154
- pythonic_fp_splitends-1.0.1/src/pythonic_fp/splitends/splitend.pyi +0 -38
- pythonic_fp_splitends-1.0.1/src/pythonic_fp/splitends/splitend_node.py +0 -134
- pythonic_fp_splitends-1.0.1/src/pythonic_fp/splitends/splitend_node.pyi +0 -36
- {pythonic_fp_splitends-1.0.1 → pythonic_fp_splitends-2.0.0}/.gitignore +0 -0
- {pythonic_fp_splitends-1.0.1 → pythonic_fp_splitends-2.0.0}/LICENSE +0 -0
- /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:
|
|
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.
|
|
18
|
-
Requires-Dist: pythonic-fp-iterables>=5.1.
|
|
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/
|
|
23
|
-
Project-URL: Homepage, https://github.
|
|
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
|
-
|
|
47
|
-
`pythonic-fp
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
21
|
-
`pythonic-fp
|
|
22
|
-
|
|
23
|
-
|
|
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 = "
|
|
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.
|
|
20
|
-
"pythonic-fp-iterables>=5.1.
|
|
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/
|
|
27
|
-
Homepage = "https://github.
|
|
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'
|
|
File without changes
|