Skip to content

Commit f0bf016

Browse files
committed
fix: use dataclasses in python
1 parent 157aac8 commit f0bf016

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

src/aidbox_sdk/generator/python.clj

+14-3
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,13 @@
193193
(when (seq inner-classes)
194194
(str (str/join "\n\n" inner-classes) "\n\n"))
195195

196+
;; kw_only restrict to create object like this: Address("a", "b")
197+
;; and you have to use Address(use="a", type="b")
198+
;; this is so dumb.
199+
;; no matter how you sort fields, there's warning
200+
;; https://stackoverflow.com/questions/72472220/dataclass-inheritance-fields-without-default-values-cannot-appear-after-fields
201+
"@dataclass(kw_only=True)"
202+
"\n"
196203
"class " class-name' base-class-name ":"
197204
"\n"
198205
properties
@@ -273,14 +280,16 @@
273280
[{:path (datatypes-file-path)
274281
:content (generate-module
275282
:deps [{:module "__future__" :members ["annotations"]}
276-
{:module "typing" :members ["Optional" "List"]}]
283+
{:module "typing" :members ["Optional" "List"]}
284+
{:module "dataclasses" :members ["dataclass"]}]
277285
:classes
278286
(generate-datatypes-python-classes ir-schemas))}])
279287

280288
(generate-resource-module [_ ir-schema]
281289
{:path (resource-file-path ir-schema)
282290
:content (generate-module
283-
:deps (concat [{:module "typing" :members ["Optional" "List"]}]
291+
:deps (concat [{:module "typing" :members ["Optional" "List"]}
292+
{:module "dataclasses" :members ["dataclass"]}]
284293
(map (fn [d] {:module "base" :members [d]})
285294
(:deps ir-schema)))
286295
:classes [(generate-class ir-schema
@@ -290,7 +299,8 @@
290299
(map (fn [ir-schema]
291300
{:path (search-param-filepath ir-schema)
292301
:content (generate-module
293-
:deps (cond-> [{:module "typing" :members ["Optional"]}]
302+
:deps (cond-> [{:module "typing" :members ["Optional"]}
303+
{:module "dataclasses" :members ["dataclass"]}]
294304
(:base ir-schema)
295305
(conj {:module (str "." (format "%sSearchParameters" (:base ir-schema)))
296306
:members [(format "%sSearchParameters" (:base ir-schema))]}))
@@ -306,6 +316,7 @@
306316
{:path (constraint-file-path schema constraint-name)
307317
:content (generate-module
308318
:deps (concat [{:module "typing" :members ["Optional" "List"]}
319+
{:module "dataclasses" :members ["dataclass"]}
309320
#_{:module "pydantic" :members ["*"]}]
310321
(map (fn [d] {:module (str "..base." d) :members [d]}) (:deps schema)))
311322
:classes (generate-class (assoc schema :url constraint-name)

0 commit comments

Comments
 (0)