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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3

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

Uploaded Python 3macOS 11.0+ ARM64

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

File metadata

  • Download URL: fastparse-0.1.0rc20-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.0rc20-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1fca07eabd8c7340e7d16dfe59c1b0aa6d829d6a3a83798cf3835f2812b3e8f4
MD5 a8ec2e2c99afde12b44d7226e04a411b
BLAKE2b-256 fe7798d5a8d5fe904f8ef0f4f8d15511b920b73d5c41516fb51565113df98edd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fastparse-0.1.0rc20-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cd15a8dd71854b336e51bf9b830a4b1bd46872fc484737ff8e97124f560740c9
MD5 39068a354b9b65a65f8be017881c4d13
BLAKE2b-256 ed5b7869077302951fd4dcab8d2ffc21c050afaadecf37ccc3b968cedb0518fc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fastparse-0.1.0rc20-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6e4270bc2b59050bc5ada1c27d2d4c3ceae827a7564859dc5c3199aa29594ab5
MD5 e874950b01917eab2a16154a47fd85d4
BLAKE2b-256 884c9435f1b0cbf861bb03e7cdd752b801510462ea094a828ce0dcea0f3a739c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fastparse-0.1.0rc20-py3-none-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 bcb3731663f70d3d90a50e0c52673c266b2259abf88cf83f1f3cdc8a86299226
MD5 8da505beadb80ac0b0da3b69da64be18
BLAKE2b-256 3d217463bede6584db5204fb1522ec2dc3fcd1d5159d9af3288d6e7eb063ac7f

See more details on using hashes here.

Provenance

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