Skip to main content

A Python library with Rust bindings for charset detection

Project description

charsetrs

A fast Python library with Rust bindings for detecting file character encodings and normalizing files.

Features

  • Simple API: Just two functions - analyse() and normalize()
  • Fast encoding detection using Rust
  • Newline detection: Detects LF, CRLF, or CR newline styles
  • File normalization: Convert encoding and newlines in-place using streaming
  • Memory efficient: Constant memory usage (~56KB) for files of any size
  • Supports large files: Process 10GB+ files on 512MB RAM systems
  • Supports multiple encodings: UTF-8, Latin-1, Windows-1252, UTF-16, ASCII, Arabic, Korean, and more
  • Configurable sample size: Control memory usage vs accuracy trade-off

Installation

Development Installation

# Install dependencies
uv sync

# Build and install in development mode
uv run maturin develop

Production Build

uv run maturin build --release

Usage

Basic Usage

import charsetrs

# Analyse file encoding and newline style
result = charsetrs.analyse("file.txt")
print(f"Encoding: {result.encoding}")  # e.g., 'utf_8'
print(f"Newlines: {result.newlines}")  # e.g., 'LF', 'CRLF', or 'CR'

# Normalize file to UTF-8 with LF newlines (in-place modification)
charsetrs.normalize(
    "file.txt",
    encoding="utf-8",
    newlines="LF"
)

Working with Large Files

The library uses streaming with strategic sampling to efficiently handle files of any size with constant memory usage (~56KB):

import charsetrs

# Default sampling: 10% of file with 1MB minimum
result = charsetrs.analyse("large_file.txt")

# Use only 5% of file for faster detection
result = charsetrs.analyse("large_file.txt", percentage_sample_size=0.05)

# Cap maximum sample size to 2MB
result = charsetrs.analyse("large_file.txt", max_sample_size=2*1024*1024)

# Adjust minimum sample size for better accuracy on smaller files
result = charsetrs.analyse("medium_file.txt", min_sample_size=512*1024)

# Normalize large file with custom sampling
# Memory usage: ~56KB regardless of file size (10GB+ files supported)
charsetrs.normalize(
    "large_file.txt",
    encoding="utf-8",
    newlines="LF",
    percentage_sample_size=0.05,
    max_sample_size=2*1024*1024
)

Strategic Sampling:

  • Reads 35% from the beginning of the file
  • Reads 15% from the end of the file
  • Reads 50% distributed in chunks throughout the middle
  • Never loads the entire file into memory
  • Ideal for 10GB+ files on 512MB RAM systems

Newline Normalization

Convert between different newline styles (in-place modification):

import charsetrs

# Convert Windows-style (CRLF) to Unix-style (LF)
charsetrs.normalize("windows.txt", encoding="utf-8", newlines="LF")

# Convert to Windows-style (CRLF)
charsetrs.normalize("unix.txt", encoding="utf-8", newlines="CRLF")

# Convert to old Mac-style (CR)
charsetrs.normalize("file.txt", encoding="utf-8", newlines="CR")

Supported Encodings

  • UTF-8, UTF-16 (LE/BE), UTF-32
  • ISO-8859-1 (Latin-1)
  • Windows code pages: 1252, 1256 (Arabic), 1255 (Hebrew), 1253 (Greek), 1251 (Cyrillic), 1254 (Turkish), 1250 (Central European)
  • CP949 (Korean), EUC-KR
  • Shift_JIS, EUC-JP (Japanese)
  • Big5, GBK, GB2312 (Chinese)
  • KOI8-R, KOI8-U (Cyrillic)
  • Mac encodings (Roman, Cyrillic)
  • ASCII

API Reference

charsetrs.analyse(file_path, min_sample_size=1024*1024, percentage_sample_size=0.1, max_sample_size=None)

Analyse the encoding and newline style of a file using strategic sampling.

Parameters:

  • file_path (str or Path): Path to the file
  • min_sample_size (int, optional): Minimum bytes to sample. Default: 1MB (1024*1024). For files smaller than this, the entire file is sampled.
  • percentage_sample_size (float, optional): Percentage of file to sample (0.0 to 1.0). Default: 0.1 (10% of file).
  • max_sample_size (int, optional): Maximum bytes to sample. Default: None (no limit). Use to cap memory usage for very large files.

Returns:

  • AnalysisResult: Object with encoding and newlines attributes

Sampling Strategy: The function reads samples strategically from the file without loading it entirely:

  • 35% from the beginning of the file
  • 15% from the end of the file
  • 50% distributed uniformly in chunks throughout the middle

Example:

result = charsetrs.analyse("file.txt")
print(result.encoding)  # 'utf_8'
print(result.newlines)  # 'LF'

# Custom sampling for large files
result = charsetrs.analyse("large.txt", 
                          min_sample_size=2*1024*1024,
                          percentage_sample_size=0.05,
                          max_sample_size=10*1024*1024)

charsetrs.normalize(file_path, encoding="utf-8", newlines="LF", min_sample_size=1024*1024, percentage_sample_size=0.1, max_sample_size=None)

Normalize a file by converting its encoding and newline style in-place using streaming.

This function modifies the file in-place with constant memory usage (~56KB), making it suitable for very large files (10GB+) on memory-constrained systems (512MB RAM).

Parameters:

  • file_path (str or Path): Path to the file to normalize
  • encoding (str, optional): Target encoding (default: 'utf-8')
  • newlines (str, optional): Target newline style - 'LF', 'CRLF', or 'CR' (default: 'LF')
  • min_sample_size (int, optional): Minimum bytes to sample. Default: 1MB.
  • percentage_sample_size (float, optional): Percentage of file to sample. Default: 0.1 (10%).
  • max_sample_size (int, optional): Maximum bytes to sample. Default: None.

Raises:

  • ValueError: If encoding conversion fails or invalid newlines value
  • IOError: If file cannot be read or written
  • LookupError: If target encoding is invalid

Example:

charsetrs.normalize(
    "input.txt",
    encoding="utf-8",
    newlines="LF"
)

AnalysisResult

A frozen dataclass containing analysis results:

@dataclass(frozen=True)
class AnalysisResult:
    encoding: str                        # e.g., 'utf_8', 'cp1252'
    newlines: Literal["LF", "CRLF", "CR"]  # Detected newline style

Testing

Run the test suite:

uv run pytest tests/

Run specific tests:

# Test new API
uv run pytest tests/test_charsetrs_api.py -v

# Test with sample files
uv run pytest tests/test_full_detection.py -v

Development Tasks

The project uses taskipy for common development tasks:

# Run tests
uv run task test

# Format all code (Python + Rust)
uv run task format

# Check formatting and linting (Python + Rust)
uv run task lint

# Format only Rust code
uv run task format_rust

# Lint only Rust code (formatting + clippy)
uv run task lint_rust

Project Structure

.
├── src/
│   ├── charsetrs/         # Python package
│   │   └── __init__.py    # Python API
│   └── charsetrs_core/        # Rust source code
│       └── lib.rs         # Rust encoding detection
├── tests/                 # Test suite
│   ├── test_charsetrs_api.py
│   ├── test_full_detection.py
│   └── data/              # Sample files in various encodings
├── pyproject.toml         # Python project configuration
└── Cargo.toml             # Rust project configuration

Performance

The library uses streaming with strategic sampling to efficiently handle large files:

  • Constant memory usage: ~56KB regardless of file size
  • Suitable for large files: Process 10GB+ files on 512MB RAM systems
  • Smart sampling: Reads from beginning (35%), end (15%), and middle (50% distributed)
  • Default detection: Samples 10% of file with 1MB minimum
  • Configurable: Adjust min_sample_size, percentage_sample_size, and max_sample_size based on your needs
  • Single-pass processing: Linear time complexity O(n) for normalization

For more details, see MEMORY_EFFICIENCY.md

License

MIT

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

charsetrs-0.2.0.tar.gz (85.4 kB view details)

Uploaded Source

Built Distributions

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

charsetrs-0.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (554.8 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

charsetrs-0.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (553.4 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

charsetrs-0.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (550.7 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

charsetrs-0.2.0-cp313-cp313-win_amd64.whl (395.3 kB view details)

Uploaded CPython 3.13Windows x86-64

charsetrs-0.2.0-cp313-cp313-win32.whl (384.6 kB view details)

Uploaded CPython 3.13Windows x86

charsetrs-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (551.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

charsetrs-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (550.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

charsetrs-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (507.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

charsetrs-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl (510.8 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

charsetrs-0.2.0-cp312-cp312-win_amd64.whl (395.1 kB view details)

Uploaded CPython 3.12Windows x86-64

charsetrs-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (552.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

charsetrs-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (550.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

charsetrs-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (507.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

charsetrs-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl (510.5 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

charsetrs-0.2.0-cp311-cp311-win_amd64.whl (396.6 kB view details)

Uploaded CPython 3.11Windows x86-64

charsetrs-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (554.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

charsetrs-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (552.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

charsetrs-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (508.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

charsetrs-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl (512.5 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

charsetrs-0.2.0-cp310-cp310-win_amd64.whl (396.5 kB view details)

Uploaded CPython 3.10Windows x86-64

charsetrs-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (554.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

charsetrs-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (552.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

File details

Details for the file charsetrs-0.2.0.tar.gz.

File metadata

  • Download URL: charsetrs-0.2.0.tar.gz
  • Upload date:
  • Size: 85.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.11.5

File hashes

Hashes for charsetrs-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9682db46befbc441ddf4986edeae9525daa231e3c76735399f3712d90ea8f0e3
MD5 0c4ccdd159c49231d7bb74ffb501a16e
BLAKE2b-256 7d658edc7fab2849b740ab5926beae46aee5abdbd1ad2daa703e03ae4619c2da

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 df02af16249a18ac84c30a5d33d8ae2dc2867151b861d564dcf66f5d4c6fcd7a
MD5 c0022c084b8878aae8cb491bd8a0d41f
BLAKE2b-256 a605554d566b6836368bafc59927d3ce5cc157d4968bab8694278c73de8707ff

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2fc6b4fe931c8dc32fe6693c462e27f19f69ed51e4e6dbe743d00946103a42d4
MD5 4730ff30376a2dc74fd1e33f5fabd971
BLAKE2b-256 951876e1e70304c395f751e2b3f6621d1132d23273ef0251b64bb655b752920e

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 62a712fac889680a578c8f7d5ec53981c3a695dad0ee82ee8c478feca2cd9149
MD5 3b26ad44a3c70f2c4cc9f5096b04bb65
BLAKE2b-256 61f20addef26101c1a9b818decbc27af27be2a430a5f652e7a8f900ce9e42033

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d292d5c863f59664cf12df445dd5b8fa36f3e8721b0adff6f94c8476ad41ef1c
MD5 48577c116d116400efbcebfb5ad753dc
BLAKE2b-256 9a83629bb02fac2d6988f80a1587598645bbf28b2cf6dfccfa3e1914bf0b42a2

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: charsetrs-0.2.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 384.6 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.11.5

File hashes

Hashes for charsetrs-0.2.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 63b3e7a94c07a6cf0759bfb85294ca6167bc2924dd959dc79b38aaf7639bbe30
MD5 0c15e0f207ab0309ecf371e5f95f7054
BLAKE2b-256 f08023c2254d5dc56ef177bb9adcece90927eb9b5713a9830621dfc20961fb21

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8b9f2ca6ceb19aa585be7ce9d37a434eb27b016710f8ae2d4e68f56ff84bb2b6
MD5 f89878d60864bfc0aa60b24c8c82efec
BLAKE2b-256 ce6db1a7f07992e39b75e9d1ec9a7e19fc6ab58b9e50208463859e8d7e82b2e7

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b8378d2072a2819c67d5ada13bb79675f6b4ec4249933e2052b20a77c76ca543
MD5 e3de9b668aacb54bdae960532bfe3dae
BLAKE2b-256 08c01a86cd67bf24bb037cae52fc5b34f6b45cb130b7891d3c3fdcd60f9c78a4

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d59c4b2e7a71cdbceec768c1ae6452bbf370bb978217706cdf16bcb2a19ea530
MD5 41919cf797a81032aec0c2194085d085
BLAKE2b-256 881a361c940b1cdd8f5cd40ffcb60b9bfa5cffe77c7156ac71175489353f3f82

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9e266c8e0205957b61cb02dd24d6c6c82d2bc8c6aff6b00021930cefc7170817
MD5 bb53212078ceb29848565415abdd9496
BLAKE2b-256 750b7f99ac727338a9b39843bd204efa050e98770604949bebe05b237c017351

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b319fda90e4e805861ec7913450950ad6546a10f8e3c4c0fb6df0b9439b6acf4
MD5 e963abff32e85523e4f47fe1ba9b01b7
BLAKE2b-256 73d111f7695e7ac5b87c0f33860b429844de846f546b6173e236c99fc6e25273

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9299cda595f5b6face855be420e96e2f9e2d623693dfb80f438d8a15a1f928e5
MD5 9901cbc12ba7dffb8b32c78bcef5d330
BLAKE2b-256 c3c397cc375ef01be16db399878992eb77a5b6587e6277ad936ea985d050ccb8

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1f41405e157f28ba73802fdc4fcbd81a8f0f915472c4f5ee7c4b62c377205cfa
MD5 a4128bdd6f423b47055f719f4f185507
BLAKE2b-256 0b5d11dc108acd01ab37e843ec0ecc90b99f50f3422d60a54901d4f5c4a332bc

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1d3704635f8a6e48449cd50edec1d7baa6ae76a1380e8cd99928b9588c6e60a3
MD5 a015a98361e05dc432505f2fef3a32ac
BLAKE2b-256 09f7100e59a1a5bb8ebf0020a79e751a1221b8521151711bb26eb13ab8a0a5ee

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 be129a66d453d9a15290d9b71210977ac3b66cb30e8e1c72e6a6279aada4ad9b
MD5 98a043e598c9bf872d9a3e82005d3026
BLAKE2b-256 7ebddc6e3eb381612ceda0071414f2d0731ba3c63c9db03b9d786629954813fb

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1bd6188e9e1738412b6d2597c761f174a5ca6147008e3c5dd70119a0903fbd26
MD5 bc034d01d0a2e6a993d8d3f4fe4aa0bf
BLAKE2b-256 9f12a066685cbb0a2273d394b516be5168964a4ba55894917976eb8a0e980952

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bf8a77cd4c862fa6cb8214a5c66b62cf9dbd2cba90ede6658de4e057f17d7113
MD5 84f18a490c06626e17e30d9e52d8bcce
BLAKE2b-256 21860e5edf8fe9aea12c83a608bf417a75c42028d4fc633d207cd4059e7ea0b6

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 34455539b79448631057fd481488f5b19590415f44bb5571e929a9d4af71fb2a
MD5 8fe3e27d6f1e7c6bcda428f575c9371f
BLAKE2b-256 39110176c12ac262be4b4221fb8aa0c3b4a8eb36d4499db9f12ea37e73892836

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f3a6e97fcfa1b189fe7c4ea3d87ba255fa54f6c59adb58063830a636085d737
MD5 b81166f81cab54c94529f79ad79826f3
BLAKE2b-256 dfc53fa0d216f5cb00df147366d2f564948b8f9572091f1a7a3e922936bd3e3f

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7571530a849bc44aef96e12a7b3bbd6ae4cf23751f2f6a87327d913915a987cf
MD5 9cff199b665347b4a4e32f7c2da4b232
BLAKE2b-256 9e61ed0012e14c6d94a2e91d73ded370f4ff05a420a124c80bfaaf870a83fc26

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 eabc29917a01934046d5ae7e503501a3122bc99d1e5f42b983ea5f9279c91dff
MD5 a37188a41a3913630d15b94c33ba9558
BLAKE2b-256 8a0f7458bbda923b6a9827f602d08359333360473148ba8ad653dc4c8c4e111f

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 47842f075249bce4e8d3dade4d9417bf57cc3b8f041708578f1508e7ed0b213b
MD5 dd6264d90d9d3fe4c14037c838743e5c
BLAKE2b-256 f903f9e924575b8206ea97c1e53c113d2bb4dd8feb19bc5fa7a2521462cc1fbf

See more details on using hashes here.

File details

Details for the file charsetrs-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for charsetrs-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 61a95a9f6fd4009c7c310461d737c2efb5d3fa16b34350f7ab4ab00a3ed0405e
MD5 0047671055ec6383265cf9d98f6cd466
BLAKE2b-256 6ff15f293efb9431ceeaba06626dc9bb153365d0843a161dec2ae105ff3cfa76

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