Overview
arboris is an HTML parser written in C++20 with a Python package on top. It reads a page
once into a compact DOM and answers queries against it:
- CSS selectors (Selectors Level 3: combinators, attribute operators, structural pseudo-classes) and condition queries by tag, class, attribute and text
- element data as views into the document, no copies: tag, id, classes, attributes, text with character references decoded, and the element's own HTML as written
- navigation by parent, children, siblings and ancestors
- input encodings: UTF-8 first; UTF-16 by byte order mark, and legacy encodings named by the
caller or a
<meta charset>through iconv when it is available
The tokenizer passes every in-scope case of the html5lib conformance suite (table below) and runs at several hundred MiB/s; see Benchmark.
Compatibility
arboristargets well-formed HTML. Recovering from broken markup the way a browser does is out of scope, and the conformance suite skips those cases.
Installation
Python (the distribution is pyarboris; the import name is arboris):
pip install pyarboris
Wheels are published for CPython 3.10 to 3.13 on Linux x86_64, macOS (arm64 and x86_64) and
Windows. Anywhere else pip builds from the sdist, which needs CMake and a C++20 compiler.
C++ (CMake 3.14+, a C++20 compiler):
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DNO_TESTS=ON
cmake --build build
cmake --install build --prefix /where/you/want/it
Then, in your project:
find_package(arboris REQUIRED)
target_link_libraries(your_target PRIVATE arboris::arboris)
or pull the sources in with FetchContent and link arboris the same way. The one header to
include is <arboris/arboris.hpp>. ARBORIS_ICONV (default ON) links iconv for legacy
encodings when CMake finds it.
Usage
Python
import arboris
doc = arboris.parse(open("page.html", "rb").read()) # bytes: encoding sniffed; str: UTF-8
for link in doc.select("nav a[href^='/docs/']"): # CSS selectors, in document order
print(link.text, link.attrs["href"])
title = doc.select_one("title") # the first match, or None
cards = doc.find_all(tag="div", classes="card") # conditions: tag, classes, attrs, text
first = doc.find(attrs={"data-id": "42"})
node = doc.get_by_id("main")
node.tag, node.id, node.classes, node.attrs # "div", "main", [...], {...}
node.text # text with references decoded
node.outer_html, node.inner_html # the source as written
node.parent, node.children, node.next_sibling, node.ancestors
node.select("p") # queries from a node search below it
doc.encoding, doc.parse_error_offset # "euc-kr"; None when all was read
Legacy encodings (EUC-KR, Shift_JIS, ...) are converted through iconv where the build has it.
The Windows wheels do not, so there only UTF-8 and UTF-16 are decoded: a page in another
encoding is kept as its original bytes, doc.unsupported_encoding names it, and reading
text, html or attrs from it may raise UnicodeDecodeError.
A Node keeps its document alive, so results can outlive the Document they came from. A
selector that does not parse raises ValueError.
C++
#include <arboris/arboris.hpp>
arboris::DOMManager dom(html); // std::string_view, copied once
for (const arboris::DOMQuery& hit : dom.SelectAll("nav a[href^='/docs/']")) {
const arboris::NodeRef link = hit.Get();
std::cout << link.text_content() << ' ' << link.attributes()[0].value << '\n';
}
if (const auto main = dom.Find(std::string("main"))) { // by id
for (const arboris::NodeRef child : main->Get().children()) { /* ... */ }
for (const arboris::DOMQuery& p : main->FindAll({.tag = arboris::Tag::kP})) { /* ... */ }
main->Get().outer_html(); // the source as written
}
Queries hand out NodeRefs: 16-byte handles into the DOMManager, valid for as long as it
lives. DOMManager is neither copyable nor movable; keep it in place or hold it through
std::unique_ptr. include/arboris/arboris.hpp lists the public types; everything under
arboris/dom/, arboris/string/, arboris/utils/ and arboris/encoding/ is implementation detail.
Benchmark
Tokenizer throughput on the CI runner (GitHub ubuntu-latest, 4 cores, Release build), from the
benchmark workflow that runs on every pull request and compares against develop:
| Input | Size | Throughput |
|---|---|---|
| Wikipedia "United States" | 2.8 MiB | 500 MiB/s |
| Wikipedia "HTML" | 0.75 MiB | 435 MiB/s |
| Wikipedia "Web browser" | 0.39 MiB | 440 MiB/s |
| generated, 1M tokens deeply nested | 24 MiB | 287 MiB/s |
On an Apple M-series laptop the same "United States" page tokenizes at about 670 MiB/s, and building the DOM on top of the tokens brings it to about 430 MiB/s.
To run it yourself (downloads the corpus on first configure; -DARBORIS_BENCH_LEXBOR=ON adds lexbor
for comparison):
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DNO_TESTS=ON -DARBORIS_BENCHMARK=ON
cmake --build build --target arboris_bench
build/benchmark/arboris_bench
Testing
Build with tests enabled, then run them through CTest:
cmake -S . -B build
cmake --build build
cd build && ctest
Tokenizer conformance
The tokenizer is checked against html5lib-tests.
Enable it with ARBORIS_HTML5LIB_TESTS, which fetches the suite at a pinned commit and registers
a CTest entry:
cmake -S . -B build -DARBORIS_HTML5LIB_TESTS=ON
cmake --build build
uv run --no-project --with pytest pytest tests/html5lib # cases in scope
uv run --no-project --with pytest pytest tests/html5lib --include-broken # everything, including out of scope
uv run --no-project --with pytest pytest tests/html5lib -k "test1.test:9]" # a single case
Every well-formed case that runs in the Data state is in scope. Cases html5lib-tests marks with
parse errors are broken HTML and are skipped, as are cases that need tokenizer state switching.
tests/html5lib/tokenizer_excludes.txt drops individual cases the project decided not to support.
The suite is red while the tokenizer is being built out: a failure there is remaining work, not a
regression. On a pull request against develop, CI runs the same cases against both branches and
reports which ones started and stopped passing, and fails only on the latter.
Each case is filed under the tokenizer feature it needs, worked out from its input and expected
tokens in tests/html5lib/categories.py. Regenerate the table below after changing the tokenizer;
CI fails on a pull request that leaves it stale:
uv run --no-project --with pytest pytest tests/html5lib -q --junitxml=html5lib.xml
uv run --no-project --with pytest python scripts/html5lib_status.py --junit html5lib.xml --write
100% conformant — the unweighted mean of the six area rates below.
✅ complete · ⚠️ in progress · ❌ nothing passes yet
| Area | Passing | Rate | |
|---|---|---|---|
| Text | 2272 / 2272 | 100% | ✅ |
| ↳ reference left as-is | 1981 / 1981 | 100% | ✅ |
| ↳ plain | 148 / 148 | 100% | ✅ |
| ↳ unicode | 137 / 137 | 100% | ✅ |
| ↳ newline normalisation | 6 / 6 | 100% | ✅ |
| Tags | 68 / 68 | 100% | ✅ |
| ↳ start tag | 51 / 51 | 100% | ✅ |
| ↳ end tag | 9 / 9 | 100% | ✅ |
| ↳ self-closing | 7 / 7 | 100% | ✅ |
| ↳ start + end | 1 / 1 | 100% | ✅ |
| Attributes | 230 / 230 | 100% | ✅ |
| ↳ valueless | 80 / 80 | 100% | ✅ |
| ↳ unquoted value | 49 / 49 | 100% | ✅ |
| ↳ single-quoted value | 44 / 44 | 100% | ✅ |
| ↳ double-quoted value | 32 / 32 | 100% | ✅ |
| ↳ reference in value | 25 / 25 | 100% | ✅ |
| Character references | 2367 / 2367 | 100% | ✅ |
| ↳ named table | 2125 / 2125 | 100% | ✅ |
| ↳ numeric hex | 236 / 236 | 100% | ✅ |
| ↳ named in context | 4 / 4 | 100% | ✅ |
| ↳ numeric decimal | 2 / 2 | 100% | ✅ |
| Comments | 15 / 15 | 100% | ✅ |
| DOCTYPE | 14 / 14 | 100% | ✅ |
| ↳ public/system id | 8 / 8 | 100% | ✅ |
| ↳ name only | 6 / 6 | 100% | ✅ |
4966 of 4966 in-scope cases pass. Areas differ by orders of magnitude in case count, so that ratio is not the figure above. Out of scope: 1724 broken-HTML cases and 116 that need tokenizer state switching. Generated by scripts/html5lib_status.py.
Documentation
- The public C++ API is the comment at the top of
include/arboris/arboris.hppand the comments on the types it names;src/arboris/dom/node_ref.hppis the one to read for what a node gives you. - In Python,
help(arboris)andhelp(arboris.Node)carry the same information as docstrings. - Design decisions are recorded in the pull requests; the issues are grouped by milestone.
Contributing
Pull requests go to develop. Set up once:
uv sync --group test # Python environment, builds the extension
git config core.hooksPath hooks # cpplint, clang-tidy and ruff before every commit
cmake -S . -B build # the hook's clang-tidy reads build/compile_commands.json
CI builds and tests on Linux and macOS, under ASan and UBSan, runs clang-tidy, cpplint and
ruff, checks that an installed copy can be found with find_package, runs the Python tests,
and compares html5lib conformance and tokenizer throughput against develop. Keep one topic
per commit; the pull request description carries the reasoning.
License
arborisis licensed under the Apache License 2.0. See the LICENSE file for details.
Metadata
Release files for pyarboris 0.1.0
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 | Actions |
|---|---|---|---|---|
| pyarboris-0.1.0.tar.gz | 126.3 kB | With provenance | Details for pyarboris-0.1.0.tar.gz |
Built distributions (wheels)
Total release size: 3.0 MB
Release files / pyarboris-0.1.0.tar.gz
| Download URL | pyarboris-0.1.0.tar.gz |
|---|---|
| Size | 126.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9546414cb03479eee7a0792c22d8027d54c1ea0bc176541ebf551ca293628a0f
|
|
BLAKE2b-256 checksum How to use checksums |
bb45d4565cb345805013fa1298e7b58c3ea423788a041f403c33e791219d7050
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp313-cp313-win_amd64.whl
| Download URL | pyarboris-0.1.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 187.9 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
aad60da75cf46d2bfb7b7542831648258e56bb2a3a5bcbe501e75ca45775e9b7
|
|
BLAKE2b-256 checksum How to use checksums |
b183ebc66af3b01397f5f076ea96c362ff949fcaecc75dcf2cda9887d75c2c1a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyarboris-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 225.5 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
61a8a979c38eb207cdfae879818a8c06442384375ae73e54ca1b649ea862b7b0
|
|
BLAKE2b-256 checksum How to use checksums |
d1ebadfcb38c4dc79584b0195f733552bfc458713dae48fc1f92de38c9ee354d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | pyarboris-0.1.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 145.8 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8051ecdb0d6fb41fc0f6c4bc884b1445ad7c78c258bea2a67bf8c76848353f1d
|
|
BLAKE2b-256 checksum How to use checksums |
6fe46976d63099437f01b6a733857f7995b2a046f9baf2eca20636aaba9e06fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp313-cp313-macosx_10_14_x86_64.whl
| Download URL | pyarboris-0.1.0-cp313-cp313-macosx_10_14_x86_64.whl |
|---|---|
| Size | 166.5 kB |
| Tags | CPython 3.13 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
9e46b75568e7037e13bde10b822fff18f2870d683916005a18f8c06006065eaa
|
|
BLAKE2b-256 checksum How to use checksums |
7b5317125735dad95bf554809955471c77f9561d7725cc66014599c94fd6adb2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp312-cp312-win_amd64.whl
| Download URL | pyarboris-0.1.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 187.9 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5dd84f370ac015e225eaf3a43e89729742654e45caea2550c1f925d6081eccd4
|
|
BLAKE2b-256 checksum How to use checksums |
bae3e642843f2c5bf5dd4c2eadaa364e89f508d72bec484c37707af68abb1dc2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyarboris-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 225.4 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
11d507c06c17a39a1099b05b1725f7105ef01c7c8c22bb325a33995e30f56aa9
|
|
BLAKE2b-256 checksum How to use checksums |
4db4d9449754c960bc9ee4825b0cc0a87cbd92b0628bffaef136b5ba526a6a63
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | pyarboris-0.1.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 145.8 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e466eec6cac2746b7984720c8cfe064e2bb464c0249ca399710c1651ddf91aff
|
|
BLAKE2b-256 checksum How to use checksums |
7f8aef2837d462c5392dc4b12c65f4392c0c4a5f231735475343f076d5b8d0bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp312-cp312-macosx_10_14_x86_64.whl
| Download URL | pyarboris-0.1.0-cp312-cp312-macosx_10_14_x86_64.whl |
|---|---|
| Size | 166.5 kB |
| Tags | CPython 3.12 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
20bee378a2d379ef5c75f41d48ae8280daee5f4ef7923202f7af841dd9112c18
|
|
BLAKE2b-256 checksum How to use checksums |
aadd94fbd421266b5e3783593122680eb18f616dd8d23e6bde3f8382f4226bba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp311-cp311-win_amd64.whl
| Download URL | pyarboris-0.1.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 187.9 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
95364fde11ec534097c83cb9c77856e0f5a373bb6892a24ddd3747a5d96c08fd
|
|
BLAKE2b-256 checksum How to use checksums |
52bb82b33c104db194d36fc24eb9def3eac15ee0e3d6819de4943162712cbefe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyarboris-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 226.0 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
3624c2c39e2a359781894fc983c3228c9272d062136d5c3f34b409420330e361
|
|
BLAKE2b-256 checksum How to use checksums |
505a10260aea99d43f939e3d0fd9293e528640a89f9b3af5a68a915041bab617
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | pyarboris-0.1.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 146.4 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c540431738f739b026a3b776ecb31ba06e80fe0d6d06bd2f5faaf903c948de08
|
|
BLAKE2b-256 checksum How to use checksums |
9a460f01e33247a37b07a163818b8c38b08e42b9a2919d50af22ff635f9869a0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp311-cp311-macosx_10_14_x86_64.whl
| Download URL | pyarboris-0.1.0-cp311-cp311-macosx_10_14_x86_64.whl |
|---|---|
| Size | 166.8 kB |
| Tags | CPython 3.11 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
1f7c563e64cb0f9cba4492f9004a5239de1d1a59e9884b2c22912d6489e86227
|
|
BLAKE2b-256 checksum How to use checksums |
2c5c2720d55d417266fa783b2c5a8c00a41441f15e94838efb0c3c0748b3abee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp310-cp310-win_amd64.whl
| Download URL | pyarboris-0.1.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 187.6 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
4cc8b5b853becb53dee10e1bfd130c83a584135706b4821ce1a596d12a40a846
|
|
BLAKE2b-256 checksum How to use checksums |
1753769efeffad42330f6ecaf82e900ce8bf649e41351a532d0d9289c86a026e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyarboris-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 226.1 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
c48102b9c82a882aada58e7289a0135eae9ce716fc72be6590a6a52ad8685809
|
|
BLAKE2b-256 checksum How to use checksums |
9bf70895695cc12c2e6b6e4c9d7c8038e0b17c68c041ea3e145f8f7c70ae3caf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | pyarboris-0.1.0-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 146.7 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
cc38f1d55971df47c2f1a6403ebbae0f77f0f2f59b99a699032bc93a7e388cd9
|
|
BLAKE2b-256 checksum How to use checksums |
93a6d9a5cbf107ee06f2f8f4963bec7ec5abf42ac98b4dfbb8990996bd839676
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logRelease files / pyarboris-0.1.0-cp310-cp310-macosx_10_14_x86_64.whl
| Download URL | pyarboris-0.1.0-cp310-cp310-macosx_10_14_x86_64.whl |
|---|---|
| Size | 167.1 kB |
| Tags | CPython 3.10 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
1de1a4ea4b1a93a9103b9aa5b202caa952d125a1c402f476447d239a3a48cbd3
|
|
BLAKE2b-256 checksum How to use checksums |
1b067114e4fd19f280c7a75ac5b9eb0557ec5985ca4d81266df76bcaad4dea30
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logSecurity for pyarboris 0.1.0
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.
Full provenance
All 17 files in this release have been uploaded with provenance metadata.
Attestation for pyarboris-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.
Transparency logA 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.