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

1from collections.abc import Sequence 1abcdefghijklmnopqrst

2from typing import Any 1abcdefghijklmnopqrst

3 

4from fast_depends.library.serializer import OptionItem 1abcdefghijklmnopqrst

5 

6 

7class FastDependsError(Exception): 1abcdefghijklmnopqrst

8 pass 1abcdefghijklmnopqrst

9 

10 

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

22 

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

28 

29 super().__init__() 1abcdefghijklmnopqrst

30 

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

36 

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 )