Skip to main content



GitHub stars

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

  • arboris targets 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.hpp and the comments on the types it names; src/arboris/dom/node_ref.hpp is the one to read for what a node gives you.
  • In Python, help(arboris) and help(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

  • arboris is 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)

Source distribution for pyarboris 0.1.0
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)

Table of built distributions (wheels) for pyarboris 0.1.0
File Actions
pyarboris-0.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for pyarboris-0.1.0-cp313-cp313-win_amd64.whl
pyarboris-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for pyarboris-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pyarboris-0.1.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for pyarboris-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
pyarboris-0.1.0-cp313-cp313-macosx_10_14_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.14+ x86-64 Details for pyarboris-0.1.0-cp313-cp313-macosx_10_14_x86_64.whl
pyarboris-0.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for pyarboris-0.1.0-cp312-cp312-win_amd64.whl
pyarboris-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for pyarboris-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pyarboris-0.1.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for pyarboris-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
pyarboris-0.1.0-cp312-cp312-macosx_10_14_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.14+ x86-64 Details for pyarboris-0.1.0-cp312-cp312-macosx_10_14_x86_64.whl
pyarboris-0.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for pyarboris-0.1.0-cp311-cp311-win_amd64.whl
pyarboris-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for pyarboris-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pyarboris-0.1.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for pyarboris-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
pyarboris-0.1.0-cp311-cp311-macosx_10_14_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.14+ x86-64 Details for pyarboris-0.1.0-cp311-cp311-macosx_10_14_x86_64.whl
pyarboris-0.1.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for pyarboris-0.1.0-cp310-cp310-win_amd64.whl
pyarboris-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for pyarboris-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
pyarboris-0.1.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for pyarboris-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
pyarboris-0.1.0-cp310-cp310-macosx_10_14_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.14+ x86-64 Details for pyarboris-0.1.0-cp310-cp310-macosx_10_14_x86_64.whl

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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Security 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.

Select from 17 files

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 log

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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

17 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page