pyTooling.Dependency
Implementation of package dependencies.
Hint
See high-level help for explanations and usage examples.
See also
pyTooling.Dependency.Python→ The implementation for Python packages on a package index.
pyTooling.Versioning→ The version numbers a requirement is resolved against.
pyTooling.Graph→ The graph data structure a dependency graph is built on.
Exceptions
DependencyError: Base-exception of all exceptions raised bypyTooling.Dependency.NoSessionAvailableError: The operation needs a session to the package index, but no session was opened.ProjectNotFoundError: The package index doesn’t know a project of that name.ReleaseNotFoundError: The project exists in the package index, but not in the requested version.
Classes
BrokenRequirementWarning: A requirement carries an environment marker that matches none of the extras declared by the project.ReleaseDetailsWarning: Downloading the details of a release failed, therefore the release was dropped from the project.PackageVersion: The package’s version of aPackage.Package: The package, which exists in multiple versions (PackageVersion).PackageStorage: A storage for packages.PackageDependencyGraph: A package dependency graph collecting all known packages.
Exceptions
- exception pyTooling.Dependency.DependencyError[source]
Base-exception of all exceptions raised by
pyTooling.Dependency.Inheritance
- __init__(*args, **kwargs)
- classmethod __new__(*args, **kwargs)
- exception pyTooling.Dependency.NoSessionAvailableError[source]
The operation needs a session to the package index, but no session was opened.
A session is created by the package index and handed to the objects it creates.
Inheritance
- __init__(*args, **kwargs)
- classmethod __new__(*args, **kwargs)
- exception pyTooling.Dependency.ProjectNotFoundError[source]
The package index doesn’t know a project of that name.
Inheritance
- __init__(*args, **kwargs)
- classmethod __new__(*args, **kwargs)
- exception pyTooling.Dependency.ReleaseNotFoundError[source]
The project exists in the package index, but not in the requested version.
Inheritance
- __init__(*args, **kwargs)
- classmethod __new__(*args, **kwargs)
Classes
- class pyTooling.Dependency.BrokenRequirementWarning[source]
A requirement carries an environment marker that matches none of the extras declared by the project.
Such a requirement can’t be assigned to an extra, so it’s not reachable through
Requirements.Inheritance
- property HasNotes: bool
Read-only property to return if the warning has attached notes.
- Returns:
True, if the warning has attached notes.
- property Notes: tuple[str, ...]
Read-only property to return warning’s attached notes.
- Returns:
Attached notes.
- __cause__
exception cause
- __context__
exception context
- __getattribute__(name, /)
Return getattr(self, name).
- __init__(*args, **kwargs)
- classmethod __new__(*args, **kwargs)
- __reduce__()
Helper for pickle.
- __repr__()
Return repr(self).
- __str__()
Return str(self).
- add_note(object, /)
Exception.add_note(note) – add a note to the exception
- with_traceback(object, /)
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
- class pyTooling.Dependency.ReleaseDetailsWarning[source]
Downloading the details of a release failed, therefore the release was dropped from the project.
Inheritance
- property HasNotes: bool
Read-only property to return if the warning has attached notes.
- Returns:
True, if the warning has attached notes.
- property Notes: tuple[str, ...]
Read-only property to return warning’s attached notes.
- Returns:
Attached notes.
- __cause__
exception cause
- __context__
exception context
- __getattribute__(name, /)
Return getattr(self, name).
- __init__(*args, **kwargs)
- classmethod __new__(*args, **kwargs)
- __reduce__()
Helper for pickle.
- __repr__()
Return repr(self).
- __str__()
Return str(self).
- add_note(object, /)
Exception.add_note(note) – add a note to the exception
- with_traceback(object, /)
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
- class pyTooling.Dependency.PackageVersion[source]
The package’s version of a
Package.A
Packagehas multiple available versions. A version can have multiple dependencies to other :class:`PackageVersion`s.Inheritance
- __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:
- Return type:
None
- _version: SemanticVersion
SemanticVersionof this package version.
- _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 bySemanticVersion.- 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:
- 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:
- AddDependencyTo(package, version)[source]
Add a dependency from current package version to another package version.
- Parameters:
package (
str|Package) –Packageobject or name of the package.version (
Union[str,SemanticVersion,Iterable[str|SemanticVersion]]) –SemanticVersionobject or version string or an iterable thereof.
- Raises:
- Return type:
- 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:
- 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:
- Returns:
Number of dependencies.
- __str__()[source]
Return a string representation of this package version.
- Return type:
- Returns:
The package’s name and version.
- classmethod GetMethodsWithAttributes(predicate: Nullable[TAttributeFilter[TAttr]] = None) dict[Callable[..., Any], tuple[Attribute, ...]]
Return the class’ methods that carry at least one matching attribute.
- Parameters:
predicate (Nullable[TAttributeFilter[TAttr]]) – Optional, an attribute class, an iterable of attribute classes, or
Noneto accept every attribute.- Return type:
dict[Callable[…, Any], tuple[Attribute, …]]
- Returns:
Dictionary of methods and the matching attributes attached to them.
- Raises:
ValueError – If an element of parameter ‘predicate’ is not a sub-class of
Attribute.ValueError – If parameter ‘predicate’ is neither an attribute class nor an iterable of those.
- __getstate__() dict[str, Any]
Return the object’s state for pickling, collecting every slot of the class hierarchy.
- Return type:
- Returns:
Dictionary of slot names and their values.
- Raises:
ExtendedTypeError – If a slot was never assigned, so it has no value to serialize.
- __setstate__(state: dict[str, Any]) None
Restore the object’s state from unpickling, requiring exactly the slots of the class hierarchy.
- Parameters:
state (
dict[str,Any]) – Dictionary of slot names and their values.- Raises:
ExtendedTypeError – If the given state misses a slot or carries an unexpected one.
- Return type:
- class pyTooling.Dependency.Package[source]
The package, which exists in multiple versions (
PackageVersion).Inheritance
- __init__(name, *, storage)[source]
Initializes a package.
- Parameters:
name (
str) – Name of the package.storage (
PackageStorage) – The package’s storage.
- Raises:
TypeError – If a parameter is not of the expected type.
- Return type:
None
- _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 Versions: dict[SemanticVersion, PackageVersion]
Read-only property to access the dictionary of available versions.
- Returns:
Available version dictionary.
- property VersionCount: int
Read-only property to return the number of versions this package has.
- Returns:
Number of versions.
- SortVersions()[source]
Sort versions within this package in reverse order (latest first).
- Return type:
- __len__()[source]
Returns the number of available versions.
- Return type:
- Returns:
Number of versions.
- __iter__()[source]
Iterate the versions of this package.
- Return type:
- Returns:
An iterator over all versions of this package.
- __getitem__(version)[source]
Access a package version in the package by version string or semantic version.
- Parameters:
version (
str|SemanticVersion) – Version as string or instance.- Return type:
- Returns:
The package version.
- Raises:
- __str__()[source]
Return a string representation of this package.
- Return type:
- Returns:
The package’s name and latest version.
- classmethod GetMethodsWithAttributes(predicate: Nullable[TAttributeFilter[TAttr]] = None) dict[Callable[..., Any], tuple[Attribute, ...]]
Return the class’ methods that carry at least one matching attribute.
- Parameters:
predicate (Nullable[TAttributeFilter[TAttr]]) – Optional, an attribute class, an iterable of attribute classes, or
Noneto accept every attribute.- Return type:
dict[Callable[…, Any], tuple[Attribute, …]]
- Returns:
Dictionary of methods and the matching attributes attached to them.
- Raises:
ValueError – If an element of parameter ‘predicate’ is not a sub-class of
Attribute.ValueError – If parameter ‘predicate’ is neither an attribute class nor an iterable of those.
- __getstate__() dict[str, Any]
Return the object’s state for pickling, collecting every slot of the class hierarchy.
- Return type:
- Returns:
Dictionary of slot names and their values.
- Raises:
ExtendedTypeError – If a slot was never assigned, so it has no value to serialize.
- __setstate__(state: dict[str, Any]) None
Restore the object’s state from unpickling, requiring exactly the slots of the class hierarchy.
- Parameters:
state (
dict[str,Any]) – Dictionary of slot names and their values.- Raises:
ExtendedTypeError – If the given state misses a slot or carries an unexpected one.
- Return type:
- class pyTooling.Dependency.PackageStorage[source]
A storage for packages.
Inheritance
- __init__(name, graph)[source]
Initializes the package storage.
- Parameters:
name (
str) – Name of the package storage.graph (
PackageDependencyGraph) – PackageDependencyGraph instance (parent).
- Raises:
TypeError – If a parameter is not of the expected type.
- Return type:
None
- _graph: PackageDependencyGraph
Reference to the overall dependency graph data structure.
- 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.
- property PackageCount: int
Read-only property to return the number of packages in this storage.
- Returns:
Number of packages.
- CreatePackageVersion(packageName, version)[source]
Create a new package and a package version in the package dependency graph.
- Parameters:
- Return type:
- Returns:
New package version instance.
- CreatePackageVersions(packageName, versions)[source]
Create a new package and multiple package versions in the package dependency graph.
- Parameters:
- Return type:
- Returns:
List of new package version instances.
- SortPackageVersions()[source]
Sort versions within all known packages in reverse order (latest first).
- Return type:
- __str__()[source]
Return a string representation of this graph.
- Return type:
- Returns:
The graph’s name and number of known packages.
- classmethod GetMethodsWithAttributes(predicate: Nullable[TAttributeFilter[TAttr]] = None) dict[Callable[..., Any], tuple[Attribute, ...]]
Return the class’ methods that carry at least one matching attribute.
- Parameters:
predicate (Nullable[TAttributeFilter[TAttr]]) – Optional, an attribute class, an iterable of attribute classes, or
Noneto accept every attribute.- Return type:
dict[Callable[…, Any], tuple[Attribute, …]]
- Returns:
Dictionary of methods and the matching attributes attached to them.
- Raises:
ValueError – If an element of parameter ‘predicate’ is not a sub-class of
Attribute.ValueError – If parameter ‘predicate’ is neither an attribute class nor an iterable of those.
- __getstate__() dict[str, Any]
Return the object’s state for pickling, collecting every slot of the class hierarchy.
- Return type:
- Returns:
Dictionary of slot names and their values.
- Raises:
ExtendedTypeError – If a slot was never assigned, so it has no value to serialize.
- __setstate__(state: dict[str, Any]) None
Restore the object’s state from unpickling, requiring exactly the slots of the class hierarchy.
- Parameters:
state (
dict[str,Any]) – Dictionary of slot names and their values.- Raises:
ExtendedTypeError – If the given state misses a slot or carries an unexpected one.
- Return type:
- class pyTooling.Dependency.PackageDependencyGraph[source]
A package dependency graph collecting all known packages.
Inheritance
- classmethod GetMethodsWithAttributes(predicate: Nullable[TAttributeFilter[TAttr]] = None) dict[Callable[..., Any], tuple[Attribute, ...]]
Return the class’ methods that carry at least one matching attribute.
- Parameters:
predicate (Nullable[TAttributeFilter[TAttr]]) – Optional, an attribute class, an iterable of attribute classes, or
Noneto accept every attribute.- Return type:
dict[Callable[…, Any], tuple[Attribute, …]]
- Returns:
Dictionary of methods and the matching attributes attached to them.
- Raises:
ValueError – If an element of parameter ‘predicate’ is not a sub-class of
Attribute.ValueError – If parameter ‘predicate’ is neither an attribute class nor an iterable of those.
- __getstate__() dict[str, Any]
Return the object’s state for pickling, collecting every slot of the class hierarchy.
- Return type:
- Returns:
Dictionary of slot names and their values.
- Raises:
ExtendedTypeError – If a slot was never assigned, so it has no value to serialize.
- __setstate__(state: dict[str, Any]) None
Restore the object’s state from unpickling, requiring exactly the slots of the class hierarchy.
- Parameters:
state (
dict[str,Any]) – Dictionary of slot names and their values.- Raises:
ExtendedTypeError – If the given state misses a slot or carries an unexpected one.
- Return type:
- _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:
- __iter__()[source]
Iterate the storages in this dependency graph.
- Return type:
- Returns:
An iterator over all storages in this dependency graph.