MCPcopy Create free account
hub / github.com/nodejs/node / _parse_requirement_details

Function _parse_requirement_details

tools/gyp/pylib/packaging/_parser.py:88–136  ·  view source on GitHub ↗

requirement_details = AT URL (WS requirement_marker?)? | specifier WS? (requirement_marker)?

(
    tokenizer: Tokenizer,
)

Source from the content-addressed store, hash-verified

86
87
88def _parse_requirement_details(
89 tokenizer: Tokenizer,
90) -> Tuple[str, str, Optional[MarkerList]]:
91 """
92 requirement_details = AT URL (WS requirement_marker?)?
93 | specifier WS? (requirement_marker)?
94 """
95
96 specifier = ""
97 url = ""
98 marker = None
99
100 if tokenizer.check("AT"):
101 tokenizer.read()
102 tokenizer.consume("WS")
103
104 url_start = tokenizer.position
105 url = tokenizer.expect("URL", expected="URL after @").text
106 if tokenizer.check("END", peek=True):
107 return (url, specifier, marker)
108
109 tokenizer.expect("WS", expected="whitespace after URL")
110
111 # The input might end after whitespace.
112 if tokenizer.check("END", peek=True):
113 return (url, specifier, marker)
114
115 marker = _parse_requirement_marker(
116 tokenizer, span_start=url_start, after="URL and whitespace"
117 )
118 else:
119 specifier_start = tokenizer.position
120 specifier = _parse_specifier(tokenizer)
121 tokenizer.consume("WS")
122
123 if tokenizer.check("END", peek=True):
124 return (url, specifier, marker)
125
126 marker = _parse_requirement_marker(
127 tokenizer,
128 span_start=specifier_start,
129 after=(
130 "version specifier"
131 if specifier
132 else "name and no valid version specifier"
133 ),
134 )
135
136 return (url, specifier, marker)
137
138
139def _parse_requirement_marker(

Callers 1

_parse_requirementFunction · 0.85

Calls 6

_parse_specifierFunction · 0.85
checkMethod · 0.45
readMethod · 0.45
consumeMethod · 0.45
expectMethod · 0.45

Tested by

no test coverage detected