Tool/lib to create and parse manifests
Project description
Device Management manifest CLI tool
This document explains how to install and use the manifest tool.
- Manifest tool overview
- Installing the manifest tool
- Using the manifest tool
- Developer workflow example
- Troubleshooting
Note: Please see the changelog for the list of all changes between release versions.
Manifest tool overview
Device Management lets you perform Firmware Over-the-Air (FOTA) updates on managed devices.
On the device side, the firmware update process begins when the device receives an update manifest. The OEM (original equipment manufacturer) or update author cryptographically signs the manifest with a private key paired to a public key that exists on the device, enabling the device to authenticate the manifest before it accepts the firmware update.
Device Management supports:
- Full updates - Deliver new firmware and install it on the device.
- Delta updates - The manifest tool executes a diff algorithm that produces a small delta patch file. The nano client constructs a new firmware image based on the delta patch file and the firmware currently present on the device. This technique saves traffic bandwidth.
The manifest-tool
Python package includes these command line tools:
manifest-tool
- Creates manifest files.manifest-delta-tool
- Generates delta patch files.manifest-dev-tool
- A developer tool for running a simplified update campaign.
Installing the manifest tool
We recommend installing the manifest-tool
Python package in a
Python virtual environment.
Installing from PyPi
Prerequisites:
- Python 3.5 or higher.
- pip (Python Package Installer).
- Internet connectivity
To install the manifest tool from PyPi, run:
pip install manifest-tool
Installing from local source tree
Prerequisites:
- Python 3.5 or later.
- pip (Python Package Installer).
- Native toolchain:
- GCC/Clang for Linux/MacOS.
- Microsoft Visual Studio 2017 or later for Windows.
To install the manifest tool from the local source tree, run:
-
Clone the PelionIoT/manifest-tool repository to your machine:
$ git clone https://github.com/PelionIoT/manifest-tool.git
-
Run:
$ pip install <manifest-tool>
Where
<manifest-tool>
is the path to the local source tree.
Note: Run $ pip install -e <manifest-tool>
to install the package in Python setuptools development mode. For more information, please see the setuptools development mode documentation.
Creating a virtual environment
The virtualenv
tool creates isolated Python environments, which are
useful in overcoming Python package collision issues when you work on
multiple projects. For more information, please see the
Python documentation.
To create a virtual environment, run:
$ virtualenv -p python3 venv
To activate the virtual environment in the current shell, run:
$ source venv/bin/activate
Using the manifest tool
This section explains how to use the CLI tools included in the
manifest-tool
Python package:
manifest-tool
manifest-tool
commands:
manifest-tool create
- Creates manifests.manifest-tool create-v1
- Creates V1 schema-compatible manifests.manifest-tool parse
- Parses and verifies existing manifest files.manifest-tool schema
- Shows bundled input validation schema.manifest-tool public-key
- Generates an uncompressed public key.
Note: Run manifest-tool --help
for more information about all commands, or manifest-tool <command> --help
for more information about a specific command, including its parameters and how to use them.
manifest-tool create
Creates a manifest. The manifest tool receives a configuration file describing the update type.
Prerequisites
-
An update private key and public key certificate.
Keep the private key secret because it allows installing new firmware images on your devices.
Provision the public key to the device.
-
To generate a private key, run:
$ openssl ecparam -genkey -name prime256v1 -outform PEM -out my.priv.key.pem
-
To generate a public key in uncompressed point format (X9.62), use the
manifest-tool public-key
command.
-
-
Upload the new firmware binary to a server that the device you want to update can reach, and obtain the URL for the uploaded firmware binary.
-
A configuration file in JSON or YAML format.
Configuration file format:
vendor: # One of "domain" or "vendor-id" fields are expected domain: pelion.com # FW owner domain. Expected to include a dot (".") vendor-id: fa6b4a53d5ad5fdfbe9de663e4d41ffe # Valid vendor UUID device: # One of "model-name" or "class-id" fields are expected model-name: Smart Slippers # A device model name vendor-id: fa6b4a53d5ad5fdfbe9de663e4d41ffe # Valid device-class UUID priority: 1 # Update priority as will be passed to authorization callback # implemented by application on a device side payload: url: http://some-url.com/files?id=1234 # File storage URL for devices to # acquire the FW candidate file-path: ./my.fw.bin # Update candidate local file - for digest # calculation & signing format: raw-binary # one of following: # raw-binary - for full image update # arm-patch-stream - for differential update component: MAIN # [Optional] Component name - only relevant for manifest v3 format. # If omitted "MAIN" component name will be used for updating # the main application image sign-image: True # [Optional] Boolean field accepting True/False values - only # relevant for manifest v3 format. # When Set to True - 64 Bytes raw signature over the installed # image will be added to the manifest. # Image signature can be used for cases when device bootloader # expects to work with signed images (e.g. secure-boot) # When omitted False value is assumed
Example
-
For this configuration file, called
my.config.yaml
:vendor: domain: pelion.com device: model-name: Smart Flip-flops priority: 1 payload: url: http://some-url.com/files?id=1234 file-path: ./my.fw.bin format: raw-binary
-
Run:
manifest-tool create \ --config my.config.yaml \ --key my.priv.key.pem \ --fw-version 1.2.3 \ --output my.manifest.bin
manifest-tool create-v1
Older versions of Device Management FOTA update client use manifest schema V1 and assume the public key is packaged in a x.509 certificate.
Prerequisites
-
An update private key and public key certificate.
Keep the private key secret because it allows installing new firmware images on your devices.
Provision the public key to the device.
-
To generate a private key, run:
$ openssl ecparam -genkey -name prime256v1 -outform PEM -out my.priv.key.pem
-
To generate a public key x.509 certificate, run:
$ openssl req -new -sha256 \ -key my.priv.key.pem \ -inform PEM \ -out my.csr.csr $ openssl req -x509 -sha256 \ -days 7300 \ -key my.priv.key.pem \ -in my.csr.csr \ -outform der \ -out my.x509.certificate.der
Note: Device Management FOTA treats the x.509 certificate as a container ONLY and does not enforce its validity - expiration, chain of trust, and so on - although it may be validated by other Device Management components. For production, we recommend creating a certificate with a lifespan greater than the product's expected lifespan (for example, 20 years).
-
Example
-
For this configuration file, called
my.config.yaml
:vendor: domain: pelion.com device: model-name: DUT.my.device priority: 1 payload: url: http://some-url.com/files?id=1234 file-path: ./my.fw.bin format: raw-binary
-
Run:
manifest-tool create-v1 \ --config my.config.yaml \ --key my.priv.key.pem \ --update-certificate my.x509.certificate.der \ --output my.manifest.bin
manifest-tool parse
Parses and validates existing manifest files.
Prerequisites
- A manifest file (in our example
my.manifest.bin
). - Optionally, an update private key or public key or certificate to validate the manifest signature.
Example
$ manifest-tool parse \
my.manifest.bin \
--private-key my.priv.key.pem
----- Manifest dump start -----
Manifest:
vendor-id=fa6b4a53d5ad5fdfbe9de663e4d41ffe
class-id=3da0f138173350eba6f665498eace1b1
update-priority=15
payload-version=1572372313
payload-digest=b5f07d6c646a7c014cc8c03d2c9caf066bd29006f1356eaeaf13b7d889d3502b
payload-size=512
payload-uri=https://my.server.com/some.file?new=1
payload-format=raw-binary
----- Manifest dump end -----
2019-10-29 20:05:13,478 INFO Signature verified!
manifest-tool schema
Prints the input validation JSON schema bundled with the current tool. The manifest tool contains an input validation schema, which you can use as a self-documenting tool to better understand and validate the manifest tool input configuration.
Example
$ manifest-tool schema
Output:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Manifest-tool input validator",
"description": "This schema is used to validate the input arguments for manifest-tool",
"type": "object",
"required": [
"vendor",
"device",
"priority",
"payload"
],
"properties": {
"vendor": {
"type": "object",
"properties": {
"domain": {
"$ref": "#/definitions/non_empty_string",
"description": "Vendor Domain",
"pattern": "\\w+(\\.\\w+)+"
},
"vendor-id": {
"$ref": "#/definitions/uuid_hex_string",
"description": "Vendor UUID"
},
"custom-data-path": {
"$ref": "#/definitions/non_empty_string",
"description": "Path to custom data file - must be accessible by the manifest-tool"
}
},
"oneOf": [
{"required": ["domain"]},
{"required": ["vendor-id"]}
]
},
"device": {
"type": "object",
"properties": {
"model-name": {
"$ref": "#/definitions/non_empty_string",
"description": "Device model name"
},
"class-id": {
"$ref": "#/definitions/uuid_hex_string",
"description": "Device class UUID"
}
},
"oneOf": [
{"required": ["model-name"]},
{"required": ["class-id"]}
]
},
"priority": {
"description": "Update priority",
"type": "integer"
},
"payload": {
"type": "object",
"required": [
"url",
"format",
"file-path"
],
"properties": {
"format": {
"description": "Payload format type",
"enum": [
"raw-binary",
"arm-patch-stream"
]
},
"url": {
"$ref": "#/definitions/non_empty_string",
"description": "Payload URL in the cloud storage"
},
"file-path": {
"$ref": "#/definitions/non_empty_string",
"description": "Path to payload file - must be accessible by the manifest-tool"
}
}
},
"component": {
"description": "Component name - only relevant for manifest v3",
"$ref": "#/definitions/non_empty_string"
},
"sign-image":{
"description": "Do sign installed image - only relevant for manifest v3. Required for devices with PKI image authentication in bootloader",
"type": "boolean"
}
},
"definitions": {
"non_empty_string": {
"type": "string",
"minLength": 1
},
"uuid_hex_string": {
"type": "string",
"pattern": "[0-9a-fA-F]{32}",
"description": "HEX encoded UUID string"
}
}
}
Note: This schema is an example captured for manifest-tool version 2.0. Make sure to execute the manifest-tool schema
command on your machine to get the up-to-date schema for your installed tool version.
manifest-tool public-key
Creates a public key file containing a key in uncompressed point format (X9.62). Provisioning this file to the device enables the device to verify the manifest signature.
Example
manifest-tool public-key my.priv.key.pem --out my.pub.key.bin
manifest-delta-tool
Use this tool to generate delta patch files for delta updates.
Run manifest-delta-tool --help
for more information about usage and
arguments.
Prerequisites
- The firmware currently installed on the device and the updated firmware image. Required for calculating the delta patch.
Example
$ manifest-delta-tool -c current_fw.bin -n new_fw.bin -o delta-patch.bin
Note 1: Compression block size has a direct impact on the amount of memory required by the device receiving the update. The device requires twice the amount of RAM in runtime to decompress and apply the patch.
Note 2: Compression block must be aligned with network (COAP/HTTP) buffer size used for download. Misalignment in sizes may result in device failure to process the delta patch file.
manifest-dev-tool
manifest-dev-tool
is a developer tool for running a simplified update
campaign.
Use manifest-dev-tool
for development flows only.
manifest-dev-tool
commands:
manifest-dev-tool init
- Initializes the developer environment.manifest-dev-tool create
- Simplified tool for creating manifests.manifest-dev-tool create-v1
- Simplified tool for creating manifests using the V1 schema.manifest-dev-tool update
- Lets you perform end-to-end tests without leaving the command shell.manifest-dev-tool update-v1
- Lets you perform end-to-end tests without leaving the command shell using a V1-schema manifest.
Note: Run manifest-dev-tool --help
for more information about all commands, or manifest-dev-tool <command> --help
for more information about a specific command, including its parameters and how to use them.
manifest-dev-tool init
Initializes the developer environment:
- Creates an update private key and a public key certificate.
- Generates a
fota_dev_resources.c
file with symbols that allow bypassing the provisioning step in the developer flow. - Creates configuration files, which you use when you run the
manifest-dev-tool create
andmanifest-dev-tool update
commands.
Note: Only use the credentials the manifest-dev-tool
tool generates in the development flow.
Example
manifest-dev-tool init --force -a [API key from Device Management Portal]
manifest-dev-tool create
Creates developer manifest files without requiring an input configuration file.
Example
manifest-dev-tool create \
--payload-url http://test.pdmc.pelion.com?fileId=1256 \
--payload-path new_fw.bin \
--fw-version 1.2.3 \
--output update-manifest.bin
Note: To run a delta update, create the file specified in the --payload-path
argument using the manifest-delta-tool
command. The file has the same name but a .yaml
suffix (in the example, new-fw.yaml
instead of new-fw.bin
).
Note: Add the --sign-image
argument to update a device with a secure bootloader, which requires an image signature.
manifest-dev-tool create-v1
Creates developer manifest files in v1 format without requiring an input configuration file.
Example
manifest-dev-tool create-v1 \
--payload-url http://test.pdmc.pelion.com?fileId=1256 \
--payload-path new-fw.bin \
--output update-manifest.bin
Note: To run a delta update, create the file specified in the --payload-path
argument using the manifest-delta-tool
command. The file has the same name but a .yaml
suffix (in the example, new-fw.yaml
instead of new-fw.bin
).
manifest-dev-tool update
Same as manifest-dev-tool create
but also
lets you interact with Device Management Portal to run a full update
campaign on a single device.
The command:
- Uploads the payload to Device Management Portal and obtains the URL.
- Creates a manifest file with the URL from the previous step and obtains a manifest URL.
- Creates an update campaign with the manifest URL from the previous step.
- Starts the update campaign if you pass the
--start-campaign
or--wait-for-completion
argument. - If you pass the
--wait-for-completion
argument, the tool waits for campaign completion for the time period specified by--timeout
or until the campaign reaches one of its terminating states in Device Management Portal (expired
,userstopped
, orquotaallocationfailed
). - If you pass the
--wait-for-completion
argument without the--no-cleanup
flag, the tool removes the uploaded test resources from Device Management Portal before exiting. When you terminate the tool, the tool skips the cleanup step.
Note: manifest-dev-tool init
creates the directory you specify in --cache-dir
.
Example
manifest-dev-tool update \
--payload-path my_new_fw.bin \
--fw-version 1.2.3 \
--wait-for-completion
Note: The tool creates the device filter for the campaign based on the unique class-id
and vendor-id
fields the manifest-dev-tool init
command generates.
manifest-dev-tool update-v1
Same as manifest-dev-tool update
with a
v1-format manifest.
Example
manifest-dev-tool update-v1 \
--payload-path my_new_fw.bin \
--wait-for-completion
Developer workflow example
-
Clone the https://github.com/PelionIoT/mbed-cloud-client-example repository.
-
From within the repository, execute:
manifest-dev-tool init --force -a $MY_API_KEY
The tool generates and compiles a
fota_dev_resources.c
file. -
Flash the bootloader and firmware to the device.
-
Create a firmware update candidate.
OR
Create a delta-patch:
manifest-delta-tool -c curr_fw.bin -n new_fw.bin -o delta.bin
-
Issue an update:
manifest-dev-tool update --payload-path new_fw.bin --wait-for-completion
For a delta update, the payload is
delta.bin
.
Troubleshooting
-
Getting more context on unexpected errors.
When the tool exits with a non-zero return code, it may be helpful to get more context on the failure.
Solution: execute the tool with the
--debug
flag at the top argument parser level. For example:manifest-dev-tool --debug update
-
manifest-dev-tool update ... --wait-for-completion
takes longer than expected.manifest-dev-tool update
creates a uniqueclass-id
andvendor-id
generated per developer. Device Management expects a single device with these properties to connect to Device Management Portal.In rare cases, during development, a device's
device-id
might change after you re-flash it. This may result in two devices having the sameclass-id
andvendor-id
in Device Management Portal. In this scenario, Device Management will detect both devices and try to update them both, although one of them no longer existsSolution: Manually delete the unwanted device from Device Management Portal. Alternatively, run
manifest-dev-tool update ... --wait-for-completion
with--device-id DEVICE_ID
to override the default campaign filter and target a specific device by its ID. -
Update fails and
manifest-dev-tool update ... --wait-for-completion
cleans all resources.You might want to leave the resources (firmware image candidate, update manifest and update campaign) on a service for further investigation/retry.
Solution: Execute
manifest-dev-tool update ... --wait-for-completion
with the--no-cleanup
flag.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file manifest-tool-2.1.0.tar.gz
.
File metadata
- Download URL: manifest-tool-2.1.0.tar.gz
- Upload date:
- Size: 78.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bfd7ee691b082bb28bb7dccde7f726ce99bfb68a0bf503c1b7325a6700ef3a3e |
|
MD5 | 6b471424687a04671699909b9634839b |
|
BLAKE2b-256 | a412d4473416831456f9932c21d37f052875a48930b375fb7ea6285ecdcb339c |
File details
Details for the file manifest_tool-2.1.0-cp39-cp39-win_amd64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 70.2 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f3a2c1ba50d1c4aacc3e396bc0906daa09073b0cb4428862d2469eda1a711a4 |
|
MD5 | b721f14939abd64ded57ad857a93bbcf |
|
BLAKE2b-256 | a4cd1021664dedba43384526e554295d44b10549d71944e440df6720549c215c |
File details
Details for the file manifest_tool-2.1.0-cp39-cp39-win32.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp39-cp39-win32.whl
- Upload date:
- Size: 71.1 kB
- Tags: CPython 3.9, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dbcb9aad03d1b2d32298bc472348d84d8e27fcb9990db6d7bde306755a01787f |
|
MD5 | 434814e76aca3db4ee235e0ae8c1f341 |
|
BLAKE2b-256 | e8f6242c568a7d6a29668b3dc1e946a66d9c86f01f2c66a8ed23c3bc4904fcd5 |
File details
Details for the file manifest_tool-2.1.0-cp39-cp39-manylinux2014_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp39-cp39-manylinux2014_x86_64.whl
- Upload date:
- Size: 325.1 kB
- Tags: CPython 3.9
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5be4340711c3f15e05c37dd3845a04a0c0ba959815623d65430bc6e130507ce0 |
|
MD5 | ecaf11d4ce29cb8d20c17ab5bbbf7e05 |
|
BLAKE2b-256 | 85a4d5204f25ccd65ed5b2ce026b5c18d0ed902f1b405dfc2915f3a7736fda0b |
File details
Details for the file manifest_tool-2.1.0-cp39-cp39-manylinux2010_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp39-cp39-manylinux2010_x86_64.whl
- Upload date:
- Size: 328.6 kB
- Tags: CPython 3.9, manylinux: glibc 2.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54b118b8f1f056f52dc3596f4fc761a4a67860539c748b5d633087f5c1269990 |
|
MD5 | dbd678bb85a47e5b3c9e73af0ab85239 |
|
BLAKE2b-256 | d50becce4e234747ce6f5d4531465e55d56f09d11238fe685e2c3c0e37c90ec2 |
File details
Details for the file manifest_tool-2.1.0-cp39-cp39-manylinux1_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp39-cp39-manylinux1_x86_64.whl
- Upload date:
- Size: 328.6 kB
- Tags: CPython 3.9
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 561d706183b43ede69e05c68d7d131588c111ccb19a3d7ab5b5212146a30b8fb |
|
MD5 | b13548134d0aecee72a1cf7a030f8747 |
|
BLAKE2b-256 | 91cfef3c76547c5c18524366da07d414a97870ffe1a67af8a4348bcce0689b75 |
File details
Details for the file manifest_tool-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl
- Upload date:
- Size: 89.4 kB
- Tags: CPython 3.9, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ecc76b6c41976d1a2ebb7e765e2bf6a1ae088dbf5c839a96a99a584d002bef58 |
|
MD5 | 529c4ea7de632d196a8a9f6080883e49 |
|
BLAKE2b-256 | 65213b688ce4f9a13a6ff97f382bcf278c296693a40d2d12cbf7919bf9e17011 |
File details
Details for the file manifest_tool-2.1.0-cp38-cp38-win_amd64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp38-cp38-win_amd64.whl
- Upload date:
- Size: 70.2 kB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f420e05e4c02745b0e44453c4b6473d6561e45b485026c523f34500d795a7db |
|
MD5 | 8dd8118e994577d053e949ec6509c10f |
|
BLAKE2b-256 | a789f5cf148a17a99a9933e852f9f899a75d700492da684e65d0fd56ec6377c6 |
File details
Details for the file manifest_tool-2.1.0-cp38-cp38-win32.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp38-cp38-win32.whl
- Upload date:
- Size: 71.1 kB
- Tags: CPython 3.8, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c35b5bdcb1e6f95409e73ae24661d31464825a50daf5eaa872fc87e48cd6a86a |
|
MD5 | 952429d3a6006d968ba74a531c73842c |
|
BLAKE2b-256 | 8dc5649a5fbb67846640da231bccfbd6f77c030dcbfd859504abada43272a966 |
File details
Details for the file manifest_tool-2.1.0-cp38-cp38-manylinux2014_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp38-cp38-manylinux2014_x86_64.whl
- Upload date:
- Size: 325.3 kB
- Tags: CPython 3.8
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 539649885235c9fa921c4365e1cdc8cce531da6a0461b1603277afd662e5f80f |
|
MD5 | ffebc5931f94d1b4f99f86815866b665 |
|
BLAKE2b-256 | 85e9bffd2f1cce0dc1e60b905f5fa6d946dc1bbb4c18818dda8fbca45ffc8814 |
File details
Details for the file manifest_tool-2.1.0-cp38-cp38-manylinux2010_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp38-cp38-manylinux2010_x86_64.whl
- Upload date:
- Size: 328.8 kB
- Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 79c0f1dec179cf81dfd83b3d8eacf025a4c2741f90fbdf6259309a95639975eb |
|
MD5 | 0aff50eec363ba3c2ce8b56214b16003 |
|
BLAKE2b-256 | dde0bde53f04b4b72f029a9060da006427737d2008ea8aa2b634a17814182b2f |
File details
Details for the file manifest_tool-2.1.0-cp38-cp38-manylinux1_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp38-cp38-manylinux1_x86_64.whl
- Upload date:
- Size: 328.8 kB
- Tags: CPython 3.8
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fdfb63c25abac1312085f1989986cd79f581339e942746349e67f8f1ff5e8059 |
|
MD5 | 5e3523708acecb0fe7b08c3f5ed03c5f |
|
BLAKE2b-256 | e64b71da21d3d12afc80a917dc6cc2f84f30fb8dca7d09b9d0e7cf92b4facc85 |
File details
Details for the file manifest_tool-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl
- Upload date:
- Size: 89.4 kB
- Tags: CPython 3.8, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 697bd7ebb5bf0713ad5f0b071699d04fa51401812ddce74d29146bc2f01596f1 |
|
MD5 | 9efb37b3bc3ede96837909534ef1534b |
|
BLAKE2b-256 | 52add9ed222722b660255f81693707ce47916bc68c953db4700561588522d562 |
File details
Details for the file manifest_tool-2.1.0-cp37-cp37m-win_amd64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp37-cp37m-win_amd64.whl
- Upload date:
- Size: 70.2 kB
- Tags: CPython 3.7m, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5357088909158293963d8e6ade2d22d02ba887aaefbdc0b2792dd5dc9ceaac85 |
|
MD5 | 0c82e8ed1bbd1741ca7d4832e554f2ee |
|
BLAKE2b-256 | 1f5fa1fa101efd4a8047c98e30a415a0e8a050c402aa7c7d970d158d20ab2589 |
File details
Details for the file manifest_tool-2.1.0-cp37-cp37m-win32.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp37-cp37m-win32.whl
- Upload date:
- Size: 71.1 kB
- Tags: CPython 3.7m, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e414799a7c5696c30f39338bc2c064d9d51c08455ac2faccf3130d9cc9b4177 |
|
MD5 | 34d2b45d33e9dd45a24cdd0077b6437a |
|
BLAKE2b-256 | cf3f4767bec59e07bd25d1f814cb7840dd3bedcba8dc663256e61a5668dcca7b |
File details
Details for the file manifest_tool-2.1.0-cp37-cp37m-manylinux2014_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp37-cp37m-manylinux2014_x86_64.whl
- Upload date:
- Size: 326.5 kB
- Tags: CPython 3.7m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5ed73e558eff0face9c6ddc5e6ab9e34deea3a9d8e18d477ce4508bfc97395b8 |
|
MD5 | 0033202f1b4947f79c672df4c7c0befd |
|
BLAKE2b-256 | 6ac74b1cfc736994b171e6b137070d226b7732245a7852f732c6d2dc33ecf7c5 |
File details
Details for the file manifest_tool-2.1.0-cp37-cp37m-manylinux2010_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp37-cp37m-manylinux2010_x86_64.whl
- Upload date:
- Size: 329.9 kB
- Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e30df5cb2b2bad8113076d42c3a421c141f7329f6da1873c02dccd1f0ce464f |
|
MD5 | 06bd4b2b30764d57d101ca6e5d65b290 |
|
BLAKE2b-256 | 5664456694f424d659316ff96717684686d641062cc6baec38f09e388236683b |
File details
Details for the file manifest_tool-2.1.0-cp37-cp37m-manylinux1_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp37-cp37m-manylinux1_x86_64.whl
- Upload date:
- Size: 329.9 kB
- Tags: CPython 3.7m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6370ae2a2995cba3367d496f777f955d90ae7a8dc57b31877c6442951331238e |
|
MD5 | f5a89e44746bec07aba2d8c426f36ebb |
|
BLAKE2b-256 | 1a2f1e6881db8760679546378d97882f4b43ebe9bf562cf130f40edc4f7ed073 |
File details
Details for the file manifest_tool-2.1.0-cp37-cp37m-macosx_10_9_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp37-cp37m-macosx_10_9_x86_64.whl
- Upload date:
- Size: 89.3 kB
- Tags: CPython 3.7m, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38ee2534d87dde50377e3c899562435b565910f6d8475ca341efdec99fd8b047 |
|
MD5 | d59435f6d42904848cd2fdb0733c4d09 |
|
BLAKE2b-256 | 56df3675ec2f019a7537b6249b3d3f114298086c1714112954fb355bfedc227c |
File details
Details for the file manifest_tool-2.1.0-cp36-cp36m-win_amd64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp36-cp36m-win_amd64.whl
- Upload date:
- Size: 70.2 kB
- Tags: CPython 3.6m, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f80c421b5d0c4075a9eed5e578de43f4438136bcfbce2fde066e178352bcd1cb |
|
MD5 | 5a8499ac26b86bc73acc48d323c7854d |
|
BLAKE2b-256 | 1e91157c6e8876858d6fdb91267fc126bd4aa00bced9e2edb304dd48ec6a4e04 |
File details
Details for the file manifest_tool-2.1.0-cp36-cp36m-win32.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp36-cp36m-win32.whl
- Upload date:
- Size: 71.1 kB
- Tags: CPython 3.6m, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ed8de659770ff17a88657ecaec3bf4b480fb51728766879a2b1404b4aca487d |
|
MD5 | 52bcfbdd6162a8a22a24f7876b02347d |
|
BLAKE2b-256 | a55051ce25d9d1be6799b56779383468ba7c8825e7470ae32cc75039160e30c7 |
File details
Details for the file manifest_tool-2.1.0-cp36-cp36m-manylinux2014_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp36-cp36m-manylinux2014_x86_64.whl
- Upload date:
- Size: 325.5 kB
- Tags: CPython 3.6m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5199c9fea8f59ea8cd0ad028c6fef07df5b23614b1e7029938e3eb6f9132c3b |
|
MD5 | ab93b1f08a8da69ca656477a211cd699 |
|
BLAKE2b-256 | 9c13c044bab60bb06c1f218b929ba096a49bbc6b0981218ea9ce624bd0a5830c |
File details
Details for the file manifest_tool-2.1.0-cp36-cp36m-manylinux2010_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp36-cp36m-manylinux2010_x86_64.whl
- Upload date:
- Size: 328.9 kB
- Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8dc22c5cf51a49c8ea535f8cc195be3e8c49dfec99cfb254fd947d01c2a25c5 |
|
MD5 | 777c178a39cfac593cccdd86e28de862 |
|
BLAKE2b-256 | d40eb0b47147a9d0aa4ab3edd1dd82c2f523a7a1d821ab5f5a4e5edc4808627f |
File details
Details for the file manifest_tool-2.1.0-cp36-cp36m-manylinux1_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp36-cp36m-manylinux1_x86_64.whl
- Upload date:
- Size: 328.9 kB
- Tags: CPython 3.6m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40d48ae31551d909e23d9794528a0130785332426b14e26e1e870f80565f68a2 |
|
MD5 | f317987cf1d3f04cc9a86847b69020f5 |
|
BLAKE2b-256 | f6b313017d653d13813d84d29c80a8d4333aecffc13f4ddf89db8ab284d6dab9 |
File details
Details for the file manifest_tool-2.1.0-cp36-cp36m-macosx_10_9_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp36-cp36m-macosx_10_9_x86_64.whl
- Upload date:
- Size: 89.4 kB
- Tags: CPython 3.6m, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd8a7cc68f72dd9682567ee9b25ecbdaf1ede6f0a28dcf6a73de2b04b336c867 |
|
MD5 | fd00f1e09c7c28abccc96badcb42bead |
|
BLAKE2b-256 | 1b768376275e342e4c00268c53ab72c1ec4702541bed639e9966330e5ec19d45 |
File details
Details for the file manifest_tool-2.1.0-cp35-cp35m-manylinux2014_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp35-cp35m-manylinux2014_x86_64.whl
- Upload date:
- Size: 325.2 kB
- Tags: CPython 3.5m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1f8de5f367005533845ce41ec01768e2cac7fddaa54d6e50f0cca20c7fb3937 |
|
MD5 | cccb072810879c58903ea968b998eebb |
|
BLAKE2b-256 | dc4117ed5f24bc4c67a203ff54030115989fba86a8f2e293e45b15a2050e11a1 |
File details
Details for the file manifest_tool-2.1.0-cp35-cp35m-manylinux2010_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp35-cp35m-manylinux2010_x86_64.whl
- Upload date:
- Size: 328.7 kB
- Tags: CPython 3.5m, manylinux: glibc 2.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b5244069367f9dec5dd7e85d4d7367e29d51c0e8703245e7c0a1a0807063a577 |
|
MD5 | 73791131d1d233187b172a81adeda7bc |
|
BLAKE2b-256 | 5de5529749e6a648098e0c7fee96aa324bad689a49d56464ba74dc84dacf3273 |
File details
Details for the file manifest_tool-2.1.0-cp35-cp35m-manylinux1_x86_64.whl
.
File metadata
- Download URL: manifest_tool-2.1.0-cp35-cp35m-manylinux1_x86_64.whl
- Upload date:
- Size: 328.7 kB
- Tags: CPython 3.5m
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5dcbe88a03a9996c1a1cfffe20be91ae6d8d0014bc91e3c887ce10fbbb9ff257 |
|
MD5 | 22f1e4efdb1c2b3abaff82426d09b17c |
|
BLAKE2b-256 | 17ebd91a2ea2a2b2d0b739f44c128ec56f2453e947b426620d9b259e0bce16a9 |