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.3
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.3.tar.gz | 157.2 kB | Without provenance | Details |
Built distributions (wheels)
Total release size: 5.0 MB
Release files / pyrazobill-1.1.3.tar.gz
| Download URL | pyrazobill-1.1.3.tar.gz |
|---|---|
| Size | 157.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5391ae77eac880e7679948e5904f70a1d0f85f46ebb85043548bfb96aefe9212
|
|
BLAKE2b-256 checksum How to use checksums |
3b8716ac6baaef66ee138448a616a97ae132a1012668a36e1f306da44e1899fe
|
| 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.3-cp313-cp313-win_amd64.whl
| Download URL | pyrazobill-1.1.3-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 18.2 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
123a989f9711e2c2d672ec0a74c34921c2de34bc7f6935e74bf4c01766acba2b
|
|
BLAKE2b-256 checksum How to use checksums |
9263383ea2b1552a8e84986c508b26a054137caffc44510593e8fb7c98169a73
|
| 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.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 285.6 kB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
5e6777932332464fa80dbfbe0de99ad20c58f7c404c22ba452f1ec8fe7a1e3a9
|
|
BLAKE2b-256 checksum How to use checksums |
12cc1e0a27496384f711c0d8a98db77381a65b18b1098e5720767e0c3ccf71d0
|
| 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.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 255.9 kB |
| Tags | CPython 3.13 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
3e178a770b0b4522f95d6627c7acb26c9dc4546cabcad14b725ecbba2785e2af
|
|
BLAKE2b-256 checksum How to use checksums |
adde335ebb0f2d0ecfa1cc21d8790837211043a68def8f6b9eec9398e103603e
|
| 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.3-cp313-cp313-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.3-cp313-cp313-macosx_11_0_universal2.whl |
|---|---|
| Size | 406.0 kB |
| Tags | CPython 3.13 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
a9a71a020871da3dea60b43057943d874515ecd61593138083582d6a66d65174
|
|
BLAKE2b-256 checksum How to use checksums |
53c9b27a746bfccc5789f428df6f76784f950301b349e4946c229a6465d1c958
|
| 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.3-cp312-cp312-win_amd64.whl
| Download URL | pyrazobill-1.1.3-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 18.2 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
ff36c66e3decb56bb5b1f1378f59b924388eec0270816a875fe2431f9127b0ad
|
|
BLAKE2b-256 checksum How to use checksums |
0137fa0856d79c26675ece25be41597bf988f509f0c23e916299861a3bdf5e00
|
| 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.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 285.5 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
bfe93e2939806daccf267e406dfc65305995528a07f3ce44d051129b8d6cb4e2
|
|
BLAKE2b-256 checksum How to use checksums |
8f22cb4d5d34de3f0086c35280655b292782c817a7e97a61eac264c628dc8a87
|
| 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.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 255.4 kB |
| Tags | CPython 3.12 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
28647eccaf3496035139c77e44366ee010de0aa45050547ad1c4ce541deab704
|
|
BLAKE2b-256 checksum How to use checksums |
21c5471177235f075c8d0473dcc3a6fa7f8b85341ffcaf38b22b2d91d6f228c7
|
| 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.3-cp312-cp312-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.3-cp312-cp312-macosx_11_0_universal2.whl |
|---|---|
| Size | 405.9 kB |
| Tags | CPython 3.12 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
da4d052dde47d24183ebbdeb0090a7324d653d0d19c1a97dddcb04040376eb54
|
|
BLAKE2b-256 checksum How to use checksums |
887cb907a036b99d58db355226ed4f0403118ca71c2ddbe63f93987f6f2ee9c9
|
| 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.3-cp311-cp311-win_amd64.whl
| Download URL | pyrazobill-1.1.3-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 18.2 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
f3e86f385cb00447801ee60465229611ded5fcc5189953ecac21611d60f165de
|
|
BLAKE2b-256 checksum How to use checksums |
2623e2ff7f6a8fc0246237a09f30b6f596d5df9928118e363a357011cbd552f0
|
| 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.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 284.9 kB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
65ba59fce116af61fd77c2b232ac47577fd964141a6574aa60d1f19a2626b4bf
|
|
BLAKE2b-256 checksum How to use checksums |
f448eba0debaa11f029921a10fb99f974115ef56865e98bc74dc85bc6c082811
|
| 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.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 254.9 kB |
| Tags | CPython 3.11 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
ccc301cb60ef8a6b3461b8a3fff59a8bff3af7f7b24ca2ab865658e64cc40fb0
|
|
BLAKE2b-256 checksum How to use checksums |
241442b1841fa73409c89aa2e2f337b126b41d6927662908634a50f8fa52d2f2
|
| 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.3-cp311-cp311-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.3-cp311-cp311-macosx_11_0_universal2.whl |
|---|---|
| Size | 403.7 kB |
| Tags | CPython 3.11 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
916e4df1f33cbfc7b24beaa232028a2e146d0fcc681418edfc154ce567b3ba5d
|
|
BLAKE2b-256 checksum How to use checksums |
496c6e72f2ca99d27d6c386bb8f2de76ba053ecb423cedd85bea532a17bf9124
|
| 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.3-cp310-cp310-win_amd64.whl
| Download URL | pyrazobill-1.1.3-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 18.2 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
b781fb63ae5d3fb85960ba82355fea54bc84608e9b37dea7304e2d56ecb3fcaa
|
|
BLAKE2b-256 checksum How to use checksums |
0d74350bad9706ebf316ff99a66f2fc38152f09deb42e36ef5c1083cb9f08c2e
|
| 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.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 282.9 kB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
36f1983b56fec235cf751ff1f2a75fc2f2b31a5ef34fd8982148253797310692
|
|
BLAKE2b-256 checksum How to use checksums |
6e50be7f87d72e5eec49b139ff7d061030b61f04f877a551c23a0649cbe9cfed
|
| 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.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 254.0 kB |
| Tags | CPython 3.10 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
579b2a79d5c13784f931746ebe9dd780abb8ce627af352497f8514aba1963ce3
|
|
BLAKE2b-256 checksum How to use checksums |
f83cc5fba06483ab3a370c5fa406a01e286bae892a75d48c3b4a790ade8d014c
|
| 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.3-cp310-cp310-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.3-cp310-cp310-macosx_11_0_universal2.whl |
|---|---|
| Size | 400.2 kB |
| Tags | CPython 3.10 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
c57da533708910abc7964c70ac0586d0fab81f2b329fde480b1332983a24f5f0
|
|
BLAKE2b-256 checksum How to use checksums |
28b96157dafaf5bca8fca93a45d60451f0f08c5cca97b786426aa8f15812fa7c
|
| 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.3-cp39-cp39-win_amd64.whl
| Download URL | pyrazobill-1.1.3-cp39-cp39-win_amd64.whl |
|---|---|
| Size | 18.2 kB |
| Tags | CPython 3.9 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
924c7c4bebb10a159a8ea1b117a22ebc52a8040554720fdd4714fee262bd3bc5
|
|
BLAKE2b-256 checksum How to use checksums |
f18af3cdbc1159976d105b550af104f482d813696d6fdfed93e74b7d5a63061a
|
| 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.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | pyrazobill-1.1.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 283.1 kB |
| Tags | CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
7f0833dbc63aea004320e387730e466748da0d1aa9b2190dfdfa102d97c59796
|
|
BLAKE2b-256 checksum How to use checksums |
11622ed37049f78f5d29c7c56cbfc9646595adf15170152b9a2c3e379a02805f
|
| 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.3-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | pyrazobill-1.1.3-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 254.3 kB |
| Tags | CPython 3.9 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
510f9d31dfae3adc1da441e7aee04a43a15cd698859dab57f90bb5852bb52fd6
|
|
BLAKE2b-256 checksum How to use checksums |
6365b6a5553892843e73ef2a83cb927aaec584ea84a855cc53c34b26da4e2e83
|
| 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.3-cp39-cp39-macosx_11_0_universal2.whl
| Download URL | pyrazobill-1.1.3-cp39-cp39-macosx_11_0_universal2.whl |
|---|---|
| Size | 400.4 kB |
| Tags | CPython 3.9 macOS 11.0+ universal2 (ARM64, x86-64) |
|
SHA-256 checksum How to use checksums |
ea9e36b12519ac06ba2b1ee98fe0d12e63d95a63f5b1f95c1db2fabb67ecefda
|
|
BLAKE2b-256 checksum How to use checksums |
8a74e4d722cbbb5b552f0a461ae850d2accff0c9ff232eae98526a4ed2810871
|
| 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.3
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.