Your message dated Tue, 23 Dec 2025 15:19:26 +0000
with message-id <[email protected]>
and subject line Bug#1123433: fixed in pydantic-settings 2.12.0-2
has caused the Debian Bug report #1123433,
regarding pydantic-settings: FTBFS: example.py: error: unrecognized
arguments: --bad-arg
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
1123433: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1123433
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: src:pydantic-settings
Version: 2.12.0-1
Severity: serious
Tags: ftbfs forky sid
Dear maintainer:
During a rebuild of all packages in unstable, this package failed to build.
Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:
https://people.debian.org/~sanvila/build-logs/202512/
About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.
If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.
If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:pydantic-settings, so that this is still
visible in the BTS web page for this package.
Thanks.
--------------------------------------------------------------------------------
[...]
debian/rules clean
dh clean --buildsystem=pybuild
dh_auto_clean -O--buildsystem=pybuild
dh_autoreconf_clean -O--buildsystem=pybuild
dh_clean -O--buildsystem=pybuild
debian/rules binary
dh binary --buildsystem=pybuild
dh_update_autotools_config -O--buildsystem=pybuild
dh_autoreconf -O--buildsystem=pybuild
dh_auto_configure -O--buildsystem=pybuild
dh_auto_build -O--buildsystem=pybuild
I: pybuild plugin_pyproject:131: Building wheel for python3.14 with "build"
module
I: pybuild base:317: python3.14 -m build --skip-dependency-check --no-isolation
--wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_pydantic-settings
* Building wheel...
Successfully built pydantic_settings-2.12.0-py3-none-any.whl
[... snipped ...]
m.setattr(sys, 'argv', ['example.py', '--help'])
with pytest.raises(SystemExit):
CliApp.run(Settings)
if PYTHON_3_14:
if IS_WINDOWS:
text = """usage: example.py [-h] [--visible_obj [JSON]]
[--visible_obj.visible_a int]
[--visible_obj.visible_b int]"""
else:
text = """usage: example.py [-h] [--visible_obj [JSON]]
[--visible_obj.visible_a int]
[--visible_obj.visible_b int]"""
else:
text = """usage: example.py [-h] [--visible_obj [JSON]]
[--visible_obj.visible_a int]
[--visible_obj.visible_b int]"""
> assert (
sanitize_cli_output(capsys.readouterr().out)
== f"""{text}
{ARGPARSE_OPTIONS_TEXT}:
-h, --help show this help message and exit
visible_obj options:
--visible_obj [JSON] set visible_obj from JSON string (default: {{}})
--visible_obj.visible_a int
(required)
--visible_obj.visible_b int
(required)
"""
)
E AssertionError: assert 'usage: pytho... (required)\n' == 'usage:
examp... (required)\n'
E
E - usage: example.py [-h] [--visible_obj [JSON]]
E + usage: python3.14 -m pytest [-h] [--visible_obj [JSON]]
E - [--visible_obj.visible_a int]
E + [--visible_obj.visible_a int]
E ? +++
E - [--visible_obj.visible_b int]...
E
E ...Full output truncated (12 lines hidden), use '-vv' to show
tests/test_source_cli.py:2328: AssertionError
______________________ test_cli_mutually_exclusive_group _______________________
capsys = <_pytest.capture.CaptureFixture object at 0x7f5b76699bd0>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f5b766939a0>
def test_cli_mutually_exclusive_group(capsys, monkeypatch):
class Circle(CliMutuallyExclusiveGroup):
radius: float | None = 21
diameter: float | None = 22
perimeter: float | None = 23
class Settings(BaseModel):
circle_optional: Circle = Circle(radius=None, diameter=None,
perimeter=24)
circle_required: Circle
CliApp.run(Settings, cli_args=['--circle-required.radius=1',
'--circle-optional.radius=1']).model_dump() == {
'circle_optional': {'radius': 1, 'diameter': 22, 'perimeter': 24},
'circle_required': {'radius': 1, 'diameter': 22, 'perimeter': 23},
}
with pytest.raises(SystemExit):
CliApp.run(Settings, cli_args=['--circle-required.radius=1',
'--circle-required.diameter=2'])
assert (
'error: argument --circle-required.diameter: not allowed with
argument --circle-required.radius'
in capsys.readouterr().err
)
with pytest.raises(SystemExit):
CliApp.run(
Settings,
cli_args=['--circle-required.radius=1',
'--circle-optional.radius=1', '--circle-optional.diameter=2'],
)
assert (
'error: argument --circle-optional.diameter: not allowed with
argument --circle-optional.radius'
in capsys.readouterr().err
)
with monkeypatch.context() as m:
m.setattr(sys, 'argv', ['example.py', '--help'])
with pytest.raises(SystemExit):
CliApp.run(Settings)
if PYTHON_3_14:
if IS_WINDOWS:
usage = """usage: example.py [-h] [--circle-optional.radius
float |
--circle-optional.diameter float |
--circle-optional.perimeter float]
(--circle-required.radius float |
--circle-required.diameter float |
--circle-required.perimeter float)"""
else:
usage = """usage: example.py [-h] [--circle-optional.radius
float |
--circle-optional.diameter float |
--circle-optional.perimeter float]
(--circle-required.radius float |
--circle-required.diameter float |
--circle-required.perimeter float)"""
elif sys.version_info >= (3, 13):
usage = """usage: example.py [-h] [--circle-optional.radius
float |
--circle-optional.diameter float |
--circle-optional.perimeter float]
(--circle-required.radius float |
--circle-required.diameter float |
--circle-required.perimeter float)"""
else:
usage = """usage: example.py [-h]
[--circle-optional.radius float |
--circle-optional.diameter float | --circle-optional.perimeter float]
(--circle-required.radius float |
--circle-required.diameter float | --circle-required.perimeter float)"""
> assert (
sanitize_cli_output(capsys.readouterr().out)
== f"""{usage}
{ARGPARSE_OPTIONS_TEXT}:
-h, --help show this help message and exit
circle-optional options (mutually exclusive):
--circle-optional.radius float
(default: None)
--circle-optional.diameter float
(default: None)
--circle-optional.perimeter float
(default: 24.0)
circle-required options (mutually exclusive):
--circle-required.radius float
(default: 21)
--circle-required.diameter float
(default: 22)
--circle-required.perimeter float
(default: 23)
"""
)
E AssertionError: assert 'usage: pytho...efault: 23)\n' == 'usage:
examp...efault: 23)\n'
E
E - usage: example.py [-h] [--circle-optional.radius float |
E ? --------
E + usage: python3.14 -m pytest [-h] [--circle-optional.radius
float |
E ? ++++++++++++++++++
E - --circle-optional.diameter float |
E + --circle-optional.diameter float
|...
E
E ...Full output truncated (32 lines hidden), use '-vv' to show
tests/test_source_cli.py:2407: AssertionError
_____________________________ test_cli_kebab_case ______________________________
capsys = <_pytest.capture.CaptureFixture object at 0x7f5b75ee8410>
monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f5b75b9e660>
def test_cli_kebab_case(capsys, monkeypatch):
class DeepSubModel(BaseModel):
deep_pos_arg: CliPositionalArg[str]
deep_arg: str
class SubModel(BaseModel):
sub_subcmd: CliSubCommand[DeepSubModel]
sub_other_subcmd: CliSubCommand[DeepSubModel]
sub_arg: str
class Root(BaseModel):
root_subcmd: CliSubCommand[SubModel]
other_subcmd: CliSubCommand[SubModel]
root_arg: str
root = CliApp.run(
Root,
cli_args=[
'--root-arg=hi',
'root-subcmd',
'--sub-arg=hello',
'sub-subcmd',
'hey',
'--deep-arg=bye',
],
)
assert root.model_dump() == {
'root_arg': 'hi',
'other_subcmd': None,
'root_subcmd': {
'sub_arg': 'hello',
'sub_subcmd': {'deep_pos_arg': 'hey', 'deep_arg': 'bye'},
'sub_other_subcmd': None,
},
}
serialized_cli_args = CliApp.serialize(root)
assert serialized_cli_args == [
'--root-arg',
'hi',
'root-subcmd',
'--sub-arg',
'hello',
'sub-subcmd',
'--deep-arg',
'bye',
'hey',
]
with monkeypatch.context() as m:
m.setattr(sys, 'argv', ['example.py', '--help'])
with pytest.raises(SystemExit):
CliApp.run(Root)
> assert (
sanitize_cli_output(capsys.readouterr().out)
== f"""usage: example.py [-h] --root-arg str
{{root-subcmd,other-subcmd}} ...
{ARGPARSE_OPTIONS_TEXT}:
-h, --help show this help message and exit
--root-arg str (required)
subcommands:
{{root-subcmd,other-subcmd}}
root-subcmd
other-subcmd
"""
)
E AssertionError: assert 'usage: pytho...ther-subcmd\n' == 'usage:
examp...ther-subcmd\n'
E
E - usage: example.py [-h] --root-arg str
{root-subcmd,other-subcmd} ...
E ? --------
E + usage: python3.14 -m pytest [-h] --root-arg str
{root-subcmd,other-subcmd} ...
E ? ++++++++++++++++++
E
E options:...
E
E ...Full output truncated (7 lines hidden), use '-vv' to show
tests/test_source_cli.py:2604: AssertionError
=========================== short test summary info ============================
FAILED tests/test_source_cli.py::test_cli_alias_subcommand_and_positional_args
FAILED tests/test_source_cli.py::test_cli_help_differentiation - AssertionErr...
FAILED tests/test_source_cli.py::test_cli_help_string_format - AssertionError...
FAILED tests/test_source_cli.py::test_cli_help_union_of_models - AssertionErr...
FAILED tests/test_source_cli.py::test_cli_help_default_or_none_model - Assert...
FAILED tests/test_source_cli.py::test_cli_subcommand_union - AssertionError: ...
FAILED tests/test_source_cli.py::test_cli_enums - AssertionError: assert 'usa...
FAILED tests/test_source_cli.py::test_cli_avoid_json - AssertionError: assert...
FAILED tests/test_source_cli.py::test_cli_remove_empty_groups - AssertionErro...
FAILED tests/test_source_cli.py::test_cli_hide_none_type - AssertionError: as...
FAILED tests/test_source_cli.py::test_cli_use_class_docs_for_groups - Asserti...
FAILED tests/test_source_cli.py::test_cli_exit_on_error - AssertionError: ass...
FAILED tests/test_source_cli.py::test_cli_suppress - AssertionError: assert '...
FAILED tests/test_source_cli.py::test_cli_mutually_exclusive_group - Assertio...
FAILED tests/test_source_cli.py::test_cli_kebab_case - AssertionError: assert...
================== 15 failed, 391 passed, 21 skipped in 1.82s ==================
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_pydantic-settings/build; python3.14 -m
pytest tests
I: pybuild base:317: cd
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_pydantic-settings/build; python3.13 -m
pytest tests
============================= test session starts ==============================
platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0
rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_pydantic-settings/build
configfile: pyproject.toml
plugins: typeguard-4.4.4, mock-3.15.1, anyio-4.11.0
collected 425 items / 2 skipped
tests/test_precedence_and_merging.py ...... [ 1%]
tests/test_settings.py ................................................. [ 12%]
........................................................................ [ 29%]
......................................................... [ 43%]
tests/test_source_azure_key_vault.py ...... [ 44%]
tests/test_source_cli.py ............................................... [ 55%]
................s......ss............................................... [ 72%]
..................................... [ 81%]
tests/test_source_gcp_secret_manager.py sssssssssssssss [ 84%]
tests/test_source_json.py .... [ 85%]
tests/test_source_nested_secrets.py ............................... [ 93%]
tests/test_source_pyproject_toml.py ................ [ 96%]
tests/test_source_toml.py .... [ 97%]
tests/test_source_yaml.py .s...... [ 99%]
tests/test_utils.py . [100%]
======================= 406 passed, 21 skipped in 1.40s ========================
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14
3.13" returned exit code 13
make: *** [debian/rules:15: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
--- End Message ---
--- Begin Message ---
Source: pydantic-settings
Source-Version: 2.12.0-2
Done: Colin Watson <[email protected]>
We believe that the bug you reported is fixed in the latest version of
pydantic-settings, which is due to be installed in the Debian FTP archive.
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Colin Watson <[email protected]> (supplier of updated pydantic-settings
package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Format: 1.8
Date: Tue, 23 Dec 2025 15:07:24 +0000
Source: pydantic-settings
Architecture: source
Version: 2.12.0-2
Distribution: unstable
Urgency: medium
Maintainer: Debian Python Team <[email protected]>
Changed-By: Colin Watson <[email protected]>
Closes: 1123433
Changes:
pydantic-settings (2.12.0-2) unstable; urgency=medium
.
* CLI test fixes for help text formatting (closes: #1123433).
Checksums-Sha1:
5c9b707b73c8c0cfb6646f9f8948301bfcffabf3 2802 pydantic-settings_2.12.0-2.dsc
0846d1fa1764eb743db0a359e040cb332daf135e 6864
pydantic-settings_2.12.0-2.debian.tar.xz
8fff25653bea4a026c005aeb7856eedab8e78736 450824
pydantic-settings_2.12.0-2.git.tar.xz
838d364dfbc897b03e646f11ce3cfb8f774c9904 17179
pydantic-settings_2.12.0-2_source.buildinfo
Checksums-Sha256:
03ad668fc03442fc5487e0ba217f9089931bc54b235a14b1524aacc5887af4d1 2802
pydantic-settings_2.12.0-2.dsc
e1a249dd260bcf6f8050cab3cc2ddc4b691dbcdb3e118561dfaf2033590e6165 6864
pydantic-settings_2.12.0-2.debian.tar.xz
45be248fc878a307d6ce8e2251cd9b090883fa61bd362c19976f4ff27c082d06 450824
pydantic-settings_2.12.0-2.git.tar.xz
f7c22731309c649edc28895819814c1b506359a92d41a105f7267017dab4999d 17179
pydantic-settings_2.12.0-2_source.buildinfo
Files:
9c9db60227c38bd6f40c7044206f79e1 2802 python optional
pydantic-settings_2.12.0-2.dsc
0c3c2d9fe06ef0000431d795f850d461 6864 python optional
pydantic-settings_2.12.0-2.debian.tar.xz
a52d04b5c3b580dc8a18b3c2c15a209c 450824 python optional
pydantic-settings_2.12.0-2.git.tar.xz
429f0989277980fabd2fc5fa9744fd23 17179 python optional
pydantic-settings_2.12.0-2_source.buildinfo
Git-Tag-Info: tag=12454366ea26ff73eca77eb76cf0e04ecdcae9a6
fp=ac0a4ff12611b6fccf01c111393587d97d86500b
Git-Tag-Tagger: Colin Watson <[email protected]>
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEN02M5NuW6cvUwJcqYG0ITkaDwHkFAmlKsIYACgkQYG0ITkaD
wHm2UxAA4bzFur4/hC1B7JORZzGeAocxbuNY17prx2NYiy3OQ5bQKVTBpSexpXEE
r8Y8EmXoV8vNM24Fbf7lWyf99zLN0JFEa7Wk9egDff1Xo7WBv04EZsgYW700Z/od
Vn5s58qFFpY2Qjw8tLZurB1N95+QxQ5cQbYCSDJ4eZKuoGAvOzVyjo/mO8xMSRFO
G0z9CNPi4nUmSCYA9UITVzquOHHFu8NmCNj97dom+N690Wtj3vk3PC0J9c1OHVFJ
fRWYHWsdZlQEARRDLlpyDtnnNr4fcashO1Y0qP7U8TANLrLXSj3HODvq/vpKX2RM
5wImB/zhPJaWYo2cyvT7ywmqZCxWlA09xWhJSmkwvz3eX8dU8QsEKk2x/NYHxIW0
TFfbhHPfVW3/CXn+hJcs5GRkwREKR5vIWgunDgXQs/Y8s/81Y2IIVq0p/a8NqMJw
MXlHoaeB8dhgQbfPA9XIE/eOztyj5niGMiVw0AHtDiInOcIDV7bofCnKVSAwhHve
Ts6Ka2ZtfgutSt6LoEIWq1GIgn1ch1oKL91M9XPQZCAr3U95v8MA2DPVQABJxczn
aKGLVSmzYy2kmKOitb+1GV8tz3A6DbcMQXcvn+KIikgLLzWVtUe6T1bD0YN13kjN
DmIlV+QvNYyFszkgJ0eibGFxaALJmYPmNyfzzi8s9RTdAl2wkaU=
=n2kl
-----END PGP SIGNATURE-----
pgpkdiOcJza8J.pgp
Description: PGP signature
--- End Message ---