Skip to main content

scope_engine/language/
python.rs

1use super::{LanguageAdapter, LanguageQueries};
2use tree_sitter::Language;
3
4pub struct PythonAdapter;
5
6impl PythonAdapter {
7    pub fn new() -> Self {
8        Self
9    }
10}
11
12impl Default for PythonAdapter {
13    fn default() -> Self {
14        Self::new()
15    }
16}
17
18impl LanguageAdapter for PythonAdapter {
19    fn language_name(&self) -> &'static str {
20        "python"
21    }
22
23    fn extensions(&self) -> &[&'static str] {
24        &["py"]
25    }
26
27    fn language(&self) -> Language {
28        tree_sitter_python::LANGUAGE.into()
29    }
30
31    fn queries(&self) -> LanguageQueries {
32        LanguageQueries {
33            definitions: r#"
34                (function_definition name: (identifier) @name) @def
35                (class_definition name: (identifier) @name) @def
36                (decorated_definition (function_definition name: (identifier) @name)) @def
37                (decorated_definition (class_definition name: (identifier) @name)) @def
38            "#,
39            references: r#"
40                (call function: (identifier) @ref) @call
41                (call function: (attribute attribute: (identifier) @ref)) @call
42                (identifier) @ref
43            "#,
44        }
45    }
46}