Skip to main content

Python binding for the FastParse Tree-sitter parser library with bundled native runtime

Project description

FastParse Python Binding

Small ctypes binding for the FastParse native C library.

The binding keeps the same design boundary as the native library:

  • Python owns file I/O.
  • Python passes bytes already loaded in RAM.
  • FastParse returns JSON, CSV, MessagePack binary, diagnostics, or stats in RAM.
  • Python copies the returned native buffer and frees the native result.

Install

From PyPI, once the package is published:

pip install --pre fastparse

From a downloaded wheel:

pip install fastparse-0.1.0rc17-py3-none-macosx_11_0_arm64.whl

The wheel includes the native library for its platform and py.typed markers for type-aware tooling, so normal users do not need FASTPARSE_LIBRARY_PATH.

Quick Use

from fastparse import FastParse, Field, OutputFormat, ParseOptions

parser = FastParse()
source = b"class Demo { void run() {} }"

result = parser.parse_bytes(
    source,
    ParseOptions(
        language="java",
        output_format=OutputFormat.JSON,
        fields=Field.RULE | Field.TEXT | Field.BYTE_RANGE,
    ),
)

print(result.node_count)
print(result.json())

Binary MessagePack output:

result = parser.parse_bytes(
    source,
    language="java",
    output_format="binary",
    fields=["rule", "text", "byte_range"],
)

print(result.node_count)
print(result.data)  # MessagePack bytes

Decode binary output into Python dataclasses:

document = result.binary_document()
print(document.nodes[0].rule)
print(document.nodes[0].text)

If the caller only needs node/output counts and does not need to copy the generated JSON/CSV into Python:

summary = parser.parse_bytes_summary(
    source,
    language="java",
    output_format="json",
)

print(summary.node_count)
print(summary.output_length)

Use FASTPARSE_LIBRARY_PATH to point at a specific native library:

FASTPARSE_LIBRARY_PATH=/path/to/libfastparse.dylib python your_script.py

Examples

From the repository root:

python3 examples/python/03_binary_decode/binary_decode.py
python3 examples/python/04_inventory_to_sqlite/inventory_to_sqlite.py --workers 12
python3 examples/python/05_diagnostics_scan/diagnostics_scan.py /path/to/java/root --glob "*.java" --workers 12

04_inventory_to_sqlite is the enterprise pattern for high-throughput work: the parent Python app reads files, uses threads, decodes binary output into dataclasses, and writes SQLite tables outside the native library.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

fastparse-0.1.0rc23-py3-none-win_amd64.whl (111.0 kB view details)

Uploaded Python 3Windows x86-64

fastparse-0.1.0rc23-py3-none-manylinux2014_x86_64.whl (184.6 kB view details)

Uploaded Python 3

fastparse-0.1.0rc23-py3-none-macosx_11_0_arm64.whl (166.7 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

fastparse-0.1.0rc23-py3-none-macosx_10_15_x86_64.whl (172.1 kB view details)

Uploaded Python 3macOS 10.15+ x86-64

File details

Details for the file fastparse-0.1.0rc23-py3-none-win_amd64.whl.

File metadata

  • Download URL: fastparse-0.1.0rc23-py3-none-win_amd64.whl
  • Upload date:
  • Size: 111.0 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fastparse-0.1.0rc23-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 c46a7c08bf63eb47a55ada2dc88866c0b643a638212c0787a7729f1b48e3a303
MD5 0b13412161081ca6de4561ae201c3411
BLAKE2b-256 2424a7abd39ac2e4645bb99dfa64a52a038530c63959d69e783c1a60ca343f1c

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastparse-0.1.0rc23-py3-none-win_amd64.whl:

Publisher: release.yml on natan-sysview/fast_parser

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

File details

Details for the file fastparse-0.1.0rc23-py3-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fastparse-0.1.0rc23-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7990609aa43174ae2e2386b46c669caa677190f4f97f56688c83eb8c1577f0f0
MD5 a4420668dcda55aa6d19250959e36894
BLAKE2b-256 1057906efae44f6b83b169b49fb5a0f26d3df6a59f99f89b270cb5eef3e2da88

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastparse-0.1.0rc23-py3-none-manylinux2014_x86_64.whl:

Publisher: release.yml on natan-sysview/fast_parser

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

File details

Details for the file fastparse-0.1.0rc23-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastparse-0.1.0rc23-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 72ed69c9480d414f73b9c5347b4f25c686f3317372677155a25b0a9915aac14f
MD5 8ae95b2d07811df6e36d7f788440f6f2
BLAKE2b-256 52ee9858958001f8beeb653812924fcc2544b8f0d841102e219c6d6f17467b11

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastparse-0.1.0rc23-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on natan-sysview/fast_parser

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

File details

Details for the file fastparse-0.1.0rc23-py3-none-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for fastparse-0.1.0rc23-py3-none-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 fe035bbc1834b9409f6846a9d93485905418d52ddfcb848fa208f4cb43aa964b
MD5 339cdad4281ab715352a80b018271316
BLAKE2b-256 dda760931bce2200595e43c08c07082228294a754216ba0a65f72fc01661d998

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastparse-0.1.0rc23-py3-none-macosx_10_15_x86_64.whl:

Publisher: release.yml on natan-sysview/fast_parser

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page