Coverage for fast_depends/exceptions.py: 100%
17 statements
« prev ^ index » next coverage.py v7.17.3, created at 2026-11-13 05:19 +0000
« prev ^ index » next coverage.py v7.17.3, created at 2026-11-13 05:19 +0000
1from collections.abc import Sequence 1abcdefghijklmnopqrst
2from typing import Any 1abcdefghijklmnopqrst
4from fast_depends.library.serializer import OptionItem 1abcdefghijklmnopqrst
7class FastDependsError(Exception): 1abcdefghijklmnopqrst
8 pass 1abcdefghijklmnopqrst
11class ValidationError(ValueError, FastDependsError): 1abcdefghijklmnopqrst
12 def __init__( 1abcdefghijklmnopqrst
13 self,
14 *,
15 incoming_options: Any,
16 locations: Sequence[Any],
17 expected: dict[str, OptionItem],
18 original_error: Exception,
19 ) -> None:
20 self.original_error = original_error 1abcdefghijklmnopqrst
21 self.incoming_options = incoming_options 1abcdefghijklmnopqrst
23 self.error_fields: tuple[OptionItem, ...] = tuple( 1abcdefghijklmnopqrst
24 expected[x] for x in locations if x in expected
25 )
26 if not self.error_fields: 1abcdefghijklmnopqrst
27 self.error_fields = tuple(expected.values()) 1abcdefghijklmnopqrst
29 super().__init__() 1abcdefghijklmnopqrst
31 def __str__(self) -> str: 1abcdefghijklmnopqrst
32 if isinstance(self.incoming_options, dict): 1abcdefghijklmnopqrst
33 content = ", ".join(f"{k}=`{v}`" for k, v in self.incoming_options.items()) 1abcdefghijklmnopqrst
34 else:
35 content = f"`{self.incoming_options}`" 1abcdefghijklmnopqrst
37 return ( 1abcdefghijklmnopqrst
38 "\n Incoming options: "
39 + content
40 + "\n In the following option types error occurred:\n "
41 + "\n ".join(map(str, self.error_fields))
42 )