Python utilities for files, strings, time, serial, structs, media, electronics, plotting, and database and more...
Project description
xaeian
Python utilities. Zero dependencies for core. Optional extras for time, serial, media, database and more...
Install
pip install xaeian # core
pip install xaeian[time] # + pytz, tzlocal
pip install xaeian[serial] # + pyserial
pip install xaeian[plot] # + matplotlib
pip install xaeian[dsp] # + scipy
pip install xaeian[mf] # + pypdf, PyMuPDF, Pillow
pip install xaeian[db] # + pymysql, psycopg2
pip install xaeian[db-async] # + aiomysql, asyncpg, aiosqlite
pip install xaeian[all] # everything
Examples
from xaeian import FILE, JSON, CSV, logger, split_str, generate_password
from xaeian.xtime import Time
from xaeian.crc import crc16_modbus
from xaeian.db import Database
# Files: auto extension, context-based paths
JSON.save("config", {"debug": True, "port": 8080})
CSV.save("users", [{"name": "Jan", "age": 30}, {"name": "Anna", "age": 25}])
# Time: parse anything, arithmetic with strings
t = Time("2025-03-01") + "2w 3d"
t.round("w") # Monday 00:00
t.to("iso") # "2025-03-17T00:00:00+01:00"
# CRC: encode/decode with Modbus, ISO, custom
frame = crc16_modbus.encode(b"\x01\x03\x00\x00\x00\x0A")
assert crc16_modbus.decode(frame) is not None
# String tools
split_str('a,"b,c",d', sep=",") # ['a', '"b,c"', 'd']
generate_password(16) # 'aB3$xY9!mN2@pQ7&'
# Database: sqlite/mysql/postgres, sync/async
db = Database("sqlite", "app.db")
db.insert("users", {"name": "Jan", "settings": {"theme": "dark"}})
db.find("users", order="name", limit=10)
async with db.transaction():
db.update("users", {"verified": True}, "id = ?", 42)
# Plot: fluent, stacked panels, auto datetime
from xaeian.plot import Plot
(Plot(theme="dark")
.line(t, temp, "Temperature [°C]")
.panel()
.line(t, hum, "Humidity [%]")
.title("Sensors")
.save("dashboard.png"))
# DSP: immutable signals, filters, FFT, vibration metrics
from xaeian.dsp import Signal
sig = Signal.from_accel(raw_x, fs=6666, bits=16, g_range=2)
clean = sig.highpass(10).lowpass(500)
print(f"RMS:{clean.rms:.4f} peak_freq:{clean.fft().peak_freq:.0f}Hz")
# Media: compress, strip metadata
from xaeian.mf.min import compress
compress("report.pdf") # → report-min.pdf
compress("photos/", max_px=1280) # → photos-min/ (recursive)
# Logging: colored, rotating
log = logger("app", file="app.log")
log.info("started") # 2025-03-01 14:32:01 INF started
Modules
| Module | Description | Docs |
|---|---|---|
files |
FILE, DIR, PATH, JSON, CSV, INI | xaeian/readme.md |
files_async |
Async wrappers via asyncio.to_thread() |
xaeian/readme.md |
table |
Lightweight tabular ops on list[dict] |
xaeian/readme.md |
xstring |
Split, replace, strip comments, passwords | xaeian/readme.md |
xtime |
Datetime parsing, arithmetic, rounding | xaeian/readme.md |
colors |
ANSI 256-color terminal codes | xaeian/readme.md |
log |
Colored logging with file rotation | xaeian/readme.md |
crc |
CRC-8/16/32 with predefined variants | xaeian/readme.md |
cstruct |
Binary struct serialization (C-like) | xaeian/readme.md |
cmd |
Shell command helpers | xaeian/readme.md |
serial_port |
Serial communication with colored output | xaeian/readme.md |
cbash |
Embedded device console protocol | xaeian/readme.md |
plot |
Fluent matplotlib wrapper with stacked panels | xaeian/readme.md |
dsp |
Signal processing, SOS filters, FFT, vibration | xaeian/readme.md |
mf |
Compress, convert, strip metadata (PDF & images) | xaeian/mf/readme.md |
db |
Database abstraction (SQLite, MySQL, PostgreSQL) | xaeian/db/readme.md |
eda |
E-series, KiCad export, NgSpice runner | xaeian/eda/readme.md |
cli |
tree, dupes, wifi scripts | xaeian/cli/readme.md |
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 Distribution
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 xaeian-0.4.0.tar.gz.
File metadata
- Download URL: xaeian-0.4.0.tar.gz
- Upload date:
- Size: 112.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
071691d52b521fda40a8c88d03d1545f02dad6f40cf0487068726060cb5b1ae8
|
|
| MD5 |
7c31e9cabe5eb4756c62ff04b9142c0f
|
|
| BLAKE2b-256 |
d3b884e293b95be0d6877b9a4dd3db1ad482abc69c748da57099d1b3dcf0b48d
|
Provenance
The following attestation bundles were made for xaeian-0.4.0.tar.gz:
Publisher:
publish.yml on Xaeian/Python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xaeian-0.4.0.tar.gz -
Subject digest:
071691d52b521fda40a8c88d03d1545f02dad6f40cf0487068726060cb5b1ae8 - Sigstore transparency entry: 1059800728
- Sigstore integration time:
-
Permalink:
Xaeian/Python@b346e587ed196a31aefc72f6d3e378d975419b9f -
Branch / Tag:
refs/tags/0.4.0 - Owner: https://github.com/Xaeian
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b346e587ed196a31aefc72f6d3e378d975419b9f -
Trigger Event:
release
-
Statement type:
File details
Details for the file xaeian-0.4.0-py3-none-any.whl.
File metadata
- Download URL: xaeian-0.4.0-py3-none-any.whl
- Upload date:
- Size: 137.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15ac588eb2ef6058c4be033612ee90099d4b5b4423badee06e8615056ed61f25
|
|
| MD5 |
4c30709c904156817a48e14029b3081d
|
|
| BLAKE2b-256 |
a5ad6dc47a689ac4716ee3626432dcb0401cd76106e7d97ee4225fe5960e0347
|
Provenance
The following attestation bundles were made for xaeian-0.4.0-py3-none-any.whl:
Publisher:
publish.yml on Xaeian/Python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xaeian-0.4.0-py3-none-any.whl -
Subject digest:
15ac588eb2ef6058c4be033612ee90099d4b5b4423badee06e8615056ed61f25 - Sigstore transparency entry: 1059800729
- Sigstore integration time:
-
Permalink:
Xaeian/Python@b346e587ed196a31aefc72f6d3e378d975419b9f -
Branch / Tag:
refs/tags/0.4.0 - Owner: https://github.com/Xaeian
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b346e587ed196a31aefc72f6d3e378d975419b9f -
Trigger Event:
release
-
Statement type: