Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/plotext/_date.py: 69%

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

42 statements  

1from datetime import datetime as dt 

2from datetime import timezone as tz # useful for dates before 1970 in windows 

3 

4class date_class(): 

5 

6 def __init__(self): 

7 self.date_form() 

8 self.time0 = 0 

9 self.set_time0('01/01/1900') 

10 

11 def date_form(self, input_form = None, output_form = None): # it sets the datetime form used for functions that output date string and input date string 

12 input_form = 'd/m/Y' if input_form is None else input_form 

13 output_form = input_form if output_form is None else output_form 

14 self.input_form = self.correct_form(input_form) 

15 self.output_form = self.correct_form(output_form) 

16 

17 def set_time0(self, string, input_form = None): # the origin of time, useful for log scale not to hit the 0 timestamp 

18 self.time0 = self.string_to_time(string, input_form, 0) 

19 

20 def today_datetime(self): # today in datetime form 

21 return dt.today() 

22 

23 def today_string(self, output_form = None): # today in string form 

24 return self.datetime_to_string(self.today_datetime(), output_form) 

25 

26 def datetime_to_string(self, datetime, output_form = None): # from datetime form to string form 

27 output_form = self.output_form if output_form is None else self.correct_form(output_form) 

28 return datetime.strftime(output_form) 

29 

30 def datetimes_to_strings(self, datetimes, output_form = None): # from datetime form to string form 

31 return [self.datetime_to_string(el, output_form) for el in datetimes] 

32 

33 def string_to_datetime(self, string, input_form = None): # from date and times in string form to standard datetime input_form 

34 input_form = self.input_form if input_form is None else self.correct_form(input_form) 

35 return dt.strptime(string, input_form) 

36 

37############################################## 

38############ Utilities ################ 

39############################################## 

40 

41 def correct_form(self, date_form): 

42 return ''.join(['%' + el if el.isalpha() else el for el in date_form]) 

43 

44 def string_to_time(self, string, input_form = None, time0 = None): 

45 input_form = self.input_form if input_form is None else self.correct_form(input_form) 

46 time0 = self.time0 if time0 is None else time0 

47 try: 

48 return dt.strptime(string, input_form).replace(tzinfo = tz.utc).timestamp() - time0 

49 except: 

50 raise ValueError('Date Form should be: ' + input_form) 

51 

52 def strings_to_time(self, strings, input_form = None): 

53 return [self.string_to_time(el, input_form) for el in strings] 

54 

55 def time_to_string(self, time, output_form = None): 

56 return self.datetime_to_string(dt.fromtimestamp(time + self.time0), output_form) 

57 

58 def times_to_string(self, times, input_form = None): 

59 return [self.time_to_string(el, input_form) for el in times] 

60