Skip to main content

OpenUnderstand

OpenUnderstand Logo

An open-source implementation of the SciTools Understand Python API, for Java.

Understand reads a codebase and lets you ask questions about it -- which methods call this one, what does this class contain, how complex is this function. The API is good. The analysis is closed: the database format is proprietary, the API source is not published, and it needs a licence.

OpenUnderstand reimplements that API on top of an ANTLR4 Java parser and a SQLite database, so the same scripts run without one.

import openunderstand.ounderstand as und

db = und.open("myproject.udb")

for cls in db.ents("Class"):
    print(cls.longname())
    for ref in cls.refs("Define", "Method"):
        print("   ", ref.ent().name(), "at line", ref.line())

That is Understand's API, unchanged. Same class names, same method signatures, same kind names.

Install

pip install openunderstand

Python 3.9 to 3.14. On Linux x86_64, macOS arm64 and Windows x64 that wheel carries the C++ parse accelerator, which is 7.8x faster at parsing and takes about a third off a full analysis. Everywhere else the pure-Python ANTLR runtime is used instead and everything works the same, just slower -- both engines produce byte-identical databases.

Optional extras:

Extra For
openunderstand[speedy] tools to build the C++ parser accelerator from source
openunderstand[mcp] the MCP server, so an assistant can query your code

From a checkout instead:

git clone https://github.com/m-zakeri/OpenUnderstand
cd OpenUnderstand
python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"

Build a database

Point it at a directory of Java source:

python openunderstand/ounderstand/openunderstand.py \
    -r /path/to/java/project \
    -dba /path/for/database \
    -dbn myproject.udb \
    -l /path/for/app.log
Flag Meaning
-r source directory to analyse
-dba directory to write the database into
-dbn database filename
-e C++ (fast) or Python parser backend
-l log file

Or from Python:

from openunderstand.ounderstand.openunderstand import start_parsing

start_parsing(
    repo_address="/path/to/java/project",
    db_address="/path/for/database",
    db_name="myproject.udb",
    engine_core="C++",
    log_address="/path/for/app.log",
)

The result is a .udb file. Despite the name it is plain SQLite -- open it with any SQLite tool if you want to poke at the rows directly.

How correct is it?

Honestly measured, not claimed. Every release is compared against a licensed SciTools Understand install on the same source, entity by entity, reference by reference, metric by metric.

Current agreement, over thirteen Java systems: 2,370,698 of Understand's references and 178,077 of its entities.

precision recall F1
References, pooled 0.989 0.990 0.990
References, lowest subject 0.979 0.977 0.981
Entities, pooled 1.000 1.000 1.000

Every subject, every one of 77 reference kinds and every one of 120 entity kinds scores at least 0.9 on precision, recall and F1, pooled and one subject at a time. Entities match on kind and long name: 178,075 of Understand's 178,077 are found, with 8 extra.

Metrics are compared the same way: an entity's metric is a hit when it equals Understand's value. All 62 metrics both tools compute score F1 0.9 or better on every subject. Per subject, macro F1 runs 0.986 (jenetics) to 1.000 (calculator_app); org.json is 0.991. The lowest single metric is class coupling (CountClassCoupled), at 0.900 on jenetics and 0.907 on ganttproject and jhotdraw.

Three of the subjects, for comparison with earlier releases:

calculator_app org.json TheAlgorithms
Understand references 586 70,518 53,793
Reference precision / recall 1.000 / 1.000 0.997 / 0.998 0.979 / 0.986
Metric macro F1 1.000 0.991 0.992

Understand's own rows are kept, including its references into the JDK: a call to java.lang.String.trim is part of the answer. Both sides are scoped the same way. Entities nothing in the project declares (JDK and library types, placeholders) are set aside on our side unless Understand's dump names them too. Seven files Understand 7.0 misparses (case null, default ->, a type annotation after type parameters, import module) are set aside on both sides.

docs/parity.md has the per-kind breakdown.

The comparison is the specification: what the real tool outputs is what decides whether a reference is right. Understand must be installed and licensed, so it is not part of this repository -- ask if you want to run it.

tests/ holds unit tests for the pass rules that comparison established. They need no database and run in about a second each:

for t in tests/test_*.py; do .venv/bin/python -W ignore "$t"; done

Re-analysing after an edit

A full build is not the only way in. update_files() re-analyses the files you name and every file that depends on them, deleting each one's previous contribution first:

from openunderstand.oudb import api

db = api.open("myproject.udb")
api.update_files(["/path/to/java/project/src/Foo.java"],
                 source_root="/path/to/java/project")

It reproduces what a rebuild of the same source would write, which is the point -- an update that only ever adds leaves a renamed method in the database under both names.

How fast is it?

On the 85-file org.json benchmark, on one ordinary Linux machine:

OpenUnderstand Understand
Full analysis 14.1s 7.6s
Full analysis, 4 workers 10.2s --
Re-analyse one changed file 1.2s 3.1s

Understand is C++ over a purpose-built store, so a full build being within about 1.4x of it is the interesting part -- and re-analysing after an edit, which is what an editor integration actually does, is faster here, because it does less work rather than doing the same work quickly.

Pass jobs= to openunderstand.ounderstand.runner.runner() for the parallel build, or set OU_JOBS. Workers only parse and collect and one process writes, so the database is byte-identical whatever the worker count -- which is also why more than about four workers buys nothing.

Use it from an assistant

An MCP server ships with the package:

pip install "openunderstand[mcp]"
{"mcpServers": {"openunderstand": {"command": "openunderstand-mcp"}}}

Seven tools (analyze, open_database, update, list_entities, entity_references, entity_metrics, list_kinds), four resources exposing the kind vocabulary and metric names, and three prompts (review_class, complexity_hotspots, trace_callers) -- so an assistant can analyse a Java project and ask what calls what, without knowing the schema. See docs/mcp.md.

Use it from IntelliJ IDEA

idea-plugin/ builds a Java Metrics tool window: analyse the open project, sort by any metric, browse the symbol table and any entity's references, double-click to jump to the declaration, export CSV. It runs the analysis in a Python subprocess, in a private virtualenv it builds and installs itself.

cd idea-plugin && gradle buildPlugin    # then install the zip from disk

See docs/idea-plugin.md.

What it does not do

  • Java 9-25 is analysed, measured against Understand. Records, sealed types and permits, pattern variables and record patterns, var (including lambda parameters), switch expressions, local enums and interfaces, and module-info.java are modelled the way Understand models them, checked on jenetics' incubator module and a hand-written probe. Java 25 compact source files (top-level methods) do not parse; import module parses but cannot be checked, because Understand 7.0 itself does not parse it.
  • No external analysis. The JDK and third-party jars are not parsed. JDK types and members appear only where the project uses them, resolved from a generated index of the JDK's public signatures (GraalVM 21.0.2, the JDK Understand analyses against). A third-party class is a name and nothing more.
  • Close, not identical. 97.7 to 100% of Understand's references are reproduced at the exact position, at 97.9 to 100% precision, depending on the subject. Class coupling is the weakest metric, at 0.900 to 1.000. Understand infers the types of implicit lambda parameters ((a, b) -> ...) and this project does not, which accounts for most of what is left. 46 of the 49 public API methods are implemented.
  • Silence, not refusal, on what is missing. The three unimplemented methods -- Db.close, Db.lookup_uniquename, Violation.add_fixit_hint -- return None. Querying a reference kind no pass emits returns an empty list, which reads exactly like an entity that has none. NotImplementedError is not raised anywhere in the query API, whatever this file used to say.

Documentation

Getting started install, build, query
API reference every class and method, and what is missing
Kinds the 237 entity and 106 reference kinds
Architecture how a file becomes rows; how to add a pass
Parity measured agreement with Understand
MCP server query your code from an assistant
IntelliJ IDEA plugin metrics in a tool window

Published at m-zakeri.github.io/OpenUnderstand.

Contributing

Read docs/architecture.md first -- particularly the rule that kind ids are positions and must always be resolved by name.

Changes to the analysis are judged against Understand, not against opinion. If you can run the comparison, report recall and precision before and after -- a change that raises recall by tanking precision is not an improvement. If you cannot, say what you expect to change and it will be measured for you.

Pull requests target the dev branch.

Credits

Started at the IUST Reverse Engineering Research Laboratory. Uses ANTLR4, peewee, and a labelled fork of the grammars-v4 Java grammar.

Metadata

Release files for openunderstand 0.7.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 openunderstand 0.7.0
File Size Uploaded
openunderstand-0.7.0.tar.gz 909.6 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for openunderstand 0.7.0
File
openunderstand-0.7.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
openunderstand-0.7.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
openunderstand-0.7.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
openunderstand-0.7.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
openunderstand-0.7.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
openunderstand-0.7.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
openunderstand-0.7.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
openunderstand-0.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
openunderstand-0.7.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
openunderstand-0.7.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
openunderstand-0.7.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
openunderstand-0.7.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
openunderstand-0.7.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
openunderstand-0.7.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
openunderstand-0.7.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
openunderstand-0.7.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
openunderstand-0.7.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
openunderstand-0.7.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details

Total release size: 41.6 MB

Release files / openunderstand-0.7.0.tar.gz

Download URL openunderstand-0.7.0.tar.gz
Size 909.6 kB
Tags Source
SHA-256 checksum
How to use checksums
1cca8b317bee18a2d9451f69752c020ded05421fb4048bfcbc4b92d9a93ca39f
BLAKE2b-256 checksum
How to use checksums
1c637ab51f8f982afd049a9a876bd0ff9ff086c32eedb89553ff9850561ee61a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp314-cp314-win_amd64.whl

Download URL openunderstand-0.7.0-cp314-cp314-win_amd64.whl
Size 1.5 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
4120058961861bb6545b853a74cfddd7047965858b7f66f38153f95d279c96f4
BLAKE2b-256 checksum
How to use checksums
a1e5561e0db4dcfb6eba8b2bef4ad08948d8f9d0e2757e8121d9b9d319bbf97a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL openunderstand-0.7.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 3.9 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f8842912e8ce94d369f0cd312d562c7bc2ddb35c51c3607afa0f9e1303ef4983
BLAKE2b-256 checksum
How to use checksums
7f31172d2ced697d96853aa50376bf5617870f6b338e57ae2e25a570f5b91ac9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL openunderstand-0.7.0-cp314-cp314-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f067f12a1785f802c62babfc9713a3de5c70239d4bb9f5d527665c4bef01afca
BLAKE2b-256 checksum
How to use checksums
4d673eb513123c80f203b75ab888378a0b33f7f9a1d1451f01fed38458bd689a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp313-cp313-win_amd64.whl

Download URL openunderstand-0.7.0-cp313-cp313-win_amd64.whl
Size 1.5 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
23dfa8922d6e506157a895eee40c2018fea053c46ab5805fbdf91dbbea069f56
BLAKE2b-256 checksum
How to use checksums
52275caf3fb931c6e113a078ddb3855c0ecc2a5fa6027bf70e14198268738261
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL openunderstand-0.7.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 3.9 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5b55945f43ef78823d18d7ef387eb970a590987e40d0087e995e5ad1c03090af
BLAKE2b-256 checksum
How to use checksums
21586e763c1d70a7af2a986dfaf44aa280944e7bd490523682e1f48dce76e2ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL openunderstand-0.7.0-cp313-cp313-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8533cc4223f8ff18c60580860fc1946be8afff2c4c004bc0a83841935d0ab0d1
BLAKE2b-256 checksum
How to use checksums
8ff60839d7cc5ab2843e62605d426b07e50420003c48f756cc83c205e6a3e382
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp312-cp312-win_amd64.whl

