1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//! Strongly-typed AST types for Python, auto-generated from
//! [`tree-sitter-python`](https://docs.rs/tree-sitter-python)'s `node-types.json`.
//!
//! This crate is generated by [`treesitter-types`](https://docs.rs/treesitter-types) and is
//! automatically kept up to date when a new version of the grammar crate is released.
//!
//! These types have been tested by parsing the
//! [CPython](https://github.com/python/cpython) source code.
//!
//! See the [Tree-sitter](https://tree-sitter.github.io/tree-sitter/) project for more
//! information about the underlying parser framework.
//!
//! # Example
//!
//! ```
//! use treesitter_types_python::*;
//!
//! // A minimal Python hello-world program.
//! let src = b"\
//! def main():
//! print(\"Hello, World!\")
//!
//! main()
//! ";
//!
//! // Parse the source with tree-sitter and convert into typed AST.
//! let mut parser = tree_sitter::Parser::new();
//! parser.set_language(&tree_sitter_python::LANGUAGE.into()).unwrap();
//! let tree = parser.parse(src, None).unwrap();
//! let module = Module::from_node(tree.root_node(), src).unwrap();
//!
//! // The module has two top-level children.
//! assert_eq!(module.children.len(), 2);
//!
//! // 1) The function definition — `def main(): ...`.
//! let ModuleChildren::CompoundStatement(stmt) = &module.children[0] else {
//! panic!("expected a compound statement");
//! };
//! let CompoundStatement::FunctionDefinition(func) = stmt.as_ref() else {
//! panic!("expected a function definition");
//! };
//! assert_eq!(func.name.text(), "main");
//! assert!(func.parameters.children.is_empty()); // no parameters
//! assert!(func.return_type.is_none()); // no return type annotation
//!
//! // 2) The call expression — `main()`.
//! let ModuleChildren::SimpleStatement(call_stmt) = &module.children[1] else {
//! panic!("expected a simple statement");
//! };
//! let SimpleStatement::ExpressionStatement(expr) = call_stmt.as_ref() else {
//! panic!("expected an expression statement");
//! };
//! assert_eq!(expr.children.len(), 1);
//! ```
pub use tree_sitter_python;
pub use tree_sitter;
pub use ;
pub use *;