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.7
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.7.tar.gz | 162.5 kB | Without provenance | Details |
Built distributions (wheels)
Total release size: 6.7 MB
Release files / pyrazobill-1.1.7.tar.gz
| Download URL | pyrazobill-1.1.7.tar.gz |
|---|---|
| Size | 162.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
00481b80ae46d6c4e74aacc6306ba0c4aba97c9fe3503c8a762a6db6927e0dbb
|
|
BLAKE2b-256 checksum How to use checksums |
925685524b5a5b15333d0ad86e210a605adcea8ef13aaaa078a49a1690914667
|
| 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.7-cp313-cp313-win_amd64.whl
| Download URL | pyrazobill-1.1.7-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 165.2 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
ae3551e4d1bc1d8d64e7a03de57e8dc7d2af9bbacf6a7ce6526bb02ce90283f2
|
|
BLAKE2b-256 checksum How to use checksums |
153064183c6a806dd73fe3a549608bea956e4ec0abed4b4220f508f3ae316121
|
| 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.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 389.3 kB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b11e5d445bb88d865db4eeba6d30ed0de91e6ffcf6df62fd84c35a29059713e3
|
|
BLAKE2b-256 checksum How to use checksums |
870afad77d1e7521606e017ed883b0c16547936f3fe2a2d49d1ad334c9ea9d1b
|
| 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.7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 353.0 kB |
| Tags | CPython 3.13 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
94dd53271015306e11f9fe1f822366f758747f26defd22bbcfc1b8f1dd0f95b0
|
|
BLAKE2b-256 checksum How to use checksums |
2579803a8e08bf4f861ab1d78358226cde0010d5432fdf4b326981e85fe8c4b7
|
| 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.7-cp313-cp313-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.7-cp313-cp313-macosx_11_0_universal2.whl |
|---|---|
| Size | 407.5 kB |
| Tags | CPython 3.13 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
098e0aa9ab4905825d664b829c5cb416f53307bb61d67fa16fb25df562fb1959
|
|
BLAKE2b-256 checksum How to use checksums |
5699016ecea247b07a01490379a676193bd5f7db072ea058b4feffa0bb9790b8
|
| 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.7-cp312-cp312-win_amd64.whl
| Download URL | pyrazobill-1.1.7-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 165.2 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
366c7ffd45831f22d6762869fc10dae4eb547e0cd397b303bb8aab1d15c9afdd
|
|
BLAKE2b-256 checksum How to use checksums |
c513b480982c3c3a3ac7c74f40d9ea5c67042a073c240232a00e4cbda10e1a96
|
| 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.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 389.2 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d8729eb8327f8636172d0288ac703a4627bd94d9bbacaa731cfadc27a0fc6586
|
|
BLAKE2b-256 checksum How to use checksums |
325b2bd6efa9bd591b2f47c755f40413e329172374eccefb3797a90541a63a6b
|
| 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.7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 353.0 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
289d8de099a46dd2fc1749f246b7385eeb4d4f7672a1a078ebda5914d09580f1
|
|
BLAKE2b-256 checksum How to use checksums |
1b3eccea974392b34924c2962f7eacb2481830142029e9463abda6cc1020208c
|
| 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.7-cp312-cp312-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.7-cp312-cp312-macosx_11_0_universal2.whl |
|---|---|
| Size | 407.4 kB |
| Tags | CPython 3.12 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
ec024ee3cd93738a7524d2a15d1008ef2e3f735de34e55869af5a1eecb9b03fa
|
|
BLAKE2b-256 checksum How to use checksums |
8f9c6671c8c7cd6090529b2073515482f97f75c21faed97ced3e2b46ec762558
|
| 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.7-cp311-cp311-win_amd64.whl
| Download URL | pyrazobill-1.1.7-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 164.8 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
6f4d5256423946e629d536d0d9afe81986ab319f6d2cbb9d27c215d2078610b0
|
|
BLAKE2b-256 checksum How to use checksums |
42dd5806b8c1d5fc2865dfa24123c19b4849f6fa1c90d153c725baa0772173f6
|
| 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.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 388.5 kB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
31183ace3c284b67625e3cd3694123fb8e8867bfe5cd6e8295b42df00f27544d
|
|
BLAKE2b-256 checksum How to use checksums |
3bdf822d92d7176bef5d0dd1f5e5ac31080aaf721aa522097e8203f4fec18ff2
|
| 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.7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 352.3 kB |
| Tags | CPython 3.11 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
5d587d3292818045005296fd13da6ca2ea07b20acc5a830ad018d3af30ba001a
|
|
BLAKE2b-256 checksum How to use checksums |
cfb9f910fa6fd04f0045f5964c67bd9a0c2393ec41a0c8a3e85ade7b20724548
|
| 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.7-cp311-cp311-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.7-cp311-cp311-macosx_11_0_universal2.whl |
|---|---|
| Size | 405.1 kB |
| Tags | CPython 3.11 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
be8f6ecfe6a368a505c89f296bb2bce844112dfc3f2fe5dcac0186e57cf6cc8f
|
|
BLAKE2b-256 checksum How to use checksums |
f7e9af280442231a58acaf5750016caa749798ef5f5d37b23f40e8be5e2c65a6
|
| 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.7-cp310-cp310-win_amd64.whl
| Download URL | pyrazobill-1.1.7-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 163.6 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
db04bca137535f0cfa54fac15108ca45b66d5e2234b48b1366fde760e09ae8e0
|
|
BLAKE2b-256 checksum How to use checksums |
0b97c3957bdb5ff373c774dbe795b6a87dedc2798daacf08cb08dbe8e51d7b9c
|
| 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.7-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.7-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 386.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 |
58885b835267d48a0e77adec26c45478f2d8d94d99cb269bc0f95d2a1485ec24
|
|
BLAKE2b-256 checksum How to use checksums |
84ab7e0b0b82faeef1ec034f32e24b4d48db1fce2710701a351758bc37b72129
|
| 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.7-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.7-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 351.3 kB |
| Tags | CPython 3.10 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
c986bb7e4084a0693c529d78b94c04f81c5b55ae74376f04c225be3a4d4cbbb8
|
|
BLAKE2b-256 checksum How to use checksums |
284017bded5b9ee5d1eb8103ab104a25a9efb320d81ae0bbeb2576671978c3b9
|
| 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.7-cp310-cp310-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.7-cp310-cp310-macosx_11_0_universal2.whl |
|---|---|
| Size | 401.7 kB |
| Tags | CPython 3.10 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
bfe3f607bbedc5ce01e58d4c1ebe214c802f90e83fb0896b7696748cea41ef11
|
|
BLAKE2b-256 checksum How to use checksums |
2e89ca6183c830cd3d3a72b2e0a64dd7eda09bca48132260d35464dc7c5bb778
|
| 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.7-cp39-cp39-win_amd64.whl
| Download URL | pyrazobill-1.1.7-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 163.7 kB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
ec26cabe89362cc5dae83a01a713d77da1555673eece9ef28aef62d27dee56d9
|
|
BLAKE2b-256 checksum How to use checksums |
7ee80d9c79a517b33f08f17322ce0e0b90d9235aafef0b77c580c63f7414ce71
|
| 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.7-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.7-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 386.8 kB |
| Tags | CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3271620e6a963fae1468a69c8a86fccd8f8a399c4d17d209aff803274e49e904
|
|
BLAKE2b-256 checksum How to use checksums |
e14e17a2f2ca36d1d503739c2ea5f86df1b84993f3bba663399f56e9c73efa66
|
| 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.7-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.7-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 351.8 kB |
| Tags | CPython 3.9 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
21734390c48267a02bd8d8a147d11dd282c20c92ad59b75aaacdf872ec3bef2c
|
|
BLAKE2b-256 checksum How to use checksums |
042f3ecd114eabb34f7b5aa00ae073df5b55be42e68ffaa75c6bcb831ecde7ef
|
| 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.7-cp39-cp39-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.7-cp39-cp39-macosx_11_0_universal2.whl |
|---|---|
| Size | 401.7 kB |
| Tags | CPython 3.9 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
e4d2ace1068900935d9c0aded52a7e22c29064370230e088c575504d750c0c52
|
|
BLAKE2b-256 checksum How to use checksums |
c25d3614b6b4175a0ea5aa22a958b5cd9b2164c4efe1680e39bcfc39020b9420
|
| 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.7
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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.