Skip to content

Commit

Permalink
Use "output" and "input" instead of "product" and "subject" (#10790)
Browse files Browse the repository at this point in the history
These terms are easier to understand than "product" and "subject": they describe well what's going on, without introducing any new domain-specific language.

These terms do leak, such as into our test util code, so it's important to get right before the Plugin API is too widely used.

[ci skip-build-wheels]
  • Loading branch information
Eric-Arellano committed Sep 16, 2020
1 parent 4bb357f commit f930478
Show file tree
Hide file tree
Showing 61 changed files with 520 additions and 560 deletions.
Expand Up @@ -44,10 +44,10 @@ def create_python_awslambda(rule_runner: RuleRunner, addr: str) -> Tuple[str, by
]
)
target = rule_runner.get_target(Address.parse(addr), bootstrapper)
created_awslambda = rule_runner.request_product(
created_awslambda = rule_runner.request(
CreatedAWSLambda, [PythonAwsLambdaFieldSet.create(target), bootstrapper, PantsEnvironment()]
)
created_awslambda_digest_contents = rule_runner.request_product(
created_awslambda_digest_contents = rule_runner.request(
DigestContents, [created_awslambda.digest]
)
assert len(created_awslambda_digest_contents) == 1
Expand Down
Expand Up @@ -52,11 +52,11 @@ def assert_files_generated(
f"--source-root-patterns={repr(source_roots)}",
]
)
tgt = self.request_product(WrappedTarget, [Address.parse(spec), bootstrapper]).target
protocol_sources = self.request_product(
tgt = self.request(WrappedTarget, [Address.parse(spec), bootstrapper]).target
protocol_sources = self.request(
HydratedSources, [HydrateSourcesRequest(tgt[ProtobufSources]), bootstrapper]
)
generated_sources = self.request_product(
generated_sources = self.request(
GeneratedSources,
[GeneratePythonFromProtobufRequest(protocol_sources.snapshot, tgt), bootstrapper],
)
Expand Down
4 changes: 2 additions & 2 deletions src/python/pants/backend/project_info/list_targets_test.py
Expand Up @@ -41,8 +41,8 @@ def run_goal(
],
mock_gets=[
MockGet(
product_type=UnexpandedTargets,
subject_type=Addresses,
output_type=UnexpandedTargets,
input_type=Addresses,
mock=lambda _: UnexpandedTargets(targets),
)
],
Expand Down
Expand Up @@ -100,7 +100,7 @@ def test_map_first_party_modules_to_addresses(rule_runner: RuleRunner) -> None:
# not generate subtargets.
rule_runner.create_file("tests/python/project_test/demo_test/__init__.py")
rule_runner.add_to_build_file("tests/python/project_test/demo_test", "python_library()")
result = rule_runner.request_product(FirstPartyModuleToAddressMapping, [options_bootstrapper])
result = rule_runner.request(FirstPartyModuleToAddressMapping, [options_bootstrapper])
assert result.mapping == FrozenDict(
{
"project.util.dirutil": Address(
Expand Down Expand Up @@ -152,9 +152,7 @@ def test_map_third_party_modules_to_addresses(rule_runner: RuleRunner) -> None:
"""
),
)
result = rule_runner.request_product(
ThirdPartyModuleToAddressMapping, [create_options_bootstrapper()]
)
result = rule_runner.request(ThirdPartyModuleToAddressMapping, [create_options_bootstrapper()])
assert result.mapping == FrozenDict(
{
"colors": Address("3rdparty/python", target_name="ansicolors"),
Expand All @@ -172,7 +170,7 @@ def test_map_module_to_address(rule_runner: RuleRunner) -> None:
)

def get_owner(module: str) -> Optional[Address]:
return rule_runner.request_product(
return rule_runner.request(
PythonModuleOwner, [PythonModule(module), options_bootstrapper]
).address

Expand Down
Expand Up @@ -92,7 +92,7 @@ def run_dep_inference(
args.append("--python-infer-string-imports")
options_bootstrapper = create_options_bootstrapper(args=args)
target = rule_runner.get_target(address, options_bootstrapper)
return rule_runner.request_product(
return rule_runner.request(
InferredDependencies,
[InferPythonDependencies(target[PythonSources]), options_bootstrapper],
)
Expand Down Expand Up @@ -153,7 +153,7 @@ def test_infer_python_inits() -> None:

def run_dep_inference(address: Address) -> InferredDependencies:
target = rule_runner.get_target(address, options_bootstrapper)
return rule_runner.request_product(
return rule_runner.request(
InferredDependencies,
[InferInitDependencies(target[PythonSources]), options_bootstrapper],
)
Expand Down Expand Up @@ -196,7 +196,7 @@ def test_infer_python_conftests() -> None:

def run_dep_inference(address: Address) -> InferredDependencies:
target = rule_runner.get_target(address, options_bootstrapper)
return rule_runner.request_product(
return rule_runner.request(
InferredDependencies,
[InferConftestDependencies(target[PythonSources]), options_bootstrapper],
)
Expand Down
4 changes: 2 additions & 2 deletions src/python/pants/backend/python/goals/coverage_py_test.py
Expand Up @@ -31,8 +31,8 @@ def mock_read_config(_: PathGlobs) -> DigestContents:
)

mock_gets = [
MockGet(product_type=DigestContents, subject_type=PathGlobs, mock=mock_read_config),
MockGet(product_type=Digest, subject_type=CreateDigest, mock=mock_handle_config),
MockGet(output_type=DigestContents, input_type=PathGlobs, mock=mock_read_config),
MockGet(output_type=Digest, input_type=CreateDigest, mock=mock_handle_config),
]

result = run_rule_with_mocks(create_coverage_config, rule_args=[coverage], mock_gets=mock_gets)
Expand Down
4 changes: 2 additions & 2 deletions src/python/pants/backend/python/goals/pytest_runner.py
Expand Up @@ -156,8 +156,8 @@ async def setup_pytest_for_target(
# `pytest:main` or the tests themselves break between the two versions.
":".join(
(
pytest_pex_request.subject.output_filename,
requirements_pex_request.subject.output_filename,
pytest_pex_request.input.output_filename,
requirements_pex_request.input.output_filename,
)
),
),
Expand Down
Expand Up @@ -173,8 +173,8 @@ def run_pytest(
pants_environment,
create_options_bootstrapper(args=args),
]
test_result = rule_runner.request_product(TestResult, subjects)
debug_request = rule_runner.request_product(TestDebugRequest, subjects)
test_result = rule_runner.request(TestResult, subjects)
debug_request = rule_runner.request(TestDebugRequest, subjects)
if debug_request.process is not None:
debug_result = InteractiveRunner(rule_runner.scheduler).run(debug_request.process)
assert test_result.exit_code == debug_result.exit_code
Expand Down Expand Up @@ -371,7 +371,7 @@ def test_junit(rule_runner: RuleRunner) -> None:
assert result.exit_code == 0
assert f"{PACKAGE}/test_good.py ." in result.stdout
assert result.xml_results is not None
digest_contents = rule_runner.request_product(DigestContents, [result.xml_results.digest])
digest_contents = rule_runner.request(DigestContents, [result.xml_results.digest])
file = digest_contents[0]
assert file.path.startswith("dist/test-results")
assert b"pants_test.test_good" in file.content
Expand Down
18 changes: 9 additions & 9 deletions src/python/pants/backend/python/goals/setup_py_test.py
Expand Up @@ -105,22 +105,22 @@ def assert_chroot(
rule_runner: RuleRunner, expected_files, expected_setup_kwargs, addr: str
) -> None:
tgt = rule_runner.get_target(Address.parse(addr))
chroot = rule_runner.request_product(
chroot = rule_runner.request(
SetupPyChroot,
[
SetupPyChrootRequest(ExportedTarget(tgt), py2=False),
create_options_bootstrapper(),
],
)
snapshot = rule_runner.request_product(Snapshot, [chroot.digest])
snapshot = rule_runner.request(Snapshot, [chroot.digest])
assert sorted(expected_files) == sorted(snapshot.files)
assert expected_setup_kwargs == chroot.setup_kwargs.kwargs


def assert_chroot_error(rule_runner: RuleRunner, addr: str, exc_cls: Type[Exception]) -> None:
tgt = rule_runner.get_target(Address.parse(addr))
with pytest.raises(ExecutionError) as excinfo:
rule_runner.request_product(
rule_runner.request(
SetupPyChroot,
[
SetupPyChrootRequest(ExportedTarget(tgt), py2=False),
Expand Down Expand Up @@ -292,11 +292,11 @@ def assert_sources(
addrs,
):
targets = Targets(rule_runner.get_target(Address.parse(addr)) for addr in addrs)
srcs = rule_runner.request_product(
srcs = rule_runner.request(
SetupPySources,
[SetupPySourcesRequest(targets, py2=False), create_options_bootstrapper()],
)
chroot_snapshot = rule_runner.request_product(Snapshot, [srcs.digest])
chroot_snapshot = rule_runner.request(Snapshot, [srcs.digest])

assert sorted(expected_files) == sorted(chroot_snapshot.files)
assert sorted(expected_packages) == sorted(srcs.packages)
Expand Down Expand Up @@ -439,7 +439,7 @@ def test_get_requirements() -> None:

def assert_requirements(expected_req_strs, addr):
tgt = rule_runner.get_target(Address.parse(addr))
reqs = rule_runner.request_product(
reqs = rule_runner.request(
ExportedTargetRequirements,
[DependencyOwner(ExportedTarget(tgt)), create_options_bootstrapper()],
)
Expand Down Expand Up @@ -513,7 +513,7 @@ def assert_owned(owned: Iterable[str], exported: str):
tgt = rule_runner.get_target(Address.parse(exported))
assert sorted(owned) == sorted(
od.target.address.spec
for od in rule_runner.request_product(
for od in rule_runner.request(
OwnedDependencies,
[
DependencyOwner(ExportedTarget(tgt)),
Expand Down Expand Up @@ -552,7 +552,7 @@ def assert_is_owner(rule_runner: RuleRunner, owner: str, owned: str):
tgt = rule_runner.get_target(Address.parse(owned))
assert (
owner
== rule_runner.request_product(
== rule_runner.request(
ExportedTarget,
[OwnedDependency(tgt), create_options_bootstrapper()],
).target.address.spec
Expand All @@ -562,7 +562,7 @@ def assert_is_owner(rule_runner: RuleRunner, owner: str, owned: str):
def assert_owner_error(rule_runner, owned: str, exc_cls: Type[Exception]):
tgt = rule_runner.get_target(Address.parse(owned))
with pytest.raises(ExecutionError) as excinfo:
rule_runner.request_product(
rule_runner.request(
ExportedTarget,
[OwnedDependency(tgt), create_options_bootstrapper()],
)
Expand Down
Expand Up @@ -69,7 +69,7 @@ def run_bandit(
args.append("--bandit-skip")
if additional_args:
args.extend(additional_args)
results = rule_runner.request_product(
results = rule_runner.request(
LintResults,
[
BanditRequest(BanditFieldSet.create(tgt) for tgt in targets),
Expand Down Expand Up @@ -202,7 +202,7 @@ def test_report_file(rule_runner: RuleRunner) -> None:
assert result[0].exit_code == 1
assert result[0].stdout.strip() == ""
assert result[0].report is not None
report_files = rule_runner.request_product(DigestContents, [result[0].report.digest])
report_files = rule_runner.request(DigestContents, [result[0].report.digest])
assert len(report_files) == 1
assert (
"Issue: [B303:blacklist] Use of insecure MD2, MD4, MD5" in report_files[0].content.decode()
Expand Down
Expand Up @@ -78,18 +78,18 @@ def run_black(
options_bootstrapper = create_options_bootstrapper(args=args)
field_sets = [BlackFieldSet.create(tgt) for tgt in targets]
pants_env = PantsEnvironment()
lint_results = rule_runner.request_product(
lint_results = rule_runner.request(
LintResults, [BlackRequest(field_sets), options_bootstrapper, pants_env]
)
input_sources = rule_runner.request_product(
input_sources = rule_runner.request(
SourceFiles,
[
SourceFilesRequest(field_set.sources for field_set in field_sets),
options_bootstrapper,
pants_env,
],
)
fmt_result = rule_runner.request_product(
fmt_result = rule_runner.request(
FmtResult,
[
BlackRequest(field_sets, prior_formatter_result=input_sources.snapshot),
Expand All @@ -101,7 +101,7 @@ def run_black(


def get_digest(rule_runner: RuleRunner, source_files: List[FileContent]) -> Digest:
return rule_runner.request_product(Digest, [CreateDigest(source_files)])
return rule_runner.request(Digest, [CreateDigest(source_files)])


def test_passing_source(rule_runner: RuleRunner) -> None:
Expand Down
Expand Up @@ -59,18 +59,18 @@ def run_docformatter(
options_bootstrapper = create_options_bootstrapper(args=args)
field_sets = [DocformatterFieldSet.create(tgt) for tgt in targets]
pants_env = PantsEnvironment()
lint_results = rule_runner.request_product(
lint_results = rule_runner.request(
LintResults, [DocformatterRequest(field_sets), options_bootstrapper, pants_env]
)
input_sources = rule_runner.request_product(
input_sources = rule_runner.request(
SourceFiles,
[
SourceFilesRequest(field_set.sources for field_set in field_sets),
options_bootstrapper,
pants_env,
],
)
fmt_result = rule_runner.request_product(
fmt_result = rule_runner.request(
FmtResult,
[
DocformatterRequest(field_sets, prior_formatter_result=input_sources.snapshot),
Expand All @@ -82,7 +82,7 @@ def run_docformatter(


def get_digest(rule_runner: RuleRunner, source_files: List[FileContent]) -> Digest:
return rule_runner.request_product(Digest, [CreateDigest(source_files)])
return rule_runner.request(Digest, [CreateDigest(source_files)])


def test_passing_source(rule_runner: RuleRunner) -> None:
Expand Down
Expand Up @@ -68,7 +68,7 @@ def run_flake8(
args.append("--flake8-skip")
if additional_args:
args.extend(additional_args)
results = rule_runner.request_product(
results = rule_runner.request(
LintResults,
[
Flake8Request(Flake8FieldSet.create(tgt) for tgt in targets),
Expand Down Expand Up @@ -191,6 +191,6 @@ def test_report_file(rule_runner: RuleRunner) -> None:
assert result[0].exit_code == 1
assert result[0].stdout.strip() == ""
assert result[0].report is not None
report_files = rule_runner.request_product(DigestContents, [result[0].report.digest])
report_files = rule_runner.request(DigestContents, [result[0].report.digest])
assert len(report_files) == 1
assert "bad.py:1:1: F401" in report_files[0].content.decode()
Expand Up @@ -73,18 +73,18 @@ def run_isort(
options_bootstrapper = create_options_bootstrapper(args=args)
field_sets = [IsortFieldSet.create(tgt) for tgt in targets]
pants_env = PantsEnvironment()
lint_results = rule_runner.request_product(
lint_results = rule_runner.request(
LintResults, [IsortRequest(field_sets), options_bootstrapper, pants_env]
)
input_sources = rule_runner.request_product(
input_sources = rule_runner.request(
SourceFiles,
[
SourceFilesRequest(field_set.sources for field_set in field_sets),
options_bootstrapper,
pants_env,
],
)
fmt_result = rule_runner.request_product(
fmt_result = rule_runner.request(
FmtResult,
[
IsortRequest(field_sets, prior_formatter_result=input_sources.snapshot),
Expand All @@ -96,7 +96,7 @@ def run_isort(


def get_digest(rule_runner: RuleRunner, source_files: List[FileContent]) -> Digest:
return rule_runner.request_product(Digest, [CreateDigest(source_files)])
return rule_runner.request(Digest, [CreateDigest(source_files)])


def test_passing_source(rule_runner: RuleRunner) -> None:
Expand Down
Expand Up @@ -99,7 +99,7 @@ def run_pylint(
args.append("--pylint-skip")
if additional_args:
args.extend(additional_args)
results = rule_runner.request_product(
results = rule_runner.request(
LintResults,
[
PylintRequest(PylintFieldSet.create(tgt) for tgt in targets),
Expand Down
Expand Up @@ -48,14 +48,14 @@ def run_black_and_isort(
"--backend-packages=['pants.backend.python.lint.black', 'pants.backend.python.lint.isort']",
*(extra_args or []),
]
results = rule_runner.request_product(
results = rule_runner.request(
LanguageFmtResults, [targets, create_options_bootstrapper(args=args), PantsEnvironment()]
)
return results


def get_digest(rule_runner: RuleRunner, source_files: List[FileContent]) -> Digest:
return rule_runner.request_product(Digest, [CreateDigest(source_files)])
return rule_runner.request(Digest, [CreateDigest(source_files)])


def test_multiple_formatters_changing_the_same_file(rule_runner: RuleRunner) -> None:
Expand Down
Expand Up @@ -39,7 +39,7 @@ def assert_pipenv_requirements(
) -> None:
rule_runner.add_to_build_file("", f"{build_file_entry}\n")
rule_runner.create_file(pipfile_lock_relpath, dumps(pipfile_lock))
targets = rule_runner.request_product(
targets = rule_runner.request(
Targets,
[
Specs(AddressSpecs([DescendantAddresses("")]), FilesystemSpecs([])),
Expand Down
Expand Up @@ -39,7 +39,7 @@ def assert_python_requirements(
) -> None:
rule_runner.add_to_build_file("", f"{build_file_entry}\n")
rule_runner.create_file(requirements_txt_relpath, requirements_txt)
targets = rule_runner.request_product(
targets = rule_runner.request(
Targets,
[
Specs(AddressSpecs([DescendantAddresses("")]), FilesystemSpecs([])),
Expand Down
2 changes: 1 addition & 1 deletion src/python/pants/backend/python/typecheck/mypy/rules.py
Expand Up @@ -215,7 +215,7 @@ async def mypy_typecheck(
"--pex-path",
":".join(
(
tool_pex_request.subject.output_filename,
tool_pex_request.input.output_filename,
# requirements_pex_request.subject.output_filename,
)
),
Expand Down

0 comments on commit f930478

Please sign in to comment.