Parser

class dependency_comb.parser.RequirementParser[source]

Bases: object

Parse a requirements file content to resolve each requirement line as a PackageRequirement object.

Multiline directive is not supported.

get_nested_content(line, basepath)[source]

Find the requirement file to include its content from an inclusion directive.

Parameters:
  • line (string)

  • basepath (Path)

Returns:

The file content to include.

Return type:

string

parse_recursive_lines(content, environment=None, basepath=None)[source]

Recursively parse requirement lines to store them as PackageRequirement objects.

Inclusion directive are resolved and replaced with their requirements if basepath is given. Commentaries and empty lines (starting with #) are directly filtered out at this stage.

Warning

There is no check about circular import in inclusions (like a base.txt requirement including dev.txt requirement which include base.txt).

Parameters:
  • content (string or Path) – Content to load. Either a string for the content

  • parse. (to parse or a Path object to open and read as content to)

Keyword Arguments:
  • environment (dict) – Environment variables as defined from PEP 508 <https://peps.python.org/pep-0508/> to use for marker evaluations on parsed requirement items.

  • basepath (Path) – A directory path where to search for requirement inclusions (directive -r foo.txt) from requirements file. If not given inclusions will be ignored and PackageRequirement will assume it as an unsupported argument.

Returns:

List of PackageRequirement objects for all involved requirements.

Return type:

list

parse_requirements(content, environment=None, basepath=None)[source]

Load content as requirements.

Parameters:
  • content (string or Path) – Content to load. Either a string for the content

  • parse. (to parse or a Path object to open and read as content to)

Keyword Arguments:
  • environment (dict) – Environment variables as defined from PEP 508 <https://peps.python.org/pep-0508/> to use for marker evaluations on parsed requirement items.

  • basepath (Path) – A directory path where to search for requirement inclusions (directive -r foo.txt) from requirements file. If not given inclusions will be ignored and PackageRequirement will assume it as an unsupported argument.

Returns:

List of PackageRequirement objects for all involved requirements.

Return type:

list