Source: python-omegaconf
Version: 2.3.0-2
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lu...@debian.org
Usertags: ftbfs-20250107 ftbfs-trixie

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.


Relevant part (hopefully):
> =================================== FAILURES 
> ===================================
> ____ test_errors[typed_DictConfig:assign_with_invalid_value,path_to_float] 
> _____
> 
> expected = Expected(exception_type=<class 
> 'omegaconf.errors.ValidationError'>, msg="Value 'hello.txt' of type 
> 'pathlib.(Posix|Win..., parent_node=<function Expected.<lambda> at 
> 0x7f8ce9054d60>, object_type_str='dict', ref_type_str='AUTO', num_lines=2)
> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f8ce9073ee0>
> 
>     @mark.parametrize("expected", params)
>     def test_errors(expected: Expected, monkeypatch: Any) -> None:
>         monkeypatch.setenv("OC_CAUSE", "0")
>         cfg = expected.create()
>         expected.finalize(cfg)
>         if expected.msg_is_regex:
>             match = expected.msg
>         else:
>             match = re.escape(expected.msg)
>     
>         with raises(expected.exception_type, match=match) as einfo:
>             try:
>                 expected.op(cfg)
>             except Exception as e:
>                 # helps in debugging
> >               raise e
> 
> tests/test_errors.py:1602: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> tests/test_errors.py:1599: in test_errors
>     expected.op(cfg)
> tests/test_errors.py:719: in <lambda>
>     op=lambda cfg: cfg.__setattr__("bar", Path("hello.txt")),
> omegaconf/dictconfig.py:338: in __setattr__
>     self._format_and_raise(key=key, value=value, cause=e)
> omegaconf/base.py:231: in _format_and_raise
>     format_and_raise(
> omegaconf/_utils.py:899: in format_and_raise
>     _raise(ex, cause)
> omegaconf/_utils.py:797: in _raise
>     raise ex.with_traceback(sys.exc_info()[2])  # set env var OC_CAUSE=1 for 
> full trace
> omegaconf/dictconfig.py:334: in __setattr__
>     self.__set_impl(key, value)
> omegaconf/dictconfig.py:318: in __set_impl
>     self._set_item_impl(key, value)
> omegaconf/basecontainer.py:604: in _set_item_impl
>     self.__dict__["_content"][key]._set_value(value)
> omegaconf/nodes.py:46: in _set_value
>     self._val = self.validate_and_convert(value)
> omegaconf/nodes.py:76: in validate_and_convert
>     return self._validate_and_convert_impl(value)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> _ 
> 
> self = 123.456, value = PosixPath('hello.txt')
> 
>     def _validate_and_convert_impl(self, value: Any) -> float:
>         try:
>             if type(value) in (float, str, int):
>                 return float(value)
>             else:
>                 raise ValueError()
>         except ValueError:
> >           raise ValidationError(
>                 "Value '$VALUE' of type '$VALUE_TYPE' could not be converted 
> to Float"
>             )
> E           omegaconf.errors.ValidationError: Value 'hello.txt' of type 
> 'pathlib._local.PosixPath' could not be converted to Float
> E               full_key: bar
> E               object_type=dict
> 
> omegaconf/nodes.py:345: ValidationError
> 
> During handling of the above exception, another exception occurred:
> 
> expected = Expected(exception_type=<class 
> 'omegaconf.errors.ValidationError'>, msg="Value 'hello.txt' of type 
> 'pathlib.(Posix|Win..., parent_node=<function Expected.<lambda> at 
> 0x7f8ce9054d60>, object_type_str='dict', ref_type_str='AUTO', num_lines=2)
> monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f8ce9073ee0>
> 
>     @mark.parametrize("expected", params)
>     def test_errors(expected: Expected, monkeypatch: Any) -> None:
>         monkeypatch.setenv("OC_CAUSE", "0")
>         cfg = expected.create()
>         expected.finalize(cfg)
>         if expected.msg_is_regex:
>             match = expected.msg
>         else:
>             match = re.escape(expected.msg)
>     
> >       with raises(expected.exception_type, match=match) as einfo:
> E       AssertionError: Regex pattern did not match.
> E        Regex: "Value 'hello.txt' of type 'pathlib.(Posix|Windows)Path' 
> could not be converted to Float"
> E        Input: "Value 'hello.txt' of type 'pathlib._local.PosixPath' could 
> not be converted to Float\n    full_key: bar\n    object_type=dict"
> 
> tests/test_errors.py:1597: AssertionError
> _ test_to_yaml[input_4-path_value: !!python/object/apply:pathlib.PosixPath\n- 
> hello.txt\n] _
> 
> input_ = {'path_value': PosixPath('hello.txt')}
> expected = 'path_value: !!python/object/apply:pathlib.PosixPath\n- 
> hello.txt\n'
> 
>     @mark.parametrize(
>         "input_, expected",
>         [
>             (["item1", "item2", {"key3": "value3"}], "- item1\n- item2\n- 
> key3: value3\n"),
>             ({"hello": "world", "list": [1, 2]}, "hello: world\nlist:\n- 1\n- 
> 2\n"),
>             ({"abc": "str key"}, "abc: str key\n"),
>             ({b"abc": "bytes key"}, "? !!binary |\n  YWJj\n: bytes key\n"),
>             (
>                 {"path_value": Path("hello.txt")},
>                 "path_value: !!python/object/apply:pathlib.WindowsPath\n- 
> hello.txt\n"
>                 if platform.system() == "Windows"
>                 else "path_value: !!python/object/apply:pathlib.PosixPath\n- 
> hello.txt\n",
>             ),
>             ({123: "int key"}, "123: int key\n"),
>             ({123.45: "float key"}, "123.45: float key\n"),
>             ({True: "bool key", False: "another"}, "true: bool key\nfalse: 
> another\n"),
>         ],
>     )
>     def test_to_yaml(input_: Any, expected: str) -> None:
>         c = OmegaConf.create(input_)
>         as_yaml = OmegaConf.to_yaml(c)
> >       assert as_yaml == expected
> E       AssertionError: assert 'path_value: ...- hello.txt\n' == 'path_value: 
> ...- hello.txt\n'
> E         
> E         - path_value: !!python/object/apply:pathlib.PosixPath
> E         + path_value: !!python/object/apply:pathlib._local.PosixPath
> E         ?                                           +++++++
> E           - hello.txt
> 
> tests/test_to_yaml.py:34: AssertionError
> _________________ test_type_str[Path-True-pathlib.Path-False] 
> __________________
> 
> type_ = <class 'pathlib._local.Path'>, include_module_name = True
> expected = 'pathlib.Path', optional = False
> 
>     @mark.parametrize("optional", [False, True])
>     @mark.parametrize(
>         "type_, include_module_name, expected",
>         [
>             (int, False, "int"),
>             (int, True, "int"),
>             (bool, False, "bool"),
>             (bool, True, "bool"),
>             (bytes, False, "bytes"),
>             (bytes, True, "bytes"),
>             (float, False, "float"),
>             (float, True, "float"),
>             (str, False, "str"),
>             (str, True, "str"),
>             (Path, False, "Path"),
>             (Path, True, "pathlib.Path"),
>             (Color, False, "Color"),
>             (Color, True, "tests.Color"),
>             (DictConfig, False, "DictConfig"),
>             (DictConfig, True, "DictConfig"),
>             (ListConfig, False, "ListConfig"),
>             (ListConfig, True, "ListConfig"),
>             (Dict[str, str], False, "Dict[str, str]"),
>             (Dict[str, str], True, "Dict[str, str]"),
>             (Dict[Color, int], False, "Dict[Color, int]"),
>             (Dict[Color, int], True, "Dict[tests.Color, int]"),
>             (Dict[str, Plugin], False, "Dict[str, Plugin]"),
>             (Dict[str, Plugin], True, "Dict[str, tests.Plugin]"),
>             (Dict[str, List[Plugin]], False, "Dict[str, List[Plugin]]"),
>             (Dict[str, List[Plugin]], True, "Dict[str, List[tests.Plugin]]"),
>             (dict, False, "dict"),
>             (dict, True, "dict"),
>             (List[str], False, "List[str]"),
>             (List[str], True, "List[str]"),
>             (List[Color], False, "List[Color]"),
>             (List[Color], True, "List[tests.Color]"),
>             (List[Dict[str, Color]], False, "List[Dict[str, Color]]"),
>             (List[Dict[str, Color]], True, "List[Dict[str, tests.Color]]"),
>             (list, False, "list"),
>             (list, True, "list"),
>             (Tuple[str], False, "Tuple[str]"),
>             (Tuple[str], True, "Tuple[str]"),
>             (Tuple[str, int], False, "Tuple[str, int]"),
>             (Tuple[str, int], True, "Tuple[str, int]"),
>             (Tuple[float, ...], False, "Tuple[float, ...]"),
>             (Tuple[float, ...], True, "Tuple[float, ...]"),
>             (tuple, False, "tuple"),
>             (tuple, True, "tuple"),
>             (Union[str, int, Color], False, "Union[str, int, Color]"),
>             (Union[str, int, Color], True, "Union[str, int, tests.Color]"),
>             (Union[int], False, "int"),
>             (Union[int], True, "int"),
>             (IllegalType, False, "IllegalType"),
>             (IllegalType, True, "tests.IllegalType"),
>             (IllegalTypeGeneric, False, "IllegalTypeGeneric"),
>             (IllegalTypeGeneric, True, "tests.IllegalTypeGeneric"),
>             (IllegalTypeGeneric[int], False, "IllegalTypeGeneric[int]"),
>             (IllegalTypeGeneric[int], True, "tests.IllegalTypeGeneric[int]"),
>         ],
>     )
>     def test_type_str(
>         type_: Any, include_module_name: bool, expected: str, optional: bool
>     ) -> None:
>         if optional:
>             assert (
>                 _utils.type_str(Optional[type_], 
> include_module_name=include_module_name)
>                 == f"Optional[{expected}]"
>             )
>         else:
> >           assert (
>                 _utils.type_str(type_, 
> include_module_name=include_module_name) == expected
>             )
> E           AssertionError: assert 'pathlib._local.Path' == 'pathlib.Path'
> E             
> E             - pathlib.Path
> E             + pathlib._local.Path
> E             ?         +++++++
> 
> tests/test_utils.py:657: AssertionError
> __________________ test_type_str[Path-True-pathlib.Path-True] 
> __________________
> 
> type_ = <class 'pathlib._local.Path'>, include_module_name = True
> expected = 'pathlib.Path', optional = True
> 
>     @mark.parametrize("optional", [False, True])
>     @mark.parametrize(
>         "type_, include_module_name, expected",
>         [
>             (int, False, "int"),
>             (int, True, "int"),
>             (bool, False, "bool"),
>             (bool, True, "bool"),
>             (bytes, False, "bytes"),
>             (bytes, True, "bytes"),
>             (float, False, "float"),
>             (float, True, "float"),
>             (str, False, "str"),
>             (str, True, "str"),
>             (Path, False, "Path"),
>             (Path, True, "pathlib.Path"),
>             (Color, False, "Color"),
>             (Color, True, "tests.Color"),
>             (DictConfig, False, "DictConfig"),
>             (DictConfig, True, "DictConfig"),
>             (ListConfig, False, "ListConfig"),
>             (ListConfig, True, "ListConfig"),
>             (Dict[str, str], False, "Dict[str, str]"),
>             (Dict[str, str], True, "Dict[str, str]"),
>             (Dict[Color, int], False, "Dict[Color, int]"),
>             (Dict[Color, int], True, "Dict[tests.Color, int]"),
>             (Dict[str, Plugin], False, "Dict[str, Plugin]"),
>             (Dict[str, Plugin], True, "Dict[str, tests.Plugin]"),
>             (Dict[str, List[Plugin]], False, "Dict[str, List[Plugin]]"),
>             (Dict[str, List[Plugin]], True, "Dict[str, List[tests.Plugin]]"),
>             (dict, False, "dict"),
>             (dict, True, "dict"),
>             (List[str], False, "List[str]"),
>             (List[str], True, "List[str]"),
>             (List[Color], False, "List[Color]"),
>             (List[Color], True, "List[tests.Color]"),
>             (List[Dict[str, Color]], False, "List[Dict[str, Color]]"),
>             (List[Dict[str, Color]], True, "List[Dict[str, tests.Color]]"),
>             (list, False, "list"),
>             (list, True, "list"),
>             (Tuple[str], False, "Tuple[str]"),
>             (Tuple[str], True, "Tuple[str]"),
>             (Tuple[str, int], False, "Tuple[str, int]"),
>             (Tuple[str, int], True, "Tuple[str, int]"),
>             (Tuple[float, ...], False, "Tuple[float, ...]"),
>             (Tuple[float, ...], True, "Tuple[float, ...]"),
>             (tuple, False, "tuple"),
>             (tuple, True, "tuple"),
>             (Union[str, int, Color], False, "Union[str, int, Color]"),
>             (Union[str, int, Color], True, "Union[str, int, tests.Color]"),
>             (Union[int], False, "int"),
>             (Union[int], True, "int"),
>             (IllegalType, False, "IllegalType"),
>             (IllegalType, True, "tests.IllegalType"),
>             (IllegalTypeGeneric, False, "IllegalTypeGeneric"),
>             (IllegalTypeGeneric, True, "tests.IllegalTypeGeneric"),
>             (IllegalTypeGeneric[int], False, "IllegalTypeGeneric[int]"),
>             (IllegalTypeGeneric[int], True, "tests.IllegalTypeGeneric[int]"),
>         ],
>     )
>     def test_type_str(
>         type_: Any, include_module_name: bool, expected: str, optional: bool
>     ) -> None:
>         if optional:
> >           assert (
>                 _utils.type_str(Optional[type_], 
> include_module_name=include_module_name)
>                 == f"Optional[{expected}]"
>             )
> E           AssertionError: assert 'Optional[pat...._local.Path]' == 
> 'Optional[pathlib.Path]'
> E             
> E             - Optional[pathlib.Path]
> E             + Optional[pathlib._local.Path]
> E             ?                  +++++++
> 
> tests/test_utils.py:652: AssertionError
> =========================== short test summary info 
> ============================
> FAILED 
> tests/test_errors.py::test_errors[typed_DictConfig:assign_with_invalid_value,path_to_float]
> FAILED tests/test_to_yaml.py::test_to_yaml[input_4-path_value: 
> !!python/object/apply:pathlib.PosixPath\n- hello.txt\n]
> FAILED tests/test_utils.py::test_type_str[Path-True-pathlib.Path-False] - 
> Ass...
> FAILED tests/test_utils.py::test_type_str[Path-True-pathlib.Path-True] - 
> Asse...
> =========== 4 failed, 7753 passed, 354 skipped, 8 xfailed in 13.67s 
> ============
> make[1]: *** [debian/rules:26: override_dh_auto_install] Error 1


The full build log is available from:
http://qa-logs.debian.net/2025/01/07/python-omegaconf_2.3.0-2_unstable.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20250107;users=lu...@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20250107&fusertaguser=lu...@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.

Reply via email to