pyTooling.Dependency

Implementation of package dependencies.

Hint

See high-level help for explanations and usage examples.

Classes


Classes

class pyTooling.Dependency.PackageVersion[source]

The package’s version of a Package.

A Package has multiple available versions. A version can have multiple dependencies to other :class:`PackageVersion`s.

Inheritance

Inheritance diagram of PackageVersion

__init__(version, package, releasedAt=None)[source]

Initializes a package version.

Parameters:
  • version (SemanticVersion) – Semantic version of this package.

  • package (Package) – Package this version is associated to.

  • releasedAt (Optional[datetime]) – Optional release date and time.

Raises:
  • TypeError – When parameter ‘version’ is not of type ‘SemanticVersion’.

  • TypeError – When parameter ‘package’ is not of type ‘Package’.

  • TypeError – When parameter ‘releasedAt’ is not of type ‘datetime’.

  • ToolingException – When version already exists for the associated package.

Return type:

None

_version: SemanticVersion

SemanticVersion of this package version.

_package: Package

Reference to the corresponding package

_dependsOn: Dict[Package, Dict[SemanticVersion, PackageVersion]]

Versioned dependencies to other packages.

property Package: Package

Read-only property to access the associated package.

Returns:

Associated package.

property Version: SemanticVersion

Read-only property to access the semantic version of a package.

Returns:

Semantic version of a package.

property ReleasedAt: datetime | None

Read-only property to access the release date and time.

Returns:

Optional release date and time.

property DependsOn: Dict[Package, Dict[SemanticVersion, PackageVersion]]

Read-only property to access the dictionary of dictionaries referencing dependencies.

The outer dictionary key groups dependencies by Package.
The inner dictionary key accesses dependencies by SemanticVersion.

Returns:

Dictionary of dependencies.

AddDependencyToPackageVersion(packageVersion)[source]

Add a dependency from current package version to another package version.

Parameters:

packageVersion (PackageVersion) – Dependency to be added.

Return type:

None

AddDependencyToPackageVersions(packageVersions)[source]

Add multiple dependencies from current package version to a list of other package versions.

Parameters:

packageVersions (Iterable[PackageVersion]) – Dependencies to be added.

Return type:

None

AddDependencyTo(package, version)[source]

Add a dependency from current package version to another package version.

Parameters:
Return type:

None

Returns:

SortDependencies()[source]

Sort versions of a package and dependencies by version, thus dependency resolution can work on pre-sorted lists and dictionaries.

Return type:

Self

Returns:

The instance itself (for method-chaining).

SolveLatest()[source]

Solve the dependency problem, while using preferably latest versions.

Todo

Describe algorithm.

Return type:

Iterable[PackageVersion]

Returns:

A list of :class:`PackageVersion`s fulfilling the constraints of the dependency problem.

Raises:

ToolingException – When there is no valid solution to the problem.

__len__()[source]

Returns the number of dependencies.

Return type:

int

Returns:

Number of dependencies.

__str__()[source]

Return a string representation of this package version.

Return type:

str

Returns:

The package’s name and version.

class pyTooling.Dependency.Package[source]

The package, which exists in multiple versions (PackageVersion).

Inheritance

Inheritance diagram of Package

__init__(name, *, storage)[source]

Initializes a package.

Parameters:
  • name (str) – Name of the package.

  • storage (PackageStorage) – The package’s storage.

Return type:

None

_name: str

Name of the package.

_storage: PackageStorage

Reference to the package’s storage.

_versions: Dict[SemanticVersion, PackageVersion]

A dictionary of available versions for this package.

property Storage: PackageStorage

Read-only property to access the package’s storage.

Returns:

Package storage.

property Name: str

Read-only property to access the package name.

Returns:

Name of the package.

property Versions: Dict[SemanticVersion, PackageVersion]

Read-only property to access the dictionary of available versions.

Returns:

Available version dictionary.

SortVersions()[source]

Sort versions within this package in reverse order (latest first).

