dtools.circular-array 3.13.0__py3-none-any.whl → 3.14.0__py3-none-any.whl
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.
- dtools/{circular_array/ca.py → circular_array.py} +11 -2
- {dtools_circular_array-3.13.0.dist-info → dtools_circular_array-3.14.0.dist-info}/METADATA +16 -15
- dtools_circular_array-3.14.0.dist-info/RECORD +5 -0
- dtools/circular_array/__init__.py +0 -32
- dtools/circular_array/py.typed +0 -0
- dtools_circular_array-3.13.0.dist-info/RECORD +0 -7
- {dtools_circular_array-3.13.0.dist-info → dtools_circular_array-3.14.0.dist-info}/WHEEL +0 -0
- {dtools_circular_array-3.13.0.dist-info → dtools_circular_array-3.14.0.dist-info}/licenses/LICENSE +0 -0
@@ -12,10 +12,19 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
"""### An indexable circular array data structure.
|
15
|
+
"""### An indexable circular array data structure.
|
16
|
+
|
17
|
+
An indexable, sliceable, auto-resizing circular array
|
18
|
+
data structure with amortized O(1) pushes and pops either end.
|
19
|
+
|
20
|
+
"""
|
16
21
|
|
17
22
|
from __future__ import annotations
|
18
23
|
|
24
|
+
__author__ = 'Geoffrey R. Scheller'
|
25
|
+
__copyright__ = 'Copyright (c) 2023-2025 Geoffrey R. Scheller'
|
26
|
+
__license__ = 'Apache License 2.0'
|
27
|
+
|
19
28
|
from collections.abc import Callable, Iterable, Iterator
|
20
29
|
from typing import cast, Never, overload, TypeVar
|
21
30
|
|
@@ -27,7 +36,7 @@ D = TypeVar('D')
|
|
27
36
|
class CA[D]:
|
28
37
|
"""Indexable circular array data structure
|
29
38
|
|
30
|
-
- generic, stateful data structure
|
39
|
+
- generic, stateful, invariant data structure
|
31
40
|
- amortized O(1) pushing and popping from either end
|
32
41
|
- O(1) random access any element
|
33
42
|
- will resize itself as needed
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: dtools.circular-array
|
3
|
-
Version: 3.
|
4
|
-
Summary: ###
|
3
|
+
Version: 3.14.0
|
4
|
+
Summary: ### An indexable circular array data structure.
|
5
5
|
Keywords: circular array,dequeue,pop,push,indexable,auto resizing
|
6
6
|
Author-email: "Geoffrey R. Scheller" <geoffrey@scheller.com>
|
7
7
|
Requires-Python: >=3.12
|
@@ -16,8 +16,8 @@ Classifier: Typing :: Typed
|
|
16
16
|
License-File: LICENSE
|
17
17
|
Requires-Dist: pytest >=8.3.5 ; extra == "test"
|
18
18
|
Project-URL: Changelog, https://github.com/grscheller/dtools-circular-array/blob/main/CHANGELOG.md
|
19
|
-
Project-URL: Documentation, https://grscheller.github.io/dtools-
|
20
|
-
Project-URL: Homepage, https://github.com/grscheller/dtools-
|
19
|
+
Project-URL: Documentation, https://grscheller.github.io/dtools-namespace-projects/circular-array
|
20
|
+
Project-URL: Homepage, https://github.com/grscheller/dtools-namespace-projects/blob/main/README.md
|
21
21
|
Project-URL: Source, https://github.com/grscheller/dtools-circular-array
|
22
22
|
Provides-Extra: test
|
23
23
|
|
@@ -32,8 +32,8 @@ structure,
|
|
32
32
|
- **Detailed documentation**
|
33
33
|
- [Detailed API documentation][3] on *GH-Pages*
|
34
34
|
|
35
|
-
This project is part of the [Developer Tools for Python][4] **dtools
|
36
|
-
namespace
|
35
|
+
This project is part of the [Developer Tools for Python][4] **dtools**
|
36
|
+
namespace projects.
|
37
37
|
|
38
38
|
## Overview
|
39
39
|
|
@@ -53,8 +53,11 @@ Useful either if used directly like a Python list, or in a "has-a"
|
|
53
53
|
relationship when implementing other data structures.
|
54
54
|
|
55
55
|
- *module* dtools.circular_array
|
56
|
-
- *class* CA
|
57
|
-
|
56
|
+
- *class* `CA:` circular array data structure
|
57
|
+
- initializer takes 1 or 0 iterators
|
58
|
+
- like `list` or `set`
|
59
|
+
- *function* `ca`: produces a `CA` from function's arguments
|
60
|
+
- similar use case as syntactic constructs `[]` or `{}`
|
58
61
|
|
59
62
|
Above nomenclature modeled after builtin data types like `list`, where
|
60
63
|
`CA` and `ca` correspond respectfully to `list` and `[]` in their use
|
@@ -63,7 +66,7 @@ cases.
|
|
63
66
|
#### Usage
|
64
67
|
|
65
68
|
```python
|
66
|
-
from dtools.circular_array
|
69
|
+
from dtools.circular_array import CA, ca
|
67
70
|
|
68
71
|
ca1 = ca(1, 2, 3)
|
69
72
|
assert ca1.popl() == 1
|
@@ -81,8 +84,8 @@ cases.
|
|
81
84
|
tup4 = ca2.poprt(4)
|
82
85
|
assert tup3 == (1, 2, 3)
|
83
86
|
assert tup4 == (10, 9, 8, 7)
|
84
|
-
assert ca2 ==
|
85
|
-
four, *rest =
|
87
|
+
assert ca2 == ca(4, 5, 6)
|
88
|
+
four, *rest = ca2.poplt(1000)
|
86
89
|
assert four == 4
|
87
90
|
assert rest == [5, 6]
|
88
91
|
assert len(ca2) == 0
|
@@ -96,10 +99,8 @@ cases.
|
|
96
99
|
assert len(ca2) == 0
|
97
100
|
```
|
98
101
|
|
99
|
-
______________________________________________________________________
|
100
|
-
|
101
102
|
[1]: https://pypi.org/project/dtools.circular-array
|
102
103
|
[2]: https://github.com/grscheller/dtools-circular-array
|
103
|
-
[3]: https://grscheller.github.io/dtools-
|
104
|
-
[4]: https://github.com/grscheller/dtools-
|
104
|
+
[3]: https://grscheller.github.io/dtools-namespace-projects/circular-array
|
105
|
+
[4]: https://github.com/grscheller/dtools-namespace-projects/blob/main/README.md
|
105
106
|
|
@@ -0,0 +1,5 @@
|
|
1
|
+
dtools/circular_array.py,sha256=GJn30Xub6oSd2Ltiy76ccUytiNpVS43RJNU4Oax6EkM,16184
|
2
|
+
dtools_circular_array-3.14.0.dist-info/licenses/LICENSE,sha256=csqbZRvA3Nyuav1aszWvswE8CZtaKr-hMjjjcKqms7w,10774
|
3
|
+
dtools_circular_array-3.14.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
4
|
+
dtools_circular_array-3.14.0.dist-info/METADATA,sha256=PPfMaC0yPeiMRUp9rsXxFtEmw7mUVkJK-DAtffjKjhI,3597
|
5
|
+
dtools_circular_array-3.14.0.dist-info/RECORD,,
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# Copyright 2023-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
|
-
"""### Developer Tools - Circular Array Data Structure
|
16
|
-
|
17
|
-
Package for an indexable, sliceable, auto-resizing circular array
|
18
|
-
data structure with amortized O(1) pushes and pops either end.
|
19
|
-
|
20
|
-
Circular array data structure.
|
21
|
-
|
22
|
-
- *module* dtools.circular_array.ca
|
23
|
-
- *class* dtools.circular_array.ca.CA
|
24
|
-
- initializer takes up to 1 iterable
|
25
|
-
- *function* dtools.circular_array.ca.ca
|
26
|
-
- constructs a `CA` from a variable number of arguments
|
27
|
-
|
28
|
-
"""
|
29
|
-
|
30
|
-
__author__ = 'Geoffrey R. Scheller'
|
31
|
-
__copyright__ = 'Copyright (c) 2023-2025 Geoffrey R. Scheller'
|
32
|
-
__license__ = 'Apache License 2.0'
|
dtools/circular_array/py.typed
DELETED
File without changes
|
@@ -1,7 +0,0 @@
|
|
1
|
-
dtools/circular_array/__init__.py,sha256=T_Jqa8AzDhow6q5O6A_FP5kCHBohEYJYSpo5xcsfTuU,1168
|
2
|
-
dtools/circular_array/ca.py,sha256=xSvYBPAFAJU_KbHAjmSIFAt3Pq9YkVVojo0BIoxIZPY,15918
|
3
|
-
dtools/circular_array/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
-
dtools_circular_array-3.13.0.dist-info/licenses/LICENSE,sha256=csqbZRvA3Nyuav1aszWvswE8CZtaKr-hMjjjcKqms7w,10774
|
5
|
-
dtools_circular_array-3.13.0.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
6
|
-
dtools_circular_array-3.13.0.dist-info/METADATA,sha256=NRnV41SCn3OKLWHgud6_WpQg_dr9WGbeXraJ6CkzAZg,3448
|
7
|
-
dtools_circular_array-3.13.0.dist-info/RECORD,,
|
File without changes
|
{dtools_circular_array-3.13.0.dist-info → dtools_circular_array-3.14.0.dist-info}/licenses/LICENSE
RENAMED
File without changes
|