C++ accelerated CSV preprocessing and data cleaning for pandas
Project description
Your CSV hits C++ before Python even wakes up.
Arnio is a compiled C++ data cleaning engine that slots in before pandas.
It parses, infers types, strips whitespace, deduplicates, and normalizes —
all natively, in columnar memory — then hands you a pristine DataFrame.
No .apply(). No lambda chains. No spaghetti.
pip install arnio
Quickstart · Why Arnio · Architecture · Benchmarks · Contribute
⚡ Quickstart
Three lines. That's the entire workflow.
import arnio as ar
# Load CSV directly through C++ — no Python parsing overhead
frame = ar.read_csv("messy_sales_data.csv")
# Declare what clean data looks like — arnio handles the rest
clean = ar.pipeline(frame, [
("strip_whitespace",),
("normalize_case", {"case_type": "lower"}),
("fill_nulls", {"value": 0.0, "subset": ["revenue"]}),
("drop_nulls",),
("drop_duplicates",),
])
# Out comes a standard pandas DataFrame — use it like you always have
df = ar.to_pandas(clean)
Every step above executes in C++. Your Python code is a configuration — not the execution engine.
📸 Peek at a 100 GB file without loading it
scan_csv reads only the header + a sample to infer the schema. Zero data loaded.
schema = ar.scan_csv("100GB_file.csv")
# {'id': 'int64', 'name': 'string', 'is_active': 'bool', 'revenue': 'float64'}
Useful for exploring datasets before committing memory.
🧩 Add custom steps without touching C++
Register any Python function as a pipeline step. It receives a DataFrame, returns a DataFrame.
def remove_outliers(df, column="revenue", threshold=100_000):
return df[df[column] <= threshold]
ar.register_step("remove_outliers", remove_outliers)
# Now use it in any pipeline alongside native C++ steps
clean = ar.pipeline(frame, [
("strip_whitespace",),
("remove_outliers", {"column": "revenue", "threshold": 50000}),
("drop_duplicates",),
])
Custom steps run through a pandas↔ArFrame conversion bridge. Prototype in Python, then optionally migrate hot paths to C++ for full speed.
🔍 Why Arnio exists
Every data project starts the same way:
df = pd.read_csv("data.csv") # 💥 RAM spike — entire file as raw strings
df.columns = df.columns.str.strip() # Why is this not automatic?
df["name"] = df["name"].str.strip() # Python loop over every cell
df["name"] = df["name"].str.lower() # Another Python loop
df = df.dropna() # Another pass
df = df.drop_duplicates() # Another pass
Six lines. Four full-data passes. All in interpreted Python. This is fine for a Jupyter demo — but it doesn't scale, it doesn't compose, and it definitely doesn't belong in production.
Arnio intercepts this entire pattern. It moves the heavy lifting to C++, replaces imperative chains with a declarative pipeline, and gives you a clean DataFrame in one shot.
Without Arniodf = pd.read_csv(path)
df.columns = df.columns.str.strip()
for col in str_cols:
df[col] = df[col].str.strip()
df[col] = df[col].str.lower()
df = df.dropna(subset=["revenue"])
df = df.drop_duplicates()
# 6+ lines, multiple passes, pure Python
|
With Arnioframe = ar.read_csv(path)
df = ar.to_pandas(ar.pipeline(frame, [
("strip_whitespace",),
("normalize_case", {"case_type": "lower"}),
("drop_nulls", {"subset": ["revenue"]}),
("drop_duplicates",),
]))
# Declarative. Single pipeline. C++ execution.
|
🏗️ Architecture
Arnio is not a pandas wrapper. It's a separate runtime with its own data model.
┌──────────────────────────────────────────────────────────────┐
│ Your Python Code │
│ frame = ar.read_csv("data.csv") │
│ clean = ar.pipeline(frame, [...]) │
│ df = ar.to_pandas(clean) │
└────────────────────────┬─────────────────────────────────────┘
│ pybind11 boundary
┌────────────────────────▼─────────────────────────────────────┐
│ C++ Runtime (_arnio_cpp) │
│ │
│ ┌─────────────┐ ┌─────────────────┐ ┌──────────────────┐ │
│ │ CsvReader │ │ Frame/Column │ │ Cleaning Engine │ │
│ │ • RFC 4180 │ │ • Columnar │ │ • drop_nulls │ │
│ │ • BOM strip │ │ • std::variant │ │ • fill_nulls │ │
│ │ • Type │ │ • Bool null │ │ • drop_dupes │ │
│ │ inference │ │ masks │ │ • strip_ws │ │
│ │ • Quoted │ │ • O(1) column │ │ • normalize │ │
│ │ fields │ │ lookup │ │ • rename/cast │ │
│ └─────────────┘ └─────────────────┘ └──────────────────┘ │
│ │
│ to_pandas() ──→ zero-copy NumPy buffer (numerics/bools) │
└──────────────────────────────────────────────────────────────┘
Design decisions that matter
| Decision | What it means |
|---|---|
| Columnar storage | Data lives in typed std::vectors — vector<int64_t>, vector<double>, vector<string> — not rows of variants. Cache-friendly and SIMD-ready. |
| Boolean null masks | Nulls are tracked in a separate vector<bool>, keeping data vectors dense. No sentinel values, no NaN tricks. |
| Two-pass CSV read | Pass 1 infers types across all rows. Pass 2 parses values directly into the correct typed column. No string→object→cast overhead. |
| Zero-copy bridge | to_pandas() exposes C++ memory directly via NumPy's buffer protocol. Numeric and boolean columns cross the boundary without copying. |
| Step registry | Pipeline steps map to C++ function pointers. Adding a new cleaning primitive is a single function + one registry entry. |
Full architecture documentation: ARCHITECTURE.md
🏎️ Benchmarks
Setup: Ubuntu, Python 3.12, 1M rows × 12 columns, synthetic messy CSV.
Reproduce:make benchmark— generates data and runs both engines.
pandas arnio
────────────────────────────────────────────
Exec Time (avg) 4.73s 5.75s
Peak RAM 211MB 212MB
API Clarity Imperative Declarative
Arnio is near memory parity in the reference benchmark while replacing ad-hoc Python string loops with a compiled, declarative pipeline. Validate memory and speed on your own workload. The execution time gap is a known, active optimization target — the current drop_duplicates and strip_whitespace implementations use unoptimized row-key serialization.
| ✅ What's already won | 🎯 What's being optimized |
|
|
🧰 Cleaning primitives
Every operation below runs natively in C++. No Python loops.
| Primitive | What it does | Example |
|---|---|---|
drop_nulls |
Remove rows with null/empty values | ar.drop_nulls(frame, subset=["age"]) |
fill_nulls |
Replace nulls with a scalar | ar.fill_nulls(frame, 0, subset=["revenue"]) |
drop_duplicates |
Deduplicate rows (first/last/none) | ar.drop_duplicates(frame, keep="first") |
strip_whitespace |
Trim leading/trailing spaces from strings | ar.strip_whitespace(frame) |
normalize_case |
Force lower/upper/title case | ar.normalize_case(frame, case_type="title") |
rename_columns |
Rename columns via mapping | ar.rename_columns(frame, {"old": "new"}) |
cast_types |
Cast column types | ar.cast_types(frame, {"age": "int64"}) |
clean |
Convenience shorthand | ar.clean(frame, drop_nulls=True) |
Or compose them all into a pipeline:
clean = ar.pipeline(frame, [
("strip_whitespace",),
("normalize_case", {"case_type": "lower"}),
("fill_nulls", {"value": "unknown", "subset": ["city"]}),
("drop_duplicates", {"keep": "first"}),
])
🧠 Data quality engine
Arnio now includes built-in dataset understanding before you analyze in pandas.
report = ar.profile(frame)
print(report.summary())
suggestions = ar.suggest_cleaning(frame)
clean = ar.pipeline(frame, suggestions)
For production data contracts:
schema = ar.Schema({
"id": ar.Int64(nullable=False, unique=True),
"email": ar.Email(nullable=False),
"revenue": ar.Float64(nullable=True, min=0),
})
result = ar.validate(frame, schema)
if not result.passed:
print(result.to_pandas())
For low-risk automatic cleanup:
clean, report = ar.auto_clean(frame, mode="strict", return_report=True)
This is the layer pandas does not try to own: profiling, data contracts, row-level validation issues, and safe cleaning suggestions for messy incoming datasets.
🗺️ Roadmap
| Version | Focus | Status |
|---|---|---|
| v1.0 | Stable release · cross-platform wheels · CI/CD · PyPI publishing · Google Colab support | ✅ Shipped |
| v0.2 | C++ pipeline optimization · speed parity with pandas · hash-based deduplication | 🔨 Active |
| v0.3 | Chunked / streaming processing · Parquet & JSON readers | 📋 Planned |
| v0.4 | Parallel column processing · SIMD string operations | 💭 Exploring |
🤝 Contribute
Arnio is a GSSoC 2026 project with 55+ open issues across all skill levels.
You don't need C++ to contribute
Most new features are pure Python pipeline steps:
# 1. Write a function that takes a DataFrame and returns a DataFrame
def remove_special_chars(df, columns=None):
cols = columns or df.select_dtypes("object").columns
for col in cols:
df[col] = df[col].str.replace(r"[^a-zA-Z0-9\s]", "", regex=True)
return df
# 2. Register it
ar.register_step("remove_special_chars", remove_special_chars)
# 3. Write tests, open a PR. That's it.
If you do know C++
The biggest performance wins are in:
drop_duplicates— replacingstd::ostringstreamrow serialization with proper hash-based comparisonsstrip_whitespace— converting from copy-on-write to in-place mutation- Parallel column processing —
std::threadacross independent columns
Getting started
# macOS / Linux
git clone https://github.com/im-anishraj/arnio.git && cd arnio
make install # pip install -e ".[dev]" + pre-commit
make test # pytest with coverage
make lint # ruff + black
# Windows
pip install -e ".[dev]"
pre-commit install
pytest tests/ -v
PR titles must follow Conventional Commits —
feat:,fix:,docs:,chore:. Our release pipeline auto-generates changelogs from these.
📖 Full Contributing Guide · 🐛 Open Issues · 💬 Discussions
📐 Project structure
arnio/
├── cpp/
│ ├── include/arnio/ # C++ headers — types, column, frame, csv_reader, cleaning
│ └── src/ # C++ implementations (~30 KB of compiled logic)
├── bindings/
│ └── bind_arnio.cpp # pybind11 module — the Python↔C++ bridge
├── arnio/
│ ├── __init__.py # Public API surface
│ ├── io.py # read_csv, scan_csv
│ ├── cleaning.py # Python wrappers for C++ cleaning functions
│ ├── pipeline.py # Step registry + pipeline executor
│ ├── convert.py # to_pandas (zero-copy), from_pandas
│ ├── frame.py # ArFrame — lightweight C++ Frame wrapper
│ └── exceptions.py # ArnioError, UnknownStepError, CsvReadError, TypeCastError
├── tests/ # pytest suite — CSV, cleaning, pipeline, conversions
├── benchmarks/ # Reproducible arnio vs pandas benchmark
├── examples/ # basic_usage.py, custom_step.py
└── website/ # Project website — arnio.vercel.app
Stop writing cleaning scripts. Declare clean data.
Built with C++ and pybind11 · Licensed under MIT · Maintained by @im-anishraj
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arnio-1.1.0.tar.gz.
File metadata
- Download URL: arnio-1.1.0.tar.gz
- Upload date:
- Size: 2.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5002469f6c01a258a321d588b230705ee8a179451ee327e3fe04540e210475a
|
|
| MD5 |
63e3e0958c16d4081b7091da47a3a284
|
|
| BLAKE2b-256 |
2991c9e39206cec632b109a21542fc6cf92bdc7f5b2743e93d6c174c7900eeac
|
File details
Details for the file arnio-1.1.0-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: arnio-1.1.0-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 187.9 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3124fcef370d3a56fd8c621f24ccedd443f315996a187ed65ac247273f0ff714
|
|
| MD5 |
92f54342f114d08c4d13bdb00b4193b9
|
|
| BLAKE2b-256 |
f93216de75fb69207a3b55a6cebcd2015b35efc5ae9f8ccbd3a92e8dad916810
|
File details
Details for the file arnio-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: arnio-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 235.3 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b5b15a7b39a793afc9cd77e5d5782fab72d22476a548bb21b4e81b27df0a60b
|
|
| MD5 |
47ca2e67a11321b7b059915c600eb312
|
|
| BLAKE2b-256 |
aaa58cfe48c5f33fdc313f6d6bd7f04d4104d46ee27784758ddcb8d97f929722
|
File details
Details for the file arnio-1.1.0-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: arnio-1.1.0-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 177.5 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e65b46f68a52741e5adcd91a9c8f2ea6c3eb96e83aef2c7f8976c3c743ea51d
|
|
| MD5 |
59325d2376aba8bf4cc130e8d3f97b6e
|
|
| BLAKE2b-256 |
714c1b054a3555fa31d482d467564bf6c99cb168bddcc18b11352ccac03dc404
|
File details
Details for the file arnio-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl.
File metadata
- Download URL: arnio-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl
- Upload date:
- Size: 192.6 kB
- Tags: CPython 3.13, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
196a90841e33d1474f1b3d8235f549d13d8001eee64ef42f47765ed52a7f4dda
|
|
| MD5 |
7e7b5923453787a1cd1757ba47fb3816
|
|
| BLAKE2b-256 |
3b100fa995f08971cc6909d348647d7b65c94b0bba06e0372cdf90303ca10f88
|
File details
Details for the file arnio-1.1.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: arnio-1.1.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 187.9 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6235ebd29a87f60bdfaf4b448c9155fa95232fbc4a40446afc575feb57cd9c9
|
|
| MD5 |
614d046e45f37fb487a73af970049f43
|
|
| BLAKE2b-256 |
ecb35daf5ce445ebdac2e22eabfc77b74a8bc0675d7039f7bf7a54cb9033c730
|
File details
Details for the file arnio-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: arnio-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 235.2 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e115330c1dd0d966b791ca84abb0be9d0daaed962a9d6338e617a88151fb8e99
|
|
| MD5 |
54dcdcf8b2f43ff21aae56989edc0813
|
|
| BLAKE2b-256 |
0ece26002e0deb8c820756465f9f5ebe174e6f40ab5c5f09eb8422febff5d04b
|
File details
Details for the file arnio-1.1.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: arnio-1.1.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 177.5 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
890984cb4ae379c09f0265812a65c8e28a16035342c4de6976cfc86c6c8ce270
|
|
| MD5 |
163b24c552c6f9919c948c0505ae5f7c
|
|
| BLAKE2b-256 |
0c4ff981786d76fa741d8ee28f73ec93efbaad1a39ff9daafb17858bc6f76e1f
|
File details
Details for the file arnio-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl.
File metadata
- Download URL: arnio-1.1.0-cp312-cp312-macosx_10_13_x86_64.whl
- Upload date:
- Size: 192.5 kB
- Tags: CPython 3.12, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4348b0b1d63d10aa8f6997c78b9842f76600ae3dbaf9ebeb7a2cf978f36d7842
|
|
| MD5 |
e048bb553805a9cba531dac037c4f98a
|
|
| BLAKE2b-256 |
cc8d5f29455ce7a290fd434007f03dc6309dc7d0edc28e9097633c0c1a7e9ff8
|
File details
Details for the file arnio-1.1.0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: arnio-1.1.0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 185.8 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
406fb08f370dffdeed16a4aacafc0880ae483149e853a6f7df93a672100eab63
|
|
| MD5 |
e1d2ae6d80e30c5ea1ababb09f2ec7cf
|
|
| BLAKE2b-256 |
47e1a1835a4e2f9c59ccea63ba71879c022d0fb2f7d53f463788e5909dc56b82
|
File details
Details for the file arnio-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: arnio-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 234.3 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54a316422737207f2b54b76e9ac684a4c6b211ba170aabda4f9d3202fc457fef
|
|
| MD5 |
f0a0689de5a085bd2259f00921f1a16b
|
|
| BLAKE2b-256 |
f3871e070d950716d7d0557043376c3a124005cf0c5312b873f816c663ff465a
|
File details
Details for the file arnio-1.1.0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: arnio-1.1.0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 176.8 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7490e898ed31c44117e1a4cb4bf1b85ba0ff9871088827ea6a7eb8b38f01a74
|
|
| MD5 |
08ee494f936cc7fce76c2e3478d32789
|
|
| BLAKE2b-256 |
5998035a3dd0e6bbab32fc53c40b63b4ab811771ff006c6a20895025f8f8fc2a
|
File details
Details for the file arnio-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl.
File metadata
- Download URL: arnio-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl
- Upload date:
- Size: 191.0 kB
- Tags: CPython 3.11, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33813ca2862ee94f3e4eacd7daa42a7fcad2878fdd7d569ae219f5bcfab20fe5
|
|
| MD5 |
a563a99ee3bdbfc7c0c01b7d5babd1de
|
|
| BLAKE2b-256 |
043e751bb9ffa9d617d46b840b5b822b2ed48db34cf4faa75f6156c730686ce8
|
File details
Details for the file arnio-1.1.0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: arnio-1.1.0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 185.0 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe9270d8c29b656ed0acfdac88b4d548343ecea301cd3c3c808917f4ee53f07a
|
|
| MD5 |
e7b4776273534e87689a021e99f20f90
|
|
| BLAKE2b-256 |
635539d062c60cbbb999f321ea7ab8acde11f957bac7348cdb1de0476c6ab9da
|
File details
Details for the file arnio-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: arnio-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 232.7 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1fab5519434e73411704a26af8b00965bdfd5d57af8b7913b83fd35affb0dbe4
|
|
| MD5 |
9bf4cc1369af6fcb4e7aaa7e757c42a0
|
|
| BLAKE2b-256 |
029a0f4cc38e075105f5edef0c2a100fd729056b1e2c1cbf559e7fd54454b9e2
|
File details
Details for the file arnio-1.1.0-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: arnio-1.1.0-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 175.8 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cfc5377248bd2cef148148ecc83e18c3a779356b656c27a02e96ad40e163272e
|
|
| MD5 |
3721af150d871d0cf6b59ce6cb06059f
|
|
| BLAKE2b-256 |
dd9d02d7ab9b0062ac596f62eb49670455211abfb1ed1c06accd20163f7aec4d
|
File details
Details for the file arnio-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl.
File metadata
- Download URL: arnio-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl
- Upload date:
- Size: 189.6 kB
- Tags: CPython 3.10, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64a35c58ff1e9ef46d762dc63a818a27c4ab23c874f6f8703d6f622b9003a112
|
|
| MD5 |
fb6befb9002f3673b661dc79675d813e
|
|
| BLAKE2b-256 |
370eb5bc652d95dfaf19a571550bfaa427dbf266e3ccfec7c72332aa9be22f50
|
File details
Details for the file arnio-1.1.0-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: arnio-1.1.0-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 191.7 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc8cd855ec629cc658b0f8a4ad1cc0c154d974bebc726b0327b518498a00377e
|
|
| MD5 |
88e177b72e3097a5cc8c78807f2b1059
|
|
| BLAKE2b-256 |
c5576d2cd17c5975bafe87975dfa4bce2c0ba1ede1a902e1b1d945a6fbefab99
|
File details
Details for the file arnio-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: arnio-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 233.1 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06fb2f425609e86e8f3bea387e5ab2958a45adca3b7d8ffe6e03fb24c3862739
|
|
| MD5 |
5bcc9c93e8b0a96386ac865588ced094
|
|
| BLAKE2b-256 |
59138c1fa52f2fc492fa89768240cd523ff297879727f8dde60877def97f95c9
|
File details
Details for the file arnio-1.1.0-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: arnio-1.1.0-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 175.9 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
63fbc646835c3934fbc05ffcb567ff92d768f4fbc89940688ba4c2e09e1b274a
|
|
| MD5 |
239c6807bb5da20e877bdb3e95d16cd1
|
|
| BLAKE2b-256 |
a4605336c396e5f5bf3c4d1bbe26e57e897c55e4ba9555ffebe850ed38765ff9
|
File details
Details for the file arnio-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl.
File metadata
- Download URL: arnio-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl
- Upload date:
- Size: 189.7 kB
- Tags: CPython 3.9, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab01c9ad105b5414584fe50d05d427b5af7238ebce0a731280985dc531cff85b
|
|
| MD5 |
44b98ab4d6861fb1833fbc9917f4ca61
|
|
| BLAKE2b-256 |
edbd3d0503751e44176b88925d55679cd7307e3934e54ea4d0ced1d03c744f0c
|