MCPcopy Create free account
hub / github.com/modelscope/ms-agent / parse_requirements

Function parse_requirements

setup.py:26–120  ·  view source on GitHub ↗

Parse the package dependencies listed in a requirements file but strips specific versioning information. Args: fname (str): path to requirements file with_version (bool, default=False): if True include version specs Returns: List[str]: list of requirements

(fname='requirements.txt', with_version=True)

Source from the content-addressed store, hash-verified

24
25
26def parse_requirements(fname='requirements.txt', with_version=True):
27 """
28 Parse the package dependencies listed in a requirements file but strips
29 specific versioning information.
30
31 Args:
32 fname (str): path to requirements file
33 with_version (bool, default=False): if True include version specs
34
35 Returns:
36 List[str]: list of requirements items
37
38 CommandLine:
39 python -c "import setup; print(setup.parse_requirements())"
40 """
41 import re
42 import sys
43 from os.path import exists
44 require_fpath = fname
45
46 def parse_line(line):
47 """
48 Parse information from a line in a requirements text file
49 """
50 if line.startswith('-r '):
51 # Allow specifying requirements in other files
52 target = line.split(' ')[1]
53 relative_base = os.path.dirname(fname)
54 absolute_target = os.path.join(relative_base, target)
55 for info in parse_require_file(absolute_target):
56 yield info
57 else:
58 info = {'line': line}
59 if line.startswith('-e '):
60 info['package'] = line.split('#egg=')[1]
61 else:
62 # Remove versioning from the package
63 pat = '(' + '|'.join(['>=', '==', '>']) + ')'
64 parts = re.split(pat, line, maxsplit=1)
65 parts = [p.strip() for p in parts]
66
67 info['package'] = parts[0]
68 if len(parts) > 1:
69 op, rest = parts[1:]
70 if ';' in rest:
71 # Handle platform specific dependencies
72 # http://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-platform-specific-dependencies
73 version, platform_deps = map(str.strip,
74 rest.split(';'))
75 info['platform_deps'] = platform_deps
76 else:
77 version = rest # NOQA
78 info['version'] = (op, version)
79 yield info
80
81 def parse_require_file(fpath):
82 with open(fpath, 'r', encoding='utf-8') as f:
83 for line in f.readlines():

Callers 1

setup.pyFile · 0.85

Calls 1

gen_packages_itemsFunction · 0.85

Tested by

no test coverage detected