diff --git a/dev/code-generation/gen_docs_api.py b/dev/code-generation/gen_docs_api.py index 0d88a8a08..4a300fecb 100644 --- a/dev/code-generation/gen_docs_api.py +++ b/dev/code-generation/gen_docs_api.py @@ -1,7 +1,8 @@ import json +from datetime import UTC, datetime +from typing import Any from fastapi import FastAPI -from freezegun import freeze_time from mealie.app import app from mealie.core.config import determine_data_dir @@ -37,14 +38,43 @@ HTML_TEMPLATE = """ """ HTML_PATH = DATA_DIR.parent.parent.joinpath("docs/docs/overrides/api.html") +CONSTANT_DT = datetime(2025, 10, 24, 15, 53, 0, 0, tzinfo=UTC) + + +def normalize_timestamps(s: dict[str, Any]) -> dict[str, Any]: + field_format = s.get("format") + is_timestamp = field_format in ["date-time", "date", "time"] + has_default = s.get("default") + + if not is_timestamp: + for k, v in s.items(): + if isinstance(v, dict): + s[k] = normalize_timestamps(v) + elif isinstance(v, list): + s[k] = [normalize_timestamps(i) if isinstance(i, dict) else i for i in v] + + return s + elif not has_default: + return s + + if field_format == "date-time": + s["default"] = CONSTANT_DT.isoformat() + elif field_format == "date": + s["default"] = CONSTANT_DT.date().isoformat() + elif field_format == "time": + s["default"] = CONSTANT_DT.time().isoformat() + + return s def generate_api_docs(my_app: FastAPI): + openapi_schema = my_app.openapi() + openapi_schema = normalize_timestamps(openapi_schema) + with open(HTML_PATH, "w") as fd: - text = HTML_TEMPLATE.replace("MY_SPECIFIC_TEXT", json.dumps(my_app.openapi())) + text = HTML_TEMPLATE.replace("MY_SPECIFIC_TEXT", json.dumps(openapi_schema)) fd.write(text) if __name__ == "__main__": - with freeze_time("2024-01-20T17:00:55Z"): - generate_api_docs(app) + generate_api_docs(app) diff --git a/docs/docs/overrides/api.html b/docs/docs/overrides/api.html index ca04f1cc2..9f2cb2547 100644 --- a/docs/docs/overrides/api.html +++ b/docs/docs/overrides/api.html @@ -14,7 +14,7 @@
diff --git a/poetry.lock b/poetry.lock index b374c5062..50614ef78 100644 --- a/poetry.lock +++ b/poetry.lock @@ -813,21 +813,6 @@ typing-extensions = "*" [package.extras] test = ["pytest", "pytest-cov", "pytest-mpl", "pytest-subtests"] -[[package]] -name = "freezegun" -version = "1.5.5" -description = "Let your Python tests travel through time" -optional = false -python-versions = ">=3.8" -groups = ["dev"] -files = [ - {file = "freezegun-1.5.5-py3-none-any.whl", hash = "sha256:cd557f4a75cf074e84bc374249b9dd491eaeacd61376b9eb3c423282211619d2"}, - {file = "freezegun-1.5.5.tar.gz", hash = "sha256:ac7742a6cc6c25a2c35e9292dfd554b897b517d2dec26891a2e8debf205cb94a"}, -] - -[package.dependencies] -python-dateutil = ">=2.7" - [[package]] name = "ghp-import" version = "2.1.0" @@ -4028,4 +4013,4 @@ pgsql = ["psycopg2-binary"] [metadata] lock-version = "2.1" python-versions = ">=3.12,<3.13" -content-hash = "028a85e0613a477b84db8e69001a2376b2480337a0c69d4f7670d397c3a13164" +content-hash = "e7ff6c5d86868229759cc2d4422b08f5fc6d24b9df19bf8d53fc8989e886e303" diff --git a/pyproject.toml b/pyproject.toml index 1d3c7b317..11b5bc4dd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,7 +76,6 @@ types-python-slugify = "^6.0.0" types-requests = "^2.27.12" types-urllib3 = "^1.26.11" pydantic-to-typescript2 = "^1.0.4" -freezegun = "^1.5.1" [build-system]