diff --git a/gravity/settings.py b/gravity/settings.py index 10b65b1..d8c8df6 100644 --- a/gravity/settings.py +++ b/gravity/settings.py @@ -461,8 +461,10 @@ def _disable_service_instances_if_direct(cls, value: bool, info: ValidationInfo) def process_property(key, value, depth=0): extra_white_space = " " * depth - default = value.get("default", "") - if isinstance(default, dict): + default = value.get("default") + if default is None: + default = "" + elif isinstance(default, dict): # Little hack that prevents listing the default value for tusd in the sample config default = {} if default != "": @@ -472,11 +474,14 @@ def process_property(key, value, depth=0): default = default[: -(len("\n...\n"))] default = default.strip() description = "\n".join(f"{extra_white_space}# {desc}".rstrip() for desc in value["description"].strip().split("\n")) - combined = value.get("allOf", []) - if not combined and value.get("anyOf"): + if value.get("anyOf"): # we've got a union - combined = [c for c in value["anyOf"] if c["type"] == "object"] - if combined and combined[0].get("properties"): + combined = [c for c in value["anyOf"] if c["type"] != "null"] + elif "enum" in value or "properties" in value: + combined = [value] + else: + combined = [] + if combined and any(item.get("properties") for item in combined): # we've got a nested map, add key once description = f"{description}\n{extra_white_space}{key}:\n" has_child = False @@ -506,7 +511,5 @@ def settings_to_sample(): # expand schema for easier processing data = jsonref.replace_refs(schema, merge_props=True) strings = [process_property("gravity", data)] - for key, value in data["properties"].items(): - strings.append(process_property(key, value, 1)) concat = "\n".join(strings) return concat diff --git a/tests/test_settings.py b/tests/test_settings.py index e3405a3..441f9f7 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -50,4 +50,4 @@ def test_schema_to_sample(): sample = settings_to_sample() settings = Settings(**yaml.safe_load(StringIO(sample))["gravity"]) default_settings = Settings() - assert settings.dict() == default_settings.dict() + assert settings.model_dump() == default_settings.model_dump()