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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3

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

Uploaded Python 3macOS 11.0+ ARM64

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

File metadata

  • Download URL: fastparse-0.1.0rc22-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.0rc22-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 53409982d92ef18497dbf8b9a44b7a0fc77bc43147d4bcdf40f159ea309e9de8
MD5 eccf7a354502adfb09c5ac39de6b9466
BLAKE2b-256 de22f00905a8f61ddb3cc8b2b88753b4520c8c37bedce86e3f4f6c0e63154385

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fastparse-0.1.0rc22-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e711aaecafa05b72896378e22f04189a29304f420cf8f70dc3a6655e5167cb23
MD5 69c9d4645b10b8bb0f2a3307be8bbe7b
BLAKE2b-256 67127400d4f41b7fae2af0e2f21a745ba88664406f7a18a32620b6bcb9ecd062

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fastparse-0.1.0rc22-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b813cb8c101a2afee0c0dd921e84799e51f3455e899a9a262a0e9ba8c3e913fe
MD5 f35e8de7ed374e5d8af662be5eccc94a
BLAKE2b-256 f70d8cc966f76f6590750ec740eb0423eca0f2e6f5720f5a67c527b7f78592f7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fastparse-0.1.0rc22-py3-none-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c5013d08330e56b0e5bff4ab06dcfe12caac923f5aeda0b1ca3fb39510f44951
MD5 d2b45966d354c50239ff830f12ea605e
BLAKE2b-256 80ce5a68ff97c9a602ac3ffad104006d2a724d140182411777cac7a5aa8f8173

See more details on using hashes here.

Provenance

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