ISO 8601 (timezone=UTC).
"""
return dt.astimezone(tz=datetime.timezone.utc).strftime(
- '%Y-%m-%dT%H:%M:%S.%fZ')
+ '%Y-%m-%dT%H:%M:%S.%fZ'
+ )
def str_to_datetime(string: str) -> datetime.datetime:
"""
fmts = [
'%Y-%m-%dT%H:%M:%S.%f',
- '%Y-%m-%dT%H:%M:%S.%f%z'
+ '%Y-%m-%dT%H:%M:%S.%f%z',
]
# In *all* cases, the 9 digit second precision is too much for
except ValueError:
pass
- raise ValueError("Time data {} does not match one of the formats {}".format(
- string, str(fmts)))
+ raise ValueError(
+ "Time data {} does not match one of the formats {}".format(
+ string, str(fmts)
+ )
+ )
def parse_timedelta(delta: str) -> Optional[datetime.timedelta]:
:return: The `datetime.timedelta` object or `None` in case of
a parsing error.
"""
- parts = re.match(r'(?P<seconds>-?\d+)s|'
- r'(?P<minutes>-?\d+)m|'
- r'(?P<hours>-?\d+)h|'
- r'(?P<days>-?\d+)d|'
- r'(?P<weeks>-?\d+)w$',
- delta,
- re.IGNORECASE)
+ parts = re.match(
+ r'(?P<seconds>-?\d+)s|'
+ r'(?P<minutes>-?\d+)m|'
+ r'(?P<hours>-?\d+)h|'
+ r'(?P<days>-?\d+)d|'
+ r'(?P<weeks>-?\d+)w$',
+ delta,
+ re.IGNORECASE,
+ )
if not parts:
return None
parts = parts.groupdict()
return True
-def http_req(hostname: str = '',
- port: str = '443',
- method: Optional[str] = None,
- headers: MutableMapping[str, str] = {},
- data: Optional[str] = None,
- endpoint: str = '/',
- scheme: str = 'https',
- ssl_verify: bool = False,
- timeout: Optional[int] = None,
- ssl_ctx: Optional[Any] = None) -> Tuple[Any, Any, Any]:
-
+def http_req(
+ hostname: str = '',
+ port: str = '443',
+ method: Optional[str] = None,
+ headers: MutableMapping[str, str] = {},
+ data: Optional[str] = None,
+ endpoint: str = '/',
+ scheme: str = 'https',
+ ssl_verify: bool = False,
+ timeout: Optional[int] = None,
+ ssl_ctx: Optional[Any] = None,
+) -> Tuple[Any, Any, Any]:
if not ssl_ctx:
ssl_ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
if not ssl_verify: