Modules

pypi2nix.logger

class pypi2nix.logger.Logger
debug(text: str) → None
error(text: str) → None
info(text: str) → None
set_verbosity(level: pypi2nix.logger.Verbosity) → None
warning(text: str) → None
exception pypi2nix.logger.LoggerNotConnected
class pypi2nix.logger.ProxyLogger
debug(text: str) → None
error(text: str) → None
get_target_logger() → Optional[pypi2nix.logger.Logger]
info(text: str) → None
set_target_logger(target: pypi2nix.logger.Logger) → None
set_verbosity(level: pypi2nix.logger.Verbosity) → None
warning(text: str) → None
class pypi2nix.logger.StreamLogger(output: TextIO)
debug(text: str) → None
error(text: str) → None
info(text: str) → None
set_verbosity(level: pypi2nix.logger.Verbosity) → None
classmethod stdout_logger() → pypi2nix.logger.StreamLogger
warning(text: str) → None
class pypi2nix.logger.Verbosity

An enumeration.

DEBUG = 2
ERROR = -1
INFO = 1
WARNING = 0
pypi2nix.logger.verbosity_from_int(n: int) → pypi2nix.logger.Verbosity

pypi2nix.dependency_graph

exception pypi2nix.dependency_graph.CyclicDependencyOccured
class pypi2nix.dependency_graph.DependencyGraph
classmethod deserialize(data: str) → pypi2nix.dependency_graph.DependencyGraph
get_all_build_dependency_names(package: pypi2nix.requirements.Requirement) → Set[str]
get_all_external_dependencies(package: pypi2nix.requirements.Requirement) → Set[pypi2nix.external_dependencies.external_dependency.ExternalDependency]
get_all_runtime_dependency_names(package: pypi2nix.requirements.Requirement) → Set[str]
import_wheel(wheel: pypi2nix.wheel.Wheel, requirement_parser: pypi2nix.requirement_parser.RequirementParser) → None
is_buildtime_dependency(dependent: pypi2nix.requirements.Requirement, dependency: pypi2nix.requirements.Requirement) → bool
is_runtime_dependency(dependent: pypi2nix.requirements.Requirement, dependency: pypi2nix.requirements.Requirement) → bool
serialize() → str
set_buildtime_dependency(dependent: pypi2nix.requirements.Requirement, dependency: pypi2nix.requirements.Requirement) → None
set_external_dependency(dependent: pypi2nix.requirements.Requirement, dependency: pypi2nix.external_dependencies.external_dependency.ExternalDependency) → None
set_runtime_dependency(dependent: pypi2nix.requirements.Requirement, dependency: pypi2nix.requirements.Requirement) → None

pypi2nix.external_dependencies

class pypi2nix.external_dependencies.ExternalDependency(attribute_name: str)
attribute_name() → str

pypi2nix.wheels

class pypi2nix.wheels.Index(logger: pypi2nix.logger.Logger, path: str = '/home/docs/checkouts/readthedocs.org/user_builds/pypi2nix/checkouts/latest/src/pypi2nix/wheels/index.json')
Entry = typing.Union[pypi2nix.wheels.UrlEntry, pypi2nix.wheels.GitEntry]
class GitEntry(url, sha256, rev)
rev

Alias for field number 2

sha256

Alias for field number 1

url

Alias for field number 0

class UrlEntry(url, sha256)
sha256

Alias for field number 1

url

Alias for field number 0

is_valid() → bool

pypi2nix.wheel_builder

class pypi2nix.wheel_builder.WheelBuilder(pip: pypi2nix.pip.interface.Pip, project_directory: str, logger: pypi2nix.logger.Logger, requirement_parser: pypi2nix.requirement_parser.RequirementParser, target_platform: pypi2nix.target_platform.TargetPlatform, base_dependency_graph: pypi2nix.dependency_graph.DependencyGraph)
build(requirements: pypi2nix.requirement_set.RequirementSet, setup_requirements: Optional[pypi2nix.requirement_set.RequirementSet] = None) → List[str]
dependency_graph
detect_additional_build_dependencies(requirements: pypi2nix.requirement_set.RequirementSet, constraints: Optional[pypi2nix.requirement_set.RequirementSet] = None) → pypi2nix.requirement_set.RequirementSet
ensure_download_directory_exists() → None
ensure_extracted_wheels_directory_exists() → None
extract_wheels() → List[str]
get_frozen_requirements() → str
get_uninspected_source_distributions() → List[pypi2nix.source_distribution.SourceDistribution]
register_all_source_distributions() → None
pypi2nix.wheel_builder.list_files(path: str) → List[str]

pypi2nix.wheel

class pypi2nix.wheel.Builder(target_platform: pypi2nix.target_platform.TargetPlatform, wheel_directory_path: str, logger: pypi2nix.logger.Logger, requirement_parser: pypi2nix.requirement_parser.RequirementParser)
build() → pypi2nix.wheel.Wheel
class pypi2nix.wheel.Wheel(name: str, version: str, deps: pypi2nix.requirement_set.RequirementSet, homepage: str, license: str, description: str, build_dependencies: pypi2nix.requirement_set.RequirementSet, target_platform: pypi2nix.target_platform.TargetPlatform)
add_build_dependencies(dependencies: pypi2nix.requirement_set.RequirementSet) → None
build_dependencies(target_platform: pypi2nix.target_platform.TargetPlatform) → pypi2nix.requirement_set.RequirementSet
dependencies(extras: List[str] = []) → pypi2nix.requirement_set.RequirementSet
classmethod from_wheel_directory_path(wheel_directory_path: str, target_platform: pypi2nix.target_platform.TargetPlatform, logger: pypi2nix.logger.Logger, requirement_parser: pypi2nix.requirement_parser.RequirementParser) → pypi2nix.wheel.Wheel
runtime_dependencies(target_platform: pypi2nix.target_platform.TargetPlatform) → pypi2nix.requirement_set.RequirementSet
target_platform() → pypi2nix.target_platform.TargetPlatform
to_dict() → Dict[str, Any]
pypi2nix.wheel.list_from_message(metadata: email.message.Message, key: str) → Optional[List[str]]
pypi2nix.wheel.str_from_message(metadata: email.message.Message, key: str) → Optional[str]

pypi2nix.version

pypi2nix.utils

pypi2nix.utils.args_as_list(inputs: List[str]) → List[str]
pypi2nix.utils.cmd(command: Union[str, List[str]], logger: pypi2nix.logger.Logger, stderr: Optional[int] = None, cwd: Optional[str] = None) → Tuple[int, str]
pypi2nix.utils.create_command_options(options: Dict[str, Union[str, List[str], bool]]) → List[str]
pypi2nix.utils.escape_double_quotes(text: str) → str
pypi2nix.utils.prefetch_git(url: str, rev: Optional[str] = None) → Dict[str, str]
pypi2nix.utils.prefetch_github(owner: str, repo: str, rev: Optional[str] = None) → Dict[str, str]
pypi2nix.utils.prefetch_hg(url: str, logger: pypi2nix.logger.Logger, rev: Optional[str] = None) → Dict[str, str]
pypi2nix.utils.prefetch_url(url: str, logger: pypi2nix.logger.Logger, name: Optional[str] = None) → str
pypi2nix.utils.pretty_option(option: Optional[str]) → str

pypi2nix.target_platform

class pypi2nix.target_platform.PlatformGenerator(nix: pypi2nix.nix.Nix, logger: pypi2nix.logger.Logger)
current_platform() → Optional[pypi2nix.target_platform.TargetPlatform]
from_python_version(version: pypi2nix.python_version.PythonVersion) → pypi2nix.target_platform.TargetPlatform
class pypi2nix.target_platform.TargetPlatform(python_version: str, nixpkgs_python_version: pypi2nix.python_version.PythonVersion, python_full_version: str, implementation_version: str, os_name: str, sys_platform: str, implementation_name: str, platform_machine: str, platform_python_implementation: str, platform_release: str, platform_system: str, platform_version: str)
environment_dictionary() → Dict[str, Any]

pypi2nix.sources

class pypi2nix.sources.Sources
add(name: str, source: Union[GitSource, HgSource, PathSource, UrlSource]) → None
items() → List[Tuple[str, Union[GitSource, HgSource, PathSource, UrlSource]]]
update(other_sources: pypi2nix.sources.Sources) → None

pypi2nix.source_distribution

class pypi2nix.source_distribution.SourceDistribution(name: str, logger: pypi2nix.logger.Logger, requirement_parser: pypi2nix.requirement_parser.RequirementParser, pyproject_toml: Optional[pypi2nix.package.pyproject.PyprojectToml] = None, setup_cfg: Optional[pypi2nix.package.setupcfg.SetupCfg] = None)
build_dependencies(target_platform: pypi2nix.target_platform.TargetPlatform) → pypi2nix.requirement_set.RequirementSet
classmethod from_archive(archive: pypi2nix.archive.Archive, logger: pypi2nix.logger.Logger, requirement_parser: pypi2nix.requirement_parser.RequirementParser) → pypi2nix.source_distribution.SourceDistribution
classmethod get_pyproject_toml(name: str, extracted_files: Iterable[str], logger: pypi2nix.logger.Logger, requirement_parser: pypi2nix.requirement_parser.RequirementParser) → Optional[pypi2nix.package.pyproject.PyprojectToml]
classmethod get_setup_cfg(extracted_files: Iterable[str], logger: pypi2nix.logger.Logger, requirement_parser: pypi2nix.requirement_parser.RequirementParser) → Optional[pypi2nix.package.setupcfg.SetupCfg]
package_format
to_loose_requirement() → pypi2nix.requirements.Requirement

pypi2nix.requirements_file

class pypi2nix.requirements_file.RequirementsFile(path: str, project_dir: str, requirement_parser: pypi2nix.requirement_parser.RequirementParser, logger: pypi2nix.logger.Logger)
classmethod from_lines(lines: List[str], project_dir: str, requirement_parser: pypi2nix.requirement_parser.RequirementParser, logger: pypi2nix.logger.Logger) → pypi2nix.requirements_file.RequirementsFile
is_editable_line(line: str) → bool
is_include_line(line: str) → bool
is_vcs_line(line: str) → bool
process() → None
processed_requirements_file_path() → str
read() → str
sources() → pypi2nix.sources.Sources

pypi2nix.requirements_collector

This module implements a class to collect requirements from command line arguments given to pypi2nix

class pypi2nix.requirements_collector.RequirementsCollector(platform: pypi2nix.target_platform.TargetPlatform, requirement_parser: pypi2nix.requirement_parser.RequirementParser, logger: pypi2nix.logger.Logger, project_directory: str, base_dependency_graph: pypi2nix.dependency_graph.DependencyGraph)
add_file(file_path: str) → None
add_line(line: str) → None
requirements() → pypi2nix.requirement_set.RequirementSet
sources() → pypi2nix.sources.Sources

pypi2nix.requirements

exception pypi2nix.requirements.IncompatibleRequirements
class pypi2nix.requirements.PathRequirement(name: str, path: str, extras: Set[str], environment_markers: Optional[pypi2nix.environment_marker.EnvironmentMarker], logger: pypi2nix.logger.Logger)
add(other: pypi2nix.requirements.Requirement, target_platform: pypi2nix.target_platform.TargetPlatform) → pypi2nix.requirements.Requirement
change_path(mapping: Callable[[str], str]) → pypi2nix.requirements.PathRequirement
environment_markers() → Optional[pypi2nix.environment_marker.EnvironmentMarker]
extras() → Set[str]
logger() → pypi2nix.logger.Logger
name() → str
path() → str
source() → pypi2nix.package_source.PathSource
to_line() → str
class pypi2nix.requirements.Requirement
add(other: pypi2nix.requirements.Requirement, target_platform: pypi2nix.target_platform.TargetPlatform) → pypi2nix.requirements.Requirement
applies_to_target(target_platform: pypi2nix.target_platform.TargetPlatform, extras: List[str] = []) → bool
environment_markers() → Optional[pypi2nix.environment_marker.EnvironmentMarker]
extras() → Set[str]
logger() → pypi2nix.logger.Logger
name() → str
source() → Union[pypi2nix.package_source.GitSource, pypi2nix.package_source.HgSource, pypi2nix.package_source.PathSource, pypi2nix.package_source.UrlSource, None]
to_line() → str
class pypi2nix.requirements.UrlRequirement(name: str, url: str, extras: Set[str], environment_markers: Optional[pypi2nix.environment_marker.EnvironmentMarker], logger: pypi2nix.logger.Logger)
add(other: pypi2nix.requirements.Requirement, target_platform: pypi2nix.target_platform.TargetPlatform) → pypi2nix.requirements.Requirement
environment_markers() → Optional[pypi2nix.environment_marker.EnvironmentMarker]
extras() → Set[str]
logger() → pypi2nix.logger.Logger
name() → str
source() → Union[pypi2nix.package_source.GitSource, pypi2nix.package_source.HgSource, pypi2nix.package_source.PathSource, pypi2nix.package_source.UrlSource]
to_line() → str
url() → str
url_path() → str
url_scheme() → str
class pypi2nix.requirements.VersionRequirement(name: str, versions: List[Tuple[str, str]], extras: Set[str], environment_markers: Optional[pypi2nix.environment_marker.EnvironmentMarker], logger: pypi2nix.logger.Logger)
add(other: pypi2nix.requirements.Requirement, target_platform: pypi2nix.target_platform.TargetPlatform) → pypi2nix.requirements.Requirement
environment_markers() → Optional[pypi2nix.environment_marker.EnvironmentMarker]
extras() → Set[str]
logger() → pypi2nix.logger.Logger
name() → str
source() → None
to_line() → str
version() → List[Tuple[str, str]]

pypi2nix.requirement_set

class pypi2nix.requirement_set.RequirementSet(target_platform: pypi2nix.target_platform.TargetPlatform)
add(requirement: pypi2nix.requirements.Requirement) → None
add_constraint(requirement: pypi2nix.requirements.Requirement) → None
filter(filter_function: Callable[[pypi2nix.requirements.Requirement], bool]) → pypi2nix.requirement_set.RequirementSet
classmethod from_file(requirements_file: pypi2nix.requirements_file.RequirementsFile, target_platform: pypi2nix.target_platform.TargetPlatform, requirement_parser: pypi2nix.requirement_parser.RequirementParser, logger: pypi2nix.logger.Logger) → pypi2nix.requirement_set.RequirementSet
get(key: str, default: Optional[T] = None) → Union[pypi2nix.requirements.Requirement, None, T]
sources() → pypi2nix.sources.Sources
to_constraints_only() → pypi2nix.requirement_set.RequirementSet
to_file(project_dir: str, target_platform: pypi2nix.target_platform.TargetPlatform, requirement_parser: pypi2nix.requirement_parser.RequirementParser, logger: pypi2nix.logger.Logger) → pypi2nix.requirements_file.RequirementsFile

pypi2nix.requirement_parser

exception pypi2nix.requirement_parser.ParsingFailed(reason: str)
class pypi2nix.requirement_parser.RequirementParser(logger: pypi2nix.logger.Logger)
compiled_grammar()
parse(line: str) → pypi2nix.requirements.Requirement

pypi2nix.python_version

class pypi2nix.python_version.PythonVersion

An enumeration.

derivation_name() → str
major_version() → str
nixpkgs_attribute() → str
python3 = 'python3'
python35 = 'python35'
python36 = 'python36'
python37 = 'python37'
python38 = 'python38'
pypi2nix.python_version.python_version_from_version_string(version_string: str) → Optional[pypi2nix.python_version.PythonVersion]

pypi2nix.pypi_release

class pypi2nix.pypi_release.PypiRelease(url: str, sha256_digest: str, version: str, type: pypi2nix.pypi_release.ReleaseType, filename: str)
class pypi2nix.pypi_release.ReleaseType

An enumeration.

EGG = 3
MSI = 6
RPM = 5
SOURCE = 1
UNKNOWN = 0
WHEEL = 2
WIN_INSTALLER = 4
pypi2nix.pypi_release.get_release_type_by_packagetype(packagetype: str) → Optional[pypi2nix.pypi_release.ReleaseType]

pypi2nix.pypi_package

class pypi2nix.pypi_package.PypiPackage(name: str, releases: Set[pypi2nix.pypi_release.PypiRelease], version: str)

pypi2nix.pypi

class pypi2nix.pypi.Pypi(logger: pypi2nix.logger.Logger, index: str = 'https://pypi.org/pypi')
get_package
get_source_release(name: str, version: str) → Optional[pypi2nix.pypi_release.PypiRelease]
exception pypi2nix.pypi.PypiFailed

pypi2nix.project_directory

class pypi2nix.project_directory.PersistentProjectDirectory(path: str)
class pypi2nix.project_directory.ProjectDirectory
class pypi2nix.project_directory.TemporaryProjectDirectory

pypi2nix.pip

pypi2nix.package_source

class pypi2nix.package_source.GitSource(url: str, revision: Optional[str] = None)
hash_value() → str
nix_expression() → str
prefetch_data() → Dict[str, str]
revision() → str
class pypi2nix.package_source.HgSource(url: str, logger: pypi2nix.logger.Logger, revision: Optional[str] = None)
hash_value() → str
nix_expression() → str
prefetch_data() → Dict[str, str]
revision() → str
class pypi2nix.package_source.PathSource(path: str)
nix_expression() → str
class pypi2nix.package_source.UrlSource(url: str, logger: pypi2nix.logger.Logger, hash_value: Optional[str] = None)
calculate_hash_value() → str
hash_value() → str
nix_expression() → str

pypi2nix.package

exception pypi2nix.package.DistributionNotDetected
class pypi2nix.package.HasBuildDependencies
build_dependencies(target_platform: pypi2nix.target_platform.TargetPlatform) → pypi2nix.requirement_set.RequirementSet
class pypi2nix.package.HasPackageName
package_name() → str
class pypi2nix.package.HasRuntimeDependencies
runtime_dependencies(target_platform: pypi2nix.target_platform.TargetPlatform) → pypi2nix.requirement_set.RequirementSet
class pypi2nix.package.PackageMetadata(name: str)
classmethod from_package_directory(path: str) → pypi2nix.package.metadata.PackageMetadata
class pypi2nix.package.PyprojectToml(name: str, file_content: str, logger: pypi2nix.logger.Logger, requirement_parser: pypi2nix.requirement_parser.RequirementParser)
build_dependencies(target_platform: pypi2nix.target_platform.TargetPlatform) → pypi2nix.requirement_set.RequirementSet
class pypi2nix.package.SetupCfg(setup_cfg_path: str, logger: pypi2nix.logger.Logger, requirement_parser: pypi2nix.requirement_parser.RequirementParser)
build_dependencies(target_platform: pypi2nix.target_platform.TargetPlatform) → pypi2nix.requirement_set.RequirementSet
name

pypi2nix.overrides

class pypi2nix.overrides.NetworkFileParameter
convert(value, param, ctx)

Converts the value. This is not invoked for values that are None (the missing value).

name = 'url'
class pypi2nix.overrides.Overrides
nix_expression(logger: pypi2nix.logger.Logger) → str
class pypi2nix.overrides.OverridesGithub(owner: str, repo: str, path: str, rev: Optional[str] = None)
nix_expression(logger: pypi2nix.logger.Logger) → str
class pypi2nix.overrides.OverridesNetworkFile(network_file: pypi2nix.network_file.NetworkFile)
nix_expression(logger: pypi2nix.logger.Logger) → str
exception pypi2nix.overrides.UnsupportedUrlError

pypi2nix.nix_language

pypi2nix.nix_language.escape_string(string: str) → str

pypi2nix.nix

exception pypi2nix.nix.EvaluationFailed(*args, output: Optional[str] = None, **kwargs)
exception pypi2nix.nix.ExecutableNotFound
class pypi2nix.nix.Nix(logger: pypi2nix.logger.Logger, nix_path: List[str] = [], executable_directory: Optional[str] = None)
build(source_file: str, attribute: Optional[str] = None, out_link: Optional[str] = None, arguments: Dict[str, Union[str, List[str], bool]] = {}) → None
build_expression(expression: str, out_link: Optional[str] = None, arguments: Dict[str, Union[str, List[str], bool]] = {}) → None
evaluate_expression(expression: str) → str
evaluate_file(source_file: str, attribute: Optional[str] = None) → None
executable_path(program_name: str) → str
nix_path_arguments() → List[str]
run_nix_command(binary_name: str, command: List[str]) → str
shell(command: str, derivation_path: str, nix_arguments: Dict[str, Union[str, List[str], bool]] = {}, pure: bool = True) → str

pypi2nix.metadata_fetcher

Parse metadata from .dist-info directories in a wheelhouse.

class pypi2nix.metadata_fetcher.MetadataFetcher(sources: pypi2nix.sources.Sources, logger: pypi2nix.logger.Logger, requirement_parser: pypi2nix.requirement_parser.RequirementParser, pypi: pypi2nix.pypi.Pypi)
main(wheel_paths: Iterable[str], target_platform: pypi2nix.target_platform.TargetPlatform, source_distributions: Dict[str, pypi2nix.source_distribution.SourceDistribution]) → List[pypi2nix.wheel.Wheel]

Extract packages metadata from wheels dist-info folders.

process_wheel(wheel: pypi2nix.wheel.Wheel) → None
exception pypi2nix.metadata_fetcher.MetadataFetchingFailed

pypi2nix.memoize

pypi2nix.memoize.memoize(method: Callable[[S], T]) → Callable[[S], T]

pypi2nix.main

class pypi2nix.main.Pypi2nix(configuration: pypi2nix.configuration.ApplicationConfiguration)
base_dependency_graph() → pypi2nix.dependency_graph.DependencyGraph
logger() → pypi2nix.logger.Logger
nix() → pypi2nix.nix.Nix
print_user_information() → None
requirement_parser() → pypi2nix.requirement_parser.RequirementParser
requirements_collector() → pypi2nix.requirements_collector.RequirementsCollector
run() → None
setup_requirements_collector() → pypi2nix.requirements_collector.RequirementsCollector
target_platform() → pypi2nix.target_platform.TargetPlatform

pypi2nix.license

pypi2nix.license.escape_regex(text: str) → str
pypi2nix.license.find_license(classifiers: List[str], license_string: str) → Optional[str]
pypi2nix.license.first_license_classifier_from_list(classifiers: List[str]) → Optional[str]
pypi2nix.license.license_from_string(license_string: str) → Optional[str]
pypi2nix.license.recognized_nix_license_from_classifiers(classifiers: List[str]) → Optional[str]

pypi2nix.environment_marker

class pypi2nix.environment_marker.EnvironmentMarker(marker_string: str)
applies_to_platform(target_platform: pypi2nix.target_platform.TargetPlatform, extras: List[str] = []) → bool
exception pypi2nix.environment_marker.MarkerEvaluationFailed

pypi2nix.configuration

class pypi2nix.configuration.ApplicationConfiguration(verbosity: pypi2nix.logger.Verbosity, nix_executable_directory: Optional[str], nix_path: List[str], extra_build_inputs: List[str], emit_extra_build_inputs: bool, extra_environment: str, enable_tests: bool, python_version: pypi2nix.python_version.PythonVersion, requirement_files: List[str], requirements: List[str], setup_requirements: List[str], overrides: List[pypi2nix.overrides.Overrides], wheels_caches: List[str], output_basename: str, project_directory: str, target_directory: str, dependency_graph_output_location: Optional[pathlib.Path], dependency_graph_input: pypi2nix.dependency_graph.DependencyGraph)

pypi2nix.cli

pypi2nix.archive

class pypi2nix.archive.Archive(path: str)
extracted_files() → Iterator[str]
unpack_archive(target_directory: str) → None
exception pypi2nix.archive.UnpackingFailed