Source code for monitor_schema.models.utils

"""Common utilities."""
from typing import Any, Dict, Optional

from pydantic import Field, constr


[docs]def anyOf_to_oneOf(schema: Dict[str, Any], field_name: str) -> None: """Turn anyOf in JSON schema to oneOf. onfOf is much stricter and pyDantic doesn't produce this tag. We hijack the JSON schema object to set this correctly. See: https://github.com/samuelcolvin/pydantic/issues/656 """ cfg = schema["properties"].get(field_name) if cfg is None: return if cfg.get('anyOf') is None: return cfg["oneOf"] = cfg["anyOf"] del cfg["anyOf"]
COLUMN_NAME_TYPE = constr(max_length=1000) METRIC_NAME_STR = constr(max_length=50)
[docs]def duration_field(description: str, title: Optional[str] = None) -> Field: # type: ignore """Duration of a field.""" return Field( None, title=title, description=description, example="PT1H, P1D", regex="^P(?!$)(\\d+M)?(\\d+W)?(\\d+D)?(T(?=\\d+[HM])(\\d+H)?(\\d+M)?)?$", )