import copy import os import re import struct from datetime import date from datetime import datetime from datetime import time from dateutil import parser from .exceptions import ParserError with_extensions = os.getenv("PENDULUM_EXTENSIONS", "1") == "1" try: if not with_extensions or struct.calcsize("P") == 4: raise ImportError() from ._iso8601 import parse_iso8601 except ImportError: from .iso8601 import parse_iso8601 COMMON = re.compile( # Date (optional) "^" "(?P" " (?P" # Classic date (YYYY-MM-DD) r" (?P\d{4})" # Year " (?P" r" (?P[/:])?(?P\d{2})" # Month (optional) r" ((?P[/:])?(?P\d{2}))" # Day (optional) " )?" " )" ")?" # Time (optional) "(?P