Skip to content

Commit 4658842

Browse files
committed
Update views, bump dependencies.
1 parent afd2971 commit 4658842

File tree

6 files changed

+86
-51
lines changed

6 files changed

+86
-51
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Or by directly specifying it in the configuration like so:
4848

4949
```toml
5050
[tool.poetry.dependencies]
51-
iters = "^0.15.0"
51+
iters = "^0.16.0"
5252
```
5353

5454
Alternatively, you can add it directly from the source:

iters/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
__title__ = "iters"
1212
__author__ = "nekitdev"
1313
__license__ = "MIT"
14-
__version__ = "0.15.0"
14+
__version__ = "0.16.0"
1515

1616
from iters.async_iters import (
1717
AsyncIter,

iters/iters.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1101,7 +1101,17 @@ def create_zip_longest(
11011101
__iterable_e: Iterable[E],
11021102
__iterable_f: Iterable[F],
11031103
__iterable_g: Iterable[G],
1104-
) -> Iter[Tuple[Option[A], Option[B], Option[C], Option[D], Option[E], Option[F], Option[G],]]:
1104+
) -> Iter[
1105+
Tuple[
1106+
Option[A],
1107+
Option[B],
1108+
Option[C],
1109+
Option[D],
1110+
Option[E],
1111+
Option[F],
1112+
Option[G],
1113+
]
1114+
]:
11051115
...
11061116

11071117
@overload
@@ -2626,7 +2636,17 @@ def apply_zip_longest(
26262636
__iterable_d: Iterable[D],
26272637
__iterable_e: Iterable[E],
26282638
__iterable_f: Iterable[F],
2629-
) -> Iter[Tuple[Option[T], Option[A], Option[B], Option[C], Option[D], Option[E], Option[F],]]:
2639+
) -> Iter[
2640+
Tuple[
2641+
Option[T],
2642+
Option[A],
2643+
Option[B],
2644+
Option[C],
2645+
Option[D],
2646+
Option[E],
2647+
Option[F],
2648+
]
2649+
]:
26302650
...
26312651

26322652
@overload

iters/mapping_view.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from typing import Any, Iterator, Mapping, TypeVar, final
2+
3+
from attrs import frozen
4+
from typing_extensions import Self
5+
from wraps import wrap_option
6+
7+
__all__ = ("MappingView", "mapping_view")
8+
9+
K = TypeVar("K")
10+
V = TypeVar("V")
11+
12+
13+
@final
14+
@frozen()
15+
class MappingView(Mapping[K, V]):
16+
"""Represents view over mappings."""
17+
18+
mapping: Mapping[K, V]
19+
"""The mapping to view."""
20+
21+
def __iter__(self) -> Iterator[K]:
22+
yield from self.mapping
23+
24+
def __getitem__(self, key: K) -> V:
25+
return self.mapping[key]
26+
27+
def __contains__(self, key: Any) -> bool:
28+
return key in self.mapping
29+
30+
def __len__(self) -> int:
31+
return len(self.mapping)
32+
33+
@wrap_option
34+
def get_option(self, key: K) -> V:
35+
return self[key]
36+
37+
def copy(self) -> Self:
38+
return type(self)(self)
39+
40+
41+
mapping_view = MappingView

iters/sequence_view.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
__all__ = ("SequenceView", "sequence_view")
1010

1111
T = TypeVar("T")
12-
U = TypeVar("U")
1312

1413

1514
@final
@@ -18,11 +17,7 @@ class SequenceView(Sequence[T]):
1817
"""Represents views over sequences."""
1918

2019
sequence: Sequence[T]
21-
"""The sequence to view into."""
22-
23-
@classmethod
24-
def create(cls, sequence: Sequence[U]) -> SequenceView[U]:
25-
return cls(sequence) # type: ignore
20+
"""The sequence to view."""
2621

2722
@overload
2823
def __getitem__(self, index: int) -> T:
@@ -34,7 +29,7 @@ def __getitem__(self, index: slice) -> SequenceView[T]:
3429

