Skip to main content

Python bindings for the Tree-Sitter parsing library

Project description

Python Tree-sitter

CI pypi

This module provides Python bindings to the tree-sitter parsing library.

Installation

The package has no library dependencies and provides pre-compiled wheels for all major platforms.

[!NOTE] If your platform is not currently supported, please submit an issue on GitHub.

pip install tree-sitter

Usage

Setup

Install languages

Tree-sitter language implementations also provide pre-compiled binary wheels. Let's take Python as an example.

pip install tree-sitter-python

Then, you can load it as a Language object:

import tree_sitter_python as tspython
from tree_sitter import Language, Parser

PY_LANGUAGE = Language(tspython.language(), "python")

Build from source

[!WARNING] This method of loading languages is deprecated and will be removed in v0.22.0. You should only use it if you need languages that have not updated their bindings. Keep in mind that you will need a C compiler in this case.

First you'll need a Tree-sitter language implementation for each language that you want to parse.

git clone https://github.com/tree-sitter/tree-sitter-go
git clone https://github.com/tree-sitter/tree-sitter-javascript
git clone https://github.com/tree-sitter/tree-sitter-python

Use the Language.build_library method to compile these into a library that's usable from Python. This function will return immediately if the library has already been compiled since the last time its source code was modified:

from tree_sitter import Language, Parser

Language.build_library(
    # Store the library in the `build` directory
    "build/my-languages.so",
    # Include one or more languages
    ["vendor/tree-sitter-go", "vendor/tree-sitter-javascript", "vendor/tree-sitter-python"],
)

Load the languages into your app as Language objects:

GO_LANGUAGE = Language("build/my-languages.so", "go")
JS_LANGUAGE = Language("build/my-languages.so", "javascript")
PY_LANGUAGE = Language("build/my-languages.so", "python")

Basic parsing

Create a Parser and configure it to use a language:

parser = Parser()
parser.set_language(PY_LANGUAGE)

Parse some source code:

tree = parser.parse(
    bytes(
        """
def foo():
    if bar:
        baz()
""",
        "utf8",
    )
)

If you have your source code in some data structure other than a bytes object, you can pass a "read" callable to the parse function.

The read callable can use either the byte offset or point tuple to read from buffer and return source code as bytes object. An empty bytes object or None terminates parsing for that line. The bytes must encode the source as UTF-8.

For example, to use the byte offset:

src = bytes(
    """
def foo():
    if bar:
        baz()
""",
    "utf8",
)


def read_callable_byte_offset(byte_offset, point):
    return src[byte_offset : byte_offset + 1]


tree = parser.parse(read_callable_byte_offset)

And to use the point:

src_lines = ["\n", "def foo():\n", "    if bar:\n", "        baz()\n"]


def read_callable_point(byte_offset, point):
    row, column = point
    if row >= len(src_lines) or column >= len(src_lines[row]):
        return None
    return src_lines[row][column:].encode("utf8")


tree = parser.parse(read_callable_point)

Inspect the resulting Tree:

root_node = tree.root_node
assert root_node.type == 'module'
assert root_node.start_point == (1, 0)
assert root_node.end_point == (4, 0)

function_node = root_node.children[0]
assert function_node.type == 'function_definition'
assert function_node.child_by_field_name('name').type == 'identifier'

function_name_node = function_node.children[1]
assert function_name_node.type == 'identifier'
assert function_name_node.start_point == (1, 4)
assert function_name_node.end_point == (1, 7)

function_body_node = function_node.child_by_field_name("body")

if_statement_node = function_body_node.child(0)
assert if_statement_node.type == "if_statement"

function_call_node = if_statement_node.child_by_field_name("consequence").child(0).child(0)
assert function_call_node.type == "call"

function_call_name_node = function_call_node.child_by_field_name("function")
assert function_call_name_node.type == "identifier"

function_call_args_node = function_call_node.child_by_field_name("arguments")
assert function_call_args_node.type == "argument_list"


assert root_node.sexp() == (
    "(module "
        "(function_definition "
            "name: (identifier) "
            "parameters: (parameters) "
            "body: (block "
                "(if_statement "
                    "condition: (identifier) "
                    "consequence: (block "
                        "(expression_statement (call "
                            "function: (identifier) "
                            "arguments: (argument_list))))))))"
)

Walking syntax trees

If you need to traverse a large number of nodes efficiently, you can use a TreeCursor:

cursor = tree.walk()

assert cursor.node.type == "module"

assert cursor.goto_first_child()
assert cursor.node.type == "function_definition"

assert cursor.goto_first_child()
assert cursor.node.type == "def"

# Returns `False` because the `def` node has no children
assert not cursor.goto_first_child()

assert cursor.goto_next_sibling()
assert cursor.node.type == "identifier"

assert cursor.goto_next_sibling()
assert cursor.node.type == "parameters"

assert cursor.goto_parent()
assert cursor.node.type == "function_definition"

[!IMPORTANT] Keep in mind that the cursor can only walk into children of the node that it started from.

See examples/walk_tree.py for a complete example of iterating over every node in a tree.

Editing

When a source file is edited, you can edit the syntax tree to keep it in sync with the source:

new_src = src[:5] + src[5 : 5 + 2].upper() + src[5 + 2 :]

tree.edit(
    start_byte=5,
    old_end_byte=5,
    new_end_byte=5 + 2,
    start_point=(0, 5),
    old_end_point=(0, 5),
    new_end_point=(0, 5 + 2),
)

Then, when you're ready to incorporate the changes into a new syntax tree, you can call Parser.parse again, but pass in the old tree:

new_tree = parser.parse(new_src, tree)

This will run much faster than if you were parsing from scratch.

The Tree.changed_ranges method can be called on the old tree to return the list of ranges whose syntactic structure has been changed:

for changed_range in tree.changed_ranges(new_tree):
    print("Changed range:")
    print(f"  Start point {changed_range.start_point}")
    print(f"  Start byte {changed_range.start_byte}")
    print(f"  End point {changed_range.end_point}")
    print(f"  End byte {changed_range.end_byte}")

Pattern-matching

You can search for patterns in a syntax tree using a tree query:

query = PY_LANGUAGE.query(
    """
(function_definition
  name: (identifier) @function.def
  body: (block) @function.block)

(call
  function: (identifier) @function.call
  arguments: (argument_list) @function.args)
"""
)

Captures

captures = query.captures(tree.root_node)
assert len(captures) == 2
assert captures[0][0] == function_name_node
assert captures[0][1] == "function.def"

The Query.captures() method takes optional start_point, end_point, start_byte and end_byte keyword arguments, which can be used to restrict the query's range. Only one of the ..._byte or ..._point pairs need to be given to restrict the range. If all are omitted, the entire range of the passed node is used.

Matches

matches = query.matches(tree.root_node)
assert len(matches) == 2

# first match
assert matches[0][1]["function.def"] == function_name_node
assert matches[0][1]["function.block"] == function_body_node

# second match
assert matches[1][1]["function.call"] == function_call_name_node
assert matches[1][1]["function.args"] == function_call_args_node

The Query.matches() method takes the same optional arguments as Query.captures(). The difference between the two methods is that Query.matches() groups captures into matches, which is much more useful when your captures within a query relate to each other. It maps the capture's name to the node that was captured via a dictionary.

To try out and explore the code referenced in this README, check out examples/usage.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 Distribution

tree-sitter-0.21.1.tar.gz (155.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

tree_sitter-0.21.1-cp312-cp312-win_amd64.whl (109.7 kB view details)

Uploaded CPython 3.12Windows x86-64

tree_sitter-0.21.1-cp312-cp312-musllinux_1_1_x86_64.whl (496.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

tree_sitter-0.21.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (502.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

tree_sitter-0.21.1-cp312-cp312-macosx_11_0_arm64.whl (125.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tree_sitter-0.21.1-cp312-cp312-macosx_10_9_x86_64.whl (133.6 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

tree_sitter-0.21.1-cp311-cp311-win_amd64.whl (109.7 kB view details)

Uploaded CPython 3.11Windows x86-64

tree_sitter-0.21.1-cp311-cp311-musllinux_1_1_x86_64.whl (493.7 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

tree_sitter-0.21.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (498.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tree_sitter-0.21.1-cp311-cp311-macosx_11_0_arm64.whl (126.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tree_sitter-0.21.1-cp311-cp311-macosx_10_9_x86_64.whl (133.4 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

tree_sitter-0.21.1-cp310-cp310-win_amd64.whl (109.7 kB view details)

Uploaded CPython 3.10Windows x86-64

tree_sitter-0.21.1-cp310-cp310-musllinux_1_1_x86_64.whl (492.8 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

tree_sitter-0.21.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (496.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tree_sitter-0.21.1-cp310-cp310-macosx_11_0_arm64.whl (126.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

tree_sitter-0.21.1-cp310-cp310-macosx_10_9_x86_64.whl (133.4 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

tree_sitter-0.21.1-cp39-cp39-win_amd64.whl (110.0 kB view details)

Uploaded CPython 3.9Windows x86-64

tree_sitter-0.21.1-cp39-cp39-musllinux_1_1_x86_64.whl (494.4 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

tree_sitter-0.21.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (498.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

tree_sitter-0.21.1-cp39-cp39-macosx_11_0_arm64.whl (126.4 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

tree_sitter-0.21.1-cp39-cp39-macosx_10_9_x86_64.whl (133.6 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

tree_sitter-0.21.1-cp38-cp38-win_amd64.whl (110.0 kB view details)

Uploaded CPython 3.8Windows x86-64

tree_sitter-0.21.1-cp38-cp38-musllinux_1_1_x86_64.whl (499.2 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

tree_sitter-0.21.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (503.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

tree_sitter-0.21.1-cp38-cp38-macosx_11_0_arm64.whl (126.3 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

tree_sitter-0.21.1-cp38-cp38-macosx_10_9_x86_64.whl (133.7 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

Details for the file tree-sitter-0.21.1.tar.gz.

File metadata

  • Download URL: tree-sitter-0.21.1.tar.gz
  • Upload date:
  • Size: 155.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for tree-sitter-0.21.1.tar.gz
Algorithm Hash digest
SHA256 fc830cea69fff71cdf28e57326eeb9460ae5ff70d1b5d4bba36b889b4ba0237f
MD5 b264381ec5aa012c138a45aacaf0dd07
BLAKE2b-256 ff744e02c472e1ac117e3fbd0fee81337e02a703109bf1c712a1bee588e60033

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e9b32455d8f7151eb6a6a03541461e32107479a7dbc00fe1b1f93f899ce71234
MD5 9c21bea0dbabbf4436c10f166ab06e2a
BLAKE2b-256 e75b6907c78dfea0ecf954ddb701334847ae53cb505a3181ef924a8dd97e380b

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 9b4f029b04d267ed9dd0c78a816f92c28bfc4962194db5fbb6a6e2c83622fec2
MD5 bd8b91b2eb1ba8bf2d7e9532d24a37c3
BLAKE2b-256 90161ba2553cb124218d579315c7c4a3106fdb9e63ef8f83b6cd160cec385853

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7c6879f6a7544c15f0e3e4185c391d09cf643a7664f251ccb97dde243cf6ba51
MD5 1b6f55b94f7946ac4e2bef6d43d8b384
BLAKE2b-256 98415a9b00acf941b78c0020db8d3504cbd88b961ee6a826e25cd6da1578bacc

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5c02f8a8b8c463b5b0ce007d3568ce434f159a176cedc8a3eaa68ec745bc8f0d
MD5 79a2908bbaee803a5922a5a81fdb21e8
BLAKE2b-256 487779d3115e2513cec3c309483e242c210c4d00950bee4e1bc7b4c1289cb5ee

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 88793e8e0b32c531cefcaa86c858d4c46079b629c9ec4ed264ba86337f9754b3
MD5 74cdead5a398529f7ff3879f9bf22c15
BLAKE2b-256 1213290fa8f0e2d6a38b07f96f31769f48c461a69fbefad9499b4c8e445f4581

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 dacf0bd3124aaa0e1474ce96a36276d90fd3a0cb581a5bc185ef0366f4617e47
MD5 2bc99b1ddb66d631ea69a5b4fa135e96
BLAKE2b-256 a522529646494b6e46bd369f0be9124870ffeb90d67fd561584031de70f261f9

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 08b9193de82e8029f42b05a618e4a99151133b5a0a746fa56070d37665f6181d
MD5 773e5eb9d6076aa93dd628b1b78f00c5
BLAKE2b-256 eec7dc8e5076fbaf33fda82e89c179b0d90739261c90fdcbe1193bad520a4fc9

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2ba3e9218e375f35b0bdb284747d6d42282810601a0cc0565c681cc10d45fb1d
MD5 5370a6800a8ae2ee3d4179cc340d1730
BLAKE2b-256 4f3e5ab26f42991a98961f6311d302e84b9b7a89c7e12f109537137aae84bad5

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4bec17a7ea8c7d628b60abf8be1e9ede18fb6dac6aeab4c4f5b0f458404ad594
MD5 42b442a80cccbe3e97126dbc791a354f
BLAKE2b-256 7d77ead5db46ae9a397d3cf12403f01581bebf7f2cd43306fc7dae2820f0c0dd

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 797a57ba1c53162098a0ec23e3983ba2f7c5858fef427ee6560baa12c16288a9
MD5 609c5e63b5873c7000c8bdd704070e52
BLAKE2b-256 617c936cc27512fe5538756deb8dad5239cb3494cc150aad39738f151ae63fcc

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d3085928e6ea5170728ea543d53426a4a19877ec67e8d835f754bda383887af6
MD5 0bb1dac47c4965f38e9a2b152927a9df
BLAKE2b-256 3ec6b3742aeeabbda4ccac9c371d96d277130f3733731fd808652a92e3842162

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 016ff1578df0f93605b94ffb385925d657371e411f4bd435281cfbb019f3bcf3
MD5 7b53967a551953a03071a31c71b52294
BLAKE2b-256 ef5320be9c8ad1b91e567cb95b0994ae496e579f7e9ee733e659a62e383b3edb

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 941690e1ddec309f3cd4cf70d5e63310499f2fdec42913e271720da38f95ff77
MD5 2ae178e8bcfe4ead7a96735559c93635
BLAKE2b-256 221e247228bc9f0b63ea117897e236de31ed897555775592759c23e74ce888f7

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a61817730c9ba0af2a3d646357946a89927ec1a59090ad6898f17cb646f71636
MD5 3b18d2c7ae2d159bd62874a581a0a75a
BLAKE2b-256 77bb27a671581e9511c56325a346fd05d3ce7038e9f23774ff58a2a4f29cca8a

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5725ae76f460b25e62788257eac4b3cc86670f97485fbb19f27c6c8a62524db6
MD5 9a8f66403ed3314124a99e4886a2866a
BLAKE2b-256 19bc29a7975f67add76635619896d3dc9c97d53e4d14fac976ae04812e0b7538

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: tree_sitter-0.21.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 110.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for tree_sitter-0.21.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 001b3162586f2e87949fdee768d266510bd21ec87f5c10f0e8a6fe20f1232647
MD5 69bad9432519cf73977ed42b5cbca29e
BLAKE2b-256 c1e317fa1cac5c9a9fe948493f1e2908b9cf21c8f2c8ead6059d063c694ce830

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 5732e57f86037b5a95eeed8d59967b0c8f3534622c998ac0e49ffaab3dee9f8f
MD5 3a8a25c7be0c24147099e02ae4f8842a
BLAKE2b-256 6029e47980c2ea5372be468b58bac6f2f9055d9a9b54ea8b034577a31b2206ab

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 38f5cf1ca75c9f874028bb4c0b4dfada1a39807286191dd8de67206971392d35
MD5 00c357f3e42762292d8a57698c33429c
BLAKE2b-256 493d9049ebc5437ba6ceb367c704f5e4822dcad55f6d9e8cece7be4eda89a797

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8023c3e4e8133db620c7779577c9cf2b81ae047e40ce132af7b49ad0470676ce
MD5 b0d1b46881b5536cddb247f71fbe18c9
BLAKE2b-256 9cc685559f819dbac7621632dc865160e6bf9db9a31546f41d99f1e714879c70

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 18544491bf2910e1587f67bcd568eeaf6de4a9d3b47c8018a724d4b97f96596b
MD5 964501fca8f6483553fb423faa0f4180
BLAKE2b-256 1b9a3ab524d657c6d61bf19c25018371ceb432b8a41d51c81937cbef0c95bb01

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: tree_sitter-0.21.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 110.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for tree_sitter-0.21.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 22c528609e8017c3b703472fe2e5e84c24d132cf9ce1cb19fc61d9f54037ceda
MD5 5d54cb764a1f3d9ce36e790d7e92ac7d
BLAKE2b-256 dbf1975c0da3829806cc49f9f6c279db29349f86f1a0459945b998662cb9c556

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 1c3081556248a6149e49756491ad80cbbb6428bb6997120c857a01e6d8d426a6
MD5 d2091ab7fda05c923f3eb0ab1fbcd819
BLAKE2b-256 1d42dc985ccf0dddeeb98e1a3507708b1eded74421efeb3d54d18dd84bf4af0e

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1c2e322b00eea3f77426778b72e06d692ffce18571b0c7b56dd5fefc23fb79dc
MD5 226e29f6d6c1ed8211351ce99c3ba55c
BLAKE2b-256 186d554e8050ba051f9c752f4e836960e54e11e749ef3507b331e7e4adbdc50c

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 404dd04cc6506d3b3b9ff6e82de3afd51f50d9253a7dbaac175b02019bb6e3e9
MD5 e28e54cd6f4583c77b7d7df42f34c0dc
BLAKE2b-256 698d40760b8cb4364aff741b935d583c3efffdd134785e12ae44183dfafbec45

See more details on using hashes here.

File details

Details for the file tree_sitter-0.21.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for tree_sitter-0.21.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 96718b674f0e86c58d31d0f8507aa33b89af9381631f1a41c22231b6b0fc968a
MD5 07e784d003f58ba9024b95d0186fb31b
BLAKE2b-256 c545afd872d251904fb43646cade17fe3d38db821ddf64ce3b3bc777385d4ce6

See more details on using hashes here.

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