manifest
property:version
), the package metadata (user_meta
), and a package commit message (message
).version
is used to ensure backwards compatibility should the serialization format change. There is currently only one valid version
: v0
.user_meta
is used to store any user-defined package metadata. In this case this package has no package metadata (yet) so user_meta
is omitted.message
stores the package commit message. It will be None
if the package is pushed without a commit message. The field is omitted if the package was never subject to a push
.logical_key
- The path to the entry within the package.physical_keys
- A list of files. Currently this field will always have a single entry. This field is omitted if the entry is a directory.size
- The size of the entry in raw bytes. This field is omitted if the entry is a directory.hash
- Materialized packages record a content hash for every entry in the package. This field is used to ensure package immutability (the tophash is partly a hash of these hashes).dict
fragment of the form {'type': 'SHA256', 'value': '...'}
. Un-materialized package entries have a hash
of None
, as in our example. Directory entries omit this field.meta
- Package entry metadata. Package entries lacking metadata will have a meta
of {}
(empty dict
).build
, and push
to handle sending manifests to and fro. However, there may be advanced use cases where you want to save or load a manifest directly. For that, you can use the low-level manifest API: