• 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/helm/goals/package.py
1
# Copyright 2022 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 logging
×
UNCOV
7
import os
×
UNCOV
8
from dataclasses import dataclass
×
9

UNCOV
10
from pants.backend.helm.target_types import HelmChartFieldSet, HelmChartOutputPathField
×
UNCOV
11
from pants.backend.helm.util_rules.chart import HelmChartRequest, get_helm_chart
×
UNCOV
12
from pants.backend.helm.util_rules.chart_metadata import HelmChartMetadata
×
UNCOV
13
from pants.backend.helm.util_rules.tool import HelmProcess
×
UNCOV
14
from pants.core.goals.package import BuiltPackage, BuiltPackageArtifact, PackageFieldSet
×
UNCOV
15
from pants.engine.fs import AddPrefix, CreateDigest, Directory, RemovePrefix
×
UNCOV
16
from pants.engine.intrinsics import create_digest, digest_to_snapshot, remove_prefix
×
UNCOV
17
from pants.engine.process import execute_process_or_raise
×
UNCOV
18
from pants.engine.rules import collect_rules, concurrently, implicitly, rule
×
UNCOV
19
from pants.engine.unions import UnionRule
×
UNCOV
20
from pants.util.logging import LogLevel
×
21

UNCOV
22
logger = logging.getLogger(__name__)
×
23

24

UNCOV
25
@dataclass(frozen=True)
×
UNCOV
26
class BuiltHelmArtifact(BuiltPackageArtifact):
×
UNCOV
27
    info: HelmChartMetadata | None = None
×
28

UNCOV
29
    @classmethod
×
UNCOV
30
    def create(cls, relpath: str, info: HelmChartMetadata) -> BuiltHelmArtifact:
×
UNCOV
31
        return cls(
×
32
            relpath=relpath,
33
            info=info,
34
            extra_log_lines=(f"Built Helm chart artifact: {relpath}",),
35
        )
36

37

UNCOV
38
@dataclass(frozen=True)
×
UNCOV
39
class HelmPackageFieldSet(HelmChartFieldSet, PackageFieldSet):
×
UNCOV
40
    output_path: HelmChartOutputPathField
×
41

42

UNCOV
43
@rule(desc="Package Helm chart", level=LogLevel.DEBUG)
×
UNCOV
44
async def run_helm_package(field_set: HelmPackageFieldSet) -> BuiltPackage:
×
45
    result_dir = "__out"
×
46

47
    chart, result_digest = await concurrently(
×
48
        get_helm_chart(HelmChartRequest(field_set), **implicitly()),
49
        create_digest(CreateDigest([Directory(result_dir)])),
50
    )
51

52
    process_output_file = os.path.join(result_dir, f"{chart.info.artifact_name}.tgz")
×
53

54
    process_result = await execute_process_or_raise(
×
55
        **implicitly(
56
            HelmProcess(
57
                argv=["package", chart.name, "-d", result_dir],
58
                input_digest=result_digest,
59
                extra_immutable_input_digests=chart.immutable_input_digests,
60
                output_files=(process_output_file,),
61
                description=f"Packaging Helm chart: {field_set.address}",
62
            )
63
        )
64
    )
65

66
    stripped_output_digest = await remove_prefix(
×
67
        RemovePrefix(process_result.output_digest, result_dir)
68
    )
69

70
    final_snapshot = await digest_to_snapshot(
×
71
        **implicitly(
72
            AddPrefix(
73
                stripped_output_digest, field_set.output_path.value_or_default(file_ending=None)
74
            )
75
        )
76
    )
77
    return BuiltPackage(
×
78
        final_snapshot.digest,
79
        artifacts=tuple(
80
            BuiltHelmArtifact.create(file, chart.info) for file in final_snapshot.files
81
        ),
82
    )
83

84

UNCOV
85
def rules():
×
UNCOV
86
    return [*collect_rules(), UnionRule(PackageFieldSet, HelmPackageFieldSet)]
×
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

© 2026 Coveralls, Inc