Return type:

None

__len__()[source]

Returns the number of available versions.

Return type:

int

Returns:

Number of versions.

__getitem__(version)[source]

Access a package version in the package by version string or semantic version.

Parameters:

version (Union[str, SemanticVersion]) – Version as string or instance.

Return type:

PackageVersion

Returns:

The package version.

Raises:

KeyError – If version is not available for the package.

__str__()[source]

Return a string representation of this package.

Return type:

str

Returns:

The package’s name and latest version.

class pyTooling.Dependency.PackageStorage[source]

A storage for packages.

Inheritance

Inheritance diagram of PackageStorage

__init__(name, graph)[source]

Initializes the package storage.

Parameters:
Return type:

None

_name: str

Package dependency graph name

_graph: PackageDependencyGraph

Reference to the overall dependency graph data structure.

_packages: Dict[str, Package]

Dictionary of known packages.

property Graph: PackageDependencyGraph

Read-only property to access the package dependency graph.

Returns:

Package dependency graph.

property Name: str

Read-only property to access the package dependency graph’s name.

Returns:

Name of the package dependency graph.

property Packages: Dict[str, Package]

Read-only property to access the dictionary of known packages.

Returns:

Known packages dictionary.

CreatePackage(packageName)[source]

Create a new package in the package dependency graph.

Parameters:

packageName (str) – Name of the new package.

Return type:

Package

Returns:

New package’s instance.

CreatePackages(packageNames)[source]

Create multiple new packages in the package dependency graph.

Parameters:

packageNames (Iterable[str]) – List of package names.

Return type:

Iterable[Package]

Returns:

List of new package instances.

CreatePackageVersion(packageName, version)[source]

Create a new package and a package version in the package dependency graph.

Parameters:
  • packageName (str) – Name of the new package.

  • version (str) – Version string.

Return type:

PackageVersion

Returns:

New package version instance.

CreatePackageVersions(packageName, versions)[source]

Create a new package and multiple package versions in the package dependency graph.

Parameters:
  • packageName (str) – Name of the new package.

  • versions (Iterable[str]) – List of version string.s

Return type:

Iterable[PackageVersion]

Returns:

List of new package version instances.

SortPackageVersions()[source]

Sort versions within all known packages in reverse order (latest first).

Return type:

None

__len__()[source]

Returns the number of known packages.

Return type:

int

Returns:

Number of packages.

__getitem__(name)[source]

Access a known package in the package dependency graph by package name.

Parameters:

name (str) – Name of the package.

Return type:

Package

Returns:

The package.

Raises:

KeyError – If package is not known within the package dependency graph.

__str__()[source]

Return a string representation of this graph.

Return type:

str

Returns:

The graph’s name and number of known packages.

class pyTooling.Dependency.PackageDependencyGraph[source]

A package dependency graph collecting all known packages.

Inheritance

Inheritance diagram of PackageDependencyGraph

__init__(name)[source]

Initializes the package dependency graph.

Parameters:

name (str) – Name of the dependency graph.

Return type:

None

_name: str

Package dependency graph name

_storages: Dict[str, PackageStorage]

Dictionary of known package storages.

property Name: str

Read-only property to access the package dependency graph’s name.

Returns:

Name of the package dependency graph.

property Storages: Dict[str, PackageStorage]

Read-only property to access the dictionary of known package storages.

Returns:

Known package storage dictionary.

SortPackageVersions()[source]

Sort versions within all known packages in reverse order (latest first).

Return type:

None

__len__()[source]

Returns the number of known packages.

Return type:

int

Returns:

Number of packages.

__getitem__(name)[source]

Access a known package storage in the package dependency graph by storage name.

Parameters:

name (str) – Name of the package storage.

Return type:

PackageStorage

Returns:

The package storage.

Raises:

KeyError – If package storage is not known within the package dependency graph.

__str__()[source]

Return a string representation of this graph.

Return type:

str

Returns:

The graph’s name and number of known packages.