Type providers for tree-sitter in Python
Reason this release was yanked:
Breaking changes from tree-sitter.
Project description
Type Providers for Tree Sitter
Create a type AST from any node-types.json
file, as well as a generic visitor class and a transformer class, and a function to convert to the AST from the tree_sitter.Node
type.
For example, the following code defines a module named tree_sitter_javascript
from tree-sitter-javascript/src/nodes.json
:
import pathlib
import tree_sitter_type_provider as tstp
node_types_json = pathlib.Path("tree-sitter-javascript/src/node-types.json")
node_types = tstp.NodeType.schema().loads(node_types_json.read_text(), many=True)
def as_class_name(node_type_name: str) -> str:
class_name_parts: list[str] = ["Js"]
for part in node_type_name.split("_"):
class_name_parts.append(part.capitalize())
return "".join(class_name_parts)
sys.modules[__name__] = tstp.TreeSitterTypeProvider(
"tree_sitter_javascript",
node_types,
error_as_node=True, # Include ERROR as a node in the AST
as_class_name=as_class_name, # How to convert node types to Python class names
extra=["comment"], # Nodes which are marked as 'extra' in the grammar
)
The module contains a number of dataclasses which represent the AST nodes:
import tree_sitter as ts
import tree_sitter_type_provider as tstp
@dataclass
class JsArray(tstp.Node):
text: str
type_name: str
start_position: tstp.Point
end_position: tstp.Point
children: list[Union[JsExpression, JsSpreadElement]]
@dataclass
class JsDeclaration(tstp.Node):
text: str
type_name: str
start_position: tstp.Point
end_position: tstp.Point
@dataclass
class JsWhileStatement(tstp.Node):
text: str
type_name: str
start_position: tstp.Point
end_position: tstp.Point
body: JsStatement
condition: JsParenthesizedExpression
...
As well as a function to convert to the AST:
def from_tree_sitter(self, tsvalue: ts.Tree | ts.Node | ts.TreeCursor, *, encoding: str = 'utf-8') -> tstp.Node
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for tree_sitter_type_provider-2.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 464c622a8193bc54a82b000e657d14a2df9bf7badcfdd63a37767c8f69ddb802 |
|
MD5 | f49ef31e5d56f74346105bbf7f50c3c1 |
|
BLAKE2b-256 | 742b2cc4da0a07fe58757b42ea9704dd2ee5e1b2bb85b4e3eba69625213666a2 |
Close
Hashes for tree_sitter_type_provider-2.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ec37413c895b4c83e0112e2a6150b8cb2e9764d0ecd0e7e0d082fcb3d71785e |
|
MD5 | 65486157ba0fe169e6ec4cf434d15230 |
|
BLAKE2b-256 | 453ea6c29616d8f4d8696f5f81fca554e578dc046c07010a6c4312e4c7bee4dd |