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

pantsbuild / pants / 18198316586

02 Oct 2025 03:50PM UTC coverage: 78.82% (-1.4%) from 80.265%
18198316586

push

github

web-flow
Bump serde from 1.0.226 to 1.0.228 in /src/rust (#22723)

Bumps [serde](https://github.com/serde-rs/serde) from 1.0.226 to
1.0.228.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/serde/releases">serde's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.228</h2>
<ul>
<li>Allow building documentation with
<code>RUSTDOCFLAGS='--cfg=docsrs'</code> set for the whole dependency
graph (<a
href="https://redirect.github.com/serde-rs/serde/issues/2995">#2995</a>)</li>
</ul>
<h2>v1.0.227</h2>
<ul>
<li>Documentation improvements (<a
href="https://redirect.github.com/serde-rs/serde/issues/2991">#2991</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/serde-rs/serde/commit/a866b336f"><code>a866b33</code></a>
Release 1.0.228</li>
<li><a
href="https://github.com/serde-rs/serde/commit/5adc9e816"><code>5adc9e8</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2995">#2995</a>
from dtolnay/rustdocflags</li>
<li><a
href="https://github.com/serde-rs/serde/commit/ab581789f"><code>ab58178</code></a>
Workaround for RUSTDOCFLAGS='--cfg=docsrs'</li>
<li><a
href="https://github.com/serde-rs/serde/commit/415d9fc56"><code>415d9fc</code></a>
Release 1.0.227</li>
<li><a
href="https://github.com/serde-rs/serde/commit/7c58427e1"><code>7c58427</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2991">#2991</a>
from dtolnay/inlinecoredoc</li>
<li><a
href="https://github.com/serde-rs/serde/commit/9d3410e3f"><code>9d3410e</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2992">#2992</a>
from dtolnay/inplaceseed</li>
<li><a
href="https://github.com/serde-rs/serde/commit/2fb6748bf1ff93... (continued)

73576 of 93347 relevant lines covered (78.82%)

2.9 hits per line

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

44.26
/src/python/pants/help/help_tools.py
1
# Copyright 2021 Pants project contributors (see CONTRIBUTORS.md).
2
# Licensed under the Apache License, Version 2.0 (see LICENSE).
3
from __future__ import annotations
10✔
4

5
from collections.abc import Generator, Iterable
10✔
6
from dataclasses import dataclass
10✔
7
from functools import partial
10✔
8
from itertools import chain
10✔
9
from textwrap import wrap
10✔
10
from typing import cast
10✔
11

12
from pants.help.help_info_extracter import AllHelpInfo, OptionScopeHelpInfo
10✔
13
from pants.help.maybe_color import MaybeColor
10✔
14
from pants.util.docutil import terminal_width
10✔
15

16

17
@dataclass(frozen=True)
10✔
18
class ToolHelpInfo:
10✔
19
    name: str
10✔
20
    description: str
10✔
21
    version: str
10✔
22
    url_template: str | None
10✔
23

24
    @classmethod
10✔
25
    def from_option_scope_help_info(cls, oshi: OptionScopeHelpInfo) -> ToolHelpInfo | None:
10✔
26
        version, url_template = cls._get_tool_info(oshi)
×
27
        if not version:
×
28
            return None
×
29
        return cls(
×
30
            name=oshi.scope,
31
            description=oshi.description,
32
            version=version,
33
            url_template=url_template,
34
        )
35

36
    @classmethod
10✔
37
    def iter(cls, all_help_info: AllHelpInfo) -> Generator[ToolHelpInfo, None, None]:
10✔
38
        for oshi in all_help_info.non_deprecated_option_scope_help_infos():
×
39
            tool_info = cls.from_option_scope_help_info(oshi)
×
40
            if tool_info:
×
41
                yield tool_info
×
42

43
    @staticmethod
10✔
44
    def print_all(tool_help_infos: Iterable[ToolHelpInfo], color: MaybeColor) -> None:
10✔
45
        this = tuple(tool_help_infos)
×
46
        longest_name = max(len(tool.name) for tool in this)
×
47
        width = terminal_width()
×
48

49
        for tool in this:
×
50
            tool.print(color, description_padding=longest_name + 2, width=width)
×
51

52
    def print(self, color: MaybeColor, description_padding: int, width: int) -> None:
10✔
53
        _wrap = partial(wrap, width=width)
×
54
        _max_padding = partial(
×
55
            min, int(width / 4)
56
        )  # Do not use more than 25% of the width on padding.
57

58
        def _indent(indent: int) -> str:
×
59
            return " " * cast(int, _max_padding(indent))
×
60

61
        lines = _wrap(
×
62
            f"{self.name.ljust(description_padding)}{self.description}",
63
            subsequent_indent=_indent(description_padding),
64
        )
65
        lines[0] = lines[0].replace(self.name, color.maybe_cyan(self.name), 1)
×
66
        version = _wrap(
×
67
            f"Version: {self.version}",
68
            initial_indent=_indent(description_padding),
69
            subsequent_indent=_indent(description_padding),
70
        )
71
        if not self.url_template:
×
72
            url_template = []
×
73
        else:
74
            url_template = _wrap(
×
75
                f"URL template: {self.url_template}",
76
                initial_indent=_indent(description_padding),
77
                subsequent_indent=_indent(description_padding),
78
            )
79
        print("\n".join(lines))
×
80
        print(color.maybe_magenta("\n".join([*version, *url_template, ""])))
×
81

82
    @classmethod
10✔
83
    def _get_tool_info(cls, oshi: OptionScopeHelpInfo) -> tuple[str | None, str | None]:
10✔
84
        return (
×
85
            cls._get_option_value(oshi, "version"),
86
            cls._get_option_value(oshi, "url_template"),
87
        )
88

89
    @staticmethod
10✔
90
    def _get_option_value(oshi: OptionScopeHelpInfo, config_key: str) -> str | None:
10✔
91
        for ohi in chain(oshi.basic, oshi.advanced):
×
92
            if ohi.config_key == config_key and ohi.typ is str:
×
93
                rank = ohi.value_history and ohi.value_history.final_value
×
94
                if rank:
×
95
                    info = f" ({rank.details})" if rank.details else ""
×
96
                    return f"{rank.value}{info}"
×
97
                return cast(str, ohi.default)
×
98
        return None
×
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