MCPcopy Create free account
hub / github.com/StackStorm/st2 / write_requirements

Function write_requirements

scripts/fixate_requirements.py:194–275  ·  view source on GitHub ↗

Write resulting requirements taking versions from the fixed_requirements.

(
    sources=None, fixed_requirements=None, output_file=None, skip=None
)

Source from the content-addressed store, hash-verified

192
193
194def write_requirements(
195 sources=None, fixed_requirements=None, output_file=None, skip=None
196):
197 """
198 Write resulting requirements taking versions from the fixed_requirements.
199 """
200 skip = skip or []
201
202 requirements = merge_source_requirements(sources)
203
204 fixedreq_hash = load_fixed_requirements(fixed_requirements)
205
206 lines_to_write = []
207 links = set()
208 for req in requirements:
209 if hasattr(req, "requirement"):
210 parsedreq = parse_req_from_line(req.requirement, req.line_source)
211 project_name = parsedreq.requirement.name
212 linkreq = parsedreq
213 else:
214 project_name = req.name
215 linkreq = req
216 if project_name in skip:
217 continue
218
219 # we don't have any idea how to process links, so just add them
220 if linkreq.link and linkreq.link not in links:
221 links.add(linkreq.link)
222 if hasattr(req, "req") and req.req and str(req.req).count("@") == 2:
223 # PEP 440 direct reference
224 rline = str(linkreq.req)
225 # Also write out environment markers
226 if linkreq.markers:
227 rline += " ; {}".format(str(linkreq.markers))
228 else:
229 rline = str(linkreq.link)
230
231 if (hasattr(req, "is_editable") and req.is_editable) or (
232 hasattr(req, "editable") and req.editable
233 ):
234 rline = "-e %s" % (rline)
235 elif hasattr(req, "requirement") and req.requirement:
236 project = parsedreq.requirement.name
237 req_obj = fixedreq_hash.get(project, req)
238
239 rline = str(req_obj.requirement)
240
241 # Markers are included in req_obj.requirement, so no
242 # special processing required
243 elif hasattr(req, "req") and req.req:
244 project = req.name
245 req_obj = fixedreq_hash.get(project, req)
246
247 rline = str(req_obj.req)
248 # Also write out environment markers
249 if req_obj.markers:
250 rline += " ; {}".format(str(req_obj.markers))
251

Callers 2

Calls 7

writeMethod · 0.80
load_fixed_requirementsFunction · 0.70
addMethod · 0.45
countMethod · 0.45
formatMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected