Skip to content

Commit ff1a0a9

Browse files
authored
Merge pull request #219 from sarugaku/feature/resolve-from-wheels
2 parents 8d7d7f5 + 16735b5 commit ff1a0a9

34 files changed

+11242
-3
lines changed

news/219.feature.rst

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Added ``requirementslib.models.metadata`` module with ``get_package``, ``get_package_version``, and ``get_package_from_requirement`` interfaces.

setup.cfg

+2-2
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,12 @@ markers =
125125
atomic = true
126126
not_skip = __init__.py
127127
line_length = 90
128-
indent = ' '
129128
multi_line_output = 3
130-
known_third_party = appdirs,attr,cached_property,chardet,distlib,environ,hypothesis,invoke,orderedmultidict,packaging,parver,pep517,pip_shims,plette,pyparsing,pytest,requests,setuptools,six,tomlkit,towncrier,urllib3,vistir
129+
known_third_party = appdirs,attr,cached_property,chardet,dateutil,distlib,environ,hypothesis,invoke,orderedmultidict,packaging,parver,pep517,pip_shims,plette,pyparsing,pytest,requests,setuptools,six,tomlkit,towncrier,urllib3,vistir
131130
known_first_party = requirementslib,tests
132131
combine_as_imports=True
133132
include_trailing_comma = True
133+
use_parentheses=True
134134
force_grid_wrap=0
135135

136136
[flake8]

src/requirementslib/models/markers.py

+23
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ def _get_specs(specset):
197197
return sorted(result, key=operator.itemgetter(1))
198198

199199

200+
# TODO: Rename this to something meaningful
200201
def _group_by_op(specs):
201202
# type: (Union[Set[Specifier], SpecifierSet]) -> Iterator
202203
specs = [_get_specs(x) for x in list(specs)]
@@ -208,6 +209,7 @@ def _group_by_op(specs):
208209
return grouping
209210

210211

212+
# TODO: rename this to something meaningful
211213
def normalize_specifier_set(specs):
212214
# type: (Union[str, SpecifierSet]) -> Optional[Set[Specifier]]
213215
"""Given a specifier set, a string, or an iterable, normalize the specifiers
@@ -238,6 +240,8 @@ def normalize_specifier_set(specs):
238240
return normalize_specifier_set(SpecifierSet(",".join(spec_list)))
239241

240242

243+
# TODO: Check if this is used by anything public otherwise make it private
244+
# And rename it to something meaningful
241245
def get_sorted_version_string(version_set):
242246
# type: (Set[AnyStr]) -> AnyStr
243247
version_list = sorted(
@@ -247,6 +251,9 @@ def get_sorted_version_string(version_set):
247251
return version
248252

249253

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
250257
@lru_cache(maxsize=1024)
251258
def cleanup_pyspecs(specs, joiner="or"):
252259
specs = normalize_specifier_set(specs)
@@ -292,6 +299,7 @@ def cleanup_pyspecs(specs, joiner="or"):
292299
return sorted([(k[0], v) for k, v in results.items()], key=operator.itemgetter(1))
293300

294301

302+
# TODO: Rename this to something meaningful
295303
@lru_cache(maxsize=1024)
296304
def fix_version_tuple(version_tuple):
297305
# type: (Tuple[AnyStr, AnyStr]) -> Tuple[AnyStr, AnyStr]
@@ -306,6 +314,7 @@ def fix_version_tuple(version_tuple):
306314
return (op, version)
307315

308316

317+
# TODO: Rename this to something meaningful, deprecate it (See prior function)
309318
@lru_cache(maxsize=128)
310319
def get_versions(specset, group_by_operator=True):
311320
# type: (Union[Set[Specifier], SpecifierSet], bool) -> List[Tuple[STRING_TYPE, STRING_TYPE]]
@@ -594,6 +603,7 @@ def get_specset(marker_list):
594603
return specifiers
595604

596605

606+
# TODO: Refactor this (reduce complexity)
597607
def parse_marker_dict(marker_dict):
598608
op = marker_dict["op"]
599609
lhs = marker_dict["lhs"]
@@ -710,3 +720,16 @@ def marker_from_specifier(spec):
710720
marker_segments.append(format_pyversion(marker_segment))
711721
marker_str = " and ".join(marker_segments).replace('"', "'")
712722
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

Comments
 (0)