|
193 | 193 | (when (seq inner-classes)
|
194 | 194 | (str (str/join "\n\n" inner-classes) "\n\n"))
|
195 | 195 |
|
| 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" |
196 | 203 | "class " class-name' base-class-name ":"
|
197 | 204 | "\n"
|
198 | 205 | properties
|
|
273 | 280 | [{:path (datatypes-file-path)
|
274 | 281 | :content (generate-module
|
275 | 282 | :deps [{:module "__future__" :members ["annotations"]}
|
276 |
| - {:module "typing" :members ["Optional" "List"]}] |
| 283 | + {:module "typing" :members ["Optional" "List"]} |
| 284 | + {:module "dataclasses" :members ["dataclass"]}] |
277 | 285 | :classes
|
278 | 286 | (generate-datatypes-python-classes ir-schemas))}])
|
279 | 287 |
|
280 | 288 | (generate-resource-module [_ ir-schema]
|
281 | 289 | {:path (resource-file-path ir-schema)
|
282 | 290 | :content (generate-module
|
283 |
| - :deps (concat [{:module "typing" :members ["Optional" "List"]}] |
| 291 | + :deps (concat [{:module "typing" :members ["Optional" "List"]} |
| 292 | + {:module "dataclasses" :members ["dataclass"]}] |
284 | 293 | (map (fn [d] {:module "base" :members [d]})
|
285 | 294 | (:deps ir-schema)))
|
286 | 295 | :classes [(generate-class ir-schema
|
|
290 | 299 | (map (fn [ir-schema]
|
291 | 300 | {:path (search-param-filepath ir-schema)
|
292 | 301 | :content (generate-module
|
293 |
| - :deps (cond-> [{:module "typing" :members ["Optional"]}] |
| 302 | + :deps (cond-> [{:module "typing" :members ["Optional"]} |
| 303 | + {:module "dataclasses" :members ["dataclass"]}] |
294 | 304 | (:base ir-schema)
|
295 | 305 | (conj {:module (str "." (format "%sSearchParameters" (:base ir-schema)))
|
296 | 306 | :members [(format "%sSearchParameters" (:base ir-schema))]}))
|
|
306 | 316 | {:path (constraint-file-path schema constraint-name)
|
307 | 317 | :content (generate-module
|
308 | 318 | :deps (concat [{:module "typing" :members ["Optional" "List"]}
|
| 319 | + {:module "dataclasses" :members ["dataclass"]} |
309 | 320 | #_{:module "pydantic" :members ["*"]}]
|
310 | 321 | (map (fn [d] {:module (str "..base." d) :members [d]}) (:deps schema)))
|
311 | 322 | :classes (generate-class (assoc schema :url constraint-name)
|
|
0 commit comments