Coverage for datacite/utils.py: 100%
13 statements
« prev ^ index » next coverage.py v7.10.1, created at 2025-07-29 15:38 +0000
« prev ^ index » next coverage.py v7.10.1, created at 2025-07-29 15:38 +0000
1import datetime
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"
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}$"
13def _str_to_date(date: str, date_format: str) -> datetime.date:
14 return datetime.datetime.strptime(date, date_format).astimezone().date()
17def year_to_date(year: int | str) -> datetime.date:
18 return _str_to_date(date=str(year), date_format="%Y")
21def str_date_to_date(date: str) -> datetime.date:
22 return _str_to_date(date=date, date_format=DATE_FORMAT)