Skip to content

Commit

Permalink
Move PantsEnvironment into SessionValues (#10862)
Browse files Browse the repository at this point in the history
As introduced in #10827, this is a more correct modeling for reading the environment variables. It will result in less invalidation of Pantsd.

Likewise, we can extend our `rule_runner.set_options()` method introduced in #10859 to simplify how tests change the `PantsEnvironment`.

[ci skip-rust]
[ci skip-build-wheels]
  • Loading branch information
Eric-Arellano committed Sep 25, 2020
1 parent 137e409 commit 1d5a34d
Show file tree
Hide file tree
Showing 28 changed files with 139 additions and 151 deletions.
Expand Up @@ -13,7 +13,6 @@
from pants.backend.awslambda.python.awslambda_python_rules import rules as awslambda_python_rules
from pants.backend.awslambda.python.target_types import PythonAWSLambda
from pants.backend.python.target_types import PythonLibrary
from pants.core.util_rules.pants_environment import PantsEnvironment
from pants.engine.addresses import Address
from pants.engine.fs import DigestContents
from pants.testutil.rule_runner import QueryRule, RuleRunner
Expand All @@ -24,7 +23,7 @@ def rule_runner() -> RuleRunner:
return RuleRunner(
rules=[
*awslambda_python_rules(),
QueryRule(CreatedAWSLambda, (PythonAwsLambdaFieldSet, PantsEnvironment)),
QueryRule(CreatedAWSLambda, (PythonAwsLambdaFieldSet,)),
],
target_types=[PythonAWSLambda, PythonLibrary],
)
Expand All @@ -40,7 +39,7 @@ def create_python_awslambda(rule_runner: RuleRunner, addr: str) -> Tuple[str, by
)
target = rule_runner.get_target(Address.parse(addr))
created_awslambda = rule_runner.request(
CreatedAWSLambda, [PythonAwsLambdaFieldSet.create(target), PantsEnvironment()]
CreatedAWSLambda, [PythonAwsLambdaFieldSet.create(target)]
)
created_awslambda_digest_contents = rule_runner.request(
DigestContents, [created_awslambda.digest]
Expand Down
Expand Up @@ -5,7 +5,7 @@
import re
from pathlib import PurePath
from textwrap import dedent
from typing import List, Optional
from typing import List, Mapping, Optional

import pytest

Expand All @@ -23,7 +23,6 @@
from pants.core.goals import binary
from pants.core.goals.test import TestDebugRequest, TestResult, get_filtered_environment
from pants.core.util_rules import distdir
from pants.core.util_rules.pants_environment import PantsEnvironment
from pants.engine.addresses import Address
from pants.engine.fs import DigestContents, FileContent
from pants.engine.process import InteractiveRunner
Expand All @@ -43,8 +42,8 @@ def rule_runner() -> RuleRunner:
*binary.rules(),
*create_python_binary.rules(),
get_filtered_environment,
QueryRule(TestResult, (PythonTestFieldSet, PantsEnvironment)),
QueryRule(TestDebugRequest, (PythonTestFieldSet, PantsEnvironment)),
QueryRule(TestResult, (PythonTestFieldSet,)),
QueryRule(TestDebugRequest, (PythonTestFieldSet,)),
],
target_types=[PythonBinary, PythonLibrary, PythonTests, PythonRequirementLibrary],
)
Expand Down Expand Up @@ -144,7 +143,7 @@ def run_pytest(
use_coverage: bool = False,
execution_slot_var: Optional[str] = None,
extra_env_vars: Optional[str] = None,
pants_environment: PantsEnvironment = PantsEnvironment(),
env: Optional[Mapping[str, str]] = None,
) -> TestResult:
args = [
"--backend-packages=pants.backend.python",
Expand All @@ -163,9 +162,9 @@ def run_pytest(
args.append("--test-use-coverage")
if execution_slot_var:
args.append(f"--pytest-execution-slot-var={execution_slot_var}")
rule_runner.set_options(args)
rule_runner.set_options(args, env=env)

inputs = [PythonTestFieldSet.create(test_target), pants_environment]
inputs = [PythonTestFieldSet.create(test_target)]
test_result = rule_runner.request(TestResult, inputs)
debug_request = rule_runner.request(TestDebugRequest, inputs)
if debug_request.process is not None:
Expand Down Expand Up @@ -433,9 +432,12 @@ def test_args():
).encode(),
)
tgt = create_test_target(rule_runner, [source])
mock_env = PantsEnvironment({"OTHER_VAR": "other_value"})
extra_env_vars = '["SOME_VAR=some_value", "OTHER_VAR"]'
result = run_pytest(rule_runner, tgt, extra_env_vars=extra_env_vars, pants_environment=mock_env)
result = run_pytest(
rule_runner,
tgt,
extra_env_vars='["SOME_VAR=some_value", "OTHER_VAR"]',
env={"OTHER_VAR": "other_value"},
)
assert result.exit_code == 0


