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 eleven Java systems and 174,260 Understand entities:

pooled range across subjects
Entities recovered -- recall 0.935 0.49 -- 1.00
-- precision 0.943 0.84 -- 0.97
References at the exact position -- recall 0.90 -- 0.98
-- precision 0.62 -- 0.88

Three of the subjects, for comparison with earlier releases:

calculator_app org.json TheAlgorithms
Java files 8 85 228
Reference recall / precision 0.98 / 0.86 0.97 / 0.84 0.96 / 0.83

Both sides are scoped the same way: Understand indexes the whole Java library whether or not a JDK is added to the project, and its dump keeps only entities declared under the fixture root, so this project's placeholders for those same names -- java.lang.String, java.util.ArrayList -- are excluded too. Counting ours while its counterparts were dropped understated entity precision by 5 to 14 points depending on the subject.

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"}}}

Six tools (analyze, open_database, 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, double-click to jump to the declaration, export CSV. It runs the analysis in a Python subprocess and offers to install the package into a private virtualenv when it cannot find one.

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

See docs/idea-plugin.md.

What it does not do

  • Java 8 only. The grammar predates records, sealed types, var, text blocks and yield.
  • No external resolution. The JDK and third-party jars are not analysed, so java.lang.String exists but has no members.
  • Partial coverage. 90 to 98% of Understand's references are reproduced at the exact position, at 62 to 88% precision. 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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openunderstand-0.4.0.tar.gz (505.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

openunderstand-0.4.0-cp314-cp314-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.14Windows x86-64

openunderstand-0.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

openunderstand-0.4.0-cp314-cp314-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

openunderstand-0.4.0-cp313-cp313-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.13Windows x86-64

openunderstand-0.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

openunderstand-0.4.0-cp313-cp313-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

openunderstand-0.4.0-cp312-cp312-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.12Windows x86-64

openunderstand-0.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

openunderstand-0.4.0-cp312-cp312-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

openunderstand-0.4.0-cp311-cp311-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.11Windows x86-64

openunderstand-0.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

openunderstand-0.4.0-cp311-cp311-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

openunderstand-0.4.0-cp310-cp310-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.10Windows x86-64

openunderstand-0.4.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

openunderstand-0.4.0-cp310-cp310-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

openunderstand-0.4.0-cp39-cp39-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.9Windows x86-64

openunderstand-0.4.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

openunderstand-0.4.0-cp39-cp39-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file openunderstand-0.4.0.tar.gz.

File metadata

  • Download URL: openunderstand-0.4.0.tar.gz
  • Upload date:
  • Size: 505.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for openunderstand-0.4.0.tar.gz
Algorithm Hash digest
SHA256 2db30bc6e0e4ac0708f71bc14c14d9db868164cc2557d92a662b5fd94cf5da8c
MD5 c6643aaa44eec9941c309a3e547933a4
BLAKE2b-256 7d84cda05f1915f45b6271f7510b60fdae3d0862ae9471809e697436343a7d4c

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0.tar.gz:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c0a745d0a3f27dd29d32227ed43e6e09b3289edbc491dc9fae89690d35d032d4
MD5 a1799a0ab7ec4c545ff54bdc4e6bcd95
BLAKE2b-256 c332d72f5445d15c14faba84bd5f52ea0c8f4c21f8223e90dd26d9e610ee21d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp314-cp314-win_amd64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 43fcaa423ab772106c9e655db99555b55d63a9a0e2b6b59747c374c5cd710499
MD5 142efd218f75a55964dc64f6eecd84f9
BLAKE2b-256 911e3f46beb8251973d128c9b2c56626f8e60f91deadefecace1bacd9e4536a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ad21c6e8514c036b9fd0048f45197dddaa872172db0b7b4b3ebe264e6ebd2afe
MD5 8024b0079383920959fb824e60c1c363
BLAKE2b-256 4c09675aa45b11bc3ef5f699bd661b2f393e1430d34c4aeb08369551c6314d07

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d0333b96b32b7e5ae99fd00f180c1251aacf2b2a7f84e929e3e3cf657eb58f3f
MD5 15b14fc74cccd48203835e5bb848028a
BLAKE2b-256 8ae5d12998ade8664eb2093359e17e21be28f1d553f54d285097efc3d8ed5966

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp313-cp313-win_amd64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c6e9a75c66ee5ed5bc7d9d2009289c9d7f94779411e65bde1771d8ffb86cbd37
MD5 5f115511e6693faa2376d873b5a04793
BLAKE2b-256 855cceb88918b5002c4fe16b3cb9e1e83418064772dceaf73adb02648e89eda3

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 336b1f07343fd1f052c9e6d871adb4a6f7825205a2b31c3c336f9d524f1d467c
MD5 9ddb3de28222066fbcf5f4ac3dc72ede
BLAKE2b-256 1c89741b88cef3704fcba9ec143edd08f9abd82438cf30bacb9f9741d981919c

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 762906a68d537cd3cf4a43a75c9cfb8cc731385957c102f44fe7dff43cae6e8b
MD5 087aa4fb7673bce2755616d866be1020
BLAKE2b-256 f0f23501201471cee8f7d3e79592f3a1430c41230c39cfa8827d0be89ae0f3d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp312-cp312-win_amd64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fce0ec7364f9a426cf658e24a59618f444d4691f575c035ca71e34099d02e5ae
MD5 5fdee91bc982c5e68a2c57096eadab25
BLAKE2b-256 12f89a8f855eb2515fdafaaebf840ec8fbfa7d1a4683e1b108638aaa1731b8d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 39df82f3ca5ec736db4f1007912e96ca7e745f9559a727b7ff96a6f800d44b69
MD5 52af98efe84a17ccc72e26f162953fe6
BLAKE2b-256 bbe46fb846361bdce01f50aabdfbfdaf773fa75f321276c2f8748423dfd062c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ee594ffb2859a4dc3b8015a56a5235bbb14f00c12955d1a84fc201adab542618
MD5 8c9ea02a92eb2b864cc7c3bb9be8c94f
BLAKE2b-256 16f764ff75281ffc530a07ccc6dbcf007724fb164d906ba662669f71c15bd43e

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp311-cp311-win_amd64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2c0e49c2a5196eac4b70d3b450bdb1ce5b4415f87e0ff724b445394687b08bd3
MD5 48bb7c6b82dc9324c3ef5f24e33fc260
BLAKE2b-256 c1b9e095c18f3cc6791aa53cabcf4f78d6b468c1cfc767bc523efedf9ee17180

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 666be128ca246018257ee2c85d944026de08a235ed1678dbdfd0a1efd3f5c357
MD5 14eb79200c9d6218e62dc4b7ee04c17f
BLAKE2b-256 33c60f5bffa375afd9e016425726b104f5e62c1201d02973f434bafe01570001

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9841e1392d2b19cf64b642eb946e8256a798bad971c29eeae492d98c8c975ca9
MD5 84d7c649dec2756c772a066ba8008fc7
BLAKE2b-256 18816c3e47985f83e3a75568a00a9d9f55bcdc5557e9813cde08d1a4bb3f4c9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp310-cp310-win_amd64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 09bc7a6fb4e29424582f40758c586f19173220ac759f32a5990a60db0ceaa538
MD5 202d0064b6885354dc4a0200e2089470
BLAKE2b-256 8cdcd20270c6c72df0bbaf9f214afc6b5f8a09772ddbf81eaa525649a1060dbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 28befd3a236b5050cbd8f404db17bb44958f5943fab31e44bdb63996fddfa9e4
MD5 0cf7a0b2ea1e6ad9323dcff358be23d1
BLAKE2b-256 d07a7b6e62d3fe821b03c3c70398fd001441b9c08c914214e1e90046d87ed0e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6ea81682576cf8e9ae05a1c1ded648151e6b789630d7a943e1003b62d7015d18
MD5 fdb8fb272413852a011f7059bd8fdc72
BLAKE2b-256 7101a86e60b583288a719035545d87496d99f0c8647087a5553914033689319b

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp39-cp39-win_amd64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f54b8239adafc315b440a77f70c71ac07880dcabfe67120d26d087e3d38ad456
MD5 cda620476dee47669934856e16eff02a
BLAKE2b-256 a20f5e33e0a8a94ffaafe83e66a80daef8dda056382877446fed28a839369c26

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openunderstand-0.4.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for openunderstand-0.4.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e846fd47d750f6591891183129725c71d0734cb67f530dfc4fea839ed04c28a0
MD5 a7ac2eee044fb01d7b02edd7774b27bf
BLAKE2b-256 aac3953b622a2e76e2eabadb46a8b67857333b023526f8c22f1186a46a6fbeff

See more details on using hashes here.

Provenance

The following attestation bundles were made for openunderstand-0.4.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: release.yml on m-zakeri/OpenUnderstand

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.4.0 This release

19 files

0.3.1

16 files

0.3.0

6 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 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