Skip to main content

emval is a blazingly fast email validator

Project description

📬 emval

GitHub License GitHub Release GitHub last commit GitHub Actions Workflow Status Crates.io Version docs.rs PyPI

emval is a blazingly fast email validator written in Rust with Python bindings, offering performance improvements of 100-1000x over traditional validators.

performance image

Features

  • Drop-in replacement for popular email validators like python-email-validator, verify-email, and pyIsEmail.
  • 100-1000x faster than python-email-validator.
  • Validates email address syntax according to RFC 5322 and RFC 6531.
  • Checks domain deliverability (coming soon).
  • Supports internationalized domain names (IDN) and local parts.
  • Provides user-friendly syntax errors.
  • Normalizes addresses.
  • Rejects invalid and unsafe Unicode characters.

Getting Started

Install emval from PyPI:

pip install emval

or use emval in a Rust project:

cargo add emval

Usage

Quick Start

To validate an email address in Python:

from emval import validate_email, EmailValidator

email = "example@domain.com"

try:
    # Check if the email is valid.
    val_email = validate_email(email)
    # Utilize the normalized form for storage.
    normalized_email = val_email.normalized
except Exception as e:
    # Example: "Invalid Local Part: Quoting the local part before the '@' sign is not permitted in this context."
    print(str(e))

The same code in Rust:

use emval::{validate_email, ValidationError};

fn main() -> Result<(), ValidationError> {
    let email = "example@domain.com";
    let val_email = validate_email(email)?;
    let normalized_email = val_email.normalized;
    Ok(())
}

Configurations

Customize email validation behavior using the EmailValidator class:

from emval import EmailValidator

emval = EmailValidator(
    allow_smtputf8=False,
    allow_empty_local=True,
    allow_quoted_local=True,
    allow_domain_literal=True,
    deliverable_address=False,
    allowed_special_domains=['test', 'invalid'],
)

email = "user@[192.168.1.1]"

try:
    validated_email = emval.validate_email(email)
    print(validated_email)
except Exception as e:
    print(str(e))

The same code in Rust:

use emval::{EmailValidator, ValidationError};

fn main() -> Result<(), ValidationError> {
    let emval = EmailValidator {
        allow_smtputf8: false,
        allow_empty_local: true,
        allow_quoted_local: true,
        allow_domain_literal: true,
        deliverable_address: false,
        allowed_special_domains: vec!["test".to_string(), "invalid".to_string()],
    };

    let email = "example@domain.com";
    let validated_email = emval.validate_email(email)?;
    Ok(())
}

Options

  • allow_smtputf8: Allows internationalized email addresses.
  • allow_empty_local: Allows an empty local part (e.g., @domain.com).
  • allow_quoted_local: Allows quoted local parts (e.g., "user name"@domain.com).
  • allow_domain_literal: Allows domain literals (e.g., [192.168.0.1]).
  • deliverable_address: Checks if the email address is deliverable by verifying the domain's MX records.
  • allowed_special_domains: List of special-use domains to allow despite being reserved (e.g., ['test', 'invalid']).

Polars Plugin

emval includes a high-performance Polars plugin for validating email addresses in DataFrames at scale.

Installation

The Polars plugin is included when you install emval:

pip install emval

Usage

Import the validate_email function from emval.polars and use it with Polars expressions:

import polars as pl
from emval.polars import validate_email

# Create a DataFrame with email addresses
df = pl.DataFrame({
    "email": [
        "user@example.com",
        "invalid-email",
        "another.user@domain.org",
        ""
    ]
})

# Validate emails and add results as a struct column
result = df.with_columns(
    validated=validate_email(
        pl.col("email"),
        allow_smtputf8=True,
        allow_empty_local=False,
        allow_quoted_local=False,
        allow_domain_literal=False,
        deliverable_address=False,
        allowed_special_domains=[]
    )
)

