========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================= test session starts ==========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
platform linux -- Python 3.10.12, pytest-9.0.3, pluggy-1.6.0 -- /usr/bin/python3
cachedir: .pytest_cache
metadata: {'Python': '3.10.12', 'Platform': 'Linux-6.8.0-1026-gke-x86_64-with-glibc2.35', 'Packages': {'pytest': '9.0.3', 'pluggy': '1.6.0'}, 'Plugins': {'metadata': '3.1.1', 'anyio': '4.13.0', 'cov': '7.1.0', 'json-report': '1.5.0'}}
rootdir: /workspace/voluptuous
configfile: pyproject.toml
plugins: metadata-3.1.1, anyio-4.13.0, cov-7.1.0, json-report-1.5.0
collected 149 items

voluptuous/tests/tests.md::tests.md FAILED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       [  0%]
voluptuous/tests/tests.py::test_new_required_test PASSED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         [  1%]
voluptuous/tests/tests.py::test_exact_sequence PASSED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            [  2%]
voluptuous/tests/tests.py::test_required PASSED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [  2%]
voluptuous/tests/tests.py::test_extra_with_required PASSED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       [  3%]
voluptuous/tests/tests.py::test_iterate_candidates PASSED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [  4%]
voluptuous/tests/tests.py::test_in PASSED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        [  4%]
voluptuous/tests/tests.py::test_in_unsortable_container PASSED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   [  5%]
voluptuous/tests/tests.py::test_not_in PASSED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [  6%]
voluptuous/tests/tests.py::test_not_in_unsortable_container PASSED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               [  6%]
voluptuous/tests/tests.py::test_contains PASSED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  [  7%]
voluptuous/tests/tests.py::test_remove PASSED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    [  8%]
voluptuous/tests/tests.py::test_remove_with_error PASSED                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         [  8%]
voluptuous/tests/tests.py::test_extra_empty_errors PASSED                                                                                                                                                                                                                                                                                                                                                                                                               <response clipped><NOTE>Due to the max output limit, only part of the full response has been shown to you.</NOTE>.Invalid as e:
                        _set_path(e, default_path)
                        _set_error_type(e, default_path, invalid_msg)
                        errors.append(e)
                    present.add(skey)

        for skey in required_keys:
            if skey not in present:
                key = skey.schema if isinstance(skey, Marker) else skey
                msg = skey.msg if isinstance(skey, Marker) and skey.msg else 'required key not provided'
                errors.append(er.RequiredFieldInvalid(msg, path + [key]))

        if errors:
>           raise er.MultipleInvalid(errors)
E           voluptuous.error.MultipleInvalid: required key not provided @ data['str']

voluptuous/schema_builder.py:860: MultipleInvalid
___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ test_description ___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

    def test_description():
>       marker = Marker(Schema(str), description='Hello')

voluptuous/tests/tests.py:1218:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <Schema(<class 'str'>, extra=PREVENT_EXTRA, required=False) object at 0x71a841b0f3a0>, schema_ = <Schema(<class 'str'>, extra=PREVENT_EXTRA, required=False) object at 0x71a841b0f3a0>, msg = None, description = 'Hello'

    def __init__(self, schema_: Schemable, msg: typing.Optional[str]=None, description: typing.Any | None=None) -> None:
        self.schema: typing.Any = schema_
        self._schema = Schema(schema_)
        self.msg = msg
        self.description = description
>       self.__hash__ = cache(lambda: hash(schema_))
E       AttributeError: 'Marker' object attribute '__hash__' is read-only

voluptuous/schema_builder.py:421: AttributeError
______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ test_key3 _______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

    def test_key3():
        schema = Schema(
            {
                Any("name", "area"): str,
                "domain": str,
            },
            extra=ALLOW_EXTRA,
        )
>       schema(
            {
                "name": "one",
                "domain": "two",
                "additional_key": "extra",
            }
        )

voluptuous/tests/tests.py:1715:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
voluptuous/schema_builder.py:124: in __call__
    return self._compiled([], data)
voluptuous/schema_builder.py:883: in validate_dict
    return base_validate(path, data)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