3530
def __getitem__(self, index: Union[int, slice]) -> Union[T, SequenceView[T]]:
3631
if is_slice(index):
37-
return self.create(self.sequence[index])
32+
return type(self)(self.sequence[index])
3833

3934
return self.sequence[index] # type: ignore
4035

pyproject.toml

Lines changed: 19 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "iters"
3-
version = "0.15.0"
3+
version = "0.16.0"
44
description = "Composable external iteration."
55
authors = ["nekitdev"]
66
license = "MIT"
@@ -31,74 +31,53 @@ include = "iters"
3131
[tool.poetry.dependencies]
3232
python = ">= 3.8"
3333

34-
typing-aliases = ">= 1.2.0"
35-
typing-extensions = ">= 4.8.0"
34+
typing-aliases = "^1.4.1"
35+
typing-extensions = "^4.9.0"
3636

37-
named = ">= 1.3.0"
38-
orderings = ">= 1.1.0"
37+
named = "^1.3.0"
38+
orderings = "^1.1.0"
3939

40-
solus = ">= 1.1.0"
40+
solus = "^1.1.0"
4141

42-
async-extensions = ">= 1.4.1"
43-
mixed-methods = ">= 1.0.2"
44-
45-
[tool.poetry.group.format]
46-
optional = true
42+
async-extensions = "^1.4.1"
43+
mixed-methods = "^1.0.2"
4744

4845
[tool.poetry.group.format.dependencies]
49-
black = "23.11.0"
50-
flake8-pyproject = "1.2.3"
51-
52-
[tool.poetry.group.format.dependencies.flake8]
53-
version = "6.1.0"
54-
python = ">= 3.8.1"
55-
56-
[tool.poetry.group.format.dependencies.isort]
57-
version = "5.12.0"
58-
59-
[tool.poetry.group.check]
60-
optional = true
46+
ruff = "0.1.11"
6147

6248
[tool.poetry.group.check.dependencies]
63-
mypy = "1.7.1"
64-
65-
[tool.poetry.group.test]
66-
optional = true
49+
mypy = "1.8.0"
6750

6851
[tool.poetry.group.test.dependencies]
69-
pytest = "7.4.3"
52+
coverage = "7.4.0"
53+
pytest = "7.4.4"
7054
pytest-cov = "4.1.0"
7155

7256
[tool.poetry.group.docs]
7357
optional = true
7458

7559
[tool.poetry.group.docs.dependencies]
7660
mkdocs = "1.5.3"
77-
mkdocs-material = "9.4.11"
61+
mkdocs-material = "9.5.3"
7862

7963
[tool.poetry.group.docs.dependencies.mkdocstrings]
8064
version = "0.24.0"
8165
extras = ["python"]
8266

83-
[tool.poetry.group.dev]
67+
[tool.poetry.group.release]
8468
optional = true
8569

86-
[tool.poetry.group.dev.dependencies]
70+
[tool.poetry.group.release.dependencies]
8771
changelogging = "1.3.0"
8872

89-
[tool.black]
90-
line_length = 100
73+
[tool.ruff]
74+
line-length = 100
9175

92-
[tool.flake8]
93-
max_line_length = 100
76+
[tool.ruff.lint]
9477
ignore = [
9578
"E402", # module level import not at top of file (circular import fixes)
9679
]
9780

98-
[tool.isort]
99-
line_length = 100
100-
profile = "black"
101-
10281
[tool.pytest.ini_options]
10382
addopts = "--cov iters"
10483
testpaths = ["tests"]
@@ -127,7 +106,7 @@ strict = true
127106

128107
[tool.changelogging]
129108
name = "iters"
130-
version = "0.15.0"
109+
version = "0.16.0"
131110
url = "https://github.com/nekitdev/iters"
132111
directory = "changes"
133112
output = "CHANGELOG.md"

0 commit comments

Comments
 (0)