Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/dateparser/date_parser.py: 85%

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

33 statements  

1import sys 

2 

3from tzlocal import get_localzone 

4 

5from .conf import apply_settings 

6from .timezone_parser import pop_tz_offset_from_string 

7from .utils import apply_timezone, localize_timezone, strip_braces 

8 

9 

10class DateParser: 

11 @apply_settings 

12 def parse(self, date_string, parse_method, settings=None): 

13 date_string = str(date_string) 

14 

15 if not date_string.strip(): 

16 raise ValueError("Empty string") 

17 

18 date_string = strip_braces(date_string) 

19 date_string, ptz = pop_tz_offset_from_string(date_string) 

20 

21 date_obj, period = parse_method(date_string, settings=settings, tz=ptz) 

22 

23 _settings_tz = settings.TIMEZONE.lower() 

24 

25 if ptz: 

26 if hasattr(ptz, "localize"): 

27 date_obj = ptz.localize(date_obj) 

28 else: 

29 date_obj = date_obj.replace(tzinfo=ptz) 

30 if "local" not in _settings_tz: 

31 date_obj = apply_timezone(date_obj, settings.TIMEZONE) 

32 else: 

33 if "local" in _settings_tz: 

34 stz = get_localzone() 

35 if hasattr(stz, "localize") and sys.version_info < (3, 6): 

36 date_obj = stz.localize(date_obj) 

37 else: 

38 date_obj = date_obj.replace(tzinfo=stz) 

39 else: 

40 date_obj = localize_timezone(date_obj, settings.TIMEZONE) 

41 

42 if settings.TO_TIMEZONE: 

43 date_obj = apply_timezone(date_obj, settings.TO_TIMEZONE) 

44 

45 if not settings.RETURN_AS_TIMEZONE_AWARE or ( 

46 settings.RETURN_AS_TIMEZONE_AWARE 

47 and "default" == settings.RETURN_AS_TIMEZONE_AWARE 

48 and not ptz 

49 ): 

50 date_obj = date_obj.replace(tzinfo=None) 

51 

52 return date_obj, period 

53 

54 

55date_parser = DateParser()