Skip to content

Commit c335b76

Browse files
radoeringabn
authored andcommitted
Replace MarkerTypes by BaseMarker in type hints
1 parent c5f4cda commit c335b76

File tree

3 files changed

+59
-61
lines changed

3 files changed

+59
-61
lines changed

src/poetry/core/factory.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from poetry.core.packages.types import DependencyTypes
1919
from poetry.core.poetry import Poetry
2020
from poetry.core.spdx.license import License
21-
from poetry.core.version.markers import MarkerTypes
21+
from poetry.core.version.markers import BaseMarker
2222

2323
logger = logging.getLogger(__name__)
2424

@@ -347,7 +347,7 @@ def create_dependency(
347347
)
348348

349349
if not markers:
350-
marker: "MarkerTypes" = AnyMarker()
350+
marker: "BaseMarker" = AnyMarker()
351351
if python_versions:
352352
marker = marker.intersect(
353353
parse_marker(

src/poetry/core/version/markers.py

Lines changed: 55 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
from typing import TYPE_CHECKING
44
from typing import Any
55
from typing import Dict
6-
from typing import Iterator
6+
from typing import Iterable
77
from typing import List
8+
from typing import Type
89
from typing import Union
910

1011
from poetry.core.version.grammars import GRAMMAR_PEP_508_MARKERS
@@ -16,10 +17,6 @@
1617

1718
from poetry.core.semver.helpers import VersionTypes
1819

19-
MarkerTypes = Union[
20-
"AnyMarker", "EmptyMarker", "SingleMarker", "MultiMarker", "MarkerUnion"
21-
]
22-
2320

2421
class InvalidMarker(ValueError):
2522
"""
@@ -88,10 +85,10 @@ def __repr__(self) -> str:
8885

8986

9087
class AnyMarker(BaseMarker):
91-
def intersect(self, other: MarkerTypes) -> MarkerTypes:
88+
def intersect(self, other: BaseMarker) -> BaseMarker:
9289
return other
9390

94-
def union(self, other: MarkerTypes) -> MarkerTypes:
91+
def union(self, other: BaseMarker) -> BaseMarker:
9592
return self
9693

9794
def is_any(self) -> bool:
@@ -103,13 +100,13 @@ def is_empty(self) -> bool:
103100
def validate(self, environment: Dict[str, Any]) -> bool:
104101
return True
105102

106-
def without_extras(self) -> MarkerTypes:
103+
def without_extras(self) -> BaseMarker:
107104
return self
108105

109-
def exclude(self, marker_name: str) -> MarkerTypes:
106+
def exclude(self, marker_name: str) -> BaseMarker:
110107
return self
111108

112-
def only(self, *marker_names: str) -> MarkerTypes:
109+
def only(self, *marker_names: str) -> BaseMarker:
113110
return self
114111

115112
def invert(self) -> "EmptyMarker":
@@ -132,10 +129,10 @@ def __eq__(self, other: object) -> bool:
132129

133130

134131
class EmptyMarker(BaseMarker):
135-
def intersect(self, other: MarkerTypes) -> MarkerTypes:
132+
def intersect(self, other: BaseMarker) -> BaseMarker:
136133
return self
137134

138-
def union(self, other: MarkerTypes) -> MarkerTypes:
135+
def union(self, other: BaseMarker) -> BaseMarker:
139136
return other
140137

141138
def is_any(self) -> bool:
@@ -258,13 +255,13 @@ def operator(self) -> str:
258255
def value(self) -> str:
259256
return self._value
260257

261-
def intersect(self, other: MarkerTypes) -> MarkerTypes:
258+
def intersect(self, other: BaseMarker) -> BaseMarker:
262259
if isinstance(other, SingleMarker):
263260
return MultiMarker.of(self, other)
264261

265262
return other.intersect(self)
266263

267-
def union(self, other: MarkerTypes) -> MarkerTypes:
264+
def union(self, other: BaseMarker) -> BaseMarker:
268265
if isinstance(other, SingleMarker):
269266
if self == other:
270267
return self
@@ -285,10 +282,10 @@ def validate(self, environment: Dict[str, Any]) -> bool:
285282

286283
return self._constraint.allows(self._parser(environment[self._name]))
287284

288-
def without_extras(self) -> MarkerTypes:
285+
def without_extras(self) -> BaseMarker:
289286
return self.exclude("extra")
290287

291-
def exclude(self, marker_name: str) -> MarkerTypes:
288+
def exclude(self, marker_name: str) -> BaseMarker:
292289
if self.name == marker_name:
293290
return AnyMarker()
294291

@@ -300,7 +297,7 @@ def only(self, *marker_names: str) -> Union["SingleMarker", EmptyMarker]:
300297

301298
return self
302299

303-
def invert(self) -> MarkerTypes:
300+
def invert(self) -> BaseMarker:
304301
if self._operator in ("===", "=="):
305302
operator = "!="
306303
elif self._operator == "!=":
@@ -361,8 +358,9 @@ def __str__(self) -> str:
361358

362359

363360
def _flatten_markers(
364-
markers: Iterator[Union["MarkerUnion", "MultiMarker"]], flatten_class: Any
365-
) -> List[MarkerTypes]:
361+
markers: Iterable[BaseMarker],
362+
flatten_class: Type[Union["MarkerUnion", "MultiMarker"]],
363+
) -> List[BaseMarker]:
366364
flattened = []
367365

368366
for marker in markers:
@@ -375,23 +373,23 @@ def _flatten_markers(
375373

376374

377375
class MultiMarker(BaseMarker):
378-
def __init__(self, *markers: MarkerTypes) -> None:
376+
def __init__(self, *markers: BaseMarker) -> None:
379377
self._markers = []
380378

381-
markers = _flatten_markers(markers, MultiMarker)
379+
flattened_markers = _flatten_markers(markers, MultiMarker)
382380

383-
for m in markers:
381+
for m in flattened_markers:
384382
self._markers.append(m)
385383

386384
@classmethod
387-
def of(cls, *markers: MarkerTypes) -> MarkerTypes:
385+
def of(cls, *markers: BaseMarker) -> BaseMarker:
388386
new_markers = _flatten_markers(markers, MultiMarker)
389-
markers = []
387+
old_markers: List[BaseMarker] = []
390388

391-
while markers != new_markers:
392-
markers = new_markers
389+
while old_markers != new_markers:
390+
old_markers = new_markers
393391
new_markers = []
394-
for marker in markers:
392+
for marker in old_markers:
395393
if marker in new_markers:
396394
continue
397395

@@ -446,10 +444,10 @@ def of(cls, *markers: MarkerTypes) -> MarkerTypes:
446444
return MultiMarker(*new_markers)
447445

448446
@property
449-
def markers(self) -> List[MarkerTypes]:
447+
def markers(self) -> List[BaseMarker]:
450448
return self._markers
451449

452-
def intersect(self, other: MarkerTypes) -> MarkerTypes:
450+
def intersect(self, other: BaseMarker) -> BaseMarker:
453451
if other.is_any():
454452
return self
455453

@@ -460,7 +458,7 @@ def intersect(self, other: MarkerTypes) -> MarkerTypes:
460458

461459
return MultiMarker.of(*new_markers)
462460

463-
def union(self, other: MarkerTypes) -> MarkerTypes:
461+
def union(self, other: BaseMarker) -> BaseMarker:
464462
if other in self._markers:
465463
return other
466464

@@ -472,10 +470,10 @@ def union(self, other: MarkerTypes) -> MarkerTypes:
472470
def validate(self, environment: Dict[str, Any]) -> bool:
473471
return all(m.validate(environment) for m in self._markers)
474472

475-
def without_extras(self) -> MarkerTypes:
473+
def without_extras(self) -> BaseMarker:
476474
return self.exclude("extra")
477475

478-
def exclude(self, marker_name: str) -> MarkerTypes:
476+
def exclude(self, marker_name: str) -> BaseMarker:
479477
new_markers = []
480478

481479
for m in self._markers:
@@ -490,7 +488,7 @@ def exclude(self, marker_name: str) -> MarkerTypes:
490488

491489
return self.of(*new_markers)
492490

493-
def only(self, *marker_names: str) -> MarkerTypes:
491+
def only(self, *marker_names: str) -> BaseMarker:
494492
new_markers = []
495493

496494
for m in self._markers:
@@ -505,7 +503,7 @@ def only(self, *marker_names: str) -> MarkerTypes:
505503

506504
return self.of(*new_markers)
507505

508-
def invert(self) -> MarkerTypes:
506+
def invert(self) -> BaseMarker:
509507
markers = [marker.invert() for marker in self._markers]
510508

511509
return MarkerUnion.of(*markers)
@@ -535,28 +533,28 @@ def __str__(self) -> str:
535533

536534

537535
class MarkerUnion(BaseMarker):
538-
def __init__(self, *markers: MarkerTypes) -> None:
536+
def __init__(self, *markers: BaseMarker) -> None:
539537
self._markers = list(markers)
540538

541539
@property
542-
def markers(self) -> List[MarkerTypes]:
540+
def markers(self) -> List[BaseMarker]:
543541
return self._markers
544542

545543
@classmethod
546-
def of(cls, *markers: BaseMarker) -> MarkerTypes:
544+
def of(cls, *markers: BaseMarker) -> BaseMarker:
547545
flattened_markers = _flatten_markers(markers, MarkerUnion)
548546

549-
markers = []
547+
new_markers: List[BaseMarker] = []
550548
for marker in flattened_markers:
551-
if marker in markers:
549+
if marker in new_markers:
552550
continue
553551

554552
if (
555553
isinstance(marker, SingleMarker)
556554
and marker.name in PYTHON_VERSION_MARKERS
557555
):
558556
included = False
559-
for i, mark in enumerate(markers):
557+
for i, mark in enumerate(new_markers):
560558
if (
561559
not isinstance(mark, SingleMarker)
562560
or mark.name not in PYTHON_VERSION_MARKERS
@@ -568,7 +566,7 @@ def of(cls, *markers: BaseMarker) -> MarkerTypes:
568566
included = True
569567
break
570568
elif union == marker.constraint:
571-
markers[i] = marker
569+
new_markers[i] = marker
572570
included = True
573571
break
574572
elif union.is_any():
@@ -577,26 +575,26 @@ def of(cls, *markers: BaseMarker) -> MarkerTypes:
577575
if included:
578576
continue
579577

580-
markers.append(marker)
578+
new_markers.append(marker)
581579

582-
if any(m.is_any() for m in markers):
580+
if any(m.is_any() for m in new_markers):
583581
return AnyMarker()
584582

585-
if not markers:
583+
if not new_markers:
586584
return EmptyMarker()
587585

588-
if len(markers) == 1:
589-
return markers[0]
586+
if len(new_markers) == 1:
587+
return new_markers[0]
590588

591-
return MarkerUnion(*markers)
589+
return MarkerUnion(*new_markers)
592590

593-
def append(self, marker: MarkerTypes) -> None:
591+
def append(self, marker: BaseMarker) -> None:
594592
if marker in self._markers:
595593
return
596594

597595
self._markers.append(marker)
598596

599-
def intersect(self, other: MarkerTypes) -> MarkerTypes:
597+
def intersect(self, other: BaseMarker) -> BaseMarker:
600598
if other.is_any():
601599
return self
602600

@@ -620,7 +618,7 @@ def intersect(self, other: MarkerTypes) -> MarkerTypes:
620618

621619
return MarkerUnion.of(*new_markers)
622620

623-
def union(self, other: MarkerTypes) -> MarkerTypes:
621+
def union(self, other: BaseMarker) -> BaseMarker:
624622
if other.is_any():
625623
return other
626624

@@ -634,10 +632,10 @@ def union(self, other: MarkerTypes) -> MarkerTypes:
634632
def validate(self, environment: Dict[str, Any]) -> bool:
635633
return any(m.validate(environment) for m in self._markers)
636634

637-
def without_extras(self) -> MarkerTypes:
635+
def without_extras(self) -> BaseMarker:
638636
return self.exclude("extra")
639637

640-
def exclude(self, marker_name: str) -> MarkerTypes:
638+
def exclude(self, marker_name: str) -> BaseMarker:
641639
new_markers = []
642640

643641
for m in self._markers:
@@ -652,7 +650,7 @@ def exclude(self, marker_name: str) -> MarkerTypes:
652650

653651
return self.of(*new_markers)
654652

655-
def only(self, *marker_names: str) -> MarkerTypes:
653+
def only(self, *marker_names: str) -> BaseMarker:
656654
new_markers = []
657655

658656
for m in self._markers:
@@ -667,7 +665,7 @@ def only(self, *marker_names: str) -> MarkerTypes:
667665

668666
return self.of(*new_markers)
669667

670-
def invert(self) -> MarkerTypes:
668+
def invert(self) -> BaseMarker:
671669
markers = [marker.invert() for marker in self._markers]
672670

673671
return MultiMarker.of(*markers)
@@ -697,7 +695,7 @@ def is_empty(self) -> bool:
697695
return all(m.is_empty() for m in self._markers)
698696

699697

700-
def parse_marker(marker: str) -> MarkerTypes:
698+
def parse_marker(marker: str) -> BaseMarker:
701699
if marker == "<empty>":
702700
return EmptyMarker()
703701

@@ -711,10 +709,10 @@ def parse_marker(marker: str) -> MarkerTypes:
711709
return markers
712710

713711

714-
def _compact_markers(tree_elements: "Tree", tree_prefix: str = "") -> MarkerTypes:
712+
def _compact_markers(tree_elements: "Tree", tree_prefix: str = "") -> BaseMarker:
715713
from lark import Token
716714

717-
groups = [MultiMarker()]
715+
groups: List[BaseMarker] = [MultiMarker()]
718716
for token in tree_elements:
719717
if isinstance(token, Token):
720718
if token.type == f"{tree_prefix}BOOL_OP" and token.value == "or":

tests/version/test_requirements.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414

1515
if TYPE_CHECKING:
16-
from poetry.core.version.markers import MarkerTypes
16+
from poetry.core.version.markers import BaseMarker
1717

1818

1919
def assert_requirement(
@@ -22,7 +22,7 @@ def assert_requirement(
2222
url: Optional[str] = None,
2323
extras: Optional[List[str]] = None,
2424
constraint: str = "*",
25-
marker: Optional["MarkerTypes"] = None,
25+
marker: Optional["BaseMarker"] = None,
2626
):
2727
if extras is None:
2828
extras = []

0 commit comments

Comments
 (0)