Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/sqlalchemy_utils/types/enriched_datetime/arrow_datetime.py: 66%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

29 statements  

1from collections.abc import Iterable 

2from datetime import datetime 

3 

4from ...exceptions import ImproperlyConfigured 

5 

6arrow = None 

7try: 

8 import arrow 

9except ImportError: 

10 pass 

11 

12 

13class ArrowDateTime: 

14 def __init__(self): 

15 if not arrow: 

16 raise ImproperlyConfigured( 

17 "'arrow' package is required to use 'ArrowDateTime'" 

18 ) 

19 

20 def _coerce(self, impl, value): 

21 if isinstance(value, str): 

22 value = arrow.get(value) 

23 elif isinstance(value, Iterable): 

24 value = arrow.get(*value) 

25 elif isinstance(value, datetime): 

26 value = arrow.get(value) 

27 return value 

28 

29 def process_bind_param(self, impl, value, dialect): 

30 if value: 

31 utc_val = self._coerce(impl, value).to('UTC') 

32 return utc_val.datetime if impl.timezone else utc_val.naive 

33 return value 

34 

35 def process_result_value(self, impl, value, dialect): 

36 if value: 

37 return arrow.get(value) 

38 return value