module documentation

Handwritten parser of dependency specifiers. The docstring for each __parse_* function contains ENBF-inspired grammar representing the implementation.

Class Node Undocumented
Class Op Undocumented
Class ParsedRequirement Undocumented
Class Value Undocumented
Class Variable Undocumented
Function parse_marker Undocumented
Function parse_requirement Undocumented
Function process_env_var Undocumented
Function process_python_str Undocumented
Type Alias MarkerItem Undocumented
Type Alias MarkerList Undocumented
Type Alias MarkerVar Undocumented
Function _parse_extras extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?
Function _parse_extras_list extras_list = identifier (wsp* ',' wsp* identifier)*
Function _parse_marker marker = marker_atom (BOOLOP marker_atom)+
Function _parse_marker_atom marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS? | WS? marker_item WS?
Function _parse_marker_item marker_item = WS? marker_var WS? marker_op WS? marker_var WS?
Function _parse_marker_op marker_op = IN | NOT IN | OP
Function _parse_marker_var marker_var = VARIABLE | QUOTED_STRING
Function _parse_requirement requirement = WS? IDENTIFIER WS? extras WS? requirement_details
Function _parse_requirement_details requirement_details = AT URL (WS requirement_marker?)? | specifier WS? (requirement_marker)?
Function _parse_requirement_marker requirement_marker = SEMICOLON marker WS?
Function _parse_specifier specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS | WS? version_many WS?
Function _parse_version_many version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?
def parse_marker(source: str) -> MarkerList: (source)

Undocumented

def parse_requirement(source: str) -> ParsedRequirement: (source)

Undocumented

def process_env_var(env_var: str) -> Variable: (source)

Undocumented

def process_python_str(python_str: str) -> Value: (source)

Undocumented

MarkerItem = (source)

Undocumented

Value
Tuple[MarkerVar, Op, MarkerVar]
MarkerList = (source)

Undocumented

Value
List[Any]
MarkerVar = (source)

Undocumented

Value
Union[Variable, Value]
def _parse_extras(tokenizer: Tokenizer) -> List[str]: (source)

extras = (LEFT_BRACKET wsp* extras_list? wsp* RIGHT_BRACKET)?

def _parse_extras_list(tokenizer: Tokenizer) -> List[str]: (source)

extras_list = identifier (wsp* ',' wsp* identifier)*

def _parse_marker(tokenizer: Tokenizer) -> MarkerList: (source)

marker = marker_atom (BOOLOP marker_atom)+

def _parse_marker_atom(tokenizer: Tokenizer) -> MarkerAtom: (source)

marker_atom = WS? LEFT_PARENTHESIS WS? marker WS? RIGHT_PARENTHESIS WS? | WS? marker_item WS?

def _parse_marker_item(tokenizer: Tokenizer) -> MarkerItem: (source)

marker_item = WS? marker_var WS? marker_op WS? marker_var WS?

def _parse_marker_op(tokenizer: Tokenizer) -> Op: (source)

marker_op = IN | NOT IN | OP

def _parse_marker_var(tokenizer: Tokenizer) -> MarkerVar: (source)

marker_var = VARIABLE | QUOTED_STRING

def _parse_requirement(tokenizer: Tokenizer) -> ParsedRequirement: (source)

requirement = WS? IDENTIFIER WS? extras WS? requirement_details

def _parse_requirement_details(tokenizer: Tokenizer) -> Tuple[str, str, Optional[MarkerList]]: (source)

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

def _parse_requirement_marker(tokenizer: Tokenizer, *, span_start: int, after: str) -> MarkerList: (source)

requirement_marker = SEMICOLON marker WS?

def _parse_specifier(tokenizer: Tokenizer) -> str: (source)

specifier = LEFT_PARENTHESIS WS? version_many WS? RIGHT_PARENTHESIS | WS? version_many WS?

def _parse_version_many(tokenizer: Tokenizer) -> str: (source)

version_many = (SPECIFIER (WS? COMMA WS? SPECIFIER)*)?