Skip to content

Commit 7a5fb7f

Browse files
authored
feat: Bindings for AST and CST (#46)
* WIP: ast generation * Refactor query code to use ids * misc fixes * wip: generator * wip: language support * WIp: debugging outputs * Add getters and field getters * Fix bug * Subenum generation * Bump version * Fixes * Allow unused * fix parsing * fix constructor * fix tests
1 parent 9b96337 commit 7a5fb7f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+205678
-465
lines changed

Cargo.lock

Lines changed: 24 additions & 80 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,14 @@ codegen-sdk-ast = { workspace = true}
1212
codegen-sdk-common = { workspace = true}
1313
anyhow = { workspace = true}
1414
salsa = { workspace = true}
15-
codegen-sdk-typescript = { workspace = true, optional = true }
16-
codegen-sdk-python = { workspace = true, optional = true }
1715
env_logger = { workspace = true }
1816
log = { workspace = true }
1917
codegen-sdk-resolution = { workspace = true}
2018
sysinfo = "0.33.1"
2119
rkyv.workspace = true
2220
[features]
23-
python = [ "codegen-sdk-analyzer/python", "codegen-sdk-python"]
24-
typescript = [ "codegen-sdk-analyzer/typescript", "codegen-sdk-typescript"]
21+
python = [ "codegen-sdk-analyzer/python"]
22+
typescript = [ "codegen-sdk-analyzer/typescript"]
2523
tsx = [ "codegen-sdk-analyzer/tsx"]
2624
jsx = [ "codegen-sdk-analyzer/jsx"]
2725
javascript = [ "codegen-sdk-analyzer/javascript"]
@@ -34,8 +32,8 @@ markdown = [ "codegen-sdk-analyzer/markdown"]
3432
yaml = [ "codegen-sdk-analyzer/yaml"]
3533
toml = [ "codegen-sdk-analyzer/toml"]
3634
serialization = ["codegen-sdk-common/serialization", "codegen-sdk-analyzer/serialization"]
37-
stable = ["json", "toml", "typescript", "tsx", "jsx", "go", "python", "yaml", "java", "ruby", "rust", "javascript", "markdown"]
38-
default = []
35+
stable = ["codegen-sdk-analyzer/stable", "typescript", "tsx", "jsx", "javascript", "json", "toml", "yaml", "java", "ruby", "rust", "go", "markdown"]
36+
default = ["json"]
3937
[dev-dependencies]
4038
test-log = { workspace = true }
4139
criterion = { version = "0.5", features = ["html_reports"] }
@@ -69,7 +67,7 @@ resolver = "2"
6967
rayon = "1.10.0"
7068
env_logger = "0.11.6"
7169
log = "0.4.25"
72-
tree-sitter = "0.25.1"
70+
tree-sitter = "0.25.3"
7371
tree-sitter-python = "0.23.6"
7472
tree-sitter-typescript = "0.23.2"
7573
tree-sitter-javascript = "0.23.1"
@@ -125,13 +123,13 @@ indicatif-log-bridge = "0.2.3"
125123
indicatif = { version = "0.17.11", features = ["rayon"] }
126124
crossbeam-channel = "0.5.11"
127125
rstest = "0.25.0"
128-
indextree = "4.7.3"
126+
indextree = { version = "4.7.3", features = ["std"], default-features = false }
129127
thiserror = "2.0.11"
130128
indexmap = "2"
131129
smallvec = "1.11.0"
132130
[profile.dev]
133131
# codegen-backend = "cranelift"
134-
# split-debuginfo = "unpacked"
132+
split-debuginfo = "unpacked"
135133

136134
[profile.dev.package]
137135
insta.opt-level = 3

bindings/python/Cargo.toml

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,36 @@ name = "pink-python"
33
description = "Python bindings for pink"
44
version = "0.1.0"
55
edition = "2024"
6-
# [lib]
7-
# crate-type = ["cdylib", "rlib"]
6+
87

98
[dependencies]
10-
codegen-sdk-analyzer = { workspace = true, features = ["python", "typescript", "toml", "yaml", "json"]}
9+
codegen-sdk-analyzer = { workspace = true }
1110
codegen-sdk-resolution = { workspace = true }
12-
pyo3 = { version = "0.23.5", features = ["anyhow", "abi3-py311", "extension-module"] }
11+
pyo3 = { version = "0.23.5", features = ["anyhow", "extension-module"] }
1312
pyo3-log = "0.12.1"
1413
pyo3-bytes = "0.1.3"
15-
codegen-sdk-python = { workspace = true }
1614
codegen-sdk-common = { workspace = true }
1715
anyhow = { workspace = true }
16+
codegen-sdk-ast = { workspace = true }
1817
# pyo3-stub-gen = "0.7.0"
1918
[build-dependencies]
2019
codegen-bindings-generator = { workspace = true }
21-
codegen-sdk-common = { workspace = true }
20+
codegen-sdk-common = { workspace = true}
2221
env_logger = { workspace = true }
2322
log = { workspace = true }
23+
[features]
24+
python = [ "codegen-sdk-analyzer/python"]
25+
typescript = [ "codegen-sdk-analyzer/typescript"]
26+
tsx = [ "codegen-sdk-analyzer/tsx"]
27+
jsx = [ "codegen-sdk-analyzer/jsx"]
28+
javascript = [ "codegen-sdk-analyzer/javascript"]
29+
json = [ "codegen-sdk-analyzer/json"]
30+
java = [ "codegen-sdk-analyzer/java"]
31+
ruby = [ "codegen-sdk-analyzer/ruby"]
32+
rust = [ "codegen-sdk-analyzer/rust"]
33+
go = [ "codegen-sdk-analyzer/go"]
34+
markdown = [ "codegen-sdk-analyzer/markdown"]
35+
yaml = [ "codegen-sdk-analyzer/yaml"]
36+
toml = [ "codegen-sdk-analyzer/toml"]
37+
stable = ["codegen-sdk-analyzer/stable", "typescript", "tsx", "jsx", "javascript", "json", "toml", "yaml", "java", "ruby", "rust", "go", "markdown"]
38+
default = ["python", "typescript"]

bindings/python/build.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
1-
use codegen_bindings_generator::generate_python_bindings;
1+
use codegen_bindings_generator::{generate_python_bindings, generate_python_bindings_common};
22
use codegen_sdk_common::language::LANGUAGES;
33
fn main() {
44
env_logger::init();
55
for language in LANGUAGES.iter() {
6+
if language.name() == "ts_query" {
7+
continue;
8+
}
69
generate_python_bindings(&language).unwrap_or_else(|e| {
7-
log::error!("Error generating CST for {}: {}", language.name(), e);
8-
panic!("Error generating CST for {}: {}", language.name(), e);
10+
log::error!(
11+
"Error generating Python bindings for {}: {}",
12+
language.name(),
13+
e
14+
);
15+
panic!(
16+
"Error generating Python bindings for {}: {}",
17+
language.name(),
18+
e
19+
);
920
});
1021
}
22+
generate_python_bindings_common(&LANGUAGES).unwrap();
1123
}

bindings/python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ requires = ["maturin>=1.0,<2.0"]
88
build-backend = "maturin"
99

1010
[tool.maturin]
11-
features = ["pyo3/extension-module"]
11+
features = ["pyo3/extension-module", "pyo3/abi3-py311"]
1212
module-name = "codegen_sdk_pink"
1313
[tool.uv]
1414
# Rebuild package when any rust files change

0 commit comments

Comments
 (0)