Download URL openunderstand-0.7.0-cp312-cp312-win_amd64.whl
Size 1.5 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
3f3f503c174470bf9eaf1213eeedf286eb02e996386b7c9760520b52d1d54f9b
BLAKE2b-256 checksum
How to use checksums
0ae5b18480a556f4f213b4289592d3ec5d28f25f2a63518c200487adda831732
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL openunderstand-0.7.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 3.9 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c0d831c5cbe98cf2e9ad25f222dc86957d561f65743c392ba00aa93eeeb659c1
BLAKE2b-256 checksum
How to use checksums
55f01298a362b7244fe8035e467d1cf610cbac7fbe5aefd5a596fc672463b0b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL openunderstand-0.7.0-cp312-cp312-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f1426db2dcc5f11fafe22446c33050ebc0bed5a8eafeaf864b29731b56a7f923
BLAKE2b-256 checksum
How to use checksums
71071dc2100dbe6b2763e9a9af7f0fdf30428387ecbfa1ef8b0f51489f5e65ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp311-cp311-win_amd64.whl

Download URL openunderstand-0.7.0-cp311-cp311-win_amd64.whl
Size 1.5 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
71f150114867cf62c46d22102f8a8c57c714a8948104df9de0e14f3924c1b364
BLAKE2b-256 checksum
How to use checksums
85e823fa6a596068e9a65ac750db20469f947be8e34eaa5c3169597cffc906e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL openunderstand-0.7.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 3.9 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4a5f86da28787f489ba8c246837fcaa787365db0ef17051d993613e6c95e37f9
BLAKE2b-256 checksum
How to use checksums
6bd3dfb9143bf15dccc465d28be68250759bd374635e6a0ebde2a25d6cfe951b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL openunderstand-0.7.0-cp311-cp311-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bc57240162ce7d395614e3eb84cbd362992aca7d278f2edfce40c018f9c9c94e
BLAKE2b-256 checksum
How to use checksums
a6912620db3f75cdacdf8409945a6b6f7bf114ddf9ce5e76888f536dc972e571
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp310-cp310-win_amd64.whl

Download URL openunderstand-0.7.0-cp310-cp310-win_amd64.whl
Size 1.5 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
edb561ee0322f593956116c3825fc5df935f75d030f3339cadc31fb490c75526
BLAKE2b-256 checksum
How to use checksums
58f7c273fb49f1fa532b9c3951751ce45b61b6c7df2d6b36eb01d656077a2a30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL openunderstand-0.7.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 3.9 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
982bc8e6017402952149a7e9196ba07c04c8282f2e1e02cb5bf9f9c4b2403cc1
BLAKE2b-256 checksum
How to use checksums
26a28544df8b62f9fb4ad1073b05443a1e168e3c5a5ce93c349e4157cf4c8375
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL openunderstand-0.7.0-cp310-cp310-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d1bd713662fc482d44372da6b22f0a029a16d120f953dcad75744c2e28a622b1
BLAKE2b-256 checksum
How to use checksums
8f8971544d8eed3885fdc93f226d1f6e0616fa470062a1b70b67afbb78dace3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp39-cp39-win_amd64.whl

Download URL openunderstand-0.7.0-cp39-cp39-win_amd64.whl
Size 1.5 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
e229a0afc8508b2c70bdda0b66850c75e7cf6f19cb4c0206cf73b4739f4c1116
BLAKE2b-256 checksum
How to use checksums
3882c624ce4363c00e1d5e7841e28d9af29cb0623506b894b5a791efa0f84473
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL openunderstand-0.7.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 3.9 MB
Tags CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a08d73e29ade3e14496c9543925e50b193ca668cbc20790833e95f2785433144
BLAKE2b-256 checksum
How to use checksums
0e1946b7e319e05ee169f7856e06943b30484018968d1df9433d98e8c5291f78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release files / openunderstand-0.7.0-cp39-cp39-macosx_11_0_arm64.whl

Download URL openunderstand-0.7.0-cp39-cp39-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bbb5e5b8883b73ec68a021137d4f39ca60d021f6ef82c3a152849a9ddc786d43
BLAKE2b-256 checksum
How to use checksums
e65ed9424e6e83d59b4c87dab3a5aa7ec31ec3bb8a5397cbd76e3c45a891ee63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.7.0 This release

19 release files

0.4.0

19 release files

0.3.1

16 release files

0.3.0

6 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

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