From 8c4fb4c4330dd6b63243a791288ba8f2e1d7a05e Mon Sep 17 00:00:00 2001 From: forbes-0023 Date: Mon, 16 Feb 2026 13:15:41 -0600 Subject: [PATCH] feat(settings): add get_schema_name() to SiloSettings, remove hardcoded defaults Add get_schema_name() to SiloSettings base class with default 'kindred-rd'. Update get_schema(), get_schema_form(), and get_property_schema() to fall back to settings instead of hardcoding the schema name. Add category query parameter support to get_property_schema(). Closes #28 --- silo_client/__init__.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/silo_client/__init__.py b/silo_client/__init__.py index 039c497..49661e0 100644 --- a/silo_client/__init__.py +++ b/silo_client/__init__.py @@ -61,6 +61,10 @@ class SiloSettings: """Remove all stored authentication credentials.""" raise NotImplementedError + def get_schema_name(self) -> str: + """Return the active part-numbering schema name (default ``"kindred-rd"``).""" + return "kindred-rd" + # --------------------------------------------------------------------------- # SiloClient @@ -621,21 +625,27 @@ class SiloClient: """List all available schemas.""" return self._request("GET", "/schemas") - def get_schema(self, name: str = "kindred-rd") -> Dict[str, Any]: + def get_schema(self, name: str = "") -> Dict[str, Any]: + if not name: + name = self._settings.get_schema_name() return self._request("GET", f"/schemas/{urllib.parse.quote(name, safe='')}") - def get_schema_form(self, name: str) -> Dict[str, Any]: + def get_schema_form(self, name: str = "") -> Dict[str, Any]: """Get form descriptor for a schema (field groups, widgets, category picker).""" + if not name: + name = self._settings.get_schema_name() return self._request( "GET", f"/schemas/{urllib.parse.quote(name, safe='')}/form", ) - def get_property_schema(self, name: str = "kindred-rd") -> Dict[str, Any]: - return self._request( - "GET", - f"/schemas/{urllib.parse.quote(name, safe='')}/properties", - ) + def get_property_schema(self, name: str = "", category: str = "") -> Dict[str, Any]: + if not name: + name = self._settings.get_schema_name() + path = f"/schemas/{urllib.parse.quote(name, safe='')}/properties" + if category: + path += f"?category={urllib.parse.quote(category)}" + return self._request("GET", path) def add_enum_value( self, schema: str, segment: str, code: str, label: str = "" -- 2.49.1