• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pantsbuild / pants / 19015773527

02 Nov 2025 05:33PM UTC coverage: 17.872% (-62.4%) from 80.3%
19015773527

Pull #22816

github

web-flow
Merge a12d75757 into 6c024e162
Pull Request #22816: Update Pants internal Python to 3.14

4 of 5 new or added lines in 3 files covered. (80.0%)

28452 existing lines in 683 files now uncovered.

9831 of 55007 relevant lines covered (17.87%)

0.18 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

87.5
/src/python/pants/core/util_rules/subprocess_environment.py
1
# Copyright 2019 Pants project contributors (see CONTRIBUTORS.md).
2
# Licensed under the Apache License, Version 2.0 (see LICENSE).
3

4
from dataclasses import dataclass
1✔
5

6
from pants.core.util_rules.env_vars import environment_vars_subset
1✔
7
from pants.engine.env_vars import EnvironmentVarsRequest
1✔
8
from pants.engine.rules import collect_rules, implicitly, rule
1✔
9
from pants.option.option_types import StrListOption
1✔
10
from pants.option.subsystem import Subsystem
1✔
11
from pants.util.docutil import doc_url
1✔
12
from pants.util.frozendict import FrozenDict
1✔
13
from pants.util.strutil import softwrap
1✔
14

15

16
# TODO: We may want to support different sets of env vars for different types of process.
17
#  Can be done via scoped subsystems, possibly.  However we should only do this if there
18
#  is a real need.
19
class SubprocessEnvironment(Subsystem):
1✔
20
    options_scope = "subprocess-environment"
1✔
21
    help = "Environment settings for forked subprocesses."
1✔
22

23
    class EnvironmentAware:
1✔
24
        _env_vars = StrListOption(
1✔
25
            default=["LANG", "LC_CTYPE", "LC_ALL", "SSL_CERT_FILE", "SSL_CERT_DIR"],
26
            help=softwrap(
27
                f"""
28
                Environment variables to set for process invocations.
29

30
                Entries are either strings in the form `ENV_VAR=value` to set an explicit value;
31
                or just `ENV_VAR` to copy the value from Pants's own environment.
32

33
                See {doc_url("docs/using-pants/key-concepts/options#addremove-semantics")} for how to add and remove Pants's
34
                default for this option.
35
                """
36
            ),
37
            advanced=True,
38
        )
39

40
        @property
1✔
41
        def env_vars_to_pass_to_subprocesses(self) -> tuple[str, ...]:
1✔
42
            return tuple(sorted(set(self._env_vars)))
×
43

44

45
@dataclass(frozen=True)
1✔
46
class SubprocessEnvironmentVars:
1✔
47
    vars: FrozenDict[str, str]
48

49

50
@rule
1✔
51
async def get_subprocess_environment(
1✔
52
    subproc_env: SubprocessEnvironment.EnvironmentAware,
53
) -> SubprocessEnvironmentVars:
54
    return SubprocessEnvironmentVars(
×
55
        await environment_vars_subset(
56
            EnvironmentVarsRequest(subproc_env.env_vars_to_pass_to_subprocesses), **implicitly()
57
        )
58
    )
59

60

61
def rules():
1✔
UNCOV
62
    return collect_rules()
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc