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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3

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

Uploaded Python 3macOS 11.0+ ARM64

fastparse-0.1.0rc21-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.0rc21-py3-none-win_amd64.whl.

File metadata

  • Download URL: fastparse-0.1.0rc21-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.0rc21-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 2d57fef231095768598c750588f6b5680e22e9f5dd6acd4036ea47526d966b69
MD5 1170d528abe6c959f5d1c852463806c4
BLAKE2b-256 dbb4b58ad034232c92275e461e65711e9314f43fbe68c352485a6c3b0e7a1ff1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fastparse-0.1.0rc21-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc2034b297f01734f7e2b7563e0f5f39b36dc042f314e0f2e95313a16615ace8
MD5 1c41058496c9f69652da7bd8d7b0cae6
BLAKE2b-256 3e5e9eecddb2367546b450d9e5a9bbde9865ddbabf8f8adb2a4becdda71edaa3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fastparse-0.1.0rc21-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a4bd5985b5fde5400a669d45994060c7cb88dc6bf797305cc8f623340feeffc3
MD5 62c1f9513cc692c10d52af4f7d5e3f10
BLAKE2b-256 505f43cde7d40259417c1f39514e6cacf38549cee43ad20214256f4eb1750a7c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fastparse-0.1.0rc21-py3-none-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 215bd974e9cf52b4f5aa15992ac15db24fd5cb0b2443cec63fa05fd5d874615c
MD5 bb3175b8c36ca4c0175e47518970bcb9
BLAKE2b-256 f892c1d776bf8ca54106fabf3d486579f19c08fa4a1b0496f40c647f2201cbe9

See more details on using hashes here.

Provenance

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