MCPcopy Create free account
hub / github.com/SegmentationBLWX/cssegmentation / parserequirements

Function parserequirements

setup.py:20–71  ·  view source on GitHub ↗
(fname='requirements.txt', with_version=True)

Source from the content-addressed store, hash-verified

18
19'''parserequirements'''
20def parserequirements(fname='requirements.txt', with_version=True):
21 require_fpath = fname
22 '''parseline'''
23 def parseline(line):
24 if line.startswith('-r '):
25 target = line.split(' ')[1]
26 for info in parserequirefile(target):
27 yield info
28 else:
29 info = {'line': line}
30 if line.startswith('-e '):
31 info['package'] = line.split('#egg=')[1]
32 elif '@git+' in line:
33 info['package'] = line
34 else:
35 pat = '(' + '|'.join(['>=', '==', '>']) + ')'
36 parts = re.split(pat, line, maxsplit=1)
37 parts = [p.strip() for p in parts]
38 info['package'] = parts[0]
39 if len(parts) > 1:
40 op, rest = parts[1:]
41 if ';' in rest:
42 version, platform_deps = map(str.strip, rest.split(';'))
43 info['platform_deps'] = platform_deps
44 else:
45 version = rest
46 info['version'] = (op, version)
47 yield info
48 '''parserequirefile'''
49 def parserequirefile(fpath):
50 with open(fpath, 'r') as f:
51 for line in f.readlines():
52 line = line.strip()
53 if line and not line.startswith('#'):
54 for info in parseline(line):
55 yield info
56 '''genpackagesitems'''
57 def genpackagesitems():
58 if os.path.exists(require_fpath):
59 for info in parserequirefile(require_fpath):
60 parts = [info['package']]
61 if with_version and 'version' in info:
62 parts.extend(info['version'])
63 if not sys.version.startswith('3.4'):
64 platform_deps = info.get('platform_deps')
65 if platform_deps is not None:
66 parts.append(';' + platform_deps)
67 item = ''.join(parts)
68 yield item
69 # parse and return
70 packages = list(genpackagesitems())
71 return packages
72
73
74'''setup'''

Callers 1

setup.pyFile · 0.85

Calls 1

genpackagesitemsFunction · 0.85

Tested by

no test coverage detected