# Extract individual fields from the validation result
result = result.with_columns(
    original=pl.col("validated").struct.field("original"),
    normalized=pl.col("validated").struct.field("normalized"),
    local_part=pl.col("validated").struct.field("local_part"),
    domain_address=pl.col("validated").struct.field("domain_address"),
    domain_name=pl.col("validated").struct.field("domain_name"),
    is_deliverable=pl.col("validated").struct.field("is_deliverable"),
)

print(result)

Return Fields

The validate_email function returns a struct with the following fields:

  • original: The original email address (null if invalid)
  • normalized: The normalized form of the email address (null if invalid)
  • local_part: The local part of the email address (null if invalid)
  • domain_address: The IP address if a domain literal was used (null otherwise)
  • domain_name: The domain name (null if invalid)
  • is_deliverable: Whether the email is deliverable based on MX records (null if invalid or not checked)

Invalid emails will have all fields set to null, making it easy to filter valid emails:

# Filter to only valid emails
valid_emails = result.filter(pl.col("normalized").is_not_null())

Performance Benefits

The Polars plugin leverages Rust's performance and Polars' columnar architecture to validate millions of email addresses efficiently. This is ideal for:

  • Data cleaning and validation pipelines
  • Batch processing of user data
  • ETL workflows
  • Large-scale email list verification

Technical Details

Email Address Syntax

emval adheres to the syntax rules defined in RFC 5322 and RFC 6531. It supports both ASCII and internationalized characters.

Internationalized Email Addresses

Domain Names

emval converts non-ASCII domain names into their ASCII "Punycode" form according to IDNA 2008. This ensures compatibility with systems that do not support Unicode.

Local Parts

emval allows international characters in the local part of email addresses, following RFC 6531. It offers options to handle environments without SMTPUTF8 support.

Unsafe Unicode Characters

emval rejects unsafe Unicode characters to enhance security, preventing display and interpretation issues.

Normalization

emval normalizes email addresses to ensure consistency:

  • Lowercasing domains: Domain names are standardized to lowercase.
  • Unicode NFC normalization: Characters are transformed into their precomposed forms.
  • Removing unnecessary characters: Quotes and backslashes in the local part are removed.

Acknowledgements

This project draws inspiration from python-email-validator. While python-email-validator is more comprehensive, emval aims to provide a faster solution.

Getting Help

For questions and issues, please open an issue in the GitHub issue tracker.

License

emval is licensed under the MIT License. See the LICENSE file for more details.

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

