Coverage for datacite/utils.py: 100%

13 statements  

« prev     ^ index     » next       coverage.py v7.10.1, created at 2025-07-29 15:38 +0000

1import datetime 

2 

3# REGEX from https://www.crossref.org/blog/dois-and-matching-regular-expressions/ 

4DOI_REGEX = r"(?:https\:\/\/doi\.org\/)?(?P<doi>10.\d{4,9}\/[\-\._;()\/\:a-zA-Z0-9]+)" 

5SCHEME_URI_REGEX = r"^(https?:\/\/(?:[a-z\-_]+\.)+[a-z]+\/?)" 

6DATE_FORMAT = "%Y-%m-%d" 

7 

8regex_date_range = "^[0-9]{4}-[0-9]{2}-[0-9]{2}/[0-9]{4}-[0-9]{2}-[0-9]{2}$" 

9regex_date = "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" 

10regex_year = "^[0-9]{4}$" 

11 

12 

13def _str_to_date(date: str, date_format: str) -> datetime.date: 

14 return datetime.datetime.strptime(date, date_format).astimezone().date() 

15 

16 

17def year_to_date(year: int | str) -> datetime.date: 

18 return _str_to_date(date=str(year), date_format="%Y") 

19 

20 

21def str_date_to_date(date: str) -> datetime.date: 

22 return _str_to_date(date=date, date_format=DATE_FORMAT)