lib/metric-config-parser/metric_config_parser/util.py (24 lines of code) (raw):
import re
import shutil
import tempfile
from contextlib import contextmanager
from datetime import datetime
from pathlib import Path
from typing import Optional
import cattr
import pytz
converter = cattr.Converter()
@contextmanager
def TemporaryDirectory():
name = Path(tempfile.mkdtemp())
try:
yield name
finally:
if name.exists():
shutil.rmtree(name)
def parse_date(yyyy_mm_dd: Optional[str]) -> Optional[datetime]:
if not yyyy_mm_dd:
return None
return datetime.strptime(yyyy_mm_dd, "%Y-%m-%d").replace(tzinfo=pytz.utc)
def is_valid_slug(slug: str) -> bool:
"""Returns whether a slug name is valid."""
return bool(re.match(r"^[a-zA-Z0-9_]+$", slug))