pyrazobill
Python client library for the Razobill telemetry decomposition engine. It splits unstructured log lines into structured templates, numbers, and words, and restores original strings bit-for-bit. Built with a high-performance C++20 core and includes a resilient pure-Python fallback.
Lossless invertibility
Traditional log parsers discard formatting, alter timestamps, or leak unseen variable tokens into cluster definitions. Razobill enforces an algebraic invariant across every parse:
$$\forall m \in \Sigma^, \quad \text{RzJoin}(\text{RzSplit}(m)) \equiv m$$
Every byte of whitespace, delimiter punctuation, and parameter data is preserved with zero information destruction.
Quick installation
Install the precompiled binary wheel from PyPI:
pip install pyrazobill
Pre-built binary wheels support Python 3.9 through 3.13 on Linux (manylinux), macOS (arm64, x86_64), and Windows (amd64).
Public API reference
The pyrazobill module exports five primary functions with zero memory leaks:
| Function | Signature | Description |
|---|---|---|
RzSplit |
(line: Union[str, bytes], mode="semantic") -> RzRecord |
Splits a message into template, numbers, and words. |
RzJoin |
(*record) -> Union[str, bytes] |
Reconstructs the exact raw log line byte-for-byte. |
RzTemplate |
(line: Union[str, bytes], mode="semantic") -> Union[str, bytes] |
Extracts the template string without allocating value lists. |
RzHash |
(line: Union[str, bytes]) -> int |
Computes 64-bit xxHash64 (seed 0) matching DuckDB and ClickHouse. |
RzSplitMany |
(lines: Iterable, mode="semantic") -> List[RzRecord] |
Parses an iterable of messages in parallel releasing the GIL. |
Usage
Splitting and joining lines
import pyrazobill as rz
# 1. Parse a log message
line = "Accepted publickey for ubuntu from 192.168.1.100 port 54322 ssh2"
record = rz.RzSplit(line)
print(record.template)
# 'Accepted publickey for {s} from {s} port {i} {s}'
print(record.ints)
# [54322]
print(record.strs)
# ['ubuntu', '192.168.1.100', 'ssh2']
# 2. Compute deterministic 64-bit template hash
print(rz.RzHash(record.template))
# 64-bit integer matching ClickHouse xxHash64() exactly
# 3. Restore the exact original text
restored = rz.RzJoin(*record)
assert restored == line
Batch processing with multi-threading
Use RzSplitMany to parse collections of messages in parallel:
import pyrazobill as rz
lines = [
"Worker 1 finished job in 12 ms",
"Worker 2 finished job in 19 ms",
"Worker 3 finished job in 8 ms",
]
records = rz.RzSplitMany(lines)
for rec in records:
print(rec.template, rec.ints)
RzSplitMany releases the Python GIL, allowing background worker threads to parse chunks simultaneously.
Scientific provenance
Razobill is grounded in information-theoretic invariants established in:
Atta, Moustafa Mahmoud (2026). Latitude and Doubt: An exact ledger of meaning in messages with measurements on the genetic code and on English. Zenodo. DOI: 10.5281/zenodo.23287286
Documentation
Metadata
Release files for pyrazobill 1.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| pyrazobill-1.1.4.tar.gz | 158.2 kB | Without provenance | Details |
Built distributions (wheels)
Total release size: 5.0 MB
Release files / pyrazobill-1.1.4.tar.gz
| Download URL | pyrazobill-1.1.4.tar.gz |
|---|---|
| Size | 158.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c0388ad7d3796f930ee1d6b05c8ae0692d92e71e7f0ce23af94b3b79359fc1e0
|
|
BLAKE2b-256 checksum How to use checksums |
560aa2d4e15a82fcff5c0230e9017d148b931dd089035d1d5e6d4f18d038a5c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp313-cp313-win_amd64.whl
| Download URL | pyrazobill-1.1.4-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 18.2 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d01d91619003a3ccf9fb61e395976490fe3875a71967cdf296a249a704f935d9
|
|
BLAKE2b-256 checksum How to use checksums |
47dd7fd3c47af0f1c24cb4fe23e7e4d6fa5b75227b1266675b011376589fc74b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 285.2 kB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
be0054d275858d7c74e24a329335d4697ac7f5f81c61385f5985cc0e15eef220
|
|
BLAKE2b-256 checksum How to use checksums |
5380fc7b2692ca3c2a81a0810f7135c01cb8ebf8dc9e281600ffbfe3461db107
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.4-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 255.4 kB |
| Tags | CPython 3.13 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
03a6923b6337320de7e17caffb5060d657fc45f277a1be47477fea2cecac103d
|
|
BLAKE2b-256 checksum How to use checksums |
d5296f7798f5c43de789838896611132b020b106630f39163027055905109504
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp313-cp313-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.4-cp313-cp313-macosx_11_0_universal2.whl |
|---|---|
| Size | 405.2 kB |
| Tags | CPython 3.13 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
d8535c5fa72b5ddf66f4006f324bc1b3d29342940f35efbcf044333f847156c8
|
|
BLAKE2b-256 checksum How to use checksums |
c2c8cc44b1c9eeed4688862c53d460a6cccce959e5328a23e4e787795f8afed0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp312-cp312-win_amd64.whl
| Download URL | pyrazobill-1.1.4-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 18.2 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
504eb363e8c4ce8aabfbb6c9d29069d0284025cb7224f60b4ae5578d7a6916a7
|
|
BLAKE2b-256 checksum How to use checksums |
7cb141f608d6b0500e2aa639653e09908b9ecd418ee65ff228b0344ac0420fa2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.4-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 285.1 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
7239ef32650ed78c4ce9bc55241eb4eefd16aecf542208cd02314e3dc917d277
|
|
BLAKE2b-256 checksum How to use checksums |
48b13360684c5694febc258cc50b3d36b3b0f05016fc51262f09265da0db78cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.4-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 255.0 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
aab514a3f7757245d3fd6d7ce0b41f087a20b7f58587ccf48d5bcfa060cab1c6
|
|
BLAKE2b-256 checksum How to use checksums |
26c18056f925570c023e4581987ae3134b8ca4a84b6a4f15c33ed172bce9673e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp312-cp312-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.4-cp312-cp312-macosx_11_0_universal2.whl |
|---|---|
| Size | 405.1 kB |
| Tags | CPython 3.12 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
cb354d2a42e4afcef14a31aa18b6f83e663e77278a8e1fef12feddad0f0a04fc
|
|
BLAKE2b-256 checksum How to use checksums |
ba2ca57d7a4d612394cad26274386967352640eee526501e973ed6972fd83d27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp311-cp311-win_amd64.whl
| Download URL | pyrazobill-1.1.4-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 18.2 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
50bbaddc6be864579ad3679f3ee127536c35287cd20f288846cc3dfc2edfd8c9
|
|
BLAKE2b-256 checksum How to use checksums |
051b3dc3aea711880abf43c2fadc06156b438e7e34f1c3f61e241e91a3461e43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.4-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 284.4 kB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c72d62ca489740dacf803b39c7a28721d79f1f560f9f42d84e9346752cbdd77e
|
|
BLAKE2b-256 checksum How to use checksums |
89989cc727141e8157341720977ae5ed203ed0fb75f622614908e69220b86a8b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.4-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 254.4 kB |
| Tags | CPython 3.11 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
e93bed2167a905ec7c0b492386bd07a5ce8f92292b5ad7ce9912cc139c87f037
|
|
BLAKE2b-256 checksum How to use checksums |
ea931f6b81029afbff145ff2ad036dd8eebd3c998f801ac01482a87ea97c135a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp311-cp311-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.4-cp311-cp311-macosx_11_0_universal2.whl |
|---|---|
| Size | 402.9 kB |
| Tags | CPython 3.11 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
93bb4ee6b1260758b26b62fd388a42b9df3ee50505c481143b1e95fd24c918e7
|
|
BLAKE2b-256 checksum How to use checksums |
5971468ef1cecd9bc373fcfe89044c80fb1f0ed4f6c2ef4f23de052d8066f37a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp310-cp310-win_amd64.whl
| Download URL | pyrazobill-1.1.4-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 18.2 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5e89902838b7d6b0f103d24f6fa93ddefe6ea0e55116c8d07d043f904f1194fa
|
|
BLAKE2b-256 checksum How to use checksums |
30ea60412a83885bef9a3cb152ab3c5b2ae3359263513ab73215cbd69acb9909
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.4-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 282.4 kB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
0bf65d8e19118cea2d83a8671cfece993ebd16874eb05cee1a0d4f11eb28746f
|
|
BLAKE2b-256 checksum How to use checksums |
36d95343669e33499f96e9fd1d90a797fa4252ec6d1a0433a3dff421697bf801
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.4-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 253.6 kB |
| Tags | CPython 3.10 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
a2c872bad115ca25ef6b7adb473b09729fe0fa76adf7f1f30a9007ce14877005
|
|
BLAKE2b-256 checksum How to use checksums |
37af883caadb79acec32e6b1af4a8a514444c7e54c76addb8cfa96f2f5f34ee5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp310-cp310-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.4-cp310-cp310-macosx_11_0_universal2.whl |
|---|---|
| Size | 399.5 kB |
| Tags | CPython 3.10 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
9a580efb67f98d65402b8f20abbecf14abb57037939a189cc50959345c36f881
|
|
BLAKE2b-256 checksum How to use checksums |
315532d17d90d4b7896bb6b266f27845a9b79c2f7cd04f3648ae5c04321741b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp39-cp39-win_amd64.whl
| Download URL | pyrazobill-1.1.4-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 18.2 kB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5843c5bf18e5e66b92f2f0eea3cd10a7cf5fbd831467d3f9bea2d7000b43d08f
|
|
BLAKE2b-256 checksum How to use checksums |
aa2b710fcced5312a78d1337a8561b255a5c3faf0a670a9cf3ab638d7d7fe184
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.4-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 282.7 kB |
| Tags | CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
5d2c7986f920eb6ba0a1a20672c06ca097c53a03d3d41b49427ebd2f93d5c691
|
|
BLAKE2b-256 checksum How to use checksums |
a17321d468e4fd6bddf0bdc251cb6201ab5991b139d649a4d0deeab61c8e5c71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.4-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 253.8 kB |
| Tags | CPython 3.9 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
d58ec2f1b6c2f0f7d73368850f22f183bc9139cbfc52f84a189275f3cf4ca9f8
|
|
BLAKE2b-256 checksum How to use checksums |
783680f20c5373bc5843a56ac4e8254c3ad15debca13d03ba0b68f1df7a786ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / pyrazobill-1.1.4-cp39-cp39-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.4-cp39-cp39-macosx_11_0_universal2.whl |
|---|---|
| Size | 399.7 kB |
| Tags | CPython 3.9 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
2994b012ce0043a9769aac8d5e70859e187080f4e27b4b88ebdfec339d30c15f
|
|
BLAKE2b-256 checksum How to use checksums |
e70d2ec8f0a99da9318f41f2813ba6e88b35fc74f4e9fe05d31f54db161b2f96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Security for pyrazobill 1.1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.