Skip to main content

Bindings for MLA Archive manipulation

Project description

Build & test Cargo MLA Documentation MLA Cargo Curve25519-Parser Documentation Curve25519-Parser Cargo MLAR

Multi Layer Archive (MLA)

MLA is an archive file format with the following features:

  • Support for compression (based on rust-brotli)
  • Support for authenticated encryption with asymmetric keys (AES256-GCM with an ECIES schema over Curve25519, based on Rust-Crypto aes-ctr and DalekCryptography x25519-dalek)
  • Effective, architecture agnostic and portable (written entirely in Rust)
  • Small memory footprint during archive creation
  • Streamable archive creation:
    • An archive can be built even over a data-diode
    • A file can be added through chunks of data, without initially knowing the final size
    • File chunks can be interleaved (one can add the beginning of a file, start a second one, and then continue adding the first file's parts)
  • Archive files are seekable, even if compressed or encrypted. A file can be accessed in the middle of the archive without reading from the beginning
  • If truncated, archives can be repaired. Files which were still in the archive, and the beginning of the ones for which the end is missing, will be recovered
  • Arguably less prone to bugs, especially while parsing an untrusted archive (Rust safety)

Repository

This repository contains:

  • mla: the Rust library implementing MLA reader and writer
  • mlar: a Rust utility wrapping mla for common actions (create, list, extract, ...)
  • curve25519-parser: a Rust library for parsing DER/PEM public and private Ed25519 keys and X25519 keys (as made by openssl)
  • mla-fuzz-afl : a Rust utility to fuzz mla
  • bindings : bindings for other languages
  • .github: Continuous Integration needs

Quick command-line usage

Here are some commands to use mlar in order to work with archives in MLA format.

# Generate an X25519 key pair {key, key.pub} (OpenSSL could also be used)
mlar keygen key

# Create an archive with some files, using the public key
mlar create -p key.pub -o my_archive.mla /etc/os-release /etc/issue

# List the content of the archive, using the private key
mlar list -k key -i my_archive.mla

# Extract the content of the archive into a new directory
# In this example, this creates two files:
# extracted_content/etc/issue and extracted_content/etc/os-release
mlar extract -k key -i my_archive.mla -o extracted_content

# Display the content of a file in the archive
mlar cat -k key -i my_archive.mla /etc/os-release

# Convert the archive to a long-term one, removing encryption and using the best
# and slower compression level
mlar convert -k key -i my_archive.mla -o longterm.mla -l compress -q 11

# Create an archive with multiple recipient
mlar create -p archive.pub -p client1.pub -o my_archive.mla ...

mlar can be obtained:

  • through Cargo: cargo install mlar
  • using the latest release for supported operating systems

Quick API usage

  • Create an archive, with compression and encryption:
use curve25519_parser::parse_openssl_25519_pubkey;
use mla::config::ArchiveWriterConfig;
use mla::ArchiveWriter;

const PUB_KEY: &[u8] = include_bytes!("samples/test_x25519_pub.pem");

fn main() {
    // Load the needed public key
    let public_key = parse_openssl_25519_pubkey(PUB_KEY).unwrap();

    // Create an MLA Archive - Output only needs the Write trait
    let mut buf = Vec::new();
    // Default is Compression + Encryption, to avoid mistakes
    let mut config = ArchiveWriterConfig::default();
    // The use of multiple public keys is supported
    config.add_public_keys(&vec![public_key]);
    // Create the Writer
    let mut mla = ArchiveWriter::from_config(&mut buf, config).unwrap();

    // Add a file
    mla.add_file("filename", 4, &[0, 1, 2, 3][..]).unwrap();

    // Complete the archive
    mla.finalize().unwrap();
}
  • Add files part per part, in a "concurrent" fashion:
...
// A file is tracked by an id, and follows this API's call order:
// 1. id = start_file(filename);
// 2. append_file_content(id, content length, content (impl Read))
// 2-bis. repeat 2.
// 3. end_file(id)

// Start a file and add content
let id_file1 = mla.start_file("fname1").unwrap();
mla.append_file_content(id_file1, file1_part1.len() as u64, file1_part1.as_slice()).unwrap();
// Start a second file and add content
let id_file2 = mla.start_file("fname2").unwrap();
mla.append_file_content(id_file2, file2_part1.len() as u64, file2_part1.as_slice()).unwrap();
// Add a file as a whole
mla.add_file("fname3", file3.len() as u64, file3.as_slice()).unwrap();
// Add new content to the first file
mla.append_file_content(id_file1, file1_part2.len() as u64, file1_part2.as_slice()).unwrap();
// Mark still opened files as finished
mla.end_file(id_file1).unwrap();
mla.end_file(id_file2).unwrap();
  • Read files from an archive
use curve25519_parser::parse_openssl_25519_privkey;
use mla::config::ArchiveReaderConfig;
use mla::ArchiveReader;
use std::io;

const PRIV_KEY: &[u8] = include_bytes!("samples/test_x25519_archive_v1.pem");
const DATA: &[u8] = include_bytes!("samples/archive_v1.mla");

fn main() {
    // Get the private key
    let private_key = parse_openssl_25519_privkey(PRIV_KEY).unwrap();

    // Specify the key for the Reader
    let mut config = ArchiveReaderConfig::new();
    config.add_private_keys(&[private_key]);

    // Read from buf, which needs Read + Seek
    let buf = io::Cursor::new(DATA);
    let mut mla_read = ArchiveReader::from_config(buf, config).unwrap();

    // Get a file
    let mut file = mla_read
        .get_file("simple".to_string())
        .unwrap() // An error can be raised (I/O, decryption, etc.)
        .unwrap(); // Option(file), as the file might not exist in the archive

    // Get back its filename, size, and data
    println!("{} ({} bytes)", file.filename, file.size);
    let mut output = Vec::new();
    std::io::copy(&mut file.data, &mut output).unwrap();

    // Get back the list of files in the archive:
    for fname in mla_read.list_files().unwrap() {
        println!("{}", fname);
    }
}

:warning: Filenames are Strings, which may contain path separator (/, \, .., etc.). Please consider this while using the API, to avoid path traversal issues.

Using MLA with others languages

Bindings are available for:

Design

As the name spoils it, an MLA archive is made of several, independent, layers. The following section introduces the design ideas behind MLA. Please refer to FORMAT.md for a more formal description.

Layers

Each layer acts as a Unix PIPE, taking bytes in input and outputting in the next layer. A layer is made of:

  • a Writer, implementing the Write trait. It is responsible for emitting bytes while creating a new archive
  • a Reader, implementing both Read and Seek traits. It is responsible for reading bytes while reading an archive
  • a FailSafeReader, implementing only the Read trait. It is responsible for reading bytes while repairing an archive

Layers are made with the repairable property in mind. Reading them must never need information from the footer, but a footer can be used to optimize the reading. For example, accessing a file inside the archive can be optimized using the footer to seek to the file beginning, but it is still possible to get information by reading the whole archive until the file is found.

Layers are optional, but their order is enforced. Users can choose to enable or disable them. Current order is the following:

  1. File storage abstraction (not a layer)
  2. Raw layer (mandatory)
  3. Compression layer
  4. Encryption layer
  5. Position layer (mandatory)
  6. Stored bytes

Overview

+----------------+-------------------------------------------------------------------------------------------------------------+
| Archive Header |                                                                                                             | => Final container (File / Buffer / etc.)
+------------------------------------------------------------------------------------------------------------------------------+
                 +-------------------------------------------------------------------------------------------------------------+
                 |                                                                                                             | => Raw layer
                 +-------------------------------------------------------------------------------------------------------------+
                 +-----------+---------+------+---------+------+---------------------------------------------------------------+
                 | E. header | Block 1 | TAG1 | Block 2 | TAG2 | Block 3 | TAG3 | ...                                          | => Encryption layer
                 +-----------+---------+------+---------+------+---------------------------------------------------------------+
                             |         |      |         |      |         |      |                                              |
                             +-------+--      --+-------       -----------      ----+---------+------+---------+ +-------------+
                             | Blk 1 |          | Blk 2                             | Block 3 | ...  | Block n | |    Footer   | => Compression Layer
                             +-------+--      --+-------       -----------      ----+---------+------+---------+ +-------------+
                            /         \                                                             /           \
                           /           \                                                           /             \
                          /             \                                                         /               \
                         +-----------------------------------------------------------------------------------------+
                         |                                                                                         |             => Position layer
                         +-----------------------------------------------------------------------------------------+
                         +-------------+-------------+-------------+-------------+-----------+-------+-------------+
                         | File1 start | File1 data1 | File2 start | File1 data2 | File1 end |  ...  | Files index |             => Files information and content
                         +-------------+-------------+-------------+-------------+-----------+-------+-------------+

Layers description

Raw Layer

Implemented in RawLayer* (i.e. RawLayerWriter, RawLayerReader and RawLayerFailSafeReader).

This is the simplest layer. It is required to provide an API between layers and final output worlds. It is also used to keep the position of data's start.

Position Layer

Implemented in PositionLayer*.

Similar to the RawLayer, this is a very simple, utility, layer. It keeps track of how many bytes have been written to the sub-layers.

For instance, it is required by the file storage layer to keep track of the position in the flow of files, for indexing purpose.

Encryption Layer

Implemented in EncryptionLayer*.

This layer encrypts data using the symmetric authenticated encryption with associated data (AEAD) algorithm AES-GCM 256, and encrypts the symmetric key using an ECIES schema based on Curve25519.

The ECIES schema is extended to support multiple public keys: a public key is generated and then used to perform n Diffie-Hellman exchanges with the n users public keys. The generated public key is also recorded in the header (to let the user replay the DH exchange). Once derived according to ECIES, we get n keys. These keys are then used to encrypt a common key k, and the resulting n ciphertexts are stored in the layer header. This key k will later be used for the symmetric encryption of the archive.

In addition to the key, a nonce (8 bytes) is also generated per archive. A fixed associated data is used.

The generation uses OsRng from crate rand, that uses getrandom() from crate getrandom. getrandom provides implementations for many systems, listed here. On Linux it uses the getrandom() syscall and falls back on /dev/urandom. On Windows it uses the RtlGenRandom API (available since Windows XP/Windows Server 2003).

In order to be "better safe than sorry", a ChaChaRng is seeded from the bytes generated by OsRng in order to build a CSPRNG(Cryptographically Secure PseudoRandom Number Generator). This ChaChaRng provides the actual bytes used in keys and nonces generations.

The layer data is then made of several encrypted blocks, each with a constant size except for the last one. Each block is encrypted with an IV including the base nonce and a counter. This construction is close to the STREAM one, except for the last_block bit. The choice has been made not to use it, because:

  • At the time of writing, the archive writer does not know that the current block is the last one. Therefore, it cannot use a specific IV. To circumvent it, a dummy footer block has to be added at the end, leading to additional complexity for last block detection
  • In STREAM, the last_block bit is used to prevent undetected truncation. In MLA, it is already the role of the EndOfArchiveData tag at the file layer level

Thus, to seek-and-read at a given position, the layer decrypts the block containing this position, and verifies the tag before returning the decrypted data.

The authors decided to use elliptic curve over RSA, because:

  • No ready-for-production Rust-based libraries have been found at the date of writing
  • A security-audited Rust library already exists for Curve25519
  • Curve25519 is widely used and respects several criteria
  • Common arguments, such as the ones of Trail of bits

AES-GCM is used because it is one of the most commonly used AEAD algorithms and using one avoids a whole class of attacks. In addition, it lets us rely on hardware acceleration (like AES-NI) to keep reasonable performance.

External cryptographic libraries have been reviewed:

  • RustCrypto AES-GCM, reviewed by NCC Group
  • Dalek cryptography library, reviewed by Quarkslab

Compression Layer

Implemented in CompressionLayer*.

This layer is based on the Brotli compression algorithm (RFC 7932). Each 4MB of cleartext data is stored in a separately compressed chunk.

This algorithm, used with a window of size 1, is able to read each chunk and stop when 4MB of cleartext has been obtained. It is then reset, and starts decompressing the next chunk.

To speed up the decompression, and to make the layer seekable, a footer is used. It saves the compressed size. Knowing the decompressed size, a seek at a cleartext position can be performed by seeking to the beginning of the correct compressed block, then decompressing the first bytes until the desired position is reached.

The footer is also used to allow for a wider window, enabling faster decompression. Finally, it also records the size of the last block, to compute the frontier between compressed data and the footer.

The 4MB size is a trade-off between a better compression (higher value) and faster seeking (smaller value). It has been chosen based on benchmarking of representative data. Better compression can also be achieved by setting the compression quality parameter to a higher value (leading to a slower process).

File storage

Files are saved as series of archive-file blocks. A first special type of block indicates the start of a file, along with its filename and a file ID. A second special type of block indicates the end of the current file.

Blocks contain file data, prepended with the current block size and the corresponding file ID. Even if the format handles streaming files, the size of a file chunk must be known before writing it. The file ID enables blocks from different files to be interleaved.

The file-ending block marks the end of data for a given file, and includes its full content SHA256. Thus, the integrity of files can be checked, even on repair operations.

The layer footer contains for each file its size, its ending block offset and an index of its block locations. Block location index enables direct access. The ending block offset enables fast hash retrieval and the file size eases the conversion to formats needing the size of the file before the data, such as Tar.

If this footer is unavailable, the archive is read from the beginning to recover file information.

API Guidelines

The archive format provides, for each file:

  • a filename, which is an unicode String
  • data, which are a stream of bytes

A few metadata are also computed, such as:

  • the file size
  • the SHA256 hash of the content

No additional metadata (permissions, ownership, etc.) are present, and would probably not be added unless very strong arguments are given. The goal is to keep the file format simple enough, and to leave the complexity to the code using it. Things such as permissions, ownership, etc. are hard to guarantee over several OSes and filesystems; and lead to higher complexity, for example in tar. For the same reasons, / or \ do not have any significance in filename; it is up to the user to choose how to handle them (are there namespaces? directories in Windows style? etc.).

If one still wants to have associated metadata for its own use case, the recommended way is to embed an additional file in the archive containing the needed metadata.

Additionally, the file format is expected to change slightly in the future, to keep an easier backward compatibility, or, at least, version conversion, and simple support.

The API provided by the library is then very simple:

  • Add a file
  • Start / Add file chunk / End
  • List files in the archive (unordered)
  • Get a file
  • Get a file hash

As the need for a less general API might appear, helpers are available in mla::helpers, such as:

  • StreamWriter: Provides a Write interface on a ArchiveWriter file (could be used when even file chunk sizes are not known, likely with io::copy)
  • linear_extract: Extract an Archive linearly. Faster way to extract a whole archive, by reducing the amount of costly seek operations

Is a new format really required?

As existing archive formats are numerous, probably not.

But to the best of the authors' knowledge, none of them support the aforementioned features (but, of course, are better suitable for others purposes).

For instance (from the understanding of the author):

  • tar format needs to know the size of files before adding them, and is not seekable
  • zip format could lose information about files if the footer is removed
  • 7zip format requires to rebuild the entire archive while adding files to it (not streamable). It is also quite complex, and so harder to audit / trust when unpacking unknown archive
  • journald format is not streamable. Also, one writter / multiple reader is not needed here, thus releasing some constraints journald format have
  • any archive + age: age could be used jointly with an archive format to provide encryption, but would likely lack integration with the inner archive format
  • Backup formats are generally written to avoid things such as duplication, hence their need to keep bigger structures in memory, or their not being streamable

Tweaking these formats would likely have resulted in similar properties. The choice has been made to keep a better control over what the format is capable of, and to (try to) KISS.

Testing

The repository contains:

  • unit tests (for mla and curve25519-parser), testing separately expected behaviors
  • integration tests (for mlar), testing common scenarios, such as create->list->to-tar, or create->truncate->repair
  • benchmarking scenarios (for mla)
  • AFL scenario (for mla)
  • A committed archive in format v1, to ensure backward readability over time

Performance

One can evaluate the performance through embedded benchmark, based on Criterion.

Several scenarios are already embedded, such as:

  • File addition, with different size and layer configurations
  • File addition, varying the compression quality
  • File reading, with different size and layer configurations
  • Random file read, with different size and layer configurations
  • Linear archive extraction, with different size and layer configurations

On an "Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz":

$ cd mla/
$ cargo bench
...
multiple_layers_multiple_block_size/Layers ENCRYPT | COMPRESS | DEFAULT/1048576                                                                           
                        time:   [28.091 ms 28.259 ms 28.434 ms]
                        thrpt:  [35.170 MiB/s 35.388 MiB/s 35.598 MiB/s]
...
chunk_size_decompress_mutilfiles_random/Layers ENCRYPT | COMPRESS | DEFAULT/4194304                                                                          
                        time:   [126.46 ms 129.54 ms 133.42 ms]
                        thrpt:  [29.980 MiB/s 30.878 MiB/s 31.630 MiB/s]
...
linear_vs_normal_extract/LINEAR / Layers DEBUG | EMPTY/2097152                        
                        time:   [145.19 us 150.13 us 153.69 us]
                        thrpt:  [12.708 GiB/s 13.010 GiB/s 13.453 GiB/s]
...

Criterion.rs documentation explains how to get back HTML reports, compare results, etc.

The AES-NI extension is enabled in the compilation toolchain for the supported architectures, leading to massive performance gain for the encryption layer, especially in reading operations. Because the crate aesni statically enables it, it might lead to errors if the user's architecture does not support it. It could be disabled at the compilation time, or by commenting the associated section in .cargo/config.

Fuzzing

A fuzzing scenario made with afl.rs is available in mla-fuzz-afl. The scenario is capable of:

  • Creating archives with interleaved files, and different layers enabled
  • Reading them to check their content
  • Repairing the archive without truncation, and verifying it
  • Altering the archive raw data, and ensuring reading it does not panic (but only fail)
  • Repairing the altered archive, and ensuring the recovery doesn't fail (only reports detected errors)

To launch it:

  1. produce initial samples by uncommenting produce_samples() in mla-fuzz-afl/src/main.rs
cd mla-fuzz-afl
# ... uncomment `produces_samples()` ...
mkdir in
mkdir out
cargo run
  1. build and launch AFL
cargo afl build
cargo afl run -i in -o out ../target/debug/mla-fuzz-afl

If you have found crashes, try to replay them with either:

  • Peruvian rabbit mode of AFL: cargo afl run -i - -o out -C ../target/debug/mla-fuzz-afl
  • Direct replay: ../target/debug/mla-fuzz-afl < out/crashes/crash_id
  • Debugging: uncomment the "Replay sample" part of mla-fuzz-afl/src/main.rs, and add dbg!() when it's needed

:warning: The stability is quite low, likely due to the process used for the scenario (deserialization from the data provided by AFL) and variability of inner algorithms, such as brotli. Crashes, if any, might not be reproducible or due to the mla-fuzz-afl inner working, which is a bit complex (and therefore likely buggy). One can comment unrelevant parts in mla-fuzz-afl/src/main.rs to ensure a better experience.

FAQ

Is MLAArchiveWriter Send?

By default, MLAArchiveWriter is not Send. If the inner writable type is also Send, one can enable the feature send for mla in Cargo.toml, such as:

[dependencies]
mla = { version = "...", default-features = false, features = ["send"]}

How to deterministically generate a key-pair?

The option --seed of mlar keygen can be used to deterministically generate a key-pair. For instance, it can be used for reproductive testing or archiving a key in a safe.

:warning: It is not recommended to use a seed unless one knows why she is doing it. The security of the resulting private-key is dependent of the security of the seed. In particular:

  • if an attacker known the seed, he knowns the private-key
  • the entropy of the resulting private-key is at most the one of the seed

The algorithm used for the generation is as follow:

  1. given a seed, encode it as an UTF8 sequence of bytes bytes
  2. prng_seed = SHA512(bytes)[0..32]
  3. secret = ChaCha-20rounds(prng_seed)
  4. secret, after being clamped as specified by the Curve-25519 reference, is used as the private key

How to setup a "hierarchical key infrastructure"?

mlar provides a subcommand keyderive to deterministically derive sub-key from a given key along a derivation path (a bit like BIP-32, except children public keys can't be derived from the parent one).

For instance, if one wants to derive the following scheme:

root_key
    ├──["App X"]── key_app_x
    │   └──["v1.2.3"]── key_app_x_v1.2.3
    └──["App Y"]── key_app_y

One can use the following commands:

# Create the root key (--seed can be used if this key must be created deterministically, see above)
mlar keygen root_key
# Create App keys
mlar keyderive root_key key_app_x --path "App X"
mlar keyderive root_key key_app_y --path "App Y"
# Create the v1.2.3 key of App X
mlar keyderive key_app_x key_app_x_v1.2.3 --path "v1.2.3"

At this point, let's consider an outage happened and keys have been lost.

One can recover all the keys from the root_key private key. For instance, to recover the key_app_v1.2.3:

mlar keyderive root_key recovered_key --path "App X" --path "v1.2.3"

As such, if the App X owner only knows key_app_x, he can recover all of its subkeys, including key_app_v1.2.3 but excluding key_app_y.

:warning: This scheme does not provide any revocation mechanism. If a parent key is compromised, all of the key in its sub-tree must be considered compromised (ie. all past and futures key that can be obtained from it). The opposite is not true: a parent key remains safe if any of its children key is compromised.

The algorithm used for the generation is as follow:

  1. Given a private key, extract it's secret as a 32-bytes value (the clamped private key of Curve 25519)

  2. For each path encoded as UTF8:

    1. Derive a seed from a HKDF-SHA512 function (RFC5869) with: HKDF-SHA512(salt="PATH DERIVATION" ASCII-encoded, ikm=secret extracted from the parent key, info=Derivation path)
    2. Use the first 32-bytes as a seed for a ChaCha-20 rounds PRNG
    3. The first 32-bytes output of ChaCha, after being clamped as specified by the Curve-25519 reference, is used as the new private key
  3. Use the last computed private key as the resulting key

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ s390x

mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.0 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl (2.1 MB view details)

Uploaded PyPy manylinux: glibc 2.5+ i686

mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ s390x

mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.0 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl (2.1 MB view details)

Uploaded PyPy manylinux: glibc 2.5+ i686

mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ s390x

mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.0 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl (2.1 MB view details)

Uploaded PyPy manylinux: glibc 2.5+ i686

mla_archive-0.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.3 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ s390x

mla_archive-0.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.2 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ppc64le

mla_archive-0.1.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.0 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARMv7l

mla_archive-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ ARM64

mla_archive-0.1.0-cp312-none-win_amd64.whl (977.2 kB view details)

Uploaded CPython 3.12 Windows x86-64

mla_archive-0.1.0-cp312-none-win32.whl (994.7 kB view details)

Uploaded CPython 3.12 Windows x86

mla_archive-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

mla_archive-0.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

mla_archive-0.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.2 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

mla_archive-0.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.0 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

mla_archive-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

mla_archive-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (2.1 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.5+ i686

mla_archive-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

mla_archive-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12 macOS 10.12+ x86-64

mla_archive-0.1.0-cp311-none-win_amd64.whl (978.2 kB view details)

Uploaded CPython 3.11 Windows x86-64

mla_archive-0.1.0-cp311-none-win32.whl (993.7 kB view details)

Uploaded CPython 3.11 Windows x86

mla_archive-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

mla_archive-0.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

mla_archive-0.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.2 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

mla_archive-0.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.0 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

mla_archive-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

mla_archive-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (2.1 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.5+ i686

mla_archive-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

mla_archive-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11 macOS 10.12+ x86-64

mla_archive-0.1.0-cp310-none-win_amd64.whl (978.4 kB view details)

Uploaded CPython 3.10 Windows x86-64

mla_archive-0.1.0-cp310-none-win32.whl (993.6 kB view details)

Uploaded CPython 3.10 Windows x86

mla_archive-0.1.0-cp310-cp310-manylinux_2_34_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.34+ x86-64

mla_archive-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

mla_archive-0.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

mla_archive-0.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

mla_archive-0.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

mla_archive-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

mla_archive-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (2.1 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.5+ i686

mla_archive-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

mla_archive-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10 macOS 10.12+ x86-64

mla_archive-0.1.0-cp39-none-win_amd64.whl (978.6 kB view details)

Uploaded CPython 3.9 Windows x86-64

mla_archive-0.1.0-cp39-none-win32.whl (993.7 kB view details)

Uploaded CPython 3.9 Windows x86

mla_archive-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

mla_archive-0.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

mla_archive-0.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.2 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

mla_archive-0.1.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

mla_archive-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

mla_archive-0.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl (2.1 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.5+ i686

mla_archive-0.1.0-cp38-none-win_amd64.whl (977.4 kB view details)

Uploaded CPython 3.8 Windows x86-64

mla_archive-0.1.0-cp38-none-win32.whl (993.5 kB view details)

Uploaded CPython 3.8 Windows x86

mla_archive-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

mla_archive-0.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

mla_archive-0.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.2 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

mla_archive-0.1.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARMv7l

mla_archive-0.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

mla_archive-0.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl (2.1 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.5+ i686

File details

Details for the file mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4969ab94c7debc25cba669b89b8ff2dd678916580585a6d50bd745d8307a1911
MD5 c6659971e41591aee78361de66b5d6e1
BLAKE2b-256 acf0fe259eabae28534a26eecc813bc8af5f057033792fb8a0b5e8cbc917db85

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 7f0b36afbf2d7398b505aadb0d878f38e975273c197a3127c15d2ec5be4a97b8
MD5 bccc0431bddff502b48059b9fc943a58
BLAKE2b-256 eb1821721b7293f53a714bd70b5637fd4d9e501298d4287c8db2d8fe07df59a0

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 0ae4e6c4ddb7bb8145e104ab9297eb479efe922c3a785847b50411994c216ca1
MD5 427397d82539a5a9aee4bff0162d3b59
BLAKE2b-256 54dcc10ee19c746ff3f614120223c131674a060e0828d668a7bb3841e6ecac58

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 541cf7a44c453bc157d8b49d937483fc6ea0ce8b8fb9d80b7c2893a2bf0b24ad
MD5 6a1e76336489abc8e033acb895ef9396
BLAKE2b-256 b0b4079e58733c85a8a31e7d22c10a743733c26b4387ccc38ccc89ee98271c37

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fe96aa9159f16a579aff2c094e830397e3da6de5f100d6bfd1fc43d777a1ae98
MD5 b52b9cc976da1063642b94183812bff8
BLAKE2b-256 244f73d7e436ef3bca1325e0a2a0c21d992dd591014dd6a9adad910a06238129

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 4737702933c0099ade44cfc3bc22be9e70fb68f7dcfd3f2d46441d289efdd580
MD5 adf54d2c55904541025d98a093f5df97
BLAKE2b-256 aa24a2ed50a4839d0c6dfe24e59977966483ac200df9089742b36985c22c6d7a

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f7d045be5e23797fd39c16c310412df5907422cc230fcfab2229154dd3eede4f
MD5 e36dab3579478636e70145d152148da7
BLAKE2b-256 b6b537dbc428cd9d506321ba27b2c1211a8748aa0f55d4b405764d771e05c84c

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 1a6110b6d12c397212ea21394f740fd7e9aa03f8d8974f96570d3d2ad9b98faf
MD5 3d0d5102a8c145a247aabab2b2cca89e
BLAKE2b-256 2ac4623c6d47c9e6f05abdd0c878626aef854b7a833d31064bba17b0bd75e0bf

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 300286cacf8182aa1293fc8cc958d4b36acc893d679d405145a688ada1814bb8
MD5 9b843e312aad3faa442a053d23f2d669
BLAKE2b-256 1b24488d8b95066bf40c5196e0b785b136bc047758feac4ed71f7da65c47a73c

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 a924f4e0f5584d73556136af089a7aed22de630059f61b1429d7a26038d5eac7
MD5 e85ddde83a3c754cdec6674f33836749
BLAKE2b-256 8cc59af2fe73bb327113cc52f259d1500d1d50b800057d3e1d11c7e41f6f37be

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ce4773b175bf7ad65a999d550fc6e9e6127a9658e62336f59fdef50096a0b33f
MD5 91bb2143bc975cafb98bcf17f6f33696
BLAKE2b-256 70c7a4b5755e5f2a7e5f72a9f2f3921e8807a52d8fff485ea606b1fd48e14993

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 74c64f72ee8699a4900ffaf12871c4b5b5217e87983feac18760eb29a681d90b
MD5 c42256dbd1b377bf624e6a3c32f5141a
BLAKE2b-256 9db3dc881199866b6d368d6c3116162a7c314d280a49dac30644d9dfadb6c09b

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f02f9048e53e53a9e6c527781d55a816188a42b33cb60a83820ab4aadf6f9bac
MD5 4a2c42232770f52804e771206cb1bc15
BLAKE2b-256 e97d3ae52e05a83ea1b4eecd5da34d4112ce23ae26f0a28a9fca7b16ea7f4d58

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 3f5b4ddb5ecdd6e13324ff9b20f9edd407b92b3f1c01f1593fe2d3ff8c746c81
MD5 f75ac15c1a6d1216640e3c30a7d91089
BLAKE2b-256 217505c2fac132ded9dda1b00c1f362c773f1553e2f69381f7c60fe9b42a5ea7

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 3266a7e49c560d7b9fdde2f4c69f587eac7ce01ea805bc500963dff71d4f7b3f
MD5 db58796be4b8c1116ca9379244ad1df0
BLAKE2b-256 a83ecf96da023d039d1f96c4af83f38832d8faa51c8f741cc6873123835f961d

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 9407ecd8d19e2afda22adc06a8034e8640d1eb1af2333fc3ee6390efa800ec47
MD5 1e4f216a2291403504824b7a31f63fe9
BLAKE2b-256 5107078249be9465d9295d97ba30073a07db1de9addb786cdba163edd21f65d4

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d17ebe9af52bb7dff008d5cef9e10d13f2ec9a910b3363957b50ebb065bd2970
MD5 41fab8d248c0c72b939fac07df08e302
BLAKE2b-256 0d5645967efe70d7aaeac193f872af5c3d96b653624627031626fc2243841c40

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 ec780207070e298355651caeaee5cd18cba3bc45e9fb8f19bbd059af058632a5
MD5 c85a51b22613eff8464d211d87e48a59
BLAKE2b-256 20e4089ef261c90dd7a36ff1007b01e64d50454bb7a90400befc5fb377039289

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 44fcd9c93b5dbe9bd9810356c1b6c66b0277f08e5e220a04b76d91709ff67479
MD5 49c8a962e0b59827cea091b6863bf682
BLAKE2b-256 372acd1806d39f20505b12ac48e4a69b7601217f29ef5c5e3c9f34fe05d8ceb1

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 3522413c2554aa8e6ce7a70a373182cf70a1ddf6042759e24905425c506b7ce3
MD5 767e1d50f2aeb9751bfa4db14b893244
BLAKE2b-256 0245b62bfc73f54db5e2aeb8fb28a2d62a82983836d54c5127581ede810ec289

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 0cbfa74d13da3ed34db20744785302b2ef8a57bf553cb6fb371a1ac4a2991407
MD5 4b78729886a6ae89b5b079e0ef26e33c
BLAKE2b-256 c454c2415c1856781096b2a6b9af15c49c260c2be4de9779e7337e37cb85d277

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 29a11b62f908bd01cf976a9ae921b1bee6ba945f1227d8f33e85d1fdabd4e21d
MD5 b9b5bce8d6373afc4da945e99e0b4b4d
BLAKE2b-256 769ab0e0e9dddc30453020c1bb12dd6fc57392992f5eb2d17a806f8b5649e6a8

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp312-none-win_amd64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 4affb9a98a589d5cb22ea8ce9659a5a917f15a19aaf648d42d4a16eca6f2ecba
MD5 f8db99d9394d30386964c15fe3782157
BLAKE2b-256 f903e3cbac07268237ba022fe9fc66e601c3a6eff47a0ffb728473191dafae4a

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp312-none-win32.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp312-none-win32.whl
Algorithm Hash digest
SHA256 96ec7be79f3c95f06cfd429f5224845cbc2914e3b4d68de252754b5ea3cb6842
MD5 6cf0b5ceb5448c3305f04ffc50837bd7
BLAKE2b-256 be784a13711726d45a24418c68b51fd3c1bb59b6c8559bff0f184e1da3aae8a1

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 90385d3c171ac1eb4b92e85bdac2c3c11e0616fc27d02b9614fb32ec5492eb08
MD5 b76f956bd3191fa22b5618a5ea6e54ed
BLAKE2b-256 0dd2c92f8d8022d908232dbe4c0a2e44feda745a908ce125e4628298a91a38ee

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 a0fb5d6df2ac5e788bee64e05ecbbd0e3fee277dffc753d59e1a2af05e28a067
MD5 b813464a49a88f56741aa0cebc1daf72
BLAKE2b-256 78f9982a1da6486c3149914a3906ec023586906659e7635b8b4873943efafd7c

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 e936bee12effb8f016dacb88037750f212fa1ea2b3a3a55d2f84fe29497eb17a
MD5 6b5e01073a07df2c3851794159f19919
BLAKE2b-256 6b5a9491537f7e9fd24e249b6944095cf12d11f15f6428ba1d8a55a0044a3137

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 a589a94a6fec379d588c84e51ec7f589aca44b78bcf4a554994334a6d303de90
MD5 68e88735cfe4b88ef192fa413d126e4d
BLAKE2b-256 5ac6cd56e041a0794c2071197f0bcc04d28379e8519d71cbfa9bc8396236fa6e

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 51917ec00f353cfee52f356238df546f432198f38975e03749b177481195181e
MD5 57f00108079b6ead640c15d6bb3247c9
BLAKE2b-256 e4448659d40341d4dced23106316f82040c7071466c2b21d89bb2ad5b0e83328

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 c5a25ca7d10a8d321984ebbede72a3e28f2418f263a2141df8f74368b0f96b74
MD5 b174792242a31a072328f98fde86c4c0
BLAKE2b-256 3558ad59b3a831274f76b37bd469fe92e6ae2d03eb134f52428c5187a6e9bf45

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f24fb72f4688a15fe4035d10bd64b48775fa8f01ef8db7b5c909593840888dee
MD5 b8414accb40f05b89eb28d98dad0afdf
BLAKE2b-256 86b6b0064da0cc191ae508eb15e220626349e7bb75140189da06ef4b848f0ace

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 60401dcd093105a161997f3d51decdd844ca63c8a80006aaee857a1612f51e10
MD5 9d5b6fda0101d8bcfb8c9b409f885106
BLAKE2b-256 b6077c161768296601040ce409a6dd9702bac9c06ee8fbe64acb01293d8b7cc2

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp311-none-win_amd64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 41cd88f867fa05fb0e331cdb9f5840db28f93a0dc9e132edb15fd3ceac22c400
MD5 267007cb086f690359bb3f5bd64a7c15
BLAKE2b-256 8d38e433db619c1c29877cdba5621f57f34bb553ac1da2dac678bf95d2cc77eb

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp311-none-win32.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp311-none-win32.whl
Algorithm Hash digest
SHA256 864b5ecc387f4ef20f3fe6b646fca6461566c788d50058b338f18d7c636ba97f
MD5 54d2e41cd5ed7ea0ee18e8341b903098
BLAKE2b-256 a09b0d38f426af3a0b129e7bf848dba88203d7cf013e8f1e042cfd56515d0b26

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 590295386ddc5ddbc48ec61f3bf76f441c828cc3347aaeda1a25cc5af07ef052
MD5 da2cc5c8c4ec98f355345abc8cdf021a
BLAKE2b-256 52eb697fe38c813619b22c487e23e85dba57d487cda6fcfc0ecf3e92cbcf0f80

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 f0f19988b4b7a8467ce4104550e8f544d119899b7c58d7f117edc3ee81d6f37b
MD5 19d0fd4c8654e0f2436f34f3bab2c2f1
BLAKE2b-256 7c3e3d31d9fc1b9ce64ba443bca3a2ef726962ebe9dcda25c0aa3e01f002a1b2

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ccf46e7bf91a32c08a51c8af1dc9db038726f0f7a03409a2ef207d444a21376d
MD5 11427f77f98b1a98367ab6b36c1d2b40
BLAKE2b-256 f329534cbb3e24289566bfcebb92dbe95d24bd5d0f6d54ae3683dea06d0bb9ec

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 31ef2b146b4529c6b6b0341d111e7452867c6de277f00b04cc4b9fbb3d947433
MD5 addcf13f402b146cb3520ef0d4e6e204
BLAKE2b-256 c44ff9ae55d89695515c31d209ceb72f5a54da28675454ca6d6dfbd545896b47

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dd50ea3f747bbbd0505e764fa65938e87050457ede9efb878894deefd90cc72b
MD5 e4903a84ef83c2546fc47174be616dbb
BLAKE2b-256 cfc5c278f357a7930fe24d675ffc294673e7c7cfa26efa50701a4743343c3aef

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 20fb0374f95aad63168d01ae06f55899965cb42dc9e11003f2ef1d9435320078
MD5 02ef4644f97d8fba33753515424f09ac
BLAKE2b-256 ef21c46e279e2fca049d7dc93352c0f7ed8ee3d66527fc4b51c8f235a5a5eeac

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 74365d0666bf16ed361bbac51565d3e2189f339df210fbeea775dbc044d8a6ea
MD5 6b4294f457d2f96de207353af5210cd9
BLAKE2b-256 8108c53843f11fa96fcee93a285d10cf2b9f6978837416b6df6f479c272be343

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a14f46d6fea05d24ad284be2e053f77d280e5b80a152665d117b085d87bb8d59
MD5 37a6aa8f0d4f15eef741360ded558b06
BLAKE2b-256 ff35f33e64b0c7c67aa54187f82f94322aad9aeceec7178771950329079bf2b6

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp310-none-win_amd64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 19982e567acca5e628c91cebb207ca23aa440bcbb3bebd2f0120e020dae4de99
MD5 96750b8624177451cd10955221afc34b
BLAKE2b-256 f262065d55dcb3e3dc44a5426d23aa98de2b3240409ef1fb41f6057cfa897dbf

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp310-none-win32.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp310-none-win32.whl
Algorithm Hash digest
SHA256 4c1e2ebe42121ca6d7978c8175ecb69e74df556396305426691166189ca4364d
MD5 9828fce2ebb9d0df94e846b13c6abf4d
BLAKE2b-256 0abf7de4cc22b27cedcd72735e341b26cadf26b88ed91916c52d92d5ffe7b227

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 35601e2f4180770c2986ea53d76532c45e07d60acf3e0328e0e022444a875e39
MD5 09fadaf7c3448fc0a4ec31090ec539d0
BLAKE2b-256 deaf716862d47deeed8285cd2e5da1b1541b179864862dbdb12d457be2422494

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f893489cde5e71b387257434a25639dc8d7c38b832d20e58cb88e10e729046b3
MD5 4097ae654f8509b2176f2f1637a9fa98
BLAKE2b-256 8621124844f5fe8a33e7945e1a7609e2d497230f24914f5daf67468543837bf5

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 d37dca53a997ea1f0f6a168f4b474e83c3ad4cc57577b3816b2acf0579a860aa
MD5 7e0749ecfc348f2783f65b754a45111f
BLAKE2b-256 7c8b4c669553f514751122f62bbce1811d6bd6ec627406eeb7e519b80583f3a3

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 8d60483800ca13df9158144b0bb9243b967397c1d9a089a93eac45003e81f167
MD5 e65545ece67d0ae0f964634604a4de1e
BLAKE2b-256 ebe62a5b5ce1fb24e5e28674c1afd41ee29f1dfcef15701670fee8a62867cb6b

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 10243e5d4e9190847a44b22a4b3eacad3348701efed9901a239657ae00b781f9
MD5 091f521ded9dd0b6aafe941f361b9a43
BLAKE2b-256 c8edb9f449e1de57b58081991275af7f7fe6037eae020d4f73fce676dde2688b

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3c6e99c433eb2a9bb9abbaef62159c88a5639010ec996ec1dac36babc867923a
MD5 48fc651cf009f333fdb7e6ab735b079d
BLAKE2b-256 036407194e4e8e700814430f79f7fa794bf8831330611ed8f5afb7f8bda62354

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 d2e04ade89d0efea56256a0aa6fd5e140c4fb00f1d3b3ef524ee57585a3fdcd7
MD5 c8ed16fe01bbc90f3b43c539644c65dd
BLAKE2b-256 654524e40cf5bf8c39e64965550f50610b4e586c1bfdf9fedb65682df660b50b

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 11e3e468c979a3440feea7c511f37ac5beea863c21c436e7aeb2aef3f1b04e66
MD5 da39c707417085d10220f4615fbe7ed5
BLAKE2b-256 0416a4c7485fdf3da2c4769ed8fef6eb9e092d0a8294bd33d1f5e3afb26fb4ed

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 419aedb374eacf06243ce5ad9e18bf7ba4baeff888fcf438052c076f33152aa5
MD5 1e9f9df07643f995aa474b856eecb3b6
BLAKE2b-256 0c77058639cb1153679b3d6d7639639c73228bf9a00c7cdc467ac4b0d7a40032

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp39-none-win_amd64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 6cb4fca24bc392fb6d57f8ff166821bad0bc7e74726e7b0728141ffeb7c82ad7
MD5 db9daeeb402419165428d34cb803fac0
BLAKE2b-256 57209f2f9bf5deb00691c9255112bda293b9ecec0eda2b0acb993b29e9f13680

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp39-none-win32.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp39-none-win32.whl
Algorithm Hash digest
SHA256 81f5c43182842962ca994f968872e991325994939ab3b3dbe6174503a19c91fa
MD5 61abf483cf17fd44bdef0df3a71548ac
BLAKE2b-256 675957e4b2e01b169b4db146eaed2dc72a03700d6decce5e271a194234c9745f

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cffa95108aade7eaa21587c10321bcf3f3e39edfd0687a40d7141b16788f0e90
MD5 cf5adabee012fcd0d646ad5ac2595e02
BLAKE2b-256 642bba8128b8d965c77de87bbbf22eb919f26876429e208c351be3e236420881

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 65e36c794545f66ef0d4c39520307d9a2a19de4af478ffbf207ff6978477def5
MD5 fd7a246e3eed7912317a943447975cf6
BLAKE2b-256 bb82096aa7dc7bfe30c954d214da66868eb48ae14fbe110f9b080692b7d93a7b

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 c68f1cd6a500b550e3c7a05af60554c9c8bb7b30d9cffe65f0973ce9cffa0104
MD5 4d222d31eadebaf8d29e90a5d459f4e0
BLAKE2b-256 383cd8f664f827a1cbfefc7931e71f10809271c46f1f239c11ecebfe805546e6

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 be4e10503324168d5e5fbd4eafb47a5786c6fb4ab181dc55fdd1a36ddfaa077c
MD5 45cab1a0d4ecf7bee26aec0d0d65dcc4
BLAKE2b-256 cf6dd43e8b79a334adc525673c657e594820ec752bdcaca94424b1390f322223

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1f85ccba7111215008047af9b21843bda4d9dbf9135bdf1f2a999efefaad999c
MD5 4a3cdf27f9160e17ee43971503a48962
BLAKE2b-256 62ac301344cd1b94fc1dead32712cc0def454c2e19316bf4e164af233006d47e

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 8449e1b4c5b83bea3e0b37f2a08ae525828db71d414cb66bc34f4a1110411e93
MD5 481e4effd341d8c1b6e9445aa6630f32
BLAKE2b-256 2fba7eb17cb6ff240217c57dc100f4b67b26404f500a7bd6325398a2a042afee

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp38-none-win_amd64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 39eee2592afebebbd3ad39847c5e43aacf62a3e42e26a131683da71f18c96461
MD5 1b92f1d480e7bb89dd39fe25c5bce813
BLAKE2b-256 f1c03b6802cfed150608057b2050ab0917ac13583495fca14004cbe619261539

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp38-none-win32.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp38-none-win32.whl
Algorithm Hash digest
SHA256 a6c52fa5d1334f39b9cdb34bf1a6aa48d28f5e5fd8e2a7171862e9735b19eb49
MD5 69e00dd76ff8c4529bba13297fd39ce4
BLAKE2b-256 b0b4d47ae9f00c359c9cfc82d3b875b80989b478f78d417f2119065ca5838d9b

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cb781d7c02b5a83cfb7e8c1e27c7ea8cf61f9c6e7ac605f6203b187781773985
MD5 16277ce49a727a13f2e3cb5a68ac6faa
BLAKE2b-256 b29a95e9ab4b38a65adf5f45102c012349388c62af0f7b3475bb5680d78a184e

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 9b4b9bd32f9f98b5f86098327e677c325e51e0575caa11aed02aa196bd03c1c4
MD5 afba5b87c6059411be6a6f08be7e37f2
BLAKE2b-256 2f5e68a8c92113216164a4fd6cf74c6f9c1e61c085d9b919348099a527764229

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 b34b0eaa2c8d8cdddf689c9b83115d4575ec58171f05a846dc0e7078d84986c3
MD5 0d0873166fd8a7f4b1956880a330cfbe
BLAKE2b-256 645a5c0ec40c83fe9ae5bd8a09f72747964dcf5546586d27d4112abb5ff1d9c7

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 1f53007fcee96b213f6992a418e83b2595918e881c6e7ba8c159741fef28b24d
MD5 43e9ad3a6c4d6177b1e86b1ccf714ec1
BLAKE2b-256 4d6d9f3a13731dfd5d830ab456fe881f5d5fd7b3db665407e9c91b3ffa755d52

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7b7a106ac11ffce85ccf9fdd06255bd9eea07ac3648bece540cd2e451189e5ef
MD5 b527b1185e6ece66c0f42274ebd4a2fd
BLAKE2b-256 3f0c6a001f0ffed5072a3c39cf7a0e5328fae171482b51399ba77b641a84dd79

See more details on using hashes here.

File details

Details for the file mla_archive-0.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for mla_archive-0.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 4a7730add790dfef4bfd0b9deb3d12af1cb55e13103f38d12fcd2c586f8ee4ef
MD5 ded11eb6b054b46c750415c50c8ffed6
BLAKE2b-256 29436036f0196552f3301bf6429638cb69c4a074ea884553b2131373ddc3f30c

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