diff --git a/internal/backends/python/grab.go b/internal/backends/python/grab.go index a9670c8e..610e5dee 100644 --- a/internal/backends/python/grab.go +++ b/internal/backends/python/grab.go @@ -17,9 +17,25 @@ var importsQuery = ` name: [(dotted_name) @import (aliased_import name: (dotted_name) @import)]) - (import_from_statement - module_name: (dotted_name) @import)] + module_name: (dotted_name) @import) + (if_statement + [(block + [(import_statement + name: + [(dotted_name) @import + (aliased_import + name: (dotted_name) @import)]) + (import_from_statement + module_name: (dotted_name) @import)]) + (_ (block + [(import_statement + name: + [(dotted_name) @import + (aliased_import + name: (dotted_name) @import)]) + (import_from_statement + module_name: (dotted_name) @import)]))])] . diff --git a/internal/backends/python/grab_test.go b/internal/backends/python/grab_test.go index cc06b168..7c74893b 100644 --- a/internal/backends/python/grab_test.go +++ b/internal/backends/python/grab_test.go @@ -1,7 +1,9 @@ package python import ( + "bytes" "context" + "fmt" "os" "os/exec" "path" @@ -18,6 +20,10 @@ func TestParseFile(t *testing.T) { "replit": true, "replit.ai": true, "bar": true, + "cond1": true, + "cond2": true, + "cond3": true, + "cond4": true, } content := ` @@ -28,6 +34,15 @@ from Flask import Flask import replit import replit.ai import foo #upm package(bar) + +if False: + import cond1 +elif True: + import cond2 +elif True: + import cond3 +else: + import cond4 ` testDir := t.TempDir() @@ -144,8 +159,13 @@ import flask // Sanity test, actually run Python in the environment. cmd := exec.Command("bash", "-c", "poetry lock -n; poetry install; poetry run python -m foo") + + var stderr bytes.Buffer + cmd.Stderr = &stderr stdout, err := cmd.Output() if err != nil { + + fmt.Println("stderr:", stderr.String()) t.Fatal("failed to execute python", err) } lines := strings.Split(strings.TrimSpace(string(stdout)), "\n") diff --git a/replit.nix b/replit.nix index 39d2b396..d18a2bf1 100644 --- a/replit.nix +++ b/replit.nix @@ -14,8 +14,8 @@ pkgs.nodejs-18_x pkgs.yarn pkgs.nodePackages.pnpm - pkgs.python310Full - pkgs.python310Packages.pip + pkgs.python311Full + pkgs.python311Packages.pip pkgs.poetry pkgs.R pkgs.ruby