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.0rc17-py3-none-win_amd64.whl (110.3 kB view details)

Uploaded Python 3Windows x86-64

fastparse-0.1.0rc17-py3-none-manylinux2014_x86_64.whl (183.9 kB view details)

Uploaded Python 3

fastparse-0.1.0rc17-py3-none-macosx_11_0_arm64.whl (166.0 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

fastparse-0.1.0rc17-py3-none-macosx_10_15_x86_64.whl (171.3 kB view details)

Uploaded Python 3macOS 10.15+ x86-64

File details

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

File metadata

  • Download URL: fastparse-0.1.0rc17-py3-none-win_amd64.whl
  • Upload date:
  • Size: 110.3 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.0rc17-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 15b493f4b88e73fb26625d4d34a2ec140399ce7149719aa6a448506cf2d2ee80
MD5 969521d91d5da73590b7eb6239ec0f24
BLAKE2b-256 22bbbf19099490349bf13d3891ff973c0fcf6c5a8867bc00b7299b25c62aa242

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastparse-0.1.0rc17-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.0rc17-py3-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fastparse-0.1.0rc17-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cc8025933a205411d666d7f1cf3ecf54d36be2f0fd34852db107cee114d6762d
MD5 46bedf1713abc44e8c3fd2d1cb747b63
BLAKE2b-256 f0f967395db313dda61705ae1dc2e7bd0a25c0dd80270c1490b2e3ef0521ae45

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastparse-0.1.0rc17-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.0rc17-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastparse-0.1.0rc17-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fe22aec6b4398e926f3e1b40c2bd83ca08e10c64be16b382193f89234418c240
MD5 de3e416d9de6e02e9b13af52b68bbaa2
BLAKE2b-256 0d8dd8e6328c1111a0d1bcc694ecb8cb175903f37eda2e207c54444d2a15c726

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastparse-0.1.0rc17-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.0rc17-py3-none-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for fastparse-0.1.0rc17-py3-none-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 e0831cf366c03c4ce3426f40898479cea1235ef540a04996409b4dbbabf5a4d9
MD5 5ca8df39c6a11e6afc9780eaab8d30b9
BLAKE2b-256 20bda34ea66b9b1482fba28d288356e4488935eef37a8c727842302515bb7ff6

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastparse-0.1.0rc17-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