path = [], data = {'additional_key': 'extra', 'domain': 'two', 'name': 'one'}

    def validate_mapping(path, data):
        out = type(data)()
        errors = []
        present = set()
        has_extra = any(candidate[1] is Extra for candidate in ordered_candidates)
        for key, value in data.items():
            matched = False
            key_errors = []
            for skey, key_schema, key_validator, value_validator in list(exact_candidates.get(key, ())) + wildcard_candidates:
                key_path = path + [key]
                try:
                    new_key = key_validator(key_path, key)
                except er.MultipleInvalid as e:
                    key_errors.extend(_set_path(err, key_path) for err in e.errors)
                    continue
                except er.Invalid as e:
                    key_errors.append(_set_path(e, key_path))
                    continue

                matched = True
                if key_schema is not Extra:
                    present.add(skey)
                if isinstance(skey, Remove):
                    try:
                        value_validator(key_path, value)
                    except er.Invalid:
                        matched = False
                        continue
                    break
                try:
                    new_value = value_validator(key_path, value)
                except er.MultipleInvalid as e:
                    for err in e.errors:
                        _set_path(err, key_path)
                        _set_error_type(err, key_path, invalid_msg)
                        errors.append(err)
                except er.Invalid as e:
                    _set_path(e, key_path)
                    _set_error_type(e, key_path, invalid_msg)
                    errors.append(e)
                else:
                    out[new_key] = new_value
                break

            if not matched:
                if key_errors and not has_extra:
                    errors.extend(key_errors)
                elif self.extra == ALLOW_EXTRA or has_extra:
                    out[key] = value
                elif self.extra == REMOVE_EXTRA:
                    continue
                else:
                    errors.append(er.Invalid('extra keys not allowed', path + [key]))

        for group, keys in exclusive_groups.items():
            found = [k for k in keys if k in present]
            if len(found) > 1:
                msg = found[0].msg or "two or more values in the same group of exclusion %r" % group
                errors.append(er.ExclusiveInvalid(msg, path + [VirtualPathComponent(group)]))

        for group, keys in inclusive_groups.items():
            found = [k for k in keys if k in present]
            if 0 < len(found) < len(keys):
                msg = found[0].msg or "some but not all values in the same group of inclusion %r" % group
                errors.append(er.InclusiveInvalid(msg, path + [VirtualPathComponent(group)]))
            elif len(found) == 0:
                for skey in keys:
                    default_value = skey.default()
                    if not _is_undefined(default_value):
                        default_path = path + [skey.schema]
                        try:
                            out[skey.schema] = self._compile(schema[skey])(default_path, default_value)
                        except er.Invalid as e:
                            _set_path(e, default_path)
                            _set_error_type(e, default_path, invalid_msg)
                            errors.append(e)
                        present.add(skey)

        for skey, svalue in defaults:
            if isinstance(skey, Inclusive):
                continue
            if skey not in present:
                default_value = skey.default()
                if not _is_undefined(default_value):
                    default_path = path + [skey.schema]
                    try:
                        out[skey.schema] = self._compile(svalue)(default_path, default_value)
                    except er.Invalid as e:
                        _set_path(e, default_path)
                        _set_error_type(e, default_path, invalid_msg)
                        errors.append(e)
                    present.add(skey)

        for skey in required_keys:
            if skey not in present:
                key = skey.schema if isinstance(skey, Marker) else skey
                msg = skey.msg if isinstance(skey, Marker) and skey.msg else 'required key not provided'
                errors.append(er.RequiredFieldInvalid(msg, path + [key]))

        if errors:
>           raise er.MultipleInvalid(errors)
E           voluptuous.error.MultipleInvalid: not a valid value @ data['additional_key']

voluptuous/schema_builder.py:860: MultipleInvalid
======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================= short test summary info ========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
FAILED voluptuous/tests/tests.md::tests.md
FAILED voluptuous/tests/tests.py::test_literal - AssertionError: Regex pattern did not match.
FAILED voluptuous/tests/tests.py::test_fqdn_url_validation_with_bad_data[None] - AssertionError: Regex pattern did not match.
FAILED voluptuous/tests/tests.py::test_fqdn_url_validation_with_bad_data[empty string] - AssertionError: Regex pattern did not match.
FAILED voluptuous/tests/tests.py::test_fqdn_url_validation_with_bad_data[empty host] - AssertionError: Regex pattern did not match.
FAILED voluptuous/tests/tests.py::test_schema_empty_dict_key - assert "not a valid ...a['var'][123]" == "not a valid ...@ data['var']"
FAILED voluptuous/tests/tests.py::test_schema_infer_accepts_kwargs - voluptuous.error.MultipleInvalid: required key not provided @ data['str']
FAILED voluptuous/tests/tests.py::test_description - AttributeError: 'Marker' object attribute '__hash__' is read-only
FAILED voluptuous/tests/tests.py::test_key3 - voluptuous.error.MultipleInvalid: not a valid value @ data['additional_key']
==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== 9 failed, 140 passed in 0.71s =====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
[The command completed with exit code 1.]
[Current working directory: /workspace/voluptuous]
[Python interpreter: /usr/bin/python]
[Command finished with exit code 1]