MCPcopy Create free account
hub / github.com/aboutcode-org/scancode-toolkit / split_req

Function split_req

etc/scripts/utils_requirements.py:141–164  ·  view source on GitHub ↗

Return a three-tuple of (name, comparator, version) given a ``req`` requirement specifier string. Each segment may be empty. Spaces are removed. For example: >>> assert split_req("foo==1.2.3") == ("foo", "==", "1.2.3"), split_req("foo==1.2.3") >>> assert split_req("foo") == ("f

(req)

Source from the content-addressed store, hash-verified

139
140
141def split_req(req):
142 """
143 Return a three-tuple of (name, comparator, version) given a ``req``
144 requirement specifier string. Each segment may be empty. Spaces are removed.
145
146 For example:
147 >>> assert split_req("foo==1.2.3") == ("foo", "==", "1.2.3"), split_req("foo==1.2.3")
148 >>> assert split_req("foo") == ("foo", "", ""), split_req("foo")
149 >>> assert split_req("==1.2.3") == ("", "==", "1.2.3"), split_req("==1.2.3")
150 >>> assert split_req("foo >= 1.2.3 ") == ("foo", ">=", "1.2.3"), split_req("foo >= 1.2.3 ")
151 >>> assert split_req("foo>=1.2") == ("foo", ">=", "1.2"), split_req("foo>=1.2")
152 """
153 if not req:
154 raise ValueError("req is required")
155 # do not allow multiple constraints and tags
156 if ";" in req:
157 req = req.split(";")[0]
158 if any(c in req for c in ",:"):
159 raise Exception(f"complex requirements with : or ; not supported: {req}")
160 req = "".join(req.split())
161 if not any(c in req for c in comparators):
162 return req, "", ""
163 segments = version_splitter.split(req, maxsplit=1)
164 return tuple(segments)

Callers 1

Calls 2

splitMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected