aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--queries/python/locals.scm65
2 files changed, 66 insertions, 1 deletions
diff --git a/README.md b/README.md
index d9d9b8f20..e87bc2adb 100644
--- a/README.md
+++ b/README.md
@@ -158,7 +158,7 @@ List of currently supported languages:
- [ ] go
- [ ] cpp
- [ ] rust
-- [ ] python
+- [x] python (maintained by @theHamsta)
- [ ] javascript
- [ ] typescript
- [ ] tsx
diff --git a/queries/python/locals.scm b/queries/python/locals.scm
new file mode 100644
index 000000000..763d1b77d
--- /dev/null
+++ b/queries/python/locals.scm
@@ -0,0 +1,65 @@
+;;; Programm structure
+(module) @scope
+
+(class_definition
+ body: (block
+ (expression_statement
+ (assignment
+ left: (expression_list
+ (identifier) @definition.associated))))) @scope
+
+; Function with parameters, defines parameters
+(function_definition
+ name: (identifier)
+ parameters: (parameters
+ (identifier) @definition.var))
+
+; Function defines function and scope
+(function_definition
+ name: (identifier) @definition.function) @scope
+
+(class_definition
+ name: (identifier) @definition.type) @scope
+
+(class_definition
+ body: (block
+ (function_definition
+ name: (identifier) @definition.method)))
+
+;;; Loops
+; not a scope!
+(for_statement
+ left: (variables
+ (identifier) @definition.var))
+
+; not a scope!
+;(while_statement) @scope
+
+; for in list comprehension
+(for_in_clause
+ left: (variables
+ (identifier) @definition.var))
+
+(dictionary_comprehension) @scope
+(list_comprehension) @scope
+(set_comprehension) @scope
+
+;;; Assignments
+
+(assignment
+ left: (expression_list
+ (identifier) @definition.var))
+
+(assignment
+ left: (expression_list
+ (attribute
+ (identifier)
+ (identifier) @definition.field)))
+
+; Walrus operator x := 1
+(named_expression
+ (identifier) @definition.var)
+
+
+;;; REFERENCES
+(identifier) @reference