MareArts Crystal
Python encryption library for software licensing and data protection. Simple, fast, and cross-platform.
🎯 Core Features
- Software Licensing - Generate and validate time-limited license keys with signatures
- File Encryption - Protect any file type with filename-based encryption
- Data Security - Encrypt strings, configs, and binary data with one line of code
💡 Why MareArts Crystal?
- Simple - Just
pip install marearts-crystaland start coding - Fast - Cython-compiled for C++ performance
- Compatible - Python 3.9-3.14, Windows/macOS/Linux
- Proven - Used in production by real businesses
Installation
pip install marearts-crystal
Requirements: Python 3.9-3.14, Windows/macOS/Linux
Quick Start
License Key Generation
from marearts_crystal import ma_crystal
mask = ma_crystal("your-company-secret")
# Generate license key with signature
today = mask.get_today_date() # "2025-09-12"
expire = mask.generate_end_date(years=1) # "2026-09-12"
license_key, signature = mask.generate_serial_key("customer@email.com", today, expire)
print(f"License Key: {license_key}")
# Output: License Key: MAEV2:gAAAAABow91CXuG7dJR3eAWpEXj67RP-qboPAHiDGpVfd2dGN5yBXp...
print(f"Signature: {signature}")
# Output: Signature: a21521da5beb6d7c
# Validate license
result = mask.validate_serial_key("customer@email.com", license_key)
if result:
start_date, end_date, signature = result
# start_date = "2025-09-12", end_date = "2026-09-12", signature = "a21521da5beb6d7c"
if mask.validate_date(start_date, end_date):
print(f"✅ License active until {end_date}")
# Output: ✅ License active until 2026-09-12
# Using signature for tracking
license_db = {} # Your database
# Store license with signature
license_key, signature = mask.generate_serial_key("user@email.com", today, expire)
license_db[signature] = {
"email": "user@email.com",
"key": license_key,
"created": today
}
# Later, verify and track
result = mask.validate_serial_key("user@email.com", license_key)
if result:
start, end, sig = result
print(f"License {sig} is valid") # Use signature as ID
File Encryption
# Encrypt file
with open("document.pdf", "rb") as f:
file_data = f.read() # Read original file (e.g., 241979 bytes)
encrypted = mask.encrypt_data(file_data)
print(f"Encrypted size: {len(encrypted)} bytes")
# Output: Encrypted size: 322724 bytes
with open("document.pdf.enc", "wb") as f:
f.write(encrypted)
# Decrypt file
with open("document.pdf.enc", "rb") as f:
encrypted_data = f.read()
decrypted = mask.decrypt_data(encrypted_data)
print(f"Decrypted size: {len(decrypted)} bytes")
# Output: Decrypted size: 241979 bytes (matches original)
with open("document_decrypted.pdf", "wb") as f:
f.write(decrypted)
print("✅ File successfully decrypted")
# Output: ✅ File successfully decrypted
More Examples
Python Examples (View on GitHub)
- License key generation and validation
- File encryption/decryption
- Config file encryption
- License manager class implementation
- Password vault implementation
- All API methods demonstration
Jupyter Notebook (Interactive Tutorial)
- Interactive step-by-step tutorial
- Visual output of each operation
- Real-time testing environment
API Reference
Basic Methods
| Method | Description | Example |
|---|---|---|
generate_serial_key(username, start_date, end_date) |
Generate a license key with signature | key, signature = mask.generate_serial_key("user", "2025-09-10", "2025-12-31") |
validate_serial_key(username, serial_key) |
Validate a license key | result = mask.validate_serial_key("user", key) # Returns (start_date, end_date, signature) |
encrypt_string(text) |
Encrypt text | encrypted = mask.encrypt_string("secret") |
decrypt_string(encrypted) |
Decrypt text | text = mask.decrypt_string(encrypted) |
encrypt_data(bytes) |
Encrypt binary data | encrypted = mask.encrypt_data(b"data") |
decrypt_data(encrypted) |
Decrypt binary data | data = mask.decrypt_data(encrypted) |
Utility Methods
| Method | Description | Example |
|---|---|---|
get_today_date() |
Get today's date (YYYY-MM-DD) | today = mask.get_today_date() |
generate_end_date(years, months, days) |
Calculate future date | expire = mask.generate_end_date(years=1) |
validate_date(start, end) |
Check if current date is in range | valid = mask.validate_date("2025-09-10", "2025-12-31") |
is_v2_serial_key(key) |
Check if key uses V2 format | is_v2 = mask.is_v2_serial_key(key) |
is_v2_data(data) |
Check if data uses V2 encryption | is_v2 = mask.is_v2_data(data) |
string_to_secret_key(input_string) |
Derive key from string | key = mask.string_to_secret_key("password") |
secret_key_to_string(secret_key, encrypted) |
Decrypt with provided key | text = mask.secret_key_to_string(key, encrypted) |
Maintainer CI/CD Layout
Root folder keeps only 3 main CI scripts:
./building_wheels.sh- build local Linux wheels./publish_wheels.sh- upload local artifacts to PyPI./trigger_github_action.sh- push release tag to trigger GitHub Actions (macOS/Windows wheels)
All helper scripts are under scripts/:
scripts/pipeline/- orchestrators and pipeline entry scriptsscripts/build/linux/- per-Python/per-arch Linux wheel buildersscripts/verify/- wheel and PyPI verification scriptsscripts/helpers/- utility scripts (version sync, helpers)scripts/legacy/- deprecated scripts kept for reference
Example maintainer flow:
./building_wheels.sh
./publish_wheels.sh
./trigger_github_action.sh
Optional helper commands:
./scripts/verify/verify_wheels_docker.sh
./scripts/verify/verify_pypi_install.sh
./scripts/helpers/update_version.sh
./scripts/pipeline/build_all_wheels.sh
🔗 MareArts AI Package Family
MareArts Crystal is part of our comprehensive AI and utility package ecosystem:
| Package | Description | Use Case |
|---|---|---|
| marearts-anpr 🚗 | License Plate Recognition | Vehicle identification, parking systems, traffic monitoring |
| marearts-road-objects 🛣️ | Road Object Detection | Traffic analysis, smart city applications, safety systems |
| marearts-crystal 🔐 | Encryption & Licensing | Software licensing, data security, key management |
| marearts-xcolor 🎨 | High-performance color extraction | Color detection apps, dominant color query systems |
Support
- Email: hello@marearts.com
- Website: marearts.com
License
MIT License
Metadata
Release files for marearts-crystal 2.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 3.6 MB
Release files / marearts_crystal-2.6.1-cp314-cp314-win_arm64.whl
| Download URL | marearts_crystal-2.6.1-cp314-cp314-win_arm64.whl |
|---|---|
| Size | 101.1 kB |
| Tags | CPython 3.14 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
6b8ee7049eecae00c370fc9cd9cdfa33a08b215898231ad62283a6b1d938c8a3
|
|
BLAKE2b-256 checksum How to use checksums |
c19f45eef18c3be4a8126e980d27bf37998a22114c8bf92b0bbc58df6e77be59
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp314-cp314-win_amd64.whl
| Download URL | marearts_crystal-2.6.1-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 115.7 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
a1b4b9dbd88c6540e1d65a321db1c6bcd2af830665dcfdd00090f3ba84b728f6
|
|
BLAKE2b-256 checksum How to use checksums |
ca7b5bb5417ab69cdec1f53c4dbff5fe41bb053e4f4ae3202269f4605d35dec9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp314-cp314-manylinux2014_x86_64.whl
| Download URL | marearts_crystal-2.6.1-cp314-cp314-manylinux2014_x86_64.whl |
|---|---|
| Size | 149.7 kB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
4a5a1196e026dfc530535328e69430177e34ee3f1c40295d5614ff95061098d8
|
|
BLAKE2b-256 checksum How to use checksums |
66ba25b86f5c88fa840de6d7cb1cb030855fb4d648cb2d3feafd7ada11e46cde
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp314-cp314-manylinux2014_aarch64.whl
| Download URL | marearts_crystal-2.6.1-cp314-cp314-manylinux2014_aarch64.whl |
|---|---|
| Size | 135.9 kB |
| Tags | CPython 3.14 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
1e2ac4023215b028e3888f882c4dbe713a21c1c06dc766a0fd123fd3ce2e9016
|
|
BLAKE2b-256 checksum How to use checksums |
29511c9863ef9eb014590b0ab987a70bed323b250d28f1d37a80d1b4fd01d729
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp314-cp314-macosx_10_15_universal2.whl
| Download URL | marearts_crystal-2.6.1-cp314-cp314-macosx_10_15_universal2.whl |
|---|---|
| Size | 256.4 kB |
| Tags | CPython 3.14 macOS 10.15+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
8c1cf99bef97b0a0d84166bd17013302f710f8041eec49978c50cd85d8160b44
|
|
BLAKE2b-256 checksum How to use checksums |
191e7a5395177138641b53debe4e9e3be2134a33b9c8c8f7c672535041926e96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp313-cp313-win_arm64.whl
| Download URL | marearts_crystal-2.6.1-cp313-cp313-win_arm64.whl |
|---|---|
| Size | 97.8 kB |
| Tags | CPython 3.13 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
6361772e27489131cedf9dc439120fc3f8442252063cea1b1c69cf74e3a64dad
|
|
BLAKE2b-256 checksum How to use checksums |
fcc66ad60d201844460282d799f1337ac236d66b902dfb4c1789f39704fb6e7d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp313-cp313-win_amd64.whl
| Download URL | marearts_crystal-2.6.1-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 113.4 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4340ceffc943f44b28e6ad893984a719b399b1f342a141519eec2f463420f486
|
|
BLAKE2b-256 checksum How to use checksums |
110b605ff422d6919464bae67725a88ae2b78ad47399bca9e6310887ab629583
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp313-cp313-manylinux2014_x86_64.whl
| Download URL | marearts_crystal-2.6.1-cp313-cp313-manylinux2014_x86_64.whl |
|---|---|
| Size | 151.1 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
1ab4856f9fed63ec4d46aa891600b98be2ca57f2f50a3fe2042ff91c88183f62
|
|
BLAKE2b-256 checksum How to use checksums |
428485223c44e4f5666a93c447a82ce8b4c4c68d5672f6b3d422ed66eaee8c43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp313-cp313-manylinux2014_aarch64.whl
| Download URL | marearts_crystal-2.6.1-cp313-cp313-manylinux2014_aarch64.whl |
|---|---|
| Size | 137.5 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
3a82635b9134342d3f8e5b6f33ae202ed18414c7b3f91a9371bb5b1507d88433
|
|
BLAKE2b-256 checksum How to use checksums |
21cae5abe83e04702aa38c170af2d60b0f9b74ff94e0700f5f72207429df1a27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp313-cp313-macosx_10_13_universal2.whl
| Download URL | marearts_crystal-2.6.1-cp313-cp313-macosx_10_13_universal2.whl |
|---|---|
| Size | 254.4 kB |
| Tags | CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
c80ebf3ead49ad49547d0c01e3c36a8e4e60aa6a4dd9319615535ba07419b6f2
|
|
BLAKE2b-256 checksum How to use checksums |
3c2d265f73b87741329fd1747a959c708558fca69ab42eeb4e9eafb512cf43a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp312-cp312-win_arm64.whl
| Download URL | marearts_crystal-2.6.1-cp312-cp312-win_arm64.whl |
|---|---|
| Size | 98.5 kB |
| Tags | CPython 3.12 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
46f6400a4b08e7bc05682cbdb190ce5d74b5d80ae303f0404cac5f84b8019016
|
|
BLAKE2b-256 checksum How to use checksums |
58154f59959727eef5213a003791c11b3c9be82f393d4ff7da910e6553ba9895
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp312-cp312-win_amd64.whl
| Download URL | marearts_crystal-2.6.1-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 113.8 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
48c65284cd8b4beb0bb4e159e07062ac90bedc48442a875abb9a15d993453dd4
|
|
BLAKE2b-256 checksum How to use checksums |
9b3d5d8a55f38f4f33703da0940dac21aaa7f5254ccb74e271e7d2a7c3d2dc55
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp312-cp312-manylinux2014_x86_64.whl
| Download URL | marearts_crystal-2.6.1-cp312-cp312-manylinux2014_x86_64.whl |
|---|---|
| Size | 151.4 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
56566ec6b8ac75a3e3ee7fd211dd597476a26a12a73c93eb0bb73ebc31da4ade
|
|
BLAKE2b-256 checksum How to use checksums |
fcb8475bad61a71872cd240c4c6b2811244304af75ea2f6fab7ba9931145465c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp312-cp312-manylinux2014_aarch64.whl
| Download URL | marearts_crystal-2.6.1-cp312-cp312-manylinux2014_aarch64.whl |
|---|---|
| Size | 137.7 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
8606bcf9d768e3d3a73daa533de51ea9f00580e463647335365d5c34bf1c1af3
|
|
BLAKE2b-256 checksum How to use checksums |
23df9bd168c44aea3af28e292da453edcdacecfc7b7d1eca68611fd11de445b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp312-cp312-macosx_10_13_universal2.whl
| Download URL | marearts_crystal-2.6.1-cp312-cp312-macosx_10_13_universal2.whl |
|---|---|
| Size | 254.8 kB |
| Tags | CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
65ada2facdee036b9c68a257fd860c08cfa48b11fd5518c3c4ea758cfd2626bd
|
|
BLAKE2b-256 checksum How to use checksums |
26ce2d1eebc781e1d6dd8ae1b6337c010bab2d4a4be608e5b936ba57fc224ac8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp311-cp311-win_arm64.whl
| Download URL | marearts_crystal-2.6.1-cp311-cp311-win_arm64.whl |
|---|---|
| Size | 103.4 kB |
| Tags | CPython 3.11 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
41d23345f15ad43793d6625e6f524311986384f821f6350478d0dbd18aae01a0
|
|
BLAKE2b-256 checksum How to use checksums |
0443df03910aa1cd65bc9fe38e91206aa0d45852d2579f85398d31fc1a0ccdef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp311-cp311-win_amd64.whl
| Download URL | marearts_crystal-2.6.1-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 117.5 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
8c30055cd2e4646abcf85779bc163f80410d7b0acfc17872a221936a2f1b4a9f
|
|
BLAKE2b-256 checksum How to use checksums |
3d8275f3f0d4a58ecb7057a8c9ba7e339a622efd0ab6bb075c84db9bdd7343e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp311-cp311-manylinux2014_x86_64.whl
| Download URL | marearts_crystal-2.6.1-cp311-cp311-manylinux2014_x86_64.whl |
|---|---|
| Size | 137.3 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
f369df039a6c4da55895dcdc0a09169a051ec27bf8095e26c762758699665abc
|
|
BLAKE2b-256 checksum How to use checksums |
c99277bf7438e3de880c6746e7f25636b21c0692ad39701ca9d390bad41772f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp311-cp311-manylinux2014_aarch64.whl
| Download URL | marearts_crystal-2.6.1-cp311-cp311-manylinux2014_aarch64.whl |
|---|---|
| Size | 122.5 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
db0d36e2edcd922275c829b263a65fc7f6cfff55b5b234b80cedeaa4bf5ea3c7
|
|
BLAKE2b-256 checksum How to use checksums |
07d26168055c01f662e5e5816ce951921e1ef2c989053566cd56eae67ad25d18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp311-cp311-macosx_10_9_universal2.whl
| Download URL | marearts_crystal-2.6.1-cp311-cp311-macosx_10_9_universal2.whl |
|---|---|
| Size | 251.6 kB |
| Tags | CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
69cd12fb4d77e7e6ff5291370a39080ac0e32c11559102003d274747b0e34031
|
|
BLAKE2b-256 checksum How to use checksums |
19938a4387817996adace01d166e76151075117e3d2e7c58254f775618bf41a3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp310-cp310-win_amd64.whl
| Download URL | marearts_crystal-2.6.1-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 117.2 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
17403f2e85074c6c11c40b64a19639311ebf7539014f5aad2eb2a6fee9b5dde7
|
|
BLAKE2b-256 checksum How to use checksums |
32e3171f02d10361bc155618c106dca0515e33826cacbab06d9166264435dc48
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp310-cp310-manylinux2014_x86_64.whl
| Download URL | marearts_crystal-2.6.1-cp310-cp310-manylinux2014_x86_64.whl |
|---|---|
| Size | 144.3 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
2b012559d44f71ebd0b320ebe5552008dd8a712a82cc7f41260f70a35289adaa
|
|
BLAKE2b-256 checksum How to use checksums |
3da2935f9269d3d3b519fd0df98752e904c103bd808a8f0e440a264395d9e820
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp310-cp310-manylinux2014_aarch64.whl
| Download URL | marearts_crystal-2.6.1-cp310-cp310-manylinux2014_aarch64.whl |
|---|---|
| Size | 127.4 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
462135caffc950b104a8434b85660334f949dafaef09c5147422ff5c14e70aa7
|
|
BLAKE2b-256 checksum How to use checksums |
f746d4efe8381a8cb596eae974568bd2791eabd1da70b82bd73b766040f881de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|
Release files / marearts_crystal-2.6.1-cp310-cp310-macosx_10_9_universal2.whl
| Download URL | marearts_crystal-2.6.1-cp310-cp310-macosx_10_9_universal2.whl |
|---|---|
| Size | 254.1 kB |
| Tags | CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
44e2787a27dd036e6475da2ce1e7402adc096070933ff4c9eb95f3e5143470a4
|
|
BLAKE2b-256 checksum How to use checksums |
a67efc76256d1c9d032aa56775448c847d03bac739c3016728804cb02a35a18d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.5
|