emval-0.1.12.tar.gz (68.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

emval-0.1.12-cp313-cp313t-win_amd64.whl (6.0 MB view details)

Uploaded CPython 3.13tWindows x86-64

emval-0.1.12-cp313-cp313t-win32.whl (5.4 MB view details)

Uploaded CPython 3.13tWindows x86

emval-0.1.12-cp313-cp313t-musllinux_1_2_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

emval-0.1.12-cp313-cp313t-musllinux_1_2_i686.whl (6.5 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ i686

emval-0.1.12-cp313-cp313t-musllinux_1_2_armv7l.whl (6.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARMv7l

emval-0.1.12-cp313-cp313t-musllinux_1_2_aarch64.whl (5.9 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

emval-0.1.12-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

emval-0.1.12-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl (6.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ s390x

emval-0.1.12-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (6.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ppc64le

emval-0.1.12-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (6.1 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARMv7l

emval-0.1.12-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

emval-0.1.12-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.whl (6.5 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.12+ i686

emval-0.1.12-cp313-cp313t-macosx_11_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.13tmacOS 11.0+ ARM64

emval-0.1.12-cp313-cp313t-macosx_10_12_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.13tmacOS 10.12+ x86-64

emval-0.1.12-cp38-abi3-win_amd64.whl (6.0 MB view details)

Uploaded CPython 3.8+Windows x86-64

emval-0.1.12-cp38-abi3-win32.whl (5.4 MB view details)

Uploaded CPython 3.8+Windows x86

emval-0.1.12-cp38-abi3-musllinux_1_2_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ x86-64

emval-0.1.12-cp38-abi3-musllinux_1_2_i686.whl (6.5 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ i686

emval-0.1.12-cp38-abi3-musllinux_1_2_armv7l.whl (6.4 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARMv7l

emval-0.1.12-cp38-abi3-musllinux_1_2_aarch64.whl (5.9 MB view details)

Uploaded CPython 3.8+musllinux: musl 1.2+ ARM64

emval-0.1.12-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.2 MB view details)

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

emval-0.1.12-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (6.6 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ s390x

emval-0.1.12-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (6.5 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ppc64le

emval-0.1.12-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (6.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARMv7l

emval-0.1.12-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.8 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

emval-0.1.12-cp38-abi3-manylinux_2_12_i686.manylinux2010_i686.whl (6.5 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.12+ i686

emval-0.1.12-cp38-abi3-macosx_11_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

emval-0.1.12-cp38-abi3-macosx_10_12_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.8+macOS 10.12+ x86-64

File details

Details for the file emval-0.1.12.tar.gz.

File metadata

  • Download URL: emval-0.1.12.tar.gz
  • Upload date:
  • Size: 68.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.9.6

File hashes

Hashes for emval-0.1.12.tar.gz
Algorithm Hash digest
SHA256 b80e37ec8df34d3ec39ad15251c7064b3d39d0c9da05132a17840e7ad02f30b0
MD5 8994c6eef9cfa2f7c14f35a934728aa7
BLAKE2b-256 be3b0dbfa91deee6a253f536a1492ef44418d0b3f8f54270806ae6e109abeef3

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp313-cp313t-win_amd64.whl.

File metadata

  • Download URL: emval-0.1.12-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: CPython 3.13t, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.9.6

File hashes

Hashes for emval-0.1.12-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 7ff57c81d8270711600318b34a5fec929063f32b77c9bc489ef70371cac63d10
MD5 76cca19b9c140768fdc6f706587b4716
BLAKE2b-256 b3794fef2a0aa083ed2f1c38a68f308353844ff687d96aa2db994bc5aed583f3

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp313-cp313t-win32.whl.

File metadata

  • Download URL: emval-0.1.12-cp313-cp313t-win32.whl
  • Upload date:
  • Size: 5.4 MB
  • Tags: CPython 3.13t, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.9.6

File hashes

Hashes for emval-0.1.12-cp313-cp313t-win32.whl
Algorithm Hash digest
SHA256 f08428428712e6d5f7412f8e6350d87af2f4a3927e26c61ef5563b3c8ed69a58
MD5 4d57f4de3f25a5c64153656f089a2e82
BLAKE2b-256 055f0c5f0d89bde73eb733c94ac13174dc356209a0105f2474632b87b74031c0

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e42e7e497ad938a9c0e0fc458d3afd391031170e106dfaf769e4b972bb94a24e
MD5 043b835d39f145b17069536df49d371d
BLAKE2b-256 ddee1e2eddeb5272778c6991f0b122f2d8b735c812ab5e97ffc3b4b3c5067018

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp313-cp313t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp313-cp313t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 67eb4f95f731e7d40f96647bf5e5f38b2bdd7c7a4e8147ad04bfa3445e12645f
MD5 c40d1e4011959b1317f0b6982539b05e
BLAKE2b-256 723bab7757126da2cfa3c20eac7a6d400798d8e3d0464aee623452a9795de518

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp313-cp313t-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp313-cp313t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 b9e05ef0e112b600294a65d09ed23ee6458e0c14a04d0bbaedebbe8efaf3aee1
MD5 21af70ed0e82133ee083ff8eef5532fe
BLAKE2b-256 4d6139a82f8c91f139368fe81e4a561d7a7532ac80630aa10362f621cc981152

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 383dc6b32459a2fe7cc294d1586d3f787d56ceb370a12f90813bc1ce8155cd81
MD5 b35c4ae4d3deae197d4293a189512ce8
BLAKE2b-256 982a8da039eac780cab3abb0519c8f439d619a368c20da27bde9b392ed33fd39

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c7fd5e6f8961eca337b1a2bf42e61a7841fc48f45924068b904fe6d5b40b8996
MD5 4538ee8e01feb90a5bc217d5c937f902
BLAKE2b-256 7b4ba26148b43f89f5d65dd1b9a1b389c052d1c941a3376c9eda4a419b495fe0

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 4d9c0d89eb550e474781dc59a0fbda8b6d8a8ec95d2cab1d16179f240634824f
MD5 a18d4ba4391d830fb77da12b5060d83c
BLAKE2b-256 bffc68b39d6cbd65b7fc1e440f408348aa91b91eac49b7861e38ea62de305f1e

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 24c146bf708f0c6e0c57c3de57e7a916e1ea14e61f5a29f67b83d65599b459aa
MD5 8d05a83adcc7d3cd1570bb04c49ceb33
BLAKE2b-256 05f1619c6aec5f49eb616c2c22d0d61eee239dfa78423108d2a39f14888270cd

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 0dc93122f6853425f0dfed88894138418389bd9181f0309da4b0c43d5bfb88e1
MD5 27da9c255888f76939ef55493df16528
BLAKE2b-256 570a84d58b2fdf8954c41b7785ed8452442e97f89c2d7c9b8ff27908c20c77be

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9564ec568b170eeeb9473325973e289057838c68d3b94a0aaab432ee63cfcf8c
MD5 833d331242a0c03ca184b22a92779a4a
BLAKE2b-256 57f40fe756c00d7bab6269ebe567b0b2fd25a0031e035b7f1bbd691598bb0ef2

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 76a87dcbdbd5fededc1cfcfa4a508b7a1cfabd92abe5b2bf16cac76537982eba
MD5 80b7fb18b7c1fef1ec77034fb30ea1c8
BLAKE2b-256 32a60875c45ee68d12376f212f486691a18357f74afc15e0f34d344b11160775

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp313-cp313t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp313-cp313t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b69d38b73912157389237272885c5a809e48832fd0ed6a6f4c240145af73804b
MD5 82ed01857f4cf40d15da5f21695c71a6
BLAKE2b-256 16371b109a47b8ba9809e834e2f6abc8c8c1bc4b4e890f9b5845dc9d10d27bc0

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp313-cp313t-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp313-cp313t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 211064ed33b13fdeb3f259ee4450b5dfdee69eaea3fbecac191f735dc5a472da
MD5 46cfd6e6d1e1e0ca2e2e024ade538b3f
BLAKE2b-256 ed1de10dcbb46d10f95b04509fec936d79b24097d8d1e4f731915758c112333e

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: emval-0.1.12-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: CPython 3.8+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.9.6

File hashes

Hashes for emval-0.1.12-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 c759bd9a77dae4b5354b94ed39ff2321c5cf83aa2a16cd1518cd903e991c4a98
MD5 ba3230290e701413fa6f55a75ec02bc2
BLAKE2b-256 4b124ec0b2f59c40ed402ac4af328796994736ec09829a1ff3066e9328ce9e8b

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp38-abi3-win32.whl.

File metadata

  • Download URL: emval-0.1.12-cp38-abi3-win32.whl
  • Upload date:
  • Size: 5.4 MB
  • Tags: CPython 3.8+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.9.6

File hashes

Hashes for emval-0.1.12-cp38-abi3-win32.whl
Algorithm Hash digest
SHA256 682b72baa322c769d5217f58a40e0d953d33d739159539b7c44feb0d42d2742c
MD5 0b08c386036ed815c35bb38974524aac
BLAKE2b-256 0015f02636bdb956067ff45216acbc42601b993c99341b3a52104e95935dcfe7

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp38-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp38-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d32cbe5654bba0ff99e3562adedb7907ab2f116c2f2d16dfda71ba7f1b8440f5
MD5 45a6ccf6489b06445292e7112c4a207a
BLAKE2b-256 9fbccd42112357366297f346b2a875ad95eb7644eed6b077faba50fe2b091ae9

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp38-abi3-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp38-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 c06a6c6e27833642301c4e56c052f63a6ca6987b714250957112d26cabb396af
MD5 5f0015f7454bfce8d47a7bbcb7632de8
BLAKE2b-256 3ca54713d4f58f23b69c07a70712488a850cbc14a88019435a16dda87798d3c0

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp38-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp38-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 d5fb11ab7829c287044fa8740d8c1dd9e169b338f119043f328f3cee286870c2
MD5 f1fdfb9fe94137cb5b8dcf9aed2add02
BLAKE2b-256 5bea5c423acaa757be9978354ce53c359a3461b43368a53254c814f994fc412c

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp38-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp38-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 02c7192032d3f6017febd1747c03640a3f87b4b9bd401b57e5312c20cb036c02
MD5 654d8b6bf1e884f57ce55a94094327ae
BLAKE2b-256 8d9e7fa2f80eef07ced9e5ffae3232b4cd63c987e2a9469a1d9dcc4f6b842da6

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 36e90f1a3e56e30b3ec7739403e26eb15393d301be6756c0ceabefbab673b368
MD5 4fbfe21ec8ff1159aaa385625912e7e5
BLAKE2b-256 2999155d516d77d2cf48213785e67cbf6bce4d1b9d3e383ee57a4b5b715b43dc

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 4228ce4b3d45b278713e646d704d9a4dfdd5cdaaad16b6ca5b9e47c6fab04e32
MD5 ccf3898cacf327598fba3815338c9506
BLAKE2b-256 59b69bf851650a0061e1253cbadc72dafda1e1aacc26e64619e5567c7f78ff0d

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 92dfd39784c9389550d33c1fe971d465240d391cc908365e47fb7a1bb771ca92
MD5 a6d84bae4303c0f61f5c4e267e692c6f
BLAKE2b-256 39de4cc51b60a8bcca6d7687aa32524cdcf91ec1841e0c40f58c9ae03a5cab71

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 cc670e1dd8d57d02b1a50251bdd520b72a4a4fe827fb17b4dd4111b747dc7ff9
MD5 1773ca301825b1ae3bb94c948f8cf928
BLAKE2b-256 7538a58d3030bb29c89d844375a107ece24debfe1500685f21c19b68aeb3bd88

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e16e5bf4bf8b5ad2c337e3b29ef2761069838070223ba9c6fb379708af2842a0
MD5 8e231cc2c80218112712691b01ed20b4
BLAKE2b-256 d832f9076de3846a35df0a5cc01608e605eaf8848f76958cc100372191ae2248

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp38-abi3-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp38-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 06b1613f52b9c3c9fc58df400b9a3fbe47c1dd517f98d7af4bf659a4b4327df0
MD5 9a17767fee5211719610da3fca849b6e
BLAKE2b-256 1d2ad22a62ebca8eb0a1631f8da922b27c30f658e5b086cdeef20ce9993bd54b

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9774458900e91b714d14b21cd78df33f29b51557ae2e640c38761339f77e8336
MD5 89bc9edd45858caf8f139d3231748589
BLAKE2b-256 048bb365505d305b352e9da4b80aefd4e4305747387906f4e0df20e0c035001b

See more details on using hashes here.

File details

Details for the file emval-0.1.12-cp38-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for emval-0.1.12-cp38-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 be3f0446d36f567db7d9f23c189c1ccadce45f5b632aeeec98ef084803be73c7
MD5 d1735ad9c9079b160f90f5948f4e0f86
BLAKE2b-256 211fb4643643693f781c12d27a19fd1856df1b4bbcc0399713987fcda23dc335

See more details on using hashes here.

Supported by

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