• 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

0.0
/src/python/pants/backend/nfpm/fields/scripts.py
1
# Copyright 2023 Pants project contributors (see CONTRIBUTORS.md).
2
# Licensed under the Apache License, Version 2.0 (see LICENSE).
3

UNCOV
4
from __future__ import annotations
×
5

UNCOV
6
import os
×
UNCOV
7
from typing import ClassVar
×
8

UNCOV
9
from pants.engine.internals.native_engine import Address
×
UNCOV
10
from pants.engine.target import AsyncFieldMixin, DictStringToStringField, InvalidFieldException
×
UNCOV
11
from pants.util.frozendict import FrozenDict
×
12

13

UNCOV
14
class NfpmPackageScriptsField(AsyncFieldMixin, DictStringToStringField):
×
UNCOV
15
    nfpm_alias = ""  # maps to more than one nfpm.yaml field
×
UNCOV
16
    alias: ClassVar[str] = "scripts"
×
17
    # The keys of nfpm_aliases are the only valid keys of this field.
UNCOV
18
    nfpm_aliases: ClassVar[FrozenDict[str, str]] = FrozenDict(
×
19
        {
20
            # The general scripts common to all packager types
21
            "preinstall": "scripts.preinstall",
22
            "postinstall": "scripts.postinstall",
23
            "preremove": "scripts.preremove",
24
            "postremove": "scripts.postremove",
25
        }
26
    )
27

UNCOV
28
    @classmethod
×
UNCOV
29
    def compute_value(
×
30
        cls, raw_value: dict[str, str] | None, address: Address
31
    ) -> FrozenDict[str, str] | None:
UNCOV
32
        value_or_default = super().compute_value(raw_value, address)
×
UNCOV
33
        if value_or_default:
×
UNCOV
34
            invalid_keys = value_or_default.keys() - cls.nfpm_aliases.keys()
×
UNCOV
35
            if invalid_keys:
×
36
                raise InvalidFieldException(
×
37
                    f"Each key for the '{cls.alias}' field in target {address} must be one of"
38
                    f"{repr(tuple(cls.nfpm_aliases.keys()))}, but {repr(invalid_keys)} was provided.",
39
                )
UNCOV
40
        return value_or_default
×
41

UNCOV
42
    @property
×
UNCOV
43
    def normalized_value(self) -> FrozenDict[str, str]:
×
UNCOV
44
        value = self.value
×
UNCOV
45
        if not value:
×
46
            return FrozenDict()
×
UNCOV
47
        return FrozenDict(
×
48
            {
49
                script_type: os.path.join(self.address.spec_path, script_src)
50
                for script_type, script_src in value.items()
51
            }
52
        )
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