Traceback#
Description#
Build a traceback tree for a wrapp file, following both source and repository paths.
Package Ancestry#
Each package records two pointers to trace its ancestry:
The source pointer is set on
createto point to the root directory of the create operation.The repository pointer is set on
createto point to the target repository, updated oninstallto point to the source repository, and updated onmirrorto point to the source repository.
This allows tracing the origin of an install or mirror operation via the repository pointer, and finding the original source directory via the source pointer. Repeated install/create cycles can be traced back through multiple repositories as long as no intermediate packages are deleted.
The traceback command produces a user-friendly inheritance tree by following these pointers.
Reported Cases#
The following cases can be reported by traceback:
Primary source at {wrapp_file}.
Primary source folder (no package file) {wrapp_dir}.
Intermediate source installed at {wrapp_file}.
Primary repository at {wrapp_file}.
Mirror repository at {wrapp_file}.
Source without repository pointer at {wrapp_file}. This is considered a data error.
Could not find wrapp file in repository at {wrapp_file}. This is flagged as an error.
Source package missing: Could not find wrapp file at {wrapp_file}. This is flagged as an error.
Circular reference detected: {wrapp_file} has already been visited. This is considered a data error.
For CLI options, run wrapp traceback --help.
Python API Reference#
wrapp.traceback#
- async wrapp.traceback(
- wrapp_file: str,
- visited_paths: Set[str] | None = None,
Build a traceback tree for a wrapp file, following both source and repository paths.
- Parameters:
wrapp_file – Path to the wrapp file to traceback
visited_paths – Set of already visited paths to prevent circular references
- Returns:
A TracebackNode representing the root of the traceback tree
wrapp.TracebackNode#
The traceback function returns a tree of wrapp.TracebackNode objects:
- class wrapp.TracebackNode(
- package_location_type: PackageLocationType,
- path: str,
- message: str = '',
- source: TracebackNode | None = None,
- repository: TracebackNode | None = None,
- is_error=False,
Represents a node in the traceback tree.
- package_location_type
The type of package location, defined by the PackageLocationType enum
- path
The path to the wrapp file
- message
Human readable description of the wrapp file location found
- source
Optional pointer to the TracebackNode pointed to by the source field
- repository
Optional pointer to the TracebackNode pointed to by the repository field
wrapp.PackageLocationType#
Each node contains a location type:
- class wrapp.PackageLocationType(
- value,
- names=None,
- *,
- module=None,
- qualname=None,
- type=None,
- start=1,
- boundary=None,
Enum to classify the location of the wrapp file in a traceback chain
- Values:
REPOSITORY - the wrapp file is located in a repository (a subfolder with version and package name within a .packages hierarchy) SOURCE - the wrapp file is located in a non-repository folder ERROR - the data contains a validation error, and it can not be correctly classified