Skip to main content

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.

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 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.
  • Combined updates - The FOTA client lets you define a device component as consisting of several subcomponents, which the device always updates together and reports to the Update service on as a single component. For a combined update, the manifest tool creates a combined package, which includes multiple firmware images. The client parses the combined package and installs the images on the device in a predefined order you set on the device.

The manifest-tool Python package includes these command line tools:

Installing the manifest tool

We recommend installing the manifest-tool Python package in a isolated Python virtual environment.

Installing the manifest tool from PyPi

Prerequisites:

pip install manifest-tool

NOTE! If your system has only Python 3.6 or older - you must an older version of this tool.

pip install manifest-tool==2.4.1

Installing from local source tree

Prerequisites:

$ git clone https://github.com/PelionIoT/manifest-tool.git
$ pip install <path to manifest-tool's local source tree>

Note: Run $ pip install --editable <manifest-tool> to install the package in Python setuptools development mode. For more information, please see the setuptools development mode documentation.

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:

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 image to a server that your devices can access.

  • A configuration file in JSON or YAML format.

    Configuration file format:

    vendor:  # One of "domain" or "vendor-id" fields are expected.
      domain: izumanetworks.com  # FW owner domain. Used to generate a vendor UUID.
                          # Expected to include a dot (".").
      # OR
      vendor-id: fa6b4a53d5ad5fdfbe9de663e4d41ffe  # Valid vendor UUID.
      custom-data-path: my.custom-data.bin # Vendor's custom data file
                                           #  to be passed to the target devices.
                                           # Only relevant for manifest v3 format.
    
    device:  # One of "model-name" or "class-id" fields are expected
      model-name: Smart Slippers  # A device model name. Used to generate a class UUID.
      # OR
      class-id: 327c726ac6e54f7a82fbf1d3beda80f0  # 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  # Address from which the device downloads
                                              #  the candidate payload.
                                              # Obtained by clicking "Copy HTTP URL" on
                                              # the Firmware image details screen
                                              # in Device Management Portal,
                                              #  or by copying the `datafile` attribute.
      file-path: ./my.fw.bin  # Local path to the candidate payload file
                              #  or the delta patch file.
                              # Used for digest calculation & signing.
      format: raw-binary  # One of following:
                          #  raw-binary       - full image update campaigns.
                          #  arm-patch-stream - delta patch update campaigns.
                          # For manifest v3 only:
                          #  combined           - combined update.
                          #  encrypted-raw      - full image update with encrypted image.
                          #  encrypted-combined - combined update with encrypted image.
      encrypted:  # Required for 'encrypted-raw', 'encrypted-patch' formats.
        digest: 3725565932eb5b9fbd5767a3a534cb6a1a87813e0b4a76deacb9b36695c71307
                      # The encrypted payload digest.
                      # Obtained by copying the `encrypted_datafile_checksum` attribute
                      # from the Firmware image details screen in Device Management Portal.
        size: 471304  # The encrypted payload size.
                      # Obtained by copying the `encrypted_datafile_size` attribute
                      # from the Firmware image details screen in Device Management Portal.
    
    component: MAIN  # [Optional] The name of the component to be updated
                     #  only relevant for manifest v3 format.
                     # Set to "MAIN" by default 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).
                      # Set to False by default.
    

Example

  • For this configuration file, called my.config.yaml:

    vendor:
      domain: izumanetworks.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
    component: MAIN
    
  • Run:

    manifest-tool create \
        --config my.config.yaml \
        --key my.priv.key.pem \
        --fw-version 1.2.3 \
        --output my.manifest.bin
    

Note: The value of --fw-version refers to the firmware version of the component to be updated. The value can be between 0.0.1 and 999.999.999 and must be greater than the firmware version currently installed on the device.

manifest-tool create-v1

Older versions of Device Management 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 update client 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).

  • Upload the new firmware binary to a server that your devices can access, and obtain the URL for the uploaded firmware binary.

  • A configuration file in JSON or YAML format (same as manifest-tool create).

Example

  • 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

manifest-tool public-key

Create a public key file in uncompressed point format. 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: Additional configuration file with same name but with .yaml extension will be generated. Both files are required by the manifest-tool. Only the output file specified by --output argument should be uploaded to Pelion storage.

Note 2: 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 3: 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-package-tool

Use this tool to generate combined package files for combined updates.

manifest-package-tool commands:

Note: Run manifest-package-tool --help for more information about all commands, or manifest-package-tool <command> --help for more information about a specific command, including its parameters and how to use them.

manifest-package-tool create

Creates a combined package file based on a configuration file with information about firmware images for a combined update.

Prerequisites

  • A configuration file in JSON or YAML format.

    Configuration file format:

    images:  # Two or more images
    - file_name:  ./my.fw1.bin     # Local path to one of the firmware images.
      sub_comp_name:  fw1_id       # Name of the subcomponent firmware image.
      vendor_data: fw1_vend        # Vendor data for the firmware image.
    - file_name:  ./my.fw2.bin     # Local path to another firmware image.
      sub_comp_name:  fw2_id       # Name of the subcomponent firmware image.
      vendor_data: fw2_vend        # Vendor data for the firmware image.
    
  • New firmware images to be included in the combined package. In this example ./my/fw1.bin and ./my.fw2.bin.

Example

$ manifest-package-tool create --config combined_package_config.yaml --output combined_package_file

Where combined_package_config.yaml is the input configuration file.

The tool creates a tar-format combined package with the firmware images listed in the configuration file, where:

  • file_name is the local path to the image file.
  • sub_comp_name is the name the tool gives to the subcomponent firmware image file in the combined package. This must be the same as the name (sub_comp_name) defined on the device.
  • vendor_data is the vendor information of the firmware image.

In addition to firmware image files, the tool creates a descriptor __desc__ file inside the tar package, which provides information about the contents of the combined package to the FOTA update client.

Note 1: The FOTA update client reports on a combined update as an update of a single component (defined as comp_name on the device), consisting of multiple subcomponents (each defined as sub_comp_name on the device). When you create a combined package, each sub_comp_name must correspond to a sub_comp_name on the device. For more information, see Implementing combined update

Note 2: When you create a manifest for a combined update using manifest-tool, in the manifest configuration file, set the format field to combined or encrypted-combined, set the component field to the name of the component you are updating, and set the file-path field to the path of the combined package file.

Note 3: To use a combined package file with the manifest-dev-tool create or update commands, set the path of the combined package file in the -p argument and pass the --combined-image flag to indicate that the current candidate payload is a combined image.

manifest-package-tool parse

Parses and validates existing combined package files.

Prerequisites

  • A combined package file (in our example combined_package_file).

Example

$ manifest-package-tool parse --package combined_package_file
Contents of the tar package -
File name : _desc_
File name : fw1_id
File name : fw1_id
Information of update images:
OrderedDict([('id', b'fw1_id'), ('vendor-data', b'fw1_vend'), ('vendor-data-size', 8), ('image-size', 417053)])
OrderedDict([('id', b'fw2_id'), ('vendor-data', b'fw2_vend'), ('vendor-data-size', 8), ('image-size', 253482)])

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:

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.

  • Generates credentials and a configuration file in the tool's cache directory:

    • dev.key.pem - An update private key.
    • dev.cert.der - An update public key certificate.
    • dev.cfg.yaml - Developer configuration file.

    The default cache directory name is .manifest-dev-tool.

  • Generates an update resource C file with symbols that allow bypassing the provisioning step in the developer flow. Default name is update_default_resources.c.

Note 1: Use the credentials generated by manifest-dev-tool init in the development stage only.

Note 2: You can keep your access key in the .pelion-dev-presets.yaml file in your home directory and pass it using the --gw-preset option.

Example of .pelion-dev-presets.yaml:

usa:
    host: https://api.us-east-1.mbedcloud.com
    access_key: ak_SOME_VERY_SECRET_ACCESS_KEY
japan:
    host: https://api.ap-northeast-1.mbedcloud.com
    access_key: ak_SOME_OTHER_VERY_SECRET_ACCESS_KEY

To obtain an access key and API host URL, in Device Management Portal, click Access Management > Access keys > New access key. Limit access to the .pelion-dev-presets.yaml file to your user only.

Example

manifest-dev-tool init --access-key [Device Management access key]

Or

manifest-dev-tool init --gw-preset usa

manifest-dev-tool create

Creates developer manifest files without requiring an input configuration file.

Example

manifest-dev-tool create \
    --payload-url http://test.pdmc.izumanetworks.com?fileId=1256 \
    --payload-path new_fw.bin \
    --fw-version 1.2.3 \
    --component-name MAIN \
    --output update-manifest.bin

Note: To run a delta update, specifiy the manifest-delta-tool output in the --payload-path argument and make sure the .yaml output with the same name sit next to that output file.

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.izumanetworks.com?fileId=1256 \
    --payload-path new-fw.bin \
    --output update-manifest.bin

Note: To run a delta update, specifiy the manifest-delta-tool output in the --payload-path argument and make sure the .yaml output with the same name sit next to that output file.

manifest-dev-tool update

Same as manifest-dev-tool create but also lets you interact with Device Management to run a full update campaign.

The command:

  1. Uploads the payload to Device Management and obtains the URL.
  2. Creates a manifest file with the URL from the previous step and obtains a manifest URL.
  3. Creates an update campaign with the manifest URL from the previous step.
  4. Starts the update campaign if you pass the --start-campaign or --wait-for-completion argument.
  5. 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.
  6. If you pass the --wait-for-completion argument without the --no-cleanup flag, the tool removes the uploaded test resources from Device Management before exiting.

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 for mbed-os devices

  1. Clone the https://github.com/PelionIoT/mbed-cloud-client-example repository.

  2. From within the repository, execute:

    manifest-dev-tool init -a $MY_ACCESS_KEY
    

    The tool initializes the developer environment and generates a update_default_resources.c file.

  3. Build the firmware image for your device.

  4. Save the mbed-cloud-client-example_update.bin file.

  5. Flash the mbed-cloud-client-example.bin to the device.

  6. Wait for the device to register in the cloud.

  7. Make some changes to the source of the firmware application.

  8. Build the firmware update candidate for your device.

    • To test delta update, create delta patch:
      manifest-delta-tool -c <original mbed-cloud-client-example_update.bin> -n <new mbed-cloud-client-example_update.bin> -o delta.bin
      
  9. Issue an update campaign:

    manifest-dev-tool update --payload-path <new mbed-cloud-client-example_update.bin or delta.bin> --wait-for-completion
    

Upgrading from manifest tool v1.5.2 and lower

Manifest tool v2.0.0 is not compatible with previous versions.

This section explains how to migrate your existing configuration and credentials for use with manifest-tool version 2.2.0 and higher.

  • Initializing the development environment using previously-defined configuration and credentials

    Run the manifest-dev-tool init command as follow:

    manifest-dev-tool init --api-url <API URL> \
                           --access-key <Access key> \
                           --vendor-id <Vendor ID> \
                           --class-id <Class ID> \
                           --key <private key path> \
                           --update-certificate <certificate path>
    

    Where <API URL> and <Access key> are the values from the previous .mbed_cloud_config.json file, <Vendor ID> and <Class ID> are the values from the previous .manifest_tool.json file, and <private key path> and <certificate path> are the paths to your private key and update certificate, respectively.

    When the command finishes successfully, you can remove the previously-created files.

  • Adapting the create manifest configuration

    If you use manifest-tool (not manifest-dev-tool), create a new configuration file, as described in manifest-tool create, and copy the relevant information from your existing .manifest_tool.json file.

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 unique class-id and vendor-id generated per developer. Device Management expects a single device with these properties to connect to Device Management.

    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 same class-id and vendor-id in Device Management. In this scenario, Device Management will detect both devices and try to update them both, although one of them no longer exists

    Solution: Manually delete the unwanted device from Device Management. 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.

  • Device does not support this manifest schema

    Solution: Your device does not support the created manifest schema. Switch from the create or update command to the create-v1 or update-v1 command respectively and vice versa.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

manifest-tool-2.5.0.tar.gz (94.9 kB view details)

Uploaded Source

Built Distributions

