def run_dep_inference(address: Address) -> InferredDependencies: args = [ "--source-root-patterns=src/python", "--python-infer-assets", ] rule_runner.set_options(args, env_inherit={"PATH", "PYENV_ROOT", "HOME"}) target = rule_runner.get_target(address) return rule_runner.request( InferredDependencies, [InferPythonImportDependencies(target[PythonSourceField])] )
def run_dep_inference( address: Address, *, enable_string_imports: bool = False ) -> InferredDependencies: args = ["--source-root-patterns=src/python"] if enable_string_imports: args.append("--python-infer-string-imports") rule_runner.set_options(args, env_inherit={"PATH", "PYENV_ROOT", "HOME"}) target = rule_runner.get_target(address) return rule_runner.request( InferredDependencies, [InferPythonImportDependencies(target[PythonSourceField])] )
def run_dep_inference( address: Address, *, enable_string_imports: bool = False ) -> InferredDependencies: args = ["--backend-packages=pants.backend.python", "--source-root-patterns=src/python"] if enable_string_imports: args.append("--python-infer-string-imports") rule_runner.set_options(args) target = rule_runner.get_target(address) return rule_runner.request( InferredDependencies, [InferPythonImportDependencies(target[PythonSources])] )
def test_infer_python_strict_multiple_resolves(imports_rule_runner: RuleRunner) -> None: imports_rule_runner.write_files( { "project/base.py": "", "project/utils.py": "", "project/app.py": "import project.base\nimport project.utils", "project/BUILD": dedent( """\ python_source( name="base", source="base.py", resolve="a", ) python_source( name="utils", source="utils.py", resolve=parametrize("a", "b"), ) python_source( name="app", source="app.py", resolve="z", ) """ ), } ) imports_rule_runner.set_options( [ "--python-infer-unowned-dependency-behavior=error", "--python-enable-resolves", "--python-resolves={'a': '', 'b': '', 'z': ''}", ], env_inherit=PYTHON_BOOTSTRAP_ENV, ) tgt = imports_rule_runner.get_target(Address("project", target_name="app")) expected_error = softwrap( """ These imports are not in the resolve used by the target (`z`), but they were present in other resolves: * project.base: 'a' from project:base * project.utils: 'a' from project:utils@resolve=a, 'b' from project:utils@resolve=b """ ) with engine_error(UnownedDependencyError, contains=expected_error): imports_rule_runner.request( InferredDependencies, [InferPythonImportDependencies(tgt[PythonSourceField])] )
def run_dep_inference(unowned_dependency_behavior: str) -> InferredDependencies: imports_rule_runner.set_options( [ f"--python-infer-unowned-dependency-behavior={unowned_dependency_behavior}", "--python-infer-string-imports", ], env_inherit=PYTHON_BOOTSTRAP_ENV, ) target = imports_rule_runner.get_target( Address("src/python", relative_file_path="cheesey.py") ) return imports_rule_runner.request( InferredDependencies, [InferPythonImportDependencies(target[PythonSourceField])], )
def run_dep_inference( address: Address, unowned_dependency_behavior: str, ) -> InferredDependencies: rule_runner.set_options( [ "--backend-packages=pants.backend.python", f"--python-infer-unowned-dependency-behavior={unowned_dependency_behavior}", "--source-root-patterns=src/python", ], env_inherit={"PATH", "PYENV_ROOT", "HOME"}, ) target = rule_runner.get_target(address) return rule_runner.request( InferredDependencies, [InferPythonImportDependencies(target[PythonSourceField])], )