Skip to content

Commit 28b0fff

Browse files
committed
refactor/fix: resolve the RootModel problem
style: fix
1 parent 859f42d commit 28b0fff

33 files changed

+495
-143
lines changed

docs/response_field_names_and_descriptions.json

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@
233233
}
234234
},
235235
"DeleteWorkerResponse": {
236-
"deleted_id_": {
236+
"deleted_id": {
237237
"description": "The ID of the deleted worker.",
238238
"types": [
239239
"str",
@@ -1238,6 +1238,20 @@
12381238
"int",
12391239
"None"
12401240
]
1241+
},
1242+
"controlnet": {
1243+
"description": "If True, this worker supports and allows controlnet requests.",
1244+
"types": [
1245+
"bool",
1246+
"None"
1247+
]
1248+
},
1249+
"sdxl_controlnet": {
1250+
"description": "If True, this worker supports and allows sdxl controlnet requests.",
1251+
"types": [
1252+
"bool",
1253+
"None"
1254+
]
12411255
}
12421256
},
12431257
"TextGenerateAsyncDryRunResponse": {

horde_sdk/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def _dev_env_var_warnings() -> None: # pragma: no cover
7676
from horde_sdk.generic_api.apimodels import (
7777
APIKeyAllowedInRequestMixin,
7878
ContainsMessageResponseMixin,
79-
HordeAPIDataObject,
79+
HordeAPIData,
8080
HordeAPIMessage,
8181
HordeAPIObject,
8282
HordeRequest,
@@ -99,7 +99,7 @@ def _dev_env_var_warnings() -> None: # pragma: no cover
9999
"APIKeyAllowedInRequestMixin",
100100
"HordeRequest",
101101
"ContainsMessageResponseMixin",
102-
"HordeAPIDataObject",
102+
"HordeAPIData",
103103
"HordeAPIMessage",
104104
"HordeAPIObject",
105105
"RequestErrorResponse",

horde_sdk/ai_horde_api/apimodels/_documents.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from horde_sdk.ai_horde_api.endpoints import AI_HORDE_API_ENDPOINT_SUBPATH
88
from horde_sdk.consts import HTTPMethod
99
from horde_sdk.generic_api.apimodels import (
10-
HordeAPIObject,
10+
HordeAPIObjectBaseModel,
1111
HordeResponseBaseModel,
1212
)
1313

@@ -29,7 +29,7 @@ def get_api_model_name(cls) -> str:
2929
return "HordeDocument"
3030

3131

32-
class AIHordeDocumentRequestMixin(HordeAPIObject):
32+
class AIHordeDocumentRequestMixin(HordeAPIObjectBaseModel):
3333
format: DocumentFormat | str = DocumentFormat.html
3434

3535
"""The format of the document to return. Default is markdown."""
@@ -108,7 +108,7 @@ def get_http_method(cls) -> HTTPMethod:
108108
@override
109109
@classmethod
110110
def get_api_endpoint_subpath(cls) -> AI_HORDE_API_ENDPOINT_SUBPATH:
111-
return AI_HORDE_API_ENDPOINT_SUBPATH.vs_documents_terms
111+
return AI_HORDE_API_ENDPOINT_SUBPATH.v2_documents_terms
112112

113113
@override
114114
@classmethod

horde_sdk/ai_horde_api/apimodels/_kudos.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
from horde_sdk.ai_horde_api.apimodels.base import BaseAIHordeRequest
44
from horde_sdk.ai_horde_api.endpoints import AI_HORDE_API_ENDPOINT_SUBPATH
55
from horde_sdk.consts import _ANONYMOUS_MODEL, HTTPMethod
6-
from horde_sdk.generic_api.apimodels import APIKeyAllowedInRequestMixin, HordeResponse
6+
from horde_sdk.generic_api.apimodels import APIKeyAllowedInRequestMixin, HordeResponseBaseModel
77

88

9-
class KudosTransferResponse(HordeResponse):
9+
class KudosTransferResponse(HordeResponseBaseModel):
1010
transferred: float | None = None
1111
"""The amount of Kudos transferred."""
1212

horde_sdk/ai_horde_api/apimodels/_stats.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from horde_sdk.ai_horde_api.consts import MODEL_STATE
1010
from horde_sdk.ai_horde_api.endpoints import AI_HORDE_API_ENDPOINT_SUBPATH
1111
from horde_sdk.consts import HTTPMethod
12-
from horde_sdk.generic_api.apimodels import HordeAPIDataObject, HordeResponseBaseModel
12+
from horde_sdk.generic_api.apimodels import HordeAPIObjectBaseModel, HordeResponseBaseModel
1313
from horde_sdk.generic_api.decoration import Unequatable, Unhashable
1414

1515

@@ -122,7 +122,12 @@ def get_default_success_response_type(cls) -> type[ImageStatsModelsResponse]:
122122
return ImageStatsModelsResponse
123123

124124

125-
class SinglePeriodImgStat(HordeAPIDataObject):
125+
class SinglePeriodImgStat(HordeAPIObjectBaseModel):
126+
"""Represents the stats for a single period of image generation.
127+
128+
v2 API Model: `SinglePeriodImgStat`
129+
"""
130+
126131
images: int | None = Field(
127132
default=None,
128133
)
@@ -140,6 +145,11 @@ def mps(self) -> int | None:
140145

141146
return self.ps // 1_000_000
142147

148+
@override
149+
@classmethod
150+
def get_api_model_name(cls) -> str | None:
151+
return "SinglePeriodImgStat"
152+
143153

144154
class ImageStatsModelsTotalResponse(HordeResponseBaseModel):
145155
"""Represents the data returned from the `/v2/stats/img/totals` endpoint."""
@@ -253,7 +263,12 @@ def get_default_success_response_type(cls) -> type[TextStatsModelResponse]:
253263
return TextStatsModelResponse
254264

255265

256-
class SinglePeriodTxtStat(HordeAPIDataObject):
266+
class SinglePeriodTxtStat(HordeAPIObjectBaseModel):
267+
"""Represents the stats for a single period.
268+
269+
v2 API Model: `SinglePeriodTxtStat`
270+
"""
271+
257272
requests: int | None = Field(
258273
default=None,
259274
)
@@ -263,6 +278,11 @@ class SinglePeriodTxtStat(HordeAPIDataObject):
263278
)
264279
"""The number of tokens generated during this period."""
265280

281+
@override
282+
@classmethod
283+
def get_api_model_name(cls) -> str | None:
284+
return "SinglePeriodTxtStat"
285+
266286

267287
@Unhashable
268288
class TextStatsModelsTotalResponse(HordeResponseBaseModel):

horde_sdk/ai_horde_api/apimodels/_status.py

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from collections.abc import Iterator
22

3-
from pydantic import ConfigDict, Field, RootModel
3+
from pydantic import ConfigDict, Field
44
from typing_extensions import override
55

66
from horde_sdk.ai_horde_api.apimodels.base import BaseAIHordeRequest
@@ -9,9 +9,9 @@
99
from horde_sdk.consts import HTTPMethod
1010
from horde_sdk.generic_api.apimodels import (
1111
ContainsMessageResponseMixin,
12-
HordeAPIObject,
13-
HordeResponse,
12+
HordeAPIObjectBaseModel,
1413
HordeResponseBaseModel,
14+
HordeResponseRootModel,
1515
)
1616
from horde_sdk.generic_api.decoration import Unhashable
1717

@@ -148,7 +148,7 @@ def get_default_success_response_type(cls) -> type[HordePerformanceResponse]:
148148
return HordePerformanceResponse
149149

150150

151-
class Newspiece(HordeAPIObject):
151+
class Newspiece(HordeAPIObjectBaseModel):
152152
date_published: str | None = Field(
153153
default=None,
154154
)
@@ -159,6 +159,18 @@ class Newspiece(HordeAPIObject):
159159
default=None,
160160
)
161161
"""The actual piece of news."""
162+
tags: list[str] | None = Field(
163+
default=None,
164+
)
165+
"""The tags associated with this newspiece."""
166+
title: str | None = Field(
167+
default=None,
168+
)
169+
"""The title of this newspiece."""
170+
more_info_urls: list[str] | None = Field(
171+
default=None,
172+
)
173+
"""The URLs for more information about this newspiece."""
162174

163175
@override
164176
@classmethod
@@ -167,7 +179,7 @@ def get_api_model_name(cls) -> str | None:
167179

168180

169181
@Unhashable
170-
class NewsResponse(HordeResponse, RootModel[list[Newspiece]]):
182+
class NewsResponse(HordeResponseRootModel[list[Newspiece]]):
171183
root: list[Newspiece]
172184
"""The underlying list of newspieces."""
173185

@@ -210,7 +222,7 @@ def get_default_success_response_type(cls) -> type[NewsResponse]:
210222
return NewsResponse
211223

212224

213-
class ActiveModelLite(HordeAPIObject):
225+
class ActiveModelLite(HordeAPIObjectBaseModel):
214226
count: int | None = Field(
215227
default=None,
216228
)
@@ -256,7 +268,7 @@ def get_api_model_name(cls) -> str | None:
256268

257269

258270
@Unhashable
259-
class HordeStatusModelsAllResponse(HordeResponse, RootModel[list[ActiveModel]]):
271+
class HordeStatusModelsAllResponse(HordeResponseRootModel[list[ActiveModel]]):
260272
root: list[ActiveModel]
261273
"""The underlying list of models."""
262274

@@ -325,7 +337,7 @@ def get_query_fields(cls) -> list[str]:
325337

326338

327339
@Unhashable
328-
class HordeStatusModelsSingleResponse(HordeResponse, RootModel[list[ActiveModel]]):
340+
class HordeStatusModelsSingleResponse(HordeResponseRootModel[list[ActiveModel]]):
329341
# This is a list because of an oversight in the structure of the API response. # FIXME
330342

331343
root: list[ActiveModel]
@@ -377,7 +389,7 @@ def get_default_success_response_type(cls) -> type[HordeStatusModelsSingleRespon
377389
return HordeStatusModelsSingleResponse
378390

379391

380-
class HordeModes(HordeAPIObject):
392+
class HordeModes(HordeAPIObjectBaseModel):
381393
maintenance_mode: bool = Field(
382394
default=False,
383395
)

horde_sdk/ai_horde_api/apimodels/_styles.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from pydantic import Field
44
from strenum import StrEnum
55

6-
from horde_sdk.generic_api.apimodels import HordeAPIDataObject
6+
from horde_sdk.generic_api.apimodels import HordeAPIData
77

88

99
class StyleType(StrEnum):
@@ -13,7 +13,10 @@ class StyleType(StrEnum):
1313
text = auto()
1414

1515

16-
class ResponseModelStylesUser(HordeAPIDataObject):
16+
class ResponseModelStylesUser(HordeAPIData):
1717
name: str
18+
"""The name of the style."""
1819
id_: str = Field(alias="id")
20+
"""The ID of the style."""
1921
type_: StyleType = Field(alias="type")
22+
"""The type of the style."""

0 commit comments

Comments
 (0)