@@ -197,6 +197,7 @@ def _get_specs(specset):
197
197
return sorted (result , key = operator .itemgetter (1 ))
198
198
199
199
200
+ # TODO: Rename this to something meaningful
200
201
def _group_by_op (specs ):
201
202
# type: (Union[Set[Specifier], SpecifierSet]) -> Iterator
202
203
specs = [_get_specs (x ) for x in list (specs )]
@@ -208,6 +209,7 @@ def _group_by_op(specs):
208
209
return grouping
209
210
210
211
212
+ # TODO: rename this to something meaningful
211
213
def normalize_specifier_set (specs ):
212
214
# type: (Union[str, SpecifierSet]) -> Optional[Set[Specifier]]
213
215
"""Given a specifier set, a string, or an iterable, normalize the specifiers
@@ -238,6 +240,8 @@ def normalize_specifier_set(specs):
238
240
return normalize_specifier_set (SpecifierSet ("," .join (spec_list )))
239
241
240
242
243
+ # TODO: Check if this is used by anything public otherwise make it private
244
+ # And rename it to something meaningful
241
245
def get_sorted_version_string (version_set ):
242
246
# type: (Set[AnyStr]) -> AnyStr
243
247
version_list = sorted (
@@ -247,6 +251,9 @@ def get_sorted_version_string(version_set):
247
251
return version
248
252
249
253
254
+ # TODO: Rename this to something meaningful
255
+ # TODO: Add a deprecation decorator and deprecate this -- i'm sure it's used
256
+ # in other libraries
250
257
@lru_cache (maxsize = 1024 )
251
258
def cleanup_pyspecs (specs , joiner = "or" ):
252
259
specs = normalize_specifier_set (specs )
@@ -292,6 +299,7 @@ def cleanup_pyspecs(specs, joiner="or"):
292
299
return sorted ([(k [0 ], v ) for k , v in results .items ()], key = operator .itemgetter (1 ))
293
300
294
301
302
+ # TODO: Rename this to something meaningful
295
303
@lru_cache (maxsize = 1024 )
296
304
def fix_version_tuple (version_tuple ):
297
305
# type: (Tuple[AnyStr, AnyStr]) -> Tuple[AnyStr, AnyStr]
@@ -306,6 +314,7 @@ def fix_version_tuple(version_tuple):
306
314
return (op , version )
307
315
308
316
317
+ # TODO: Rename this to something meaningful, deprecate it (See prior function)
309
318
@lru_cache (maxsize = 128 )
310
319
def get_versions (specset , group_by_operator = True ):
311
320
# type: (Union[Set[Specifier], SpecifierSet], bool) -> List[Tuple[STRING_TYPE, STRING_TYPE]]
@@ -594,6 +603,7 @@ def get_specset(marker_list):
594
603
return specifiers
595
604
596
605
606
+ # TODO: Refactor this (reduce complexity)
597
607
def parse_marker_dict (marker_dict ):
598
608
op = marker_dict ["op" ]
599
609
lhs = marker_dict ["lhs" ]
@@ -710,3 +720,16 @@ def marker_from_specifier(spec):
710
720
marker_segments .append (format_pyversion (marker_segment ))
711
721
marker_str = " and " .join (marker_segments ).replace ('"' , "'" )
712
722
return Marker (marker_str )
723
+
724
+
725
+ def merge_markers (m1 , m2 ):
726
+ # type: (Marker, Marker) -> Optional[Marker]
727
+ if not all ((m1 , m2 )):
728
+ return next (iter (v for v in (m1 , m2 ) if v ), None )
729
+ m1 = _ensure_marker (m1 )
730
+ m2 = _ensure_marker (m2 )
731
+ _markers = [] # type: List[Marker]
732
+ for marker in (m1 , m2 ):
733
+ _markers .append (str (marker ))
734
+ marker_str = " and " .join ([normalize_marker_str (m ) for m in _markers if m ])
735
+ return _ensure_marker (normalize_marker_str (marker_str ))
0 commit comments