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 fastparse

From a downloaded wheel:

pip install fastparse-0.1.0rc16-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 = tsmp.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

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

Uploaded Python 3Windows x86-64

fastparse-0.1.0rc16-py3-none-manylinux2014_x86_64.whl (183.7 kB view details)

Uploaded Python 3

fastparse-0.1.0rc16-py3-none-macosx_11_0_arm64.whl (165.8 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

fastparse-0.1.0rc16-py3-none-macosx_10_15_x86_64.whl (171.1 kB view details)

Uploaded Python 3macOS 10.15+ x86-64

File details

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

File metadata

  • Download URL: fastparse-0.1.0rc16-py3-none-win_amd64.whl
  • Upload date:
  • Size: 110.1 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.0rc16-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 3b0bba5cc0054c8cdc4c0e362f20f17a39fb696140424317713e7756f9dfae7a
MD5 c85ddb9c2bba47b4fb4c84767b072f40
BLAKE2b-256 4b41896453819b8ece4ac09a7df15abfdc5240dba89065aa877499c7ddc489cd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fastparse-0.1.0rc16-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 72642d0dc1465501a0b68c3eb42a60883798301db1f1924d6605230c227d893e
MD5 7900eaee092fdaca796a940519620608
BLAKE2b-256 c243a7eaecfa7caed618e014e629bd3afb659cba0b4926e5e638a0347a0cc592

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fastparse-0.1.0rc16-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 69a32f03d4a20217c8a4da37857b10711c8c5a0be8642f1ecdddf99438b23977
MD5 9b23dd324afd8f8f48fddb6e6f72fbb2
BLAKE2b-256 b2d49f66ef740963c856fe445e6397649a1fe94e662a2909f81c0ba170aee849

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fastparse-0.1.0rc16-py3-none-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 f512ac0465f8cfd739c00d7cedf2cd767407d148a13059baa8a01ceff58cbf7c
MD5 1a753d45de15a3d4dc52e8fbabe36d7d
BLAKE2b-256 83114e049bb6fffd5634a65c3b8e716ad9f267897ea928aa1516b716d8e9e7db

See more details on using hashes here.

Provenance

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