Expand Down
Expand Up @@ -9,7 +9,6 @@
from pants.backend.python.lint.bandit.rules import rules as bandit_rules
from pants.backend.python.target_types import PythonInterpreterCompatibility, PythonLibrary
from pants.core.goals.lint import LintResult, LintResults
from pants.core.util_rules.pants_environment import PantsEnvironment
from pants.engine.addresses import Address
from pants.engine.fs import DigestContents, FileContent
from pants.engine.target import Target
Expand All @@ -22,7 +21,7 @@ def rule_runner() -> RuleRunner:
return RuleRunner(
rules=[
*bandit_rules(),
QueryRule(LintResults, (BanditRequest, PantsEnvironment)),
QueryRule(LintResults, (BanditRequest,)),
],
)

Expand Down Expand Up @@ -69,7 +68,7 @@ def run_bandit(
rule_runner.set_options(args)
results = rule_runner.request(
LintResults,
[BanditRequest(BanditFieldSet.create(tgt) for tgt in targets), PantsEnvironment()],
[BanditRequest(BanditFieldSet.create(tgt) for tgt in targets)],
)
return results.results

Expand Down
Expand Up @@ -11,7 +11,6 @@
from pants.backend.python.target_types import PythonLibrary
from pants.core.goals.fmt import FmtResult
from pants.core.goals.lint import LintResult, LintResults
from pants.core.util_rules.pants_environment import PantsEnvironment
from pants.core.util_rules.source_files import SourceFiles, SourceFilesRequest
from pants.engine.addresses import Address
from pants.engine.fs import CreateDigest, Digest, FileContent
Expand All @@ -25,9 +24,9 @@ def rule_runner() -> RuleRunner:
return RuleRunner(
rules=[
*black_rules(),
QueryRule(LintResults, (BlackRequest, PantsEnvironment)),
QueryRule(FmtResult, (BlackRequest, PantsEnvironment)),
QueryRule(SourceFiles, (SourceFilesRequest, PantsEnvironment)),
QueryRule(LintResults, (BlackRequest,)),
QueryRule(FmtResult, (BlackRequest,)),
QueryRule(SourceFiles, (SourceFilesRequest,)),
],
target_types=[PythonLibrary],
)
Expand Down Expand Up @@ -74,20 +73,17 @@ def run_black(
args.append("--black-skip")
rule_runner.set_options(args)
field_sets = [BlackFieldSet.create(tgt) for tgt in targets]
pants_env = PantsEnvironment()
lint_results = rule_runner.request(LintResults, [BlackRequest(field_sets), pants_env])
lint_results = rule_runner.request(LintResults, [BlackRequest(field_sets)])
input_sources = rule_runner.request(
SourceFiles,
[
SourceFilesRequest(field_set.sources for field_set in field_sets),
pants_env,
],
)
fmt_result = rule_runner.request(
FmtResult,
[
BlackRequest(field_sets, prior_formatter_result=input_sources.snapshot),
pants_env,
],
)
return lint_results.results, fmt_result
Expand Down
Expand Up @@ -10,7 +10,6 @@
from pants.backend.python.target_types import PythonLibrary
from pants.core.goals.fmt import FmtResult
from pants.core.goals.lint import LintResult, LintResults
from pants.core.util_rules.pants_environment import PantsEnvironment
from pants.core.util_rules.source_files import SourceFiles, SourceFilesRequest
from pants.engine.addresses import Address
from pants.engine.fs import CreateDigest, Digest, FileContent
Expand All @@ -23,9 +22,9 @@ def rule_runner() -> RuleRunner:
return RuleRunner(
rules=[
*docformatter_rules(),
QueryRule(LintResults, (DocformatterRequest, PantsEnvironment)),
QueryRule(FmtResult, (DocformatterRequest, PantsEnvironment)),
QueryRule(SourceFiles, (SourceFilesRequest, PantsEnvironment)),
QueryRule(LintResults, (DocformatterRequest,)),
QueryRule(FmtResult, (DocformatterRequest,)),
QueryRule(SourceFiles, (SourceFilesRequest,)),
]
)

Expand Down Expand Up @@ -55,20 +54,17 @@ def run_docformatter(
args.append("--docformatter-skip")
rule_runner.set_options(args)
field_sets = [DocformatterFieldSet.create(tgt) for tgt in targets]
pants_env = PantsEnvironment()
lint_results = rule_runner.request(LintResults, [DocformatterRequest(field_sets), pants_env])
lint_results = rule_runner.request(LintResults, [DocformatterRequest(field_sets)])
input_sources = rule_runner.request(
SourceFiles,
[
SourceFilesRequest(field_set.sources for field_set in field_sets),
pants_env,
],
)
fmt_result = rule_runner.request(
FmtResult,
[
DocformatterRequest(field_sets, prior_formatter_result=input_sources.snapshot),
pants_env,
],
)
return lint_results.results, fmt_result
Expand Down
Expand Up @@ -9,7 +9,6 @@
from pants.backend.python.lint.flake8.rules import rules as flake8_rules
from pants.backend.python.target_types import PythonInterpreterCompatibility, PythonLibrary
from pants.core.goals.lint import LintResult, LintResults
from pants.core.util_rules.pants_environment import PantsEnvironment
from pants.engine.addresses import Address
from pants.engine.fs import DigestContents, FileContent
from pants.engine.target import Target
Expand All @@ -22,7 +21,7 @@ def rule_runner() -> RuleRunner:
return RuleRunner(
rules=[
*flake8_rules(),
QueryRule(LintResults, (Flake8Request, PantsEnvironment)),
QueryRule(LintResults, (Flake8Request,)),
]
)

Expand Down Expand Up @@ -70,7 +69,6 @@ def run_flake8(
LintResults,
[
Flake8Request(Flake8FieldSet.create(tgt) for tgt in targets),
PantsEnvironment(),
],
)
return results.results
Expand Down
Expand Up @@ -10,7 +10,6 @@
from pants.backend.python.target_types import PythonLibrary
from pants.core.goals.fmt import FmtResult
from pants.core.goals.lint import LintResult, LintResults
from pants.core.util_rules.pants_environment import PantsEnvironment
from pants.core.util_rules.source_files import SourceFiles, SourceFilesRequest
from pants.engine.addresses import Address
from pants.engine.fs import CreateDigest, Digest, FileContent
Expand All @@ -23,9 +22,9 @@ def rule_runner() -> RuleRunner:
return RuleRunner(
rules=[
*isort_rules(),
QueryRule(LintResults, (IsortRequest, PantsEnvironment)),
QueryRule(FmtResult, (IsortRequest, PantsEnvironment)),
QueryRule(SourceFiles, (SourceFilesRequest, PantsEnvironment)),
QueryRule(LintResults, (IsortRequest,)),
QueryRule(FmtResult, (IsortRequest,)),
QueryRule(SourceFiles, (SourceFilesRequest,)),
]
)

Expand Down Expand Up @@ -69,20 +68,17 @@ def run_isort(
args.append("--isort-skip")
rule_runner.set_options(args)
field_sets = [IsortFieldSet.create(tgt) for tgt in targets]
pants_env = PantsEnvironment()
lint_results = rule_runner.request(LintResults, [IsortRequest(field_sets), pants_env])
lint_results = rule_runner.request(LintResults, [IsortRequest(field_sets)])
input_sources = rule_runner.request(
SourceFiles,
[
SourceFilesRequest(field_set.sources for field_set in field_sets),
pants_env,
],
)
fmt_result = rule_runner.request(
FmtResult,
[
IsortRequest(field_sets, prior_formatter_result=input_sources.snapshot),
pants_env,
],
)
return lint_results.results, fmt_result
Expand Down
Expand Up @@ -12,7 +12,6 @@
from pants.backend.python.lint.pylint.rules import rules as pylint_rules
from pants.backend.python.target_types import PythonLibrary, PythonRequirementLibrary
from pants.core.goals.lint import LintResult, LintResults
from pants.core.util_rules.pants_environment import PantsEnvironment
from pants.engine.addresses import Address
from pants.engine.fs import FileContent
from pants.engine.target import Target
Expand All @@ -25,7 +24,7 @@ def rule_runner() -> RuleRunner:
return RuleRunner(
rules=[
*pylint_rules(),
QueryRule(LintResults, (PylintRequest, PantsEnvironment)),
QueryRule(LintResults, (PylintRequest,)),
],
target_types=[PythonLibrary, PythonRequirementLibrary, PylintSourcePlugin],
)
Expand Down Expand Up @@ -98,7 +97,7 @@ def run_pylint(
rule_runner.set_options(args)
results = rule_runner.request(
LintResults,
[PylintRequest(PylintFieldSet.create(tgt) for tgt in targets), PantsEnvironment()],
[PylintRequest(PylintFieldSet.create(tgt) for tgt in targets)],
)
return results.results

Expand Down
Expand Up @@ -10,7 +10,6 @@
from pants.backend.python.lint.python_fmt import PythonFmtTargets, format_python_target
from pants.backend.python.target_types import PythonLibrary
from pants.core.goals.fmt import LanguageFmtResults
from pants.core.util_rules.pants_environment import PantsEnvironment
from pants.engine.addresses import Address
from pants.engine.fs import CreateDigest, Digest, FileContent
from pants.engine.target import Targets
Expand All @@ -24,7 +23,7 @@ def rule_runner() -> RuleRunner:
format_python_target,
*black_rules(),
*isort_rules(),
QueryRule(LanguageFmtResults, (PythonFmtTargets, PantsEnvironment)),
QueryRule(LanguageFmtResults, (PythonFmtTargets,)),
]
)

Expand All @@ -45,7 +44,7 @@ def run_black_and_isort(
*(extra_args or []),
]
)
results = rule_runner.request(LanguageFmtResults, [targets, PantsEnvironment()])
results = rule_runner.request(LanguageFmtResults, [targets])
return results


Expand Down
Expand Up @@ -13,7 +13,6 @@
from pants.backend.python.typecheck.mypy.rules import MyPyFieldSet, MyPyRequest
from pants.backend.python.typecheck.mypy.rules import rules as mypy_rules
from pants.core.goals.typecheck import TypecheckResult, TypecheckResults
from pants.core.util_rules.pants_environment import PantsEnvironment
from pants.engine.addresses import Address
from pants.engine.fs import FileContent
from pants.engine.rules import QueryRule
Expand All @@ -31,7 +30,7 @@ def rule_runner() -> RuleRunner:
rules=[
*mypy_rules(),
*dependency_inference_rules.rules(), # Used for import inference.
QueryRule(TypecheckResults, (MyPyRequest, PantsEnvironment)),
QueryRule(TypecheckResults, (MyPyRequest,)),
],
target_types=[PythonLibrary, PythonRequirementLibrary, MyPySourcePlugin],
)
Expand Down Expand Up @@ -130,7 +129,7 @@ def run_mypy(
rule_runner.set_options(args)
result = rule_runner.request(
TypecheckResults,
[MyPyRequest(MyPyFieldSet.create(tgt) for tgt in targets), PantsEnvironment()],
[MyPyRequest(MyPyFieldSet.create(tgt) for tgt in targets)],
)
return result.results

Expand Down
Expand Up @@ -13,7 +13,6 @@
PexRequest,
PexRequirements,
)
from pants.core.util_rules.pants_environment import PantsEnvironment
from pants.engine.fs import EMPTY_DIGEST, Snapshot
from pants.testutil.rule_runner import QueryRule, RuleRunner

Expand All @@ -24,7 +23,7 @@ def rule_runner() -> RuleRunner:
rules=[
*extract_pex.rules(),
*pex.rules(),
QueryRule(Pex, [PexRequest, PantsEnvironment]),
QueryRule(Pex, [PexRequest]),
QueryRule(ExtractedPexDistributions, [Pex]),
]
)
Expand All @@ -48,7 +47,7 @@ def get_distributions(
interpreter_constraints=PexInterpreterConstraints([">=3.6"]),
internal_only=True,
)
built_pex = rule_runner.request(Pex, [pex_request, PantsEnvironment()])
built_pex = rule_runner.request(Pex, [pex_request])
return rule_runner.request(ExtractedPexDistributions, [built_pex])


Expand Down

0 comments on commit 1d5a34d

Please sign in to comment.