Ejemplo n.º 1
0
 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])]
     )
Ejemplo n.º 2
0
 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])]
     )
Ejemplo n.º 3
0
 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])]
     )
Ejemplo n.º 4
0
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])]
        )
Ejemplo n.º 5
0
 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])],
     )
Ejemplo n.º 6
0
 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])],
     )