manifest_tool-2.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (341.3 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

manifest_tool-2.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (354.0 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.28+ x86-64

manifest_tool-2.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (337.1 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

manifest_tool-2.5.0-cp310-cp310-win_amd64.whl (91.3 kB view details)

Uploaded CPython 3.10 Windows x86-64

manifest_tool-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (341.3 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

manifest_tool-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (353.9 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.28+ x86-64

manifest_tool-2.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (337.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

manifest_tool-2.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (353.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

manifest_tool-2.5.0-cp39-cp39-win_amd64.whl (91.2 kB view details)

Uploaded CPython 3.9 Windows x86-64

manifest_tool-2.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (341.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

manifest_tool-2.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (353.7 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.28+ x86-64

manifest_tool-2.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (336.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

manifest_tool-2.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl (234.6 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.5+ x86-64

manifest_tool-2.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (352.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

manifest_tool-2.5.0-cp38-cp38-win_amd64.whl (91.3 kB view details)

Uploaded CPython 3.8 Windows x86-64

manifest_tool-2.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (341.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

manifest_tool-2.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (354.0 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.28+ x86-64

manifest_tool-2.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (337.2 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

manifest_tool-2.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl (234.8 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.5+ x86-64

manifest_tool-2.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (353.1 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

manifest_tool-2.5.0-cp37-cp37m-win_amd64.whl (91.3 kB view details)

Uploaded CPython 3.7m Windows x86-64

manifest_tool-2.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (341.3 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

manifest_tool-2.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (354.0 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.28+ x86-64

manifest_tool-2.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (337.2 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

manifest_tool-2.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (234.6 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.5+ x86-64

manifest_tool-2.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (354.2 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64 manylinux: glibc 2.5+ x86-64

File details

Details for the file manifest-tool-2.5.0.tar.gz.

File metadata

  • Download URL: manifest-tool-2.5.0.tar.gz
  • Upload date:
  • Size: 94.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for manifest-tool-2.5.0.tar.gz
Algorithm Hash digest
SHA256 b39c02529ac61ba94c2558ecc9391a6038a0f5493c3c58354de40309bda35883
MD5 91df385a00a87dc68ce9d83120ff9380
BLAKE2b-256 816fa71dc474345eafd236b170a396df4aae73ce65c6f25468c734fe8375c72b

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 05d455da3e1731bf9efdd660cb2501a58f5eb2cc7b17ad05a5b7c1829f04f18a
MD5 87eeaca4cc5c55741cbbfda0534f8427
BLAKE2b-256 879c4d1a714d6f9aec00b2367988f45aa879d9c6895b3fe9fde9b7488560b06f

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 69e275685d92db24d1929d9e0f84543cc6aba1df4452f00df7bf24f832d67078
MD5 a7d89acacd657b71949a841d202f2600
BLAKE2b-256 3c986b9f44e926bf532ac04218e9528ff5c981a1eabf9a8bb2b7172d346069d0

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f62ce11b23b785eb071ea446aacbf62902e02ccde66a07ef2336549e1251540f
MD5 9f71a0b71d5ca7a35708b4ebd455f12e
BLAKE2b-256 e2d934faa9e9cb105a17aa7c74b78a5e44b64b245294337f75d5c055d34c917e

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 eb9ffb6189a47290b6376884e090c1bcaa317e700c5df9f9aeee5a11f2c2d119
MD5 7780bce30c3e04c74c1749f514468903
BLAKE2b-256 7e4aacc7d5772487fe7b93526fb829af00e235fbb6104565a0bccdf1d7f7bf14

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 29249804550889ee45ff00fb0bd768390f9c79096c25a60ab81cbb9e07f59fd8
MD5 28db9ae8d806c66cad0330b22d99e53a
BLAKE2b-256 58aa6a27da82e0d9b59c95a4f9b105f2bcbd122c23a7f3ae496d7f59e8acbb3d

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 645a2a1b210e155190c2089a28ffc410b59d700a0f71c2859e905b8e9e74819f
MD5 ebb30e291e241c018de98e2ed35b6ab4
BLAKE2b-256 1ee3b9d2b56fea93cd7d7d4fb19ed4c1a7d688f7bd3cc27330cdbd4370b90d14

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0dbb72733d5062875c06b934e5de03b04289775fc543d88657327d4fbb30264a
MD5 4022d9e541de20542eaf101d80c13346
BLAKE2b-256 f6f16ccd01abef2f920291da5c8a50dc299816687d66869b8bd4fb5f31e26477

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b3d2c80dd5007310bdfa53d700f5d16d8b51621ed2365f6b9447f950b90095a3
MD5 9550689281e452f3df4b06b492df3438
BLAKE2b-256 947b4fbaaf1c781276813b5df6900a2c3a4f12e478758ca872ef6b46e9633c0c

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6559ae052088b814b682cc9f8e67d9364f4a3a3a7025e3c82849ffba74ec13e9
MD5 0955162e22671ab43b91db8588cffb15
BLAKE2b-256 b0ce7d4dc02be139a48a174b16f8d89bf980a57feaadbd80382dc0c827034aea

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dbe2c35b31c589b412dc0637ae390922663290ec34629ed9c3b07dce6b87a0d3
MD5 79f99880edae4d940f613694f1b74e67
BLAKE2b-256 0d7b5a0181f35f881b6cfbc12e78fd9d57fc84ce3aaebba7f8a30f4d76eedd48

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f5d3c32a805e80d93cce9c9ce9c161d9dee4c16f65702f93447a3516dd55b2a0
MD5 2572c2b265b511b6403635bb3d43095d
BLAKE2b-256 19f2a05895e98ac17e58e45a0a388b54fcc442a6010d0b18770153ca5829c9b3

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 53eae29c25c2162810612a342ae4e2f5a3bea3eb2590dd89805b59a49f3a7243
MD5 efc7396c9ffe06e537ac9721fd7ab62b
BLAKE2b-256 8557c3a8f0befd5ae54034db5d15107a78ce99d6475c7d40bbe0f6058b860543

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b21a966da86eac1a03b711b0baabe92af127838885e3eba3b96d4a7a86dc7850
MD5 77e3cae94c999c6032475e88ca921ac9
BLAKE2b-256 e814dfb77946ea8b6d71119b3d5c6c16368f688ce8a88ad80b9c90b801ce1a38

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 7d1ddb268b89ddf2055d10d574a927874edb419ee9cbb8d6e47f44320d8f3d26
MD5 a5f59cb546ade53e7edda8f0ff6b89a6
BLAKE2b-256 1c19ccf3c4e84e1611341172d0066f9236ad4f3c0fc29d46ffe3e186377bd4a2

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 ab03b88de1530664d1e66ba19e9c4a70f820d07fa88443612bf39753cedb8397
MD5 c6f34080bc072d50a948a1e99a877ca7
BLAKE2b-256 eedca748e592086e9bf59aa6eb1ac41020a44e9e2d3145f9b5483f8f521b080b

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1438f31d0979c00e10af2a05a5dd97b429b97087f9c2accb31b4f185711dc5f6
MD5 6a47a6a68d2cedd813dbfa6e4d7057bb
BLAKE2b-256 7c084db4685a1ed6edfb213b5ee00ca55f4c1e9505d69919272ee3471d6e39af

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 64e641dac1b793de35bf4f4e1a424b6ea8a2ea16c58501ac3c01328ee555a893
MD5 5a92b3e240de88784b6b1a9b4325183e
BLAKE2b-256 294773d19bf36d8dc058434300e851d7f9ce809012c1c495ccd377f1954e588b

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 391529a354a3a1ed38d0058ac39ae49a514822c206718942706f531d266e8ab3
MD5 f2059081bacc327caf627669c69af8a6
BLAKE2b-256 199d30e969238aec186911d95643767ba21cc411fc75c3e360038c765fa7d365

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 814561a15ec21be0e150b1ab0ba6d77bd54d1828f71ebc1f2ea510f44d1ad506
MD5 4c31e60e32b0d6b5f91fe0d577e0b409
BLAKE2b-256 0e193f6c93c6e5af2d2abb49ea4da869ade198eadc626c8a8c25ffe64a12b8b1

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 998f7e9d3955bfee58c3574e4865fd4da3da7b87207303d890325b4ebd320dc9
MD5 07b0e5ec4d2d02968d754700002ca225
BLAKE2b-256 54cb3988037dba6cbd4b8a13eb894d541f470dd3a6518125afbbfade15febd4a

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 c2caf54599ade72e6cb331732c05f46e62230c38d5bf2cde7ea9da321f9dcbc2
MD5 45a3c6f90b8f05051b2932f05028e4f8
BLAKE2b-256 2c217be69dd69f3f4bdb55f9026a18b16275f7cf1a97c41f09a1ab8dd1514813

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2fa50e2911503e6b6ef4355ac13016b4e80e457d52d2bd67265e7741e11bea1a
MD5 7cc16b71b590cf57ddfc38519591d261
BLAKE2b-256 c8af1f5ebff44f949c44d9bfc037a4d4218260e04a9156777b8638610d839465

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 211bc56757451bd8138ade2d2ff02ac03e5d51b2c85be5be2af757b9e2331bb4
MD5 5b97f10b81d2d9d942822d0ce64b830a
BLAKE2b-256 85e61efb1dd5c4404b1717354636d95cb606cd320457a8a3b6877b81ea5d0522

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 60175fe50e2f2e63a60723971160257d59dbd37fb8f5338f844c5b15efc6c85a
MD5 72853a8a560199d94529b4bec5d532ff
BLAKE2b-256 1f5193b37f8932635069f104a9f8039b6690dd8e79e08b36f0773fe3f17deddc

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b089fefd031c2826feda0c19187052ac4eeacd684a16a0e2adf385431d296711
MD5 11b7edfe99eaf7f2f621d656669f5f6f
BLAKE2b-256 36edab338eaa200314f6952832652cd60d7c1c6c985718fdb7aa9eb3489bb6a4

See more details on using hashes here.

File details

Details for the file manifest_tool-2.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for manifest_tool-2.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 15395b10f6fb54f6d8a357c17a2ddee96717f9e87c7567d189a6f0c9a13da8a5
MD5 07dcda4dd9f169fcfeb7fcfc564af8ad
BLAKE2b-256 e5042aee748dcf8ba782ac07facf4946d0f624a859c2e9620ebd135f8b9a12df

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page