From d9864d9495c3e58215fca1155d540ddfed8ee583 Mon Sep 17 00:00:00 2001 From: Sina Atalay <79940989+sinaatalay@users.noreply.github.com> Date: Sat, 21 Mar 2026 00:19:56 +0300 Subject: [PATCH] Revert "Fix #689: Allow arbitrary font names in JSON schema while keeping enum suggestions" This reverts commit 9ebcebd3ccc6abee3c71c07c884488614044b958. --- schema.json | 47 ++++++++----------- .../schema/models/design/font_family.py | 4 +- .../schema/models/design/test_font_family.py | 16 ------- 3 files changed, 23 insertions(+), 44 deletions(-) diff --git a/schema.json b/schema.json index 72626378..50372ec7 100644 --- a/schema.json +++ b/schema.json @@ -9031,33 +9031,26 @@ "type": "object" }, "rendercv__schema__models__design__font_family__FontFamily": { - "anyOf": [ - { - "type": "string" - }, - { - "enum": [ - "DejaVu Sans Mono", - "EB Garamond", - "Fontin", - "Gentium Book Plus", - "Lato", - "Libertinus Serif", - "Mukta", - "New Computer Modern", - "Noto Sans", - "Open Sans", - "Open Sauce Sans", - "Poppins", - "Raleway", - "Roboto", - "Source Sans 3", - "Ubuntu", - "XCharter" - ], - "type": "string" - } - ] + "enum": [ + "DejaVu Sans Mono", + "EB Garamond", + "Fontin", + "Gentium Book Plus", + "Lato", + "Libertinus Serif", + "Mukta", + "New Computer Modern", + "Noto Sans", + "Open Sans", + "Open Sauce Sans", + "Poppins", + "Raleway", + "Roboto", + "Source Sans 3", + "Ubuntu", + "XCharter" + ], + "type": "string" }, "rendercv__schema__models__locale__english_locale__Phrases__1": { "additionalProperties": false, diff --git a/src/rendercv/schema/models/design/font_family.py b/src/rendercv/schema/models/design/font_family.py index f765809d..d0ad165d 100644 --- a/src/rendercv/schema/models/design/font_family.py +++ b/src/rendercv/schema/models/design/font_family.py @@ -1,5 +1,7 @@ from typing import Literal +from pydantic.json_schema import SkipJsonSchema + available_font_families = sorted( [ # Typst built-ins @@ -25,4 +27,4 @@ available_font_families = sorted( ) -type FontFamily = str | Literal[*tuple(available_font_families)] # ty: ignore[invalid-type-form] +type FontFamily = SkipJsonSchema[str] | Literal[*tuple(available_font_families)] # ty: ignore[invalid-type-form] diff --git a/tests/schema/models/design/test_font_family.py b/tests/schema/models/design/test_font_family.py index 197036ac..db853b1b 100644 --- a/tests/schema/models/design/test_font_family.py +++ b/tests/schema/models/design/test_font_family.py @@ -1,7 +1,6 @@ import pytest import rendercv_fonts -from rendercv.schema.json_schema_generator import generate_json_schema from rendercv.schema.models.design.font_family import available_font_families icon_font_families = {"Font Awesome 7"} @@ -26,18 +25,3 @@ def test_bundled_fonts_are_in_available_font_families(font_family): ) def test_no_extra_fonts_in_available_font_families(font_family): assert font_family in rendercv_fonts.available_font_families - - -def test_json_schema_accepts_arbitrary_font_names(): - schema = generate_json_schema() - font_schema = schema["$defs"][ - "rendercv__schema__models__design__font_family__FontFamily" - ] - # Schema should use anyOf to accept both known fonts (enum) and arbitrary strings - assert "anyOf" in font_schema - types = [option.get("type") for option in font_schema["anyOf"]] - assert "string" in types - # The enum with known fonts should still be present - enum_options = [option for option in font_schema["anyOf"] if "enum" in option] - assert len(enum_options) == 1 - assert "Source Sans 3" in enum_options[0]["enum"]