22# 2.0, and the BSD License. See the LICENSE file in the root of this repository
33# for complete details.
44
5+ from __future__ import annotations
6+
57import operator
68import os
79import platform
810import sys
9- from typing import Any , Callable , Dict , List , Optional , Tuple , Union
10-
11- from ._parser import (
12- MarkerAtom ,
13- MarkerList ,
14- Op ,
15- Value ,
16- Variable ,
17- )
18- from ._parser import (
19- parse_marker as _parse_marker ,
20- )
11+ from typing import Any , Callable
12+
13+ from ._parser import MarkerAtom , MarkerList , Op , Value , Variable
14+ from ._parser import parse_marker as _parse_marker
2115from ._tokenizer import ParserSyntaxError
2216from .specifiers import InvalidSpecifier , Specifier
2317from .utils import canonicalize_name
@@ -69,7 +63,7 @@ def _normalize_extra_values(results: Any) -> Any:
6963
7064
7165def _format_marker (
72- marker : Union [ List [ str ], MarkerAtom , str ] , first : Optional [ bool ] = True
66+ marker : list [ str ] | MarkerAtom | str , first : bool | None = True
7367) -> str :
7468 assert isinstance (marker , (list , tuple , str ))
7569
@@ -96,7 +90,7 @@ def _format_marker(
9690 return marker
9791
9892
99- _operators : Dict [str , Operator ] = {
93+ _operators : dict [str , Operator ] = {
10094 "in" : lambda lhs , rhs : lhs in rhs ,
10195 "not in" : lambda lhs , rhs : lhs not in rhs ,
10296 "<" : operator .lt ,
@@ -116,14 +110,14 @@ def _eval_op(lhs: str, op: Op, rhs: str) -> bool:
116110 else :
117111 return spec .contains (lhs , prereleases = True )
118112
119- oper : Optional [ Operator ] = _operators .get (op .serialize ())
113+ oper : Operator | None = _operators .get (op .serialize ())
120114 if oper is None :
121115 raise UndefinedComparison (f"Undefined { op !r} on { lhs !r} and { rhs !r} ." )
122116
123117 return oper (lhs , rhs )
124118
125119
126- def _normalize (* values : str , key : str ) -> Tuple [str , ...]:
120+ def _normalize (* values : str , key : str ) -> tuple [str , ...]:
127121 # PEP 685 – Comparison of extra names for optional distribution dependencies
128122 # https://peps.python.org/pep-0685/
129123 # > When comparing extra names, tools MUST normalize the names being
@@ -135,8 +129,8 @@ def _normalize(*values: str, key: str) -> Tuple[str, ...]:
135129 return values
136130
137131
138- def _evaluate_markers (markers : MarkerList , environment : Dict [str , str ]) -> bool :
139- groups : List [ List [bool ]] = [[]]
132+ def _evaluate_markers (markers : MarkerList , environment : dict [str , str ]) -> bool :
133+ groups : list [ list [bool ]] = [[]]
140134
141135 for marker in markers :
142136 assert isinstance (marker , (list , tuple , str ))
@@ -165,15 +159,15 @@ def _evaluate_markers(markers: MarkerList, environment: Dict[str, str]) -> bool:
165159 return any (all (item ) for item in groups )
166160
167161
168- def format_full_version (info : " sys._version_info" ) -> str :
162+ def format_full_version (info : sys ._version_info ) -> str :
169163 version = "{0.major}.{0.minor}.{0.micro}" .format (info )
170164 kind = info .releaselevel
171165 if kind != "final" :
172166 version += kind [0 ] + str (info .serial )
173167 return version
174168
175169
176- def default_environment () -> Dict [str , str ]:
170+ def default_environment () -> dict [str , str ]:
177171 iver = format_full_version (sys .implementation .version )
178172 implementation_name = sys .implementation .name
179173 return {
@@ -232,7 +226,7 @@ def __eq__(self, other: Any) -> bool:
232226
233227 return str (self ) == str (other )
234228
235- def evaluate (self , environment : Optional [ Dict [ str , str ]] = None ) -> bool :
229+ def evaluate (self , environment : dict [ str , str ] | None = None ) -> bool :
236230 """Evaluate a marker.
237231
238232 Return the boolean from evaluating the given marker against the
0 commit comments