diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 825d66f4..a380912d 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,41 +1,41 @@ lockVersion: 2.0.0 id: de81127b-e65c-4970-8911-8f8874953a42 management: - docChecksum: ef42142a2d3c5d69f0d59a720a30a040 + docChecksum: ed398803b3d8c4bc8df468aa65b0c013 docVersion: v1.0.0 - speakeasyVersion: 1.704.0 - generationVersion: 2.806.4 - releaseVersion: 7.0.0 - configChecksum: c47cd34237e0650f73dd086cd31d4f8c + speakeasyVersion: 1.773.1 + generationVersion: 2.897.1 + releaseVersion: 7.1.0 + configChecksum: 7b48617a2680999b919c86b930c6adf9 repoURL: https://github.com/Leonardo-Interactive/leonardo-python-sdk.git repoSubDirectory: . installationURL: https://github.com/Leonardo-Interactive/leonardo-python-sdk.git published: true persistentEdits: - generation_id: 7f365cd2-9210-452e-9524-01ccb8cc5847 - pristine_commit_hash: 7132214fdbef9b9d24ce27abc8b3b9999e51da3e - pristine_tree_hash: 57140aeb4726994ca7ffe232cc859b9a6840e936 + generation_id: d0e402d1-c812-4c98-b42c-0719b5fbbd98 + pristine_commit_hash: 3997f00b21f8ecac020ca2d447e084515f038d44 + pristine_tree_hash: 5440a90010ad36d0145a0c4f95074d6bd8220cd8 features: python: - additionalDependencies: 1.0.0 - constsAndDefaults: 1.0.6 - core: 6.0.2 + additionalDependencies: 1.1.0 + constsAndDefaults: 1.0.7 + core: 6.0.27 defaultEnabledRetries: 0.2.0 deprecations: 3.0.2 devContainers: 3.0.0 - enumUnions: 0.1.0 - envVarSecurityUsage: 0.3.2 + enumUnions: 0.1.1 + envVarSecurityUsage: 0.3.3 flattening: 3.1.1 getRequestBodies: 3.0.0 - globalSecurity: 3.0.4 + globalSecurity: 3.0.7 globalSecurityCallbacks: 1.0.0 globalSecurityFlattening: 1.0.0 - globalServerURLs: 3.2.0 + globalServerURLs: 3.2.1 nullables: 1.0.2 responseFormat: 1.1.0 - retries: 3.0.3 + retries: 3.0.5 sdkHooks: 1.2.1 - unions: 3.1.2 + unions: 3.1.5 trackedFiles: .devcontainer/README.md: id: b170c0f184ac @@ -115,8 +115,8 @@ trackedFiles: pristine_git_object: bf5826c3078fba261901391477b8c4ac5c2921ae docs/models/operations/createimagetovideogenerationmotionstring.md: id: 97f92e8632f0 - last_write_checksum: sha1:2bd0f28217ec6cd5c674281bf80f3fa39cad09c3 - pristine_git_object: 5882d58ee3ed6fbedb84d4b479354e8f031c60ac + last_write_checksum: sha1:cc3511534df006cfb175f1995c155f12c5dfda27 + pristine_git_object: c3b3d03294ef32f8ca4b3a164bf2dd356e24535d docs/models/operations/createimagetovideogenerationrequestbody.md: id: 99a422ba2e2e last_write_checksum: sha1:ef7098fc018f926f8ffe5972d2a2728ea67280f7 @@ -131,8 +131,8 @@ trackedFiles: pristine_git_object: e3a2531bc560397104e9fd2dc0b2625cb242a9ec docs/models/operations/createimagetovideogenerationstring.md: id: a49ee8bd752e - last_write_checksum: sha1:06994890ef0b57887fc5039b1e0290faddb5f7fb - pristine_git_object: cdced64325496c3c34dcd403f51b8e20becaba4f + last_write_checksum: sha1:6ad2e0a7d61a0520f6fc35a572ee16a6ecc7c53f + pristine_git_object: fc4c0f58867050a0df8c27e3e78ecf5345371b25 docs/models/operations/createlcmgenerationrequestbody.md: id: 020b6884ab1d last_write_checksum: sha1:7ba2a5669f4995089f2b3f813b1f4d2c0a199be4 @@ -163,24 +163,12 @@ trackedFiles: pristine_git_object: 36b7b6aa23d66b531ef4fbe87aedd94f02131b57 docs/models/operations/createmodelsdversions.md: id: ac2616288c29 - last_write_checksum: sha1:773a17e4f38a06e1afb8d21d497505dca745a909 - pristine_git_object: 45e7135d6c902d245b250e805af15907c3c7a501 - docs/models/operations/createsvdmotiongenerationrequestbody.md: - id: 4e4529819611 - last_write_checksum: sha1:c8504c5b6e68a069a24839cbbf489ba830a1a185 - pristine_git_object: 286454c7828491e51cc246a224c65fd2390c80e3 - docs/models/operations/createsvdmotiongenerationresponse.md: - id: effe6d539b4a - last_write_checksum: sha1:976b53b62005a70aad354eb252c335ecd8281e39 - pristine_git_object: 3cb5282b2128f7e9f8ea54dd5b5f9506d21ce9c8 - docs/models/operations/createsvdmotiongenerationresponsebody.md: - id: 7534a3173c86 - last_write_checksum: sha1:ea8e6eafb07d88a159f676d94e95aa5c6061dd25 - pristine_git_object: f1d30eb36d957b3f399393d92f3f736fb86540b0 + last_write_checksum: sha1:7c3c2ea86c89d010a271c87632d631d06d73c3e2 + pristine_git_object: 23c5c2dc6d37b45b7732a604f46873c7c56b2233 docs/models/operations/createtexttovideogenerationmotionstring.md: id: 85de2070ea55 - last_write_checksum: sha1:432f8d93c9a14fbd6dbfddb1a34e4a4831b8f97d - pristine_git_object: a6e775f5da649cc878f09613b2a61deacff5d35c + last_write_checksum: sha1:229eeb5ad1c7b4e53ce5f0e0a697ee273e3cd1f6 + pristine_git_object: 1bc2bbea083c846383f16457f8b989e0cbcdb873 docs/models/operations/createtexttovideogenerationmotionvideogenerationoutput.md: id: c5311f88d26e last_write_checksum: sha1:c38f963f05cedf2f90073d51ac4c6bd17deea3c0 @@ -199,20 +187,8 @@ trackedFiles: pristine_git_object: ecfbb51f742db5cb5944308ef3a2322854e493b2 docs/models/operations/createtexttovideogenerationstring.md: id: 01d6fd461bf6 - last_write_checksum: sha1:8a52c89a9c4322889d3b9756ab1b3578af3de48a - pristine_git_object: d095d8c11689d5e215515598382318a77f2828a6 - docs/models/operations/createtexturegenerationrequestbody.md: - id: bf078b04f842 - last_write_checksum: sha1:fb3c686df3ce7435ac10f5f87f01857b01fb533f - pristine_git_object: 36aa9b06dfcef746685de008d615263770fb8687 - docs/models/operations/createtexturegenerationresponse.md: - id: ccc56426b4a2 - last_write_checksum: sha1:a9de00643cf0afed783cc8b3481ca51c53d67a90 - pristine_git_object: 65d2ee0040750f3eeac50743eb61900ea3aec27b - docs/models/operations/createtexturegenerationresponsebody.md: - id: 2af45cbcf0f5 - last_write_checksum: sha1:83709a5c1dd0df1353734945eae786a62e250d8b - pristine_git_object: bcb659234db5c1a7b105511496d418f60ce798e6 + last_write_checksum: sha1:cdae73f59820c289fbce64d6cb0be9d3937d4688 + pristine_git_object: c5f3bba15b447090a012d1d4d68ccc2d4072cba1 docs/models/operations/createuniversalupscalerjobrequestbody.md: id: 15ee8c160d88 last_write_checksum: sha1:bf659d3f7488c75e3dc525072d80003d7f78f10c @@ -265,26 +241,6 @@ trackedFiles: id: 2a595fdf0a43 last_write_checksum: sha1:301572ac1a2d71ad4f4f1b8bbc9b11bf3a34701f pristine_git_object: fe96a9e5dc30ded5c8e31cbb036816e7bb00e6fd - docs/models/operations/createvideoupscalemotionvideogenerationoutput.md: - id: 3eea0abfc2b2 - last_write_checksum: sha1:71c1413d04028fb9ce72083b673b664fec0ac648 - pristine_git_object: 74a4dd9728a0038a8aa515e6b763399f97c7c879 - docs/models/operations/createvideoupscalerequestbody.md: - id: 0401f2dd8ad2 - last_write_checksum: sha1:2c458ee2127c48bc89c9e57dc08ba324fbab9c42 - pristine_git_object: fe3b22d625f464c49cc096b4d2b7d9094e80c656 - docs/models/operations/createvideoupscaleresponse.md: - id: 8097a01e4f44 - last_write_checksum: sha1:07efb7682044e927d25c717f55606e6750486503 - pristine_git_object: 1cd49352f9f974015850e9a46e5d47ca7031f07a - docs/models/operations/createvideoupscaleresponsebody.md: - id: fefbf39d4bd9 - last_write_checksum: sha1:971651e32fe715d2de2b2a51563ff55e8d0bc79f - pristine_git_object: 54bc13bb13de08c139ded8be532468b750dccdb6 - docs/models/operations/createvideoupscalestring.md: - id: 5a5448fdb7d4 - last_write_checksum: sha1:38a153a04921fd4b770621fd56c8a2e9f6b0600c - pristine_git_object: bdf3873b3e065d3e4337cd9b0add1960365d14ce docs/models/operations/custommodels.md: id: c5b5df5909ce last_write_checksum: sha1:bef781cc9cc0e8391d64d94689aba85640a215ea @@ -385,22 +341,18 @@ trackedFiles: id: bc5e8ae89b8f last_write_checksum: sha1:40964f71e4501fde0a16e04cbfa591c35496df74 pristine_git_object: 8ed0e41802c2095c05ff922a9166738235edc63a - docs/models/operations/deletetexturegenerationbyidrequest.md: - id: 5591c580eaea - last_write_checksum: sha1:2085a235d426619bfe22caa2392a50ff6fee2129 - pristine_git_object: b9e1367035e12de4edd5b91cb2a552d22cd7fcad - docs/models/operations/deletetexturegenerationbyidrequestbody.md: - id: 8a66be32450b - last_write_checksum: sha1:ac26d65fd57325a88582bdf485d0f37f020a6433 - pristine_git_object: a9d885e4281163313846aac5a8ebeac1251dd9f6 - docs/models/operations/deletetexturegenerationbyidresponse.md: - id: e3947e33933f - last_write_checksum: sha1:5f4c004e831ca61e4aa209ec46d23f8ee3c940d5 - pristine_git_object: 50d3a166b40ccf588810a0d529f5ed991e92326d - docs/models/operations/deletetexturegenerationbyidresponsebody.md: - id: f90992f00450 - last_write_checksum: sha1:363403f38dd3f2929ebea71a4c1713f733bca600 - pristine_git_object: ea3e69d2b32340893219f096af09e6ed46cf745e + docs/models/operations/deleteuploadedmediabyidrequest.md: + id: 8e3e76ea1356 + last_write_checksum: sha1:01d046727c82f60c2a8f46b6426ebce93115e62d + pristine_git_object: c4221ca0ae7df41726af12771edcad60ed08b4e7 + docs/models/operations/deleteuploadedmediabyidresponse.md: + id: 3c6a95b94dc3 + last_write_checksum: sha1:a89b154c817a5f6be6d791247c41625eef59893f + pristine_git_object: 358bfe57ff02207858056bd2c90f96892264c8cb + docs/models/operations/deleteuploadedmediabyidresponsebody.md: + id: 1bd8e4d05e28 + last_write_checksum: sha1:79dd8c5b5bc2037aca7edea5e5ba9ab4a8acde72 + pristine_git_object: ca075d07a66af79a749acc1a9e767977311eb689 docs/models/operations/edges.md: id: 718239332be3 last_write_checksum: sha1:350a889f9e3ae20a0805dad842cdfdaa67df9543 @@ -705,50 +657,22 @@ trackedFiles: id: c261492ad1d6 last_write_checksum: sha1:20668d790093e8858feb1ec2489da29c000f91f7 pristine_git_object: 294a6fdc5c95afb4eaa1d7542d1f01875808d768 - docs/models/operations/gettexturegenerationbyidmodelassettexturegenerations.md: - id: bcf1850a2016 - last_write_checksum: sha1:1ab42bca66ee0cb5aa2dcf8d4200f7a8a18cd076 - pristine_git_object: 5c6e5f7d79d6a5c10d971a5be73cde0fee86f5d2 - docs/models/operations/gettexturegenerationbyidrequest.md: - id: 14da353e9c38 - last_write_checksum: sha1:19fe7da070dffe39e80debcdb3e2e52f73fb1dba - pristine_git_object: 6387b0183afd15eafe76f6b51add241eea565963 - docs/models/operations/gettexturegenerationbyidrequestbody.md: - id: 6b2450cb0b3d - last_write_checksum: sha1:612d8dbc08fecb54fc71c06919c75b098c4dcef5 - pristine_git_object: 60b6ef4f4dbaa8368392ded4fecc7fe98762636c - docs/models/operations/gettexturegenerationbyidresponse.md: - id: 719d05398578 - last_write_checksum: sha1:87b9bf6beca31697d9fbadae502931f50472d265 - pristine_git_object: 624ca355e8566546aef3bbf6abf4637297dbea7f - docs/models/operations/gettexturegenerationbyidresponsebody.md: - id: 7e3366568770 - last_write_checksum: sha1:b99ede66e6cadb200f551f0395c29428622c2c34 - pristine_git_object: b1313273d69b84d807245e71577a2bccab304844 - docs/models/operations/gettexturegenerationsbymodelidmodelassettexturegenerations.md: - id: 0cc2fa334383 - last_write_checksum: sha1:1c2ec5b3accd5b5f83b25fec4c870d62395a0b80 - pristine_git_object: 399bce6817bc2eea7b93627f7447c5b40051ede4 - docs/models/operations/gettexturegenerationsbymodelidmodelassettextureimages.md: - id: 194cfbac6cc7 - last_write_checksum: sha1:2c64473cd95f461ee3ca43f77e7396523f2381e1 - pristine_git_object: df9d66b3fd51e938d159c76d8379be58d3ca2d17 - docs/models/operations/gettexturegenerationsbymodelidrequest.md: - id: f356f0090213 - last_write_checksum: sha1:440a5f9589a4d1af282f25930019d710419eba15 - pristine_git_object: 7e9613856ac124c13d3d85e5a50ff560b33eae2a - docs/models/operations/gettexturegenerationsbymodelidrequestbody.md: - id: b202692b9e52 - last_write_checksum: sha1:17eb7c6ecc8cd32835b2e6187d8fae45d985f086 - pristine_git_object: 2d9ffcabb94b5d178c044156fb216392d28c0b25 - docs/models/operations/gettexturegenerationsbymodelidresponse.md: - id: 91e3bcf4820d - last_write_checksum: sha1:cf9f620034113382adbb072be242acb2594f181a - pristine_git_object: 3a7930c2afb68ce9010129e11dec71488aa3bebf - docs/models/operations/gettexturegenerationsbymodelidresponsebody.md: - id: da1570ddf791 - last_write_checksum: sha1:0dd18dc9dc06d39567eb68ef32c38485dbd40097 - pristine_git_object: b6b2593212fec46fac8c6f1388cbac50ff329d78 + docs/models/operations/getuploadedmediabyidrequest.md: + id: 6a26f81c5d04 + last_write_checksum: sha1:fd26b65de313be69666b7e58f8aa511f82183be7 + pristine_git_object: 2abb34f65ebc35729c6414cebf5af1ec37c07041 + docs/models/operations/getuploadedmediabyidresponse.md: + id: b9ecb4412294 + last_write_checksum: sha1:a557bb1c4e156ec844835584d0d7f28e641d0c70 + pristine_git_object: ffa3421a39beedd32ccb6440cb1a675300a8f5a4 + docs/models/operations/getuploadedmediabyidresponsebody.md: + id: b84fbd91b3a9 + last_write_checksum: sha1:5e7f47f5402944441a2c7172070e73f5b822f2be + pristine_git_object: 3ee3f7b4f64024afd16810ffa6800bfc9590677f + docs/models/operations/getuploadedmediabyiduploadedmedia.md: + id: da0a4a3fdcc6 + last_write_checksum: sha1:3ff6fab62e894dbe29e11ab75af52218f0456249 + pristine_git_object: 0d8a324b967a89d2375e05e8d89525eff0b98654 docs/models/operations/getuserselfresponse.md: id: af8e4f436502 last_write_checksum: sha1:cb702201e99444b9fa531947573ecee1c3971222 @@ -771,8 +695,8 @@ trackedFiles: pristine_git_object: 31a7dd473ab97ae3a2577ade8dc8736bb132a842 docs/models/operations/imagetype.md: id: c995e88b2b4a - last_write_checksum: sha1:d0e4dad0280c3861f4bec5f70188e9383881212e - pristine_git_object: f3ff2bddd998f53660a9c4b0690dc1d87c606ae4 + last_write_checksum: sha1:6787686972c3540c1cb3fc7c56dc050e7617b0cd + pristine_git_object: 1302b18354dc530fa39c188338beaa2f25431a27 docs/models/operations/initimages.md: id: 6b87b56b7ad6 last_write_checksum: sha1:74756e787f420716720753530b59a239b5473eea @@ -829,26 +753,18 @@ trackedFiles: id: 26f16bace48c last_write_checksum: sha1:7f29a6815782e5ec772b06e3443ef8ea90162c99 pristine_git_object: 6f3f5768f86a2df14403858a5014810811fe08cb + docs/models/operations/mediauploadoutput.md: + id: 9ddc86e51812 + last_write_checksum: sha1:686b83d435ef425662f9ab0111e93844cd318318 + pristine_git_object: 0bd0815b14504a049d2021293c88e94417518bbd docs/models/operations/modelassets.md: id: 97e0f8165f73 last_write_checksum: sha1:a7b5d6899e18a28bedb19688ce6bcb2b32eed0a5 pristine_git_object: 4005c69bc0278ffa8121ba149e793e812dca9865 - docs/models/operations/modelassettexturegenerations.md: - id: 050680d6c461 - last_write_checksum: sha1:5ca1379e53b086c4c2a6e4fdb8582a20b5246604 - pristine_git_object: 1655c0c3a3fba3365eb35dcf7719c3a9d14ab159 - docs/models/operations/modelassettextureimages.md: - id: a14500dae268 - last_write_checksum: sha1:c732ebb21581c8c0b7f29e75c8961f001fa5843f - pristine_git_object: 385e2563ffaa30eab0d36c1c1f4b8b48dce8ddba docs/models/operations/modelassetuploadoutput.md: id: c26d8607328e last_write_checksum: sha1:7d0378af36e6f0809dbed37f4c304aaa2f34d37a pristine_git_object: 38195a182b3940d405cb3d682756cb762784d337 - docs/models/operations/motionsvdgenerationoutput.md: - id: 4bb44f8ce431 - last_write_checksum: sha1:20a365777fc8af33a45abdf0dbd1b58fe35ca1c7 - pristine_git_object: 3cec61845e0a6df5b5c60e7650eb2afe009c0085 docs/models/operations/motionvideogenerationoutput.md: id: 3098e5febdd8 last_write_checksum: sha1:86457cd3b4774f4d82dc24db36ab61533de8b352 @@ -911,8 +827,8 @@ trackedFiles: pristine_git_object: f06b5faa7a14fcf4c8b6e6a310825691783f9ef7 docs/models/operations/platforms.md: id: 0fa6e9d785e5 - last_write_checksum: sha1:bf3a38139c26480da4ef6918bd2d42d4e87c03cb - pristine_git_object: 24a1afb92d0e3ee3d3890a7001685351176c34d9 + last_write_checksum: sha1:6c8af3d3e49494a3a2ff241eb83930b388db53f4 + pristine_git_object: 5d0a7d1dcdc09fa32067929e00e05f3755a051ad docs/models/operations/pricingcalculatorobject.md: id: cec14cc40c71 last_write_checksum: sha1:18286c5f17a235f925cf89e20c563c80b150d18f @@ -971,8 +887,8 @@ trackedFiles: pristine_git_object: e1dba6071f11cae5e670cf42fd279eb69317f3cc docs/models/operations/pricingcalculatorstring.md: id: 212f6b2a237e - last_write_checksum: sha1:7b7156ea97ecfb3054c9314f540ef0dfba836bb8 - pristine_git_object: 205ccc6b0a261c2b2aa2f6ad101e9079f622c926 + last_write_checksum: sha1:337bbadb6b98d43e2c64a14c06e9c4824a66040f + pristine_git_object: cc2e6a443582158248ae8ab573112034ae49f215 docs/models/operations/promptgenerationoutput.md: id: 481d569620e0 last_write_checksum: sha1:1b4c634b10b78439b00d932d911e01b29509a723 @@ -1019,28 +935,24 @@ trackedFiles: pristine_git_object: 7916d78313ca73278dec59a36c6d5f9cbe95dbd8 docs/models/operations/sdversion.md: id: aeedac83285a - last_write_checksum: sha1:ac2cdb5d155ec84c80eda4402d02f239e01a4f82 - pristine_git_object: 01967eb9080a5a5804f349039457e913816ea7f3 + last_write_checksum: sha1:9fef09453229d7b90a7c468628563efd7b459511 + pristine_git_object: a20ff2da2b2b462c36f99b559c5a6ec500ffa0dd docs/models/operations/sdversions.md: id: 00e5f434aceb - last_write_checksum: sha1:bf04a2ed9b5fe910b616adbaf67d06e412664363 - pristine_git_object: 244d34c7dcd2a0d804267faf8d7466f85903e0f8 + last_write_checksum: sha1:f38041bd236d3d6ca4e3cd1d51e6dcc51eba3492 + pristine_git_object: 5fe06319da5fb83878dcaf98625fff82ec234bda docs/models/operations/string.md: id: 478acf9bd0dd - last_write_checksum: sha1:e52af60fe991920b4321f669e8448781b8c70f5a - pristine_git_object: 71741b580a43e9cf7be074030e69989f17c100ec + last_write_checksum: sha1:70dd4d58fb900070b65d2dd5d0d495738858910e + pristine_git_object: c4aecf7eea74ccdceb5c51a3fbe8a6f038f88cb8 docs/models/operations/successresponse.md: id: e3d73cad19f5 last_write_checksum: sha1:1bf19c875e4c4787e1bac6eccf863c5592dc2848 pristine_git_object: 3bfc3b57ea1c908bcc604e1d8af58a3896bc6724 - docs/models/operations/texturegenerationjoboutput.md: - id: fddbefe2a2fb - last_write_checksum: sha1:3415c6ff5e2d50a46528f99112c650181d33929c - pristine_git_object: 099b953c773b0c63318ec8fbfca5bec40f2eab68 docs/models/operations/transparencytype.md: id: 9f06a513bbd4 - last_write_checksum: sha1:f80034144ed313cfdbab9850eb1baa11777495ef - pristine_git_object: c97e249d9dc466c1555e36abc6841d75185d06ec + last_write_checksum: sha1:b82bac42f1d27c4bd3b3a4bc82fe463b6317452f + pristine_git_object: ce7b06779e92479468de57556687ae6f01a6c759 docs/models/operations/universalupscaleroutput.md: id: 0145b7d48e1b last_write_checksum: sha1:96c70e34a171cca30fbbea33b9bb20ff2e0f2676 @@ -1089,6 +1001,10 @@ trackedFiles: id: 725910dd0d89 last_write_checksum: sha1:6d8f2e431dcff4adbf047c04b8cd36f6c318aecb pristine_git_object: ca57efe4e7fb0dcfde7e9f05552e78144a1c30e6 + docs/models/operations/uploadedmedia.md: + id: 8cce72474cee + last_write_checksum: sha1:893560e6064c4da8a0255273cfbcc2602e969374 + pristine_git_object: 84ac6e4ffc50478ff0f20eebed4560b392bfc1f6 docs/models/operations/uploadinitimagerequestbody.md: id: cf6fe88a65dc last_write_checksum: sha1:fdca2acefd0f0c6ceebce8930eed611a005e9fb0 @@ -1101,6 +1017,18 @@ trackedFiles: id: a4eb71042889 last_write_checksum: sha1:1bc6fd2258330d34ad9467058774989bead1d1ed pristine_git_object: 1ed8141682e3b64b9dcb7b67f10cdc62b3a42326 + docs/models/operations/uploadmediarequestbody.md: + id: 10df0af59c4f + last_write_checksum: sha1:5822f01fc27747c44bb5ac0b02bc75d582afd8f1 + pristine_git_object: 846114953ffd2de19782dca15b0badd8d1f207fc + docs/models/operations/uploadmediaresponse.md: + id: 0a41087c75b4 + last_write_checksum: sha1:ea3900606f0a8becdcbd29b7de72d1426b916304 + pristine_git_object: c6397337fffa3a9a2cb9a4fe488d305c09d8324c + docs/models/operations/uploadmediaresponsebody.md: + id: bbad0518978f + last_write_checksum: sha1:cde87d6695c0bd5868e29837768be0e8deb5b344 + pristine_git_object: b03478c115f88dea8209852f57eccdc2e0ae00eb docs/models/operations/uploadmodelassetrequestbody.md: id: eac12cb04473 last_write_checksum: sha1:28c7c0802af014cbcc87af5a5498ede0274e6beb @@ -1131,8 +1059,8 @@ trackedFiles: pristine_git_object: 17ccaf69d92eb0c7c4ee1d51fd7dd97c98819f65 docs/models/shared/blueprint.md: id: 12c5441c156e - last_write_checksum: sha1:99caa62720d040687b33d6a192ab9a9acb47e3c1 - pristine_git_object: 4396fcd5bec20d387d9605351140e8aaa0fca824 + last_write_checksum: sha1:759ca34a796c5a241e1e601fa83634db44b2c481 + pristine_git_object: d55e7af59261c502911381037c8acf743e5dd2f8 docs/models/shared/blueprintexecution.md: id: 5843259523cb last_write_checksum: sha1:507a0678f1064f2fd96299539add3a3862d98739 @@ -1151,12 +1079,12 @@ trackedFiles: pristine_git_object: cb4960607bbcc5fb4489a4fab952f67fee7b6138 docs/models/shared/blueprintexecutiongenerationstatus.md: id: acd008e1bb7a - last_write_checksum: sha1:8bd8ca98dfc89c25c7f77307e9ac0d14850cd54b - pristine_git_object: abe611517896b15121362bed7efd8e0587c913c1 + last_write_checksum: sha1:6f5d0a9da466ed5a9f92c2c167e85889c5048832 + pristine_git_object: 6f0e21bf88921104ee685e0bda1de3448ac1b4be docs/models/shared/blueprintexecutionstatus.md: id: d41a17730664 - last_write_checksum: sha1:76c2ab8c70ea7f1ab2fc7175ec1e1bf5577cfa66 - pristine_git_object: f041b6c39a758097765f67b5ea5dfb5ab86a4760 + last_write_checksum: sha1:894400b5a68276fbc5065a9573f2dd4b92a7d0e7 + pristine_git_object: c9b5500354fb968330c3594a4355f8c4a06a9587 docs/models/shared/blueprintversion.md: id: 5f627d0eca45 last_write_checksum: sha1:a440d9efce164b24911dddcf72a0bf6e8b212481 @@ -1167,24 +1095,24 @@ trackedFiles: pristine_git_object: c5a6a759fe4eac8acc201b52f369910bf55c3173 docs/models/shared/canvasrequesttype.md: id: 2a460c5ae2a0 - last_write_checksum: sha1:fe71f3336eef16f13f523407309301a2806c4589 - pristine_git_object: 6bb36e7aa4c7547ebaf2c5f3cc8c4e19d1a0a0f0 + last_write_checksum: sha1:f1ab39d2bbf9e679acd29aa69987aa864125720f + pristine_git_object: 238f523b60de3ab8615729336c7b5ebad34c9535 docs/models/shared/controlnetinput.md: id: 3ab2237abd0c last_write_checksum: sha1:f1d98751811da6c40998a2c096b94871a8f06f81 pristine_git_object: 382972236815675bd9068652901154a299d5b0cc docs/models/shared/controlnettype.md: id: ad0722a2cb8a - last_write_checksum: sha1:ae8c5b8692782725e9d2afa8559422552d83e65f - pristine_git_object: 7dc0dc383b2e302962696b80e7063affd56abe58 + last_write_checksum: sha1:a64caf42954db3d6d8524dd83813ad9ee37fc83b + pristine_git_object: 85ad012ca8ad6331f0ba4065dc4ec30afc3b95e4 docs/models/shared/cost.md: id: 7b6e11a75d45 last_write_checksum: sha1:098370437e6eb75456b7617ea4cc69ec57d9ffc5 pristine_git_object: d099fccd690e55dc645cfdda7bca999eb2f23959 docs/models/shared/custommodeltype.md: id: 0879b59a214a - last_write_checksum: sha1:34ab7c7a3f4d7f37e9663af3d3d96a304467fab2 - pristine_git_object: 005d047c174f662a094ab65138ab189bc20df4fc + last_write_checksum: sha1:b8161df09b40d9b108efcfc4b75774308a229d8e + pristine_git_object: fde14e5914bc551df05d28751186e4708934d3fb docs/models/shared/edges.md: id: e9f05f3aa964 last_write_checksum: sha1:58c71f15cf2073dd9d8cbbe37ddd248865f4db2b @@ -1203,36 +1131,32 @@ trackedFiles: pristine_git_object: 8536e5d5a4ac6c7d0e9ad7b3af2bb4896f21c1c5 docs/models/shared/initimagetype.md: id: 180ec8722821 - last_write_checksum: sha1:9dbbbf0886a747e30885c0378c032ebbde242522 - pristine_git_object: 37601610d0c1c751969c6341a1d94593af702fbb + last_write_checksum: sha1:369e5eca7d82037241ca4950ed3e7d1192fa4205 + pristine_git_object: 8fb009c3fb3cea17d5afb17f60bd398ffc666477 docs/models/shared/inputs.md: id: 618a7a536c4a last_write_checksum: sha1:628a31a470dbdb3a174c1ed2a3f7a4b70ef4d0f8 pristine_git_object: 8f586a7a649385398bec58ae23f9f030d88e8e80 docs/models/shared/jobstatus.md: id: 94fff3c6f31a - last_write_checksum: sha1:568a2c67d1c26bf89ce6be3f06f079cc3830b7a2 - pristine_git_object: 5248e7fbd11e3d440b0110f6f632966401069f0c + last_write_checksum: sha1:adceb919ca8e4cca8be2c0f32488302a96a149c0 + pristine_git_object: 15a8580adc3f3749e7646870056824167d887aea docs/models/shared/lcmgenerationstyle.md: id: 23ddfba7fb2e - last_write_checksum: sha1:6327d5b24c4fe87640047a10036cbb353951b424 - pristine_git_object: 93a8d52dd873f28e7980ecd2562257cdcccc2f2e + last_write_checksum: sha1:70800b73bb0e18edf9ff2292ff0b249d7925d7a9 + pristine_git_object: de10d0a6d44ce039fed309c9163c79f192ba6499 docs/models/shared/locations.md: id: f372ac89f99a last_write_checksum: sha1:1bc6dd76cf70cf2c95b616d638b93068a5381761 pristine_git_object: f279cdfbfdd60c7b1d6e5f1e5fc187fbc3ce64fd - docs/models/shared/modelassettexturetypes.md: - id: 38c8719bcf7d - last_write_checksum: sha1:bef02e1517157f256adbbc95e2416d9e66d68ce5 - pristine_git_object: e21fb57842de3db339c32125789d59dd229fb58b docs/models/shared/motionresolution.md: id: 40ab96891e23 - last_write_checksum: sha1:bcfca9505b6610ab4362fe6ab0a51331fbbcc0f6 - pristine_git_object: 17f9b578ec9247458a799be223f80e063cf31a63 + last_write_checksum: sha1:b1f01e54a1999c490012afecba2c2b71ddf0c2bc + pristine_git_object: 681778e9b07e6dfa27915978bd368a86f93b0cc9 docs/models/shared/motionvariationtype.md: id: 7485fa1a8a61 - last_write_checksum: sha1:bf43fe1a54bce869f1756a4b9468d226d211b9c4 - pristine_git_object: 10aefe3f948be7e170fd513a6b936d437aa48a7a + last_write_checksum: sha1:accafb41e9f7bac20117fc8b913d403fd6bf718b + pristine_git_object: 0f6f080019203833cf2825d0aeac9ca4a18f81a8 docs/models/shared/node.md: id: ff15387c5ba0 last_write_checksum: sha1:8875872d60d0ab8ef7f5357b2f14c5b8682867f2 @@ -1251,8 +1175,8 @@ trackedFiles: pristine_git_object: fcfccd3c706f1241c37c104cd284cc400a0c1e53 docs/models/shared/pricingcalculatorservices.md: id: 42149c474c7a - last_write_checksum: sha1:0af74b7f4be4b0b361f4988c2d5b5bdcad096c24 - pristine_git_object: b32162609a5dc00f55237da851956d5420d82c36 + last_write_checksum: sha1:bf7f874de8b088778691567d07f38c0c2f722a6e + pristine_git_object: c6b70f3c20fd93b7178df51755d8ee69764c732b docs/models/shared/promptmoderationfailurereason.md: id: 5061a0ce3927 last_write_checksum: sha1:d954a60c4eee3c426e4de330ad789fcfd8886e91 @@ -1263,32 +1187,32 @@ trackedFiles: pristine_git_object: 04468aa04bb22da47dffd34577afaa99ebb77a98 docs/models/shared/sdgenerationschedulers.md: id: 948a29617535 - last_write_checksum: sha1:f7e8fdaf79f9d19dc234caba6e68b507e34b4966 - pristine_git_object: 4606699fb68d174426179c0e7f12a7c6eff143bf + last_write_checksum: sha1:da361fd4b00a9e034f09adbc34555d788c77fb7f + pristine_git_object: fcdae06bb45c31f2f15f656214ab902413b9c4be docs/models/shared/sdgenerationstyle.md: id: 37329a656c59 - last_write_checksum: sha1:69e6c94f11ccbac0a2f8c26a6caf64c6620b436e - pristine_git_object: 6dbe8407abd3cbd3227a362d1258b205c349c23d + last_write_checksum: sha1:a2033599fc9ee9fd2072b3c4ed617bf6e45b7975 + pristine_git_object: 7f7a5518996562b12ef002dbee7ebb7c6e34ea75 docs/models/shared/sdversions.md: id: 1da14c81e069 - last_write_checksum: sha1:67151faeca53e03a08ecb3738aed2108b6dcfda9 - pristine_git_object: 672cf926e9bdd11b15097407d65a88833fcc0595 + last_write_checksum: sha1:9b7d72be7ffeae54168c50d69ec7e57b048702d0 + pristine_git_object: 1070ba0f1622f1123b8eeb0f0f92dfdec1b7932f docs/models/shared/security.md: id: 3035c5c37727 last_write_checksum: sha1:745572e344516e941da7093c8bdf34061fa9e292 pristine_git_object: f218fa1efc4f957fa52215140d475e7b2758128a docs/models/shared/settingname.md: id: f7acb5303bf4 - last_write_checksum: sha1:382c5fbd1a33414fc3b6d0859be4751ea8b8ae63 - pristine_git_object: 6580fd61e746e9f81ffdc391094ec76ade31bf08 + last_write_checksum: sha1:80d7a56b8dbea8d67caf33eb5ec229be3d4d4127 + pristine_git_object: 273ddb4b8afe01ffdbbbca8d45ce9ced42380ee6 docs/models/shared/strength.md: id: f7e396f283f4 - last_write_checksum: sha1:caaf3906ec1657508cdb63ae22f836824a56ebdf - pristine_git_object: ec58567f5f63b2265b1dee6f6058050565ca9030 + last_write_checksum: sha1:79e14a1b92fa7a1082f1a0443bcec7c0bad243af + pristine_git_object: a579a22a81408b700952072ab36e5c60fccf15ea docs/models/shared/strengthtype.md: id: ddf9d11190a3 - last_write_checksum: sha1:40db9250b1168e32694e93b8cce7a18189ac72e4 - pristine_git_object: 5a9d1283a510adfef736f8f2ffa7583b3adb8da8 + last_write_checksum: sha1:cc7fa09f8078d496c482a9e253d8bc8e59ecc606 + pristine_git_object: 0e1981b06e45bebe7ded15f079144c50d9e70781 docs/models/shared/textvariable.md: id: 5cff8e931cae last_write_checksum: sha1:922f05d5f69e04533c4b15f009ce89e2e2a22ee9 @@ -1299,24 +1223,24 @@ trackedFiles: pristine_git_object: d3dd1acb41e8d5ca6ab3cc805d575cdce39ff3c3 docs/models/shared/type.md: id: 0d8d18a9f10d - last_write_checksum: sha1:dd3a331196f653ee9dce707253587d4bb55d3fce - pristine_git_object: 3e8992f33b1dd6bdb1894482593491d1c330a44b + last_write_checksum: sha1:ab7594b61f43b2652f6429e0f8d4b844eb3f7139 + pristine_git_object: e55fd7c0bc73073abc243abcd70f4c72a9d01141 docs/models/shared/uimetadata.md: id: 1a1515398526 last_write_checksum: sha1:c3a6447b92209771e002014117d36b66d6d499ba pristine_git_object: bff1fc38744af02e953f5928cecf4c076dd6e3ba docs/models/shared/unit.md: id: 689fcb702678 - last_write_checksum: sha1:1f97cb47239ccbdfa5ef02a9bd3dab92ba70031e - pristine_git_object: 9918b919829f9fb60dc29bf34171b7a5d07a08ff + last_write_checksum: sha1:00bdedae199d5d22fbef9b795b16e92b1af1b4eb + pristine_git_object: 0288134350584fab4f12cf14b88406efa39870a2 docs/models/shared/universalupscalerstyle.md: id: 64703774e6e9 - last_write_checksum: sha1:cd8b819f00b7533af1764d85641edd962cb78cc8 - pristine_git_object: 2c1ca515ef026dc409dea8e8f2271e2a578ed31b + last_write_checksum: sha1:95ea0ac802f049bbf3c5698f2e6c5e8f06edb3e4 + pristine_git_object: 83a3ccaad329eedad59597c6d1f944674293b944 docs/models/shared/universalupscalerultrastyle.md: id: 125efad3822d - last_write_checksum: sha1:76953522880f19783e175de0762437c48b3cd830 - pristine_git_object: 1c7b0c6ce0a0b6bd2e2899f76ca254d2a0d381df + last_write_checksum: sha1:a19e10cf673b25dbdaa62f002396ae01c3877f8d + pristine_git_object: 2487e4d0532f49280d82f3345a9de9f47cb5cbc2 docs/models/shared/userelementsinput.md: id: 095d08ef6e26 last_write_checksum: sha1:eb72847debff8ac447c8cbd3642b32144f609ceb @@ -1327,16 +1251,16 @@ trackedFiles: pristine_git_object: 280dbea95c2238777d051a95d56617f8b5d93c16 docs/models/shared/variationtype.md: id: 4554fb2c1aa7 - last_write_checksum: sha1:7343f4a03b10ff1896907f58a1abd0ff8d0ff383 - pristine_git_object: fe68789da87168633ac0f9ffcace586dc1247584 + last_write_checksum: sha1:dd99368a9a67460f1766a0473eef6a37d955e729 + pristine_git_object: c999147b50a294e21b99c38a4b50942082e64d50 docs/models/utils/retryconfig.md: id: 4343ac43161c last_write_checksum: sha1:562c0f21e308ad10c27f85f75704c15592c6929d pristine_git_object: 69dd549ec7f5f885101d08dd502e25748183aebf docs/sdks/blueprints/README.md: id: 43596dbb889b - last_write_checksum: sha1:33ede99c3048fd808539fa20b5c59ce5af414dfa - pristine_git_object: 39e5ee07ecec02aae4c3884f3945d5aa2bb68402 + last_write_checksum: sha1:300c70502d6be1cb56f90537852dfb2472ab97fe + pristine_git_object: e877d06f3fe6e499896826c63e88381a0af2d09b docs/sdks/dataset/README.md: id: 500cff374f02 last_write_checksum: sha1:533c43a906708f3164a2ea6f0c35fc85e524d5cb @@ -1353,14 +1277,18 @@ trackedFiles: id: d50293f4578c last_write_checksum: sha1:d1dec9d4620b4bf2a57d613380fdda01de09fe52 pristine_git_object: d338c7f6ef5d4479f0ce33ecc4f278853606d79c + docs/sdks/media/README.md: + id: 23e985927992 + last_write_checksum: sha1:3d703b0bb834ece8e7f897af3813bef65572c0c5 + pristine_git_object: 8c9ee73e9251683a434598b2abb81af39bc3f9a1 docs/sdks/models/README.md: id: b35bdf4bc7ed last_write_checksum: sha1:89d21183fa28534d7ad2e62a4aecc84bffb1dbe7 pristine_git_object: 6fec09deb37e975c6b5204ff46f0294194841587 docs/sdks/motion/README.md: id: 22bfbae59b21 - last_write_checksum: sha1:a6c701f789ab2452d69a12c38db39a3b29b06f31 - pristine_git_object: 55a0eb684aa3fb11b1138c4eb46f128719924f20 + last_write_checksum: sha1:1bc368836ce45cde905e699a69c80fd16c47b022 + pristine_git_object: ca217e1c2d98db8054285a8b1912f4be58822edb docs/sdks/pricingcalculator/README.md: id: 8cd7e7bc4fee last_write_checksum: sha1:55350453daa42d9d2390a2f67589ac992bfab719 @@ -1373,10 +1301,6 @@ trackedFiles: id: fc1aad77933c last_write_checksum: sha1:237bb60265ca6fe7fa56e153e9af6ab9dec569c0 pristine_git_object: aa5688bb84018be495cd89439970fe85e9837a66 - docs/sdks/texture/README.md: - id: b92da8e9b53d - last_write_checksum: sha1:243ddb1d6136089972a34283c8161f8e6d2f07af - pristine_git_object: 9222352caf2ac43e67882d5cc1f61d356aeda440 docs/sdks/threedmodelassets/README.md: id: 39d957ae7651 last_write_checksum: sha1:83f6052f1711b932ce12d24507b5d1dde05763eb @@ -1399,12 +1323,12 @@ trackedFiles: pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 pylintrc: id: 7ce8b9f946e6 - last_write_checksum: sha1:0e10638ea7d22a917f716f609a4c05ca0cd18e91 - pristine_git_object: ba6a998b82e6e5fce3f37f2c3a73b345395d952c + last_write_checksum: sha1:405a401fef1f2af6000d945591041683832b3132 + pristine_git_object: cb9c15d314c1930557401074329ed7a737147919 pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:5fe46c13de89e7bd8a6f5988eb4dd88745b50184 - pristine_git_object: 71b8ee18e8a908ad2afbcdb9badb758aa15c0c1d + last_write_checksum: sha1:23f112670f8e57dcaae0ca31b7e5a93f3a69993a + pristine_git_object: 570beb96afb0ea95c681b610a30b17725cd4a3e0 scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:ff1b921b167a166b622adb1b6c2386392d8b3b95 @@ -1431,44 +1355,48 @@ trackedFiles: pristine_git_object: 557948ef601c69042c2bbb6e7b3f478352a7b6c5 src/leonardo_ai_sdk/_version.py: id: c3aea14ac140 - last_write_checksum: sha1:8da8610ca784424495bc050fd67e538ffff71f31 - pristine_git_object: 4cf372901f154a407e4cd176e9719065945f68f1 + last_write_checksum: sha1:b53b3b0432616b6f8460234fc913a1abf02927a3 + pristine_git_object: 09a8ea5c46e12057a188cb4deb236690782bc3de src/leonardo_ai_sdk/basesdk.py: id: 19c98acc9d1a - last_write_checksum: sha1:3454509613c8bff230a4dc3f8bd817f0d7792d1d - pristine_git_object: f7218a4fc5f278c6594107d14c2230812c5b0d16 + last_write_checksum: sha1:a4a33c13d55758401d0b641a4ff1d903ffa7118f + pristine_git_object: d2ff83d79194442fc5a2582234fa9a39b959155c src/leonardo_ai_sdk/blueprints.py: id: c9f623365b1c - last_write_checksum: sha1:899ce56ff5bc82c61a3a9a3628e55e21d0c16507 - pristine_git_object: d0a323a85d12c2e2b60d696ed0b7221c581666d0 + last_write_checksum: sha1:bd7b8d27492acefdea2e9cfaf61a2f28f9b44d4a + pristine_git_object: 9fee9f4d983851d77d45d544c20e7fc98b07ec81 src/leonardo_ai_sdk/dataset.py: id: edb510b284be - last_write_checksum: sha1:62178ef26603905441abce01c6f71dc0b2d89a7c - pristine_git_object: 8c4aa417e22300ff8321c5a6462290542309dab4 + last_write_checksum: sha1:9f8cc70f78fe6a814cfda1549e1b6543c3ba8992 + pristine_git_object: 6cbef2712a30beb9baac8fef60ff62d33e77f38a src/leonardo_ai_sdk/elements.py: id: 49aee7ce93c0 - last_write_checksum: sha1:f46dc4c865c0252b536219ef603af2bcb895c149 - pristine_git_object: 902c57dd6c08cd39df186ebfc8e43cf820d1ffd8 + last_write_checksum: sha1:511a602d77499b29f5d2c1cd19530afff4c501ad + pristine_git_object: 23248aca0b2b653851c13981cea3a2a04a1e9311 src/leonardo_ai_sdk/httpclient.py: id: 036f31d2a484 last_write_checksum: sha1:5e55338d6ee9f01ab648cad4380201a8a3da7dd7 pristine_git_object: 89560b566073785535643e694c112bedbd3db13d src/leonardo_ai_sdk/image.py: id: e26b4fcf50a1 - last_write_checksum: sha1:bf536ad10887592b6313976a778ebd9759df1da7 - pristine_git_object: f6bd60823d9bb54459cd41bbc215de70fe657476 + last_write_checksum: sha1:ec635c120b5923439e01371c9300688eb5c46ff4 + pristine_git_object: 0c38bc3638c2e269cfb91635398f00c2ed861e4a src/leonardo_ai_sdk/init_images.py: id: 0b7a85ead201 - last_write_checksum: sha1:4f4f323f1e89947f5a6ab027883ec3c4742a6965 - pristine_git_object: f209897ef13483abf1dace56188db9d6f15cf36b + last_write_checksum: sha1:6de4080b2005c300de3fbcb91abe823d6ee508fe + pristine_git_object: 37058ad0b2fed4b7e242f89c47a256c0e9b20644 + src/leonardo_ai_sdk/media.py: + id: 193cc13b5edc + last_write_checksum: sha1:9590cead7ac39d2f8faa0c83f7d3797dde1c775d + pristine_git_object: 25b816a0984d07b42c4865c0b0b172f6fc6f0fa9 src/leonardo_ai_sdk/models/__init__.py: id: d274593c4667 - last_write_checksum: sha1:fd931d5c2d58b5f9189cc897e038d6d78e362dab - pristine_git_object: 726fc5eb391035492b4bea383d91cb7e23da04d3 + last_write_checksum: sha1:1fef24e0c9056c331321ae52e991c5c7c8c42250 + pristine_git_object: 0d6c4dc0095f28ff944d184bd16446fefe608fd7 src/leonardo_ai_sdk/models/errors/__init__.py: id: a4f2aed4d1c8 - last_write_checksum: sha1:3df9084302f9234900c910fb1a1443f4916ba0e2 - pristine_git_object: 52b2e0c8b50f20417ea27199c48704e9aaf77c0f + last_write_checksum: sha1:d4a80297cc898d06f088de0dcd7b3101af6ca27d + pristine_git_object: 473598e3143fa99f7860771b47f3873a9876b819 src/leonardo_ai_sdk/models/errors/executeblueprint.py: id: 22ecb6873d79 last_write_checksum: sha1:cb957ee7c1704752407cc880e35237ed2376a5e5 @@ -1491,256 +1419,244 @@ trackedFiles: pristine_git_object: 9846506f0df113afeb9cf9351e9822671ef4796d src/leonardo_ai_sdk/models/operations/__init__.py: id: 5cbc6c99c6a3 - last_write_checksum: sha1:5ba433bf8605fe9589739e6e2087064abdd7e34e - pristine_git_object: 5e152a35a50d8c73a1d2259c1b76c402fbe090c8 + last_write_checksum: sha1:c51df14930cdd475e347fd9d2c6673212e120f39 + pristine_git_object: 5c110d65f7753265674f4b1ff77be4ee513856f2 src/leonardo_ai_sdk/models/operations/createdataset.py: id: 045e4ea50aac - last_write_checksum: sha1:a15928621d97731424fe0643858ff04b515e78a3 - pristine_git_object: 324fe2457dad5b78c3665fdb288eecd8da1aee5c + last_write_checksum: sha1:d43cb60f286a00766c91ab08622b77cbb1ce8066 + pristine_git_object: 83b3836cd8a0b7864b4c097199bc9dab7cd8d31c src/leonardo_ai_sdk/models/operations/createelement.py: id: 6080882c70ea - last_write_checksum: sha1:0fd8d30c24bdafb821bfe788e0ce9ed4fe0a9ce2 - pristine_git_object: fb3eb720068deadf304596253877bdcaf9e865eb + last_write_checksum: sha1:94950b84489aaad803d8f36d3e43d3ef05930c9d + pristine_git_object: 6ef4e620e2d6355aced71bd7126f2b201c0015d4 src/leonardo_ai_sdk/models/operations/creategeneration.py: id: d7634d006dcc - last_write_checksum: sha1:fb2f8734b876a3bf063ad06f0fa423ec3214aea3 - pristine_git_object: d97ab708235eb7b352a0f030a518137f81ab5357 + last_write_checksum: sha1:34d3d40f20af293dfc72837626db7884e6cfd4dd + pristine_git_object: 52a31f6af9667644012291d39b4b427ceffcb403 src/leonardo_ai_sdk/models/operations/createimagetovideogeneration.py: id: bad8760d4612 - last_write_checksum: sha1:43f88eb52af266fb8841de7ae40032b4323ab742 - pristine_git_object: 1783b0bf92ed5e1aa22a769fabafc00da48760d2 + last_write_checksum: sha1:50a6e9556a582f8cc1307316358bfe75cdce483b + pristine_git_object: 970b92efb631bbb6ce875bdea6ecfda3584ce271 src/leonardo_ai_sdk/models/operations/createlcmgeneration.py: id: cf40d412beae - last_write_checksum: sha1:e8a43e30473d20c5002b078c5fda927dadd5a213 - pristine_git_object: a0cb7085040d794c45131ca9b58e32122662b835 + last_write_checksum: sha1:86e714c262908f1479bec960500a83e2c85d93cb + pristine_git_object: 911fc57383c94a9d50fbbd0eb883860e2ad2c076 src/leonardo_ai_sdk/models/operations/createmodel.py: id: 0fba98d300ae - last_write_checksum: sha1:f6be8b52f6a1def2fdb0f8f2be7e0e285b574eb3 - pristine_git_object: 099193a6104512026ac09fc24191538b666c7962 - src/leonardo_ai_sdk/models/operations/createsvdmotiongeneration.py: - id: aff8effa04d8 - last_write_checksum: sha1:5d221e9ccae0397b0672eef1c81236e97aeb0983 - pristine_git_object: 67dbaf1b2d9d2c99f60ada5fd40280d686a7359b + last_write_checksum: sha1:7888b5162432c1aef80631826386e866f12e38f1 + pristine_git_object: 5d28bdb0ed1eae8f7be5107b8014b7cc0159dd01 src/leonardo_ai_sdk/models/operations/createtexttovideogeneration.py: id: 87af8bcccc8c - last_write_checksum: sha1:9db4860d702498d88392092a0da40ab76396dff7 - pristine_git_object: cc67e2e743956190157419ab4e8f14e465777c79 - src/leonardo_ai_sdk/models/operations/createtexturegeneration.py: - id: 07fa74e387b1 - last_write_checksum: sha1:03663f430e772174d01fddd7f238bdffa72e0084 - pristine_git_object: 8eb0c23d116aac0b2f7a37c73310b8ebf5f93b0f + last_write_checksum: sha1:a0dd0042f7cb7fba60310917719ae9b2338400aa + pristine_git_object: d41ec708a04f072ea39361c3a60106e64fac3f59 src/leonardo_ai_sdk/models/operations/createuniversalupscalerjob.py: id: 96cff1819251 - last_write_checksum: sha1:1932e09eeff5a3ce8f41da667682d1b5d9e9465e - pristine_git_object: 1ac50b7a92af64b136bc597cea79f631a647c7c6 + last_write_checksum: sha1:3ebcdc3bf0f58934eb44561349ad1e56dbf46ed1 + pristine_git_object: bfae9fb57fdc62cf03a3e2d34144617a10e0def3 src/leonardo_ai_sdk/models/operations/createvariationnobg.py: id: 7977213abd25 - last_write_checksum: sha1:067845cfc0f0d5a3012a90ed60f5fe3681984e41 - pristine_git_object: 4f5e42981f555826e0ae9d195cbb908ebfb98228 + last_write_checksum: sha1:5888cc3b121efaef0beddf11cccf3cc959a44322 + pristine_git_object: fae04a31a859555fb9a271036efd68f540aa50f7 src/leonardo_ai_sdk/models/operations/createvariationunzoom.py: id: 0e5d40ee0f9b - last_write_checksum: sha1:7f7f26fc677d6996e80da36a93fb1244a7e6362a - pristine_git_object: 966cf389259b98fc6ac1df10e195d265d12f3ca8 + last_write_checksum: sha1:ea6de44d1a23f9c88d27714028714e668add0a9c + pristine_git_object: e45b466b23a186acb6271d40c43d7792b6d5cf0a src/leonardo_ai_sdk/models/operations/createvariationupscale.py: id: 8f1a06a70efb - last_write_checksum: sha1:80f14503d454c8f44b02358590781953042152f0 - pristine_git_object: 971a0f5e6fac915952dd1f1714cad3fc3c8b82ca - src/leonardo_ai_sdk/models/operations/createvideoupscale.py: - id: 1697e1efba6a - last_write_checksum: sha1:9d9f7ec792d085a598078823a9c3c373d7562006 - pristine_git_object: 5d838b36007abf2d1efd2292a2e15b5089483dcc + last_write_checksum: sha1:b25f74370c8ae44d51fdd2653fed7320c1e9ff84 + pristine_git_object: f169455d4fc3789bb2209a056058450ea53338af src/leonardo_ai_sdk/models/operations/delete3dmodelbyid.py: id: 5ed233a373a8 - last_write_checksum: sha1:13a8aafe7b751d46d2bb4d9ffe0825a16c617a78 - pristine_git_object: 98ea6fdaec6466c43586f1a2a393f908456490de + last_write_checksum: sha1:1eae330d08d4f7ba67ec9833d5e2c76696ea84a6 + pristine_git_object: 81838f9e201d68b59055e99e1724732202fcf4a0 src/leonardo_ai_sdk/models/operations/deletedatasetbyid.py: id: d733071158a9 - last_write_checksum: sha1:2eba9ae39e1c00a062b19d595d55bad6a8fa48eb - pristine_git_object: f1858c38b8fc8136ef60a6aa5f6f5c41c7fca006 + last_write_checksum: sha1:421fa0c0e4535b69d4e6c83ad364b64c38c2b851 + pristine_git_object: 5846c00a0b9c46076e56800612b7671f465e13fe src/leonardo_ai_sdk/models/operations/deleteelementbyid.py: id: 4a93fa8b0fe4 - last_write_checksum: sha1:5ca15db6fec288faeaede7f2acbb52ce84e16ca8 - pristine_git_object: f6a2580fd695294272c07a3b85481490c0339c6b + last_write_checksum: sha1:195272136aea7b89097dfb3705015cb8935ab2d3 + pristine_git_object: f8734f6ce9aedaa94bd66d8a26e1b52f5866db54 src/leonardo_ai_sdk/models/operations/deletegenerationbyid.py: id: 7fb75810e15b - last_write_checksum: sha1:05c5e9a4ac5bce95467aaed6def42776b8cc0be8 - pristine_git_object: 003c790aa82bd6aff3969376dd0896a85880cc49 + last_write_checksum: sha1:79ed934e19aacc8ae1dd7983cae36bb00e1d2e2c + pristine_git_object: 21a791f0ff6f6441c2928d8c14d8a7a39c400672 src/leonardo_ai_sdk/models/operations/deleteinitimagebyid.py: id: 29cf0793c550 - last_write_checksum: sha1:c02c9016834825add6396f12f6e0466d6f50cc97 - pristine_git_object: a6d7e04ddc99ca61ce49421fc02d4b140236dabf + last_write_checksum: sha1:df3b7db3ea3d4da17ff5a91d1baf3a33906b4461 + pristine_git_object: 556586e396db894e020943f42c98434a147df0cf src/leonardo_ai_sdk/models/operations/deletemodelbyid.py: id: 568a9ad3cb10 - last_write_checksum: sha1:357c084eaa348107f5e7791372f7ad9f543c7bd6 - pristine_git_object: 903f01b89c789a5ac4db18398a2b1c77b08414c1 - src/leonardo_ai_sdk/models/operations/deletetexturegenerationbyid.py: - id: d08d6f60940a - last_write_checksum: sha1:101a3232429f1af1f9203b817d5b5c11a2ed9416 - pristine_git_object: 04b8e14f8564576195a0b66856542aac39d0e552 + last_write_checksum: sha1:0904ad855d66e9b0f63f115e1198c1469a7a28e9 + pristine_git_object: c0b017de6322e1279f08f3a77a028ed451e3c30d + src/leonardo_ai_sdk/models/operations/deleteuploadedmediabyid.py: + id: 013055487e1e + last_write_checksum: sha1:b790c2a5951f395aae95fd108abaddeac2a8a202 + pristine_git_object: 748201e33dca8d067904bf6cc8e05b14c9094874 src/leonardo_ai_sdk/models/operations/executeblueprint.py: id: 025ab5480ffc - last_write_checksum: sha1:8d34be173a59a5b975f4f2d860a7881c52e15b24 - pristine_git_object: 9ba83f95f44b9bba0e6ae50825a70dfa949af716 + last_write_checksum: sha1:6e15ac9eefed08cb14910843e9b50a1da9f58d1e + pristine_git_object: 1142f6f0a0475725aef5fa152ea306574c99d0e0 src/leonardo_ai_sdk/models/operations/get3dmodelbyid.py: id: 8d0bd6634029 - last_write_checksum: sha1:26a78b3cf3ddacc5b58478e2234fdd00be0b23ef - pristine_git_object: d515b38900411bfb3e288c773187d353986c7cae + last_write_checksum: sha1:ff3aa9efca2e71f22fb92393db97df1b87083af7 + pristine_git_object: 1ba3a708c7dfa486133ed3dbba111809491fc726 src/leonardo_ai_sdk/models/operations/get3dmodelsbyuserid.py: id: 8b4361078ce7 - last_write_checksum: sha1:4ac5acb0e32154e3c50f4bacc5ae9d6bd8fd7811 - pristine_git_object: e75418e966f05bf68146a0f04dddd69a9da48cf8 + last_write_checksum: sha1:f46ea8d5eb49243a82115725fe74e7d029bec762 + pristine_git_object: 0eb215f2d3e3dcb8b4a8b52c6bcced207d26f622 src/leonardo_ai_sdk/models/operations/getblueprintbyid.py: id: 64f27c45e5c2 - last_write_checksum: sha1:a73f27452f0ec8db3b7a87164208adad3c1794ab - pristine_git_object: df9138e3d073c6fd5e3fe1bf5285251945104b97 + last_write_checksum: sha1:31021977d9d9a01b342300ff0073324ae4bc0618 + pristine_git_object: 30a8f6d631a63786f70b2351ad0c026f101a5077 src/leonardo_ai_sdk/models/operations/getblueprintexecution.py: id: c5f617712da7 - last_write_checksum: sha1:6c776ac6a03685548b20f30a19953de41414b1fc - pristine_git_object: 3a9d92eedac2e80a42c6baa1e83e2cf456a81839 + last_write_checksum: sha1:71888d00a8bc727852fcfbaa82d8aef4b30bd61e + pristine_git_object: 43a52baf3efa8b7f3c2d90a40f4560211220d405 src/leonardo_ai_sdk/models/operations/getblueprintexecutiongenerations.py: id: 070e195484d2 - last_write_checksum: sha1:3e67430b4df0db4c6ba6b6e8f7bab670f5f12452 - pristine_git_object: a21dca62e3749c06bb3eb89b7bc737519d7f9c86 + last_write_checksum: sha1:1b286cc00bb4e5cfa6c940ab9ede301aca4b0010 + pristine_git_object: f294027e794e70dfa3f0c3d3c1cf7eb570a009a8 src/leonardo_ai_sdk/models/operations/getblueprintversionsbyblueprintid.py: id: 428652d5981f - last_write_checksum: sha1:2863e9ea0879bb3b6601a86cb9770a5d68cdee09 - pristine_git_object: 4be73a171aa993ca2adef642bfc56ddc7a174de8 + last_write_checksum: sha1:eee74e781f07fda66661167aff073ed781a89a87 + pristine_git_object: 474b0d112663e87908d66d9217981cab6e5e048e src/leonardo_ai_sdk/models/operations/getcustomelementsbyuserid.py: id: cd171502e05d - last_write_checksum: sha1:560cca1db3266bb82fe2f1fa82640692f2fe8d9d - pristine_git_object: d68baf77b8e701e619f9644adfa95c5f2e91f9eb + last_write_checksum: sha1:7fb20c67dea5e72a09cdfab1f12424621a4f9e79 + pristine_git_object: 0b29686612e7f882e84e8ac1a23680455594d520 src/leonardo_ai_sdk/models/operations/getcustommodelsbyuserid.py: id: 11b7f7e165d8 - last_write_checksum: sha1:38be3432d210d21a7ee2517af0d35507106d1332 - pristine_git_object: 00060295ac7aedeb3b27a8e162b68ce5a99eb69a + last_write_checksum: sha1:e2bf46e533c9c502a65afe1a093ea429b23a47c3 + pristine_git_object: 19832a240a03265e4fcceb43400db369fa7de7cd src/leonardo_ai_sdk/models/operations/getdatasetbyid.py: id: be684df5e965 - last_write_checksum: sha1:670619a38e30eccb9093a50595d2d0d27b8e0571 - pristine_git_object: 58eea998cae6cbeb7fdf1b16d967561379dff997 + last_write_checksum: sha1:e929d9332f7d8b9ea33a2ffa1bae7472330f2667 + pristine_git_object: eeb72ac55df2fae48d40827e430ec08ed7159b79 src/leonardo_ai_sdk/models/operations/getelementbyid.py: id: 8688925bfe3d - last_write_checksum: sha1:9f53100a318114f64374dd3beb0d9f70bf8f03eb - pristine_git_object: bd64e86afa6315a30d14625d62a26463a0d251d6 + last_write_checksum: sha1:01ff6991ce194ea41899819c5575f2fbee105f4a + pristine_git_object: dbff9945fd0bd3ef5d7394ddbbb76a6289e6e86e src/leonardo_ai_sdk/models/operations/getgenerationbyid.py: id: 12f2218a09da - last_write_checksum: sha1:63201f3486c5666ffadbd72686f6da1fd97cf00c - pristine_git_object: 54c09c14f23020ed3b8baeefe4d8fa8d986c57fc + last_write_checksum: sha1:8c0452dfa7bb805e693b1342a5a6fa9289e9a6c7 + pristine_git_object: 271f3fcb92a911435c42dddee29359e07636b436 src/leonardo_ai_sdk/models/operations/getgenerationsbyuserid.py: id: f0ca03b7c386 - last_write_checksum: sha1:4c4ab736f12137ac5a5fd40d2358591fa9e18d00 - pristine_git_object: e80eb87ddf1a47dbcc18f7e41f3f0c795cbb7520 + last_write_checksum: sha1:768c239014d97206673e13783eceb387466044f2 + pristine_git_object: e37bcaecb87b01a64370508c96bafa4c107290f0 src/leonardo_ai_sdk/models/operations/getinitimagebyid.py: id: ee53381a5c56 - last_write_checksum: sha1:077f5ce13982a3ed55853b7c9c1fc8103ad0d733 - pristine_git_object: 4ee4b3027865f07c2a22d7aa6e727ebc43500a03 + last_write_checksum: sha1:b4577275a43a46c5587714ccc149bcc51c85fab1 + pristine_git_object: 293b77ad7a597a4def387e1740d19feec07dc63f src/leonardo_ai_sdk/models/operations/getmodelbyid.py: id: deec0cff4063 - last_write_checksum: sha1:69576287077252ee9448e1ef89b69e78c7cc12bf - pristine_git_object: b5fef15f39ac47b5f7f20237ab14ac0b903fd6f2 + last_write_checksum: sha1:882b4e8d9a321aaf3c81389106463d7af5d77163 + pristine_git_object: 38c62d70cead14dc97365b2c57a4481372784cac src/leonardo_ai_sdk/models/operations/getmotionvariationbyid.py: id: bf56b03ca576 - last_write_checksum: sha1:b65d393d43d03d2c427242f081500a8a62560b4f - pristine_git_object: e50d0e074a5f61db5f714635eea806df166aeb5c - src/leonardo_ai_sdk/models/operations/gettexturegenerationbyid.py: - id: 710254b9e1b5 - last_write_checksum: sha1:d73ddfa9753c8ad12d103c4ac30623e09a38e7d0 - pristine_git_object: c9e336abcde25749c437e053873fe12d8dea5fc0 - src/leonardo_ai_sdk/models/operations/gettexturegenerationsbymodelid.py: - id: 781f313ed9f3 - last_write_checksum: sha1:d6b24e87bc279fa0999c017907f23a2cf71486fe - pristine_git_object: ef05a863340add0bc58865400651db377db25c79 + last_write_checksum: sha1:b5a9918387a59b87036fbcd142218ad8c7340633 + pristine_git_object: 3defd9ff5138dbbf2a051fa8703a7cbe5ed2998a + src/leonardo_ai_sdk/models/operations/getuploadedmediabyid.py: + id: 7f21dfca0b0e + last_write_checksum: sha1:6889a77d750c624ef17d13ca05bb7cedaac47944 + pristine_git_object: 996841f54241f06992caba3c3009ddbd5589e477 src/leonardo_ai_sdk/models/operations/getuserself.py: id: cd4e689e06a1 - last_write_checksum: sha1:80a7a925938e07bd782cd514165c759622c18c9f - pristine_git_object: 22ca87286b08bcf410ae542b002b417889562378 + last_write_checksum: sha1:7b6aecb1f61336cf29335c7cc5c48dfba822d976 + pristine_git_object: 1c6587f6d6f7c8ede9d0beb1ff379635919b6eb9 src/leonardo_ai_sdk/models/operations/getvariationbyid.py: id: ddd2c1c648b5 - last_write_checksum: sha1:69e1ee85d7847ea8a164ef260cb8fd9729782009 - pristine_git_object: a9880c88718ba86c1bc8240637fb587d34343507 + last_write_checksum: sha1:9fe69e8c42570cac1b47534aac69fb18d2bdc86a + pristine_git_object: 4422d82859c13ebc7b227d215bb89acdcf57684d src/leonardo_ai_sdk/models/operations/listblueprints.py: id: 6f728b563f8f - last_write_checksum: sha1:4919815612b5dd469ef5c49d4bf85c217c907545 - pristine_git_object: 597ed2484668a73eb4e6e6f3a193bb110f08e14a + last_write_checksum: sha1:4bbae68545b963146bc290b63f19288ab7af382c + pristine_git_object: cbf8ccd60a7441997a31bbe68fde039e70367843 src/leonardo_ai_sdk/models/operations/listelements.py: id: 2ba024ee0be5 - last_write_checksum: sha1:dad29bafb623420367e5200148770812a3d95fd9 - pristine_git_object: 75f0b999d6c1e12ee8f449e59b6cd0b8d18e8ded + last_write_checksum: sha1:e00cd410525274d90e1bb9a1ab9cb23a347decf8 + pristine_git_object: 51779c31b252c435f01db1cdf4fe24af86b0ff0b src/leonardo_ai_sdk/models/operations/listplatformmodels.py: id: dfa035b89293 - last_write_checksum: sha1:df547e25717b0e88e2aefc7e13c8820b162d96be - pristine_git_object: 4e5893daa65252d4c778b1d411d984f0e3596227 + last_write_checksum: sha1:4cb93793e8d30e7e15a46ae19ea74838c74f613e + pristine_git_object: 66fcda20a389920e078d6d218839af3c2174ebf3 src/leonardo_ai_sdk/models/operations/performalchemyupscalelcm.py: id: d1e30d4f2195 - last_write_checksum: sha1:db123b3808e40fda231939c0737df36f2b29647d - pristine_git_object: efbf07fcaee5a812ab988f15a49e1772e3279279 + last_write_checksum: sha1:55643593e2da97011520c427e54b49b3b93cafb6 + pristine_git_object: 01e381dabf343438243acdfee2c8c27ffc6cad55 src/leonardo_ai_sdk/models/operations/performinpaintinglcm.py: id: 0cc656539c57 - last_write_checksum: sha1:0ede6d8ec91e19cdf429d5f31ea704c7dce52d3d - pristine_git_object: 8dd679078302f46248021f3379eb556412d370a8 + last_write_checksum: sha1:040c2a6c4524df1578b1e320f3a32007f5ceb0b2 + pristine_git_object: 8712b1b6dd570bd524c66902d752dd673e0a68d8 src/leonardo_ai_sdk/models/operations/performinstantrefine.py: id: 7ae418bd4c00 - last_write_checksum: sha1:635f515a7b234a02f4341506a5de597b93f9e32c - pristine_git_object: 36858f59e8f88f708960e0ba5e74331a44424c70 + last_write_checksum: sha1:dcf0ae30202fc27d6f8c105c7422b3d700b70e9b + pristine_git_object: 9b00a70f30f2df4c169f4ac0f957e37ada43d006 src/leonardo_ai_sdk/models/operations/pricingcalculator.py: id: df3cee04585f - last_write_checksum: sha1:ec0af308c426e744e5962641e2c1b761a0401071 - pristine_git_object: 6c777f26293ae310ddc0d72e5493b3a89e926d07 + last_write_checksum: sha1:d5a366f48b178401a085d5e5a870b8589472bff2 + pristine_git_object: 8782d9dee8ab688e2d4e0c0841845224dd996b3d src/leonardo_ai_sdk/models/operations/promptimprove.py: id: 9616a6b8ffc6 - last_write_checksum: sha1:611c8d54f548093286ffe0d1bb2f1e7594a16278 - pristine_git_object: 48535ee656381b41565b8ab7a095b199863cba72 + last_write_checksum: sha1:bf3eda9bdfb3d572c81c0865bfe08e9242583592 + pristine_git_object: 651f63b448c4ba02a1781189838343ec007619ef src/leonardo_ai_sdk/models/operations/promptrandom.py: id: d24dcaab5fe9 - last_write_checksum: sha1:327211149391aab4043c328c64293692bdceba01 - pristine_git_object: bf0d6ce0948b39b2ee641cba6dfd8dac21ffd40d + last_write_checksum: sha1:a725f6af44e97f658a71abd32037c8de684af0a1 + pristine_git_object: 72e71bf62c8b86440e6dc697c94f99ee7bc34b64 src/leonardo_ai_sdk/models/operations/uploadcanvasinitimage.py: id: 7aab72c6230b - last_write_checksum: sha1:71a22aa01728b6df55aae89af336e8aa07d9a99b - pristine_git_object: 64d2906f537678069120f6fe0ca2c53e26d68b0f + last_write_checksum: sha1:ad0d2a59d431a04344a9beae73537d694453535b + pristine_git_object: 6855fc1866638afbd467dc0043dad884ad3a4fec src/leonardo_ai_sdk/models/operations/uploaddatasetimage.py: id: 97c241fc5971 - last_write_checksum: sha1:ca8acddb721b9354588b870f146c789f63e49564 - pristine_git_object: 8bb4f3de123163dba60b26946ce733eebffc7473 + last_write_checksum: sha1:75f585279cb956cae9a89a8f184020002d0ecdf1 + pristine_git_object: 4c8ac21b298b29382facc3c6ac243b84aed8adaa src/leonardo_ai_sdk/models/operations/uploaddatasetimagefromgen.py: id: db8ab0e298f4 - last_write_checksum: sha1:18e173d62d38afc79f54e486322d7096255a0499 - pristine_git_object: 1521442cfe91a60283966e9bf31f59fb641e34cb + last_write_checksum: sha1:02b17d9ff381f54627d8b419d28733e98789aee7 + pristine_git_object: f67275455f0e7261ff823274be102550d5901867 src/leonardo_ai_sdk/models/operations/uploadinitimage.py: id: 7c79d202783b - last_write_checksum: sha1:45ce343dfa90a8af8a87783141c638db12e09dd6 - pristine_git_object: c2c1fe34b76a57a332c9236cef7f9e8dde9fa86c + last_write_checksum: sha1:269b5773d26eca8684ba3c7d18a07ce32b66fb2b + pristine_git_object: 91c3fb1ccf0b8935a4adf1e60f6b5743cce14162 + src/leonardo_ai_sdk/models/operations/uploadmedia.py: + id: bf8776bb3174 + last_write_checksum: sha1:140d9d38dc4aaeec043931922ba81d9f3419e7c6 + pristine_git_object: b52bc212ad3fd0acc210fba47499140745e7a5cd src/leonardo_ai_sdk/models/operations/uploadmodelasset.py: id: 00eb51a6351b - last_write_checksum: sha1:c0ebba0f67c3a3dda4c0272eb98e0e04a5c5c7d7 - pristine_git_object: 5622258a3204e1777ee2de1a13e5d6e836a8db45 + last_write_checksum: sha1:5907fe514a7e0726d6c31662bc49f692abe8400e + pristine_git_object: 26139422332f5f729d6668cd61d770826736395f src/leonardo_ai_sdk/models/shared/__init__.py: id: de1ccc636ec7 - last_write_checksum: sha1:f803531a5a7cdb9b4a702b35db56ca1ab396070c - pristine_git_object: c153452875e993bfa00489ed399648fc08c2fc64 + last_write_checksum: sha1:c16caefb8cfe87801a2832759a3928d81159fae2 + pristine_git_object: f7d77c7e9bd1b4c785b6f736158c89382dea8bf9 src/leonardo_ai_sdk/models/shared/apierror.py: id: c282cca58848 - last_write_checksum: sha1:f1b9f512f044371427624b5ab89e5ebfbf09bcce - pristine_git_object: a6c026767b03a0b544f7c482bcbd5aa6dc0a71cd + last_write_checksum: sha1:2be38e86349ff89a4496bc6b1a4da57bd58aa9f2 + pristine_git_object: bf8c4468693bc78daad0cc3be1d684c7827eb724 src/leonardo_ai_sdk/models/shared/blueprint.py: id: fe2003516768 - last_write_checksum: sha1:ea29967d978af0927dc9494898f5541341893ef6 - pristine_git_object: 1baa1e3149774aea925a1306c0e6e6b6c2dd067f + last_write_checksum: sha1:bf692448be238783c83b7ee92833c8e56cf8927b + pristine_git_object: de6cd509aee91f4ff646a5d83cee21584ed8308d src/leonardo_ai_sdk/models/shared/blueprintexecution.py: id: f6985ae5f39a - last_write_checksum: sha1:0673b12cc788db879216c8abca4300cbaf1dab5e - pristine_git_object: 4c3b7705628dddf1296c1cc73cf2125b8a72dc4b + last_write_checksum: sha1:473a3e19d6f650d5a3351182082fe69ec34615b1 + pristine_git_object: cef769d384d42955ddbb378fef7cbafee1cd696e src/leonardo_ai_sdk/models/shared/blueprintexecutiongeneration.py: id: c50da18eefb0 - last_write_checksum: sha1:758bb69256e8e80a096feb60f0fc9b25af8d0bdc - pristine_git_object: d7476b56eacb0d7b569414b8318e9a2fb4a82379 + last_write_checksum: sha1:f839f1f8075451d6bfe93af72b57f9f6aea8814e + pristine_git_object: 3bbdf8e3e1084818eecbd2526cebcbb3ed2663d1 src/leonardo_ai_sdk/models/shared/blueprintexecutiongenerationedge.py: id: ba0b245fe6be last_write_checksum: sha1:95875a25ebee8eef2ab28c3eb69a439373cf207b pristine_git_object: fdc7c9b367a7cbae2ec0e9088295947973aecb26 src/leonardo_ai_sdk/models/shared/blueprintexecutiongenerationsconnection.py: id: 18444dccb604 - last_write_checksum: sha1:d3fc1765c298523968ded291ba8214493f41f911 - pristine_git_object: 78a44fd357f14fb1be6b120d1dbe4d76c7f4d7b2 + last_write_checksum: sha1:6ece0931ecb02f297f531a0f1ef0cf22e27b124e + pristine_git_object: 6eb75e9e8d483a75dc33aff1c9d81ffdbc7b2c11 src/leonardo_ai_sdk/models/shared/blueprintexecutiongenerationstatus.py: id: b3dfeba14c49 last_write_checksum: sha1:4c0ec8eb5b08a85e544c852fd26966e8cfcc544e @@ -1751,32 +1667,32 @@ trackedFiles: pristine_git_object: 014b28c2c567444f6d2faed969710f376f433cc4 src/leonardo_ai_sdk/models/shared/blueprintversion.py: id: dbc97999b9b1 - last_write_checksum: sha1:3ec39c6f84bc0f46b0a3864ad7ad52d296fdeb96 - pristine_git_object: 930ea69505df0a260cb0dea72ef4ea20b666a044 + last_write_checksum: sha1:e60d767fc9ed46f67cd8bf2dcd839d35a03e4adb + pristine_git_object: e0331afa88fff0100b08eb925bdad2b877b46e56 src/leonardo_ai_sdk/models/shared/canvasrequesttype.py: id: 7b1e1c54f2db last_write_checksum: sha1:6f7f6b41a44062563d8e2818d0a3ab4e4f7a0436 pristine_git_object: 14474812d62b65bc15775558a3279914a26bfd5d src/leonardo_ai_sdk/models/shared/controlnet_input.py: id: 51c6dcd1665d - last_write_checksum: sha1:aac09b609a0f74517a32e5c4c6ea1cf137d7ef85 - pristine_git_object: 7c40f48d6bf884b1e915482703790ab9927e04bf + last_write_checksum: sha1:260cf701b426104f72877c557b3c7d712dbf0d68 + pristine_git_object: 7d5bc8db7e216e1912bc39980942d6645bf3b2c9 src/leonardo_ai_sdk/models/shared/controlnet_type.py: id: 884db64f547c last_write_checksum: sha1:f9b9b600f8f47a6c20e55ea54566dbd08e76c83d pristine_git_object: 00a367cf1f298a6392ac1e9ff2799b57083f5e77 src/leonardo_ai_sdk/models/shared/cost.py: id: 303a5a1ffdd6 - last_write_checksum: sha1:a1ce06e1d8abd4b52f3b44318723bc571f469581 - pristine_git_object: a148c3be1e0a88caefbe7743ab34896f8563308c + last_write_checksum: sha1:abd53a97ae7b8f961bdca42cdbe8ff13d14f4116 + pristine_git_object: 4b2fa42a6d2b29ac27e469ff79a43f89919919c2 src/leonardo_ai_sdk/models/shared/custom_model_type.py: id: a031cc0e1c9c last_write_checksum: sha1:994822979f47bcfb183312ebd52de0d1bd8778d6 pristine_git_object: 8cd19f559db6adfb126fabbfc01eb194e50febbd src/leonardo_ai_sdk/models/shared/element_input.py: id: f5d5f7689eec - last_write_checksum: sha1:53dd1188d1842d00f83e6cbe31ba0fcfc9c7e548 - pristine_git_object: 5a98da3419b9d8af14594ad23d4b09d3e6387e74 + last_write_checksum: sha1:9735bd9b6e9c920e6e5287a687a012817cd5e904 + pristine_git_object: c2424097cd717c0bcb159cdba43fc7a45396f02e src/leonardo_ai_sdk/models/shared/job_status.py: id: 829bb9e24b4e last_write_checksum: sha1:91b4f316af8d54362d5bf5c78b5acacaa27bc748 @@ -1785,10 +1701,6 @@ trackedFiles: id: efd05f1b89a6 last_write_checksum: sha1:03c372f112981a657c635bfdfd205325be58d12a pristine_git_object: b865b9e6985c8309ed037dc236da6796ea59528b - src/leonardo_ai_sdk/models/shared/model_asset_texture_types.py: - id: 32b156735425 - last_write_checksum: sha1:a96a03dc5a4ca4f6c4b968b54e987b1afb59b719 - pristine_git_object: f667ffaa147d4ef4f5472e4965d9fcf79b7f922e src/leonardo_ai_sdk/models/shared/motion_resolution.py: id: b6350bc0d09c last_write_checksum: sha1:85a3cc7f3219c3177bd1bd828e5320845d022a33 @@ -1799,20 +1711,20 @@ trackedFiles: pristine_git_object: 20fe85438c59dbe9a7baabd5ae72fa83904a2033 src/leonardo_ai_sdk/models/shared/nodeinput.py: id: 63caf1cc2131 - last_write_checksum: sha1:81208b24982ff51739da8e018d3115fab647bf36 - pristine_git_object: 48296ecbef04f09e74e5a154155347507fe0fca0 + last_write_checksum: sha1:55c3aee9d650f0ad79f76bbfe28b1ba932d1b713 + pristine_git_object: eeff024f427b7792b378d4bdaf70c1b2ee7f0ccb src/leonardo_ai_sdk/models/shared/pageinfo.py: id: c62d8327af41 - last_write_checksum: sha1:fa46d59b9061a3a79b8e1b78e8ef983050629096 - pristine_git_object: 6cddc5b6e6124ed84955ce189d1a473df1bb8540 + last_write_checksum: sha1:092584ea57921f98a3e572c0bd76208814ad5273 + pristine_git_object: 02bdb20b2d76c989dbade7591ef371f17ae88b33 src/leonardo_ai_sdk/models/shared/pricingcalculatorservices.py: id: aadd90f2317e last_write_checksum: sha1:e6f10df4ff02f8a241cf38c9ca64f2cc6abacddd pristine_git_object: 5369d9261b0ce140f0c2b30cafa16083b84934ca src/leonardo_ai_sdk/models/shared/promptmoderationfailurereason.py: id: cd1a21383071 - last_write_checksum: sha1:9e6e24b75f79bb2ba3ce771483d1d86f5e5a0fd2 - pristine_git_object: aceb6e65d2bdbc5fa3da03db6d3865af352497d8 + last_write_checksum: sha1:20202c0271b1d5f28414dc38758e2716944f4580 + pristine_git_object: 6953f4015f86d642b1969fc54308be45d38e7fcc src/leonardo_ai_sdk/models/shared/sd_generation_schedulers.py: id: 34877b8aab76 last_write_checksum: sha1:12ef20e4dbca95df0ab739b5a269412b69153c70 @@ -1847,68 +1759,68 @@ trackedFiles: pristine_git_object: d0b8a7aabd592c54823a50bfd8d5e96dd7ce7f11 src/leonardo_ai_sdk/models/shared/user_elements_input.py: id: ae4df090c9bd - last_write_checksum: sha1:a5b833169fe5e9bffbd57a51c7c36a442ea2bf8d - pristine_git_object: 5175f571412ddfa474dc03c1f90c99bb72353576 + last_write_checksum: sha1:c3defeda196feefb48f1300c002311b1e7bd154e + pristine_git_object: 48a79b0a1094ada9d5726abdf93ad36ac7b44967 src/leonardo_ai_sdk/models/shared/variation_type.py: id: 0d9e8c6d3c96 last_write_checksum: sha1:a6965e99c5bcd225a3c26c3850260e34ff91a4a2 pristine_git_object: 09200f0544f8d065838374b19b1be2e3a6a34e31 src/leonardo_ai_sdk/models_.py: id: 9f96042872f1 - last_write_checksum: sha1:a808e8c7133ba2ed52b805a27020e9b807e95c0c - pristine_git_object: ee9fd2d60c2d0a90a6b8af6ff64f5793f953b2c8 + last_write_checksum: sha1:56ae60e519a4e9d8b93bc03f80def3686e300765 + pristine_git_object: 1d287c4ebc0404191c336b1938fe6b8a7075d2b6 src/leonardo_ai_sdk/motion.py: id: 31e3b3b519e0 - last_write_checksum: sha1:a47f747e00bd8d6088bced05fa6f5dc01675d574 - pristine_git_object: 4bf04d88d67714b09d7f20408e2a4f82f0650c15 + last_write_checksum: sha1:eb64fbec8866f384924884aece90c0cdc63be469 + pristine_git_object: 320306c6238963928d45512275d88dcd1ac34a35 src/leonardo_ai_sdk/pricing_calculator.py: id: c09afc8c1bfe - last_write_checksum: sha1:5bdeb7effc66340f659f8c53c0587f87c18ed6a7 - pristine_git_object: 64fa6e0585ad54f734d453dad2559fb71b98620c + last_write_checksum: sha1:fcf600d491eb1c5600a45da5e2b9e38d522a5baa + pristine_git_object: 332f3185269b58c1832de6f5e37af1d0eb21351a src/leonardo_ai_sdk/prompt.py: id: 7dbbc90f3db8 - last_write_checksum: sha1:12d87a8c5b62dccf5813148f88c655de34457efc - pristine_git_object: de2fabc429acff3cf96efc65f84e909213ee25c4 + last_write_checksum: sha1:31e1f5850e47d6ae074f55f5e4b0c9916c53f6af + pristine_git_object: 02e438407d37bf7298d440b4a954d3618f2b7f9b src/leonardo_ai_sdk/py.typed: id: 43a62723a6e2 last_write_checksum: sha1:8efc425ffe830805ffcc0f3055871bdcdc542c60 pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 src/leonardo_ai_sdk/realtime_canvas.py: id: 802fb070314c - last_write_checksum: sha1:460d9a1f18fce34c63886ce7d66a9d608486ebd5 - pristine_git_object: c079049c99ec2422c99aa0c9b030bab1ffc766c4 + last_write_checksum: sha1:9919db81e26a330aeb4503e82e991d798a4443fe + pristine_git_object: 3cde9267a2cd15a894971ad490057c803a5748b3 src/leonardo_ai_sdk/sdk.py: id: 0c5ecd584447 - last_write_checksum: sha1:e89bc69281f53cee30a1d03ccddb956975591dc3 - pristine_git_object: 347f981a0356c37c7601651c94f55f25f69bb099 + last_write_checksum: sha1:26814571754e2121a310f7aeec410be9c8860feb + pristine_git_object: fe48bf090510e79b5ec9961214ad7534ea12bf18 src/leonardo_ai_sdk/sdkconfiguration.py: id: 05169c3c0475 last_write_checksum: sha1:c100605a62667ac0968f648acb8b894af7db30da pristine_git_object: 6c5e7971002d973646706857194a8d485a7bd9fb - src/leonardo_ai_sdk/texture.py: - id: 058228c3e64d - last_write_checksum: sha1:ec450125ebb37b1981f70d5e1424b8119fd34200 - pristine_git_object: 150716487d6baf76391285138b41ed2caed47b3d src/leonardo_ai_sdk/threed_model_assets.py: id: 3db8bbc7ae65 - last_write_checksum: sha1:ab8ad909cb44cc9f5a8a614a0b363c989825eb2b - pristine_git_object: 0a6b61604e4f44c7c6fac263e647c7e839e1cd01 + last_write_checksum: sha1:823d198b5a2bb4b90c0cf781fd08fdbe1b5e552e + pristine_git_object: d79413286c57c5226ee165bead9649dc7d86c257 src/leonardo_ai_sdk/types/__init__.py: id: 16845b7057a8 - last_write_checksum: sha1:140ebdd01a46f92ffc710c52c958c4eba3cf68ed - pristine_git_object: fc76fe0c5505e29859b5d2bb707d48fd27661b8c + last_write_checksum: sha1:f9ad14217f832e74f594285960125add50324be9 + pristine_git_object: faa268137bc01c9d08cfadc4797017db48747a96 + src/leonardo_ai_sdk/types/base64fileinput.py: + id: b4d0ddd55aff + last_write_checksum: sha1:4780e893d3853b5a6e28d9a6ca3ee102ce0f502d + pristine_git_object: 25fc53989ed497649363f983219fc58705c8bf87 src/leonardo_ai_sdk/types/basemodel.py: id: 70f03cddbcd3 last_write_checksum: sha1:10d84aedeb9d35edfdadf2c3020caa1d24d8b584 pristine_git_object: a9a640a1a7048736383f96c67c6290c86bf536ee src/leonardo_ai_sdk/user.py: id: e64131f023cd - last_write_checksum: sha1:5f6280bcaeaeeb820383be7c36155d9d8cfe1ecc - pristine_git_object: 76d41b38fcd25602bcff7fba47cc623caddd1cf3 + last_write_checksum: sha1:935f721e50456b707b13ff4e5fe85a2675d5865e + pristine_git_object: 2ff0f737dbfd93e0a6ced41d77d4358aa55530f0 src/leonardo_ai_sdk/utils/__init__.py: id: dcba1dea311a - last_write_checksum: sha1:a1f6ae620fb6a3ccc30e99b427e49a0c8be463af - pristine_git_object: 15394a08a7e30033d319e44dd5734664ddb587e5 + last_write_checksum: sha1:1970816f2234ecb8785798240b0edced961de971 + pristine_git_object: 0498cb8dabf249b39609f81fb10cddc30f1b78b5 src/leonardo_ai_sdk/utils/annotations.py: id: af86b21e8717 last_write_checksum: sha1:a4824ad65f730303e4e1e3ec1febf87b4eb46dbc @@ -1917,14 +1829,18 @@ trackedFiles: id: 17c769e0934f last_write_checksum: sha1:c721e4123000e7dc61ec52b28a739439d9e17341 pristine_git_object: a6c52cd61bbe2d459046c940ce5e8c469f2f0664 + src/leonardo_ai_sdk/utils/dynamic_imports.py: + id: 1e6db77c9c86 + last_write_checksum: sha1:a1940c63feb8eddfd8026de53384baf5056d5dcc + pristine_git_object: 673edf82a97d0fea7295625d3e092ea369a36b79 src/leonardo_ai_sdk/utils/enums.py: id: 412d22e640f9 last_write_checksum: sha1:bc8c3c1285ae09ba8a094ee5c3d9c7f41fa1284d pristine_git_object: 3324e1bc2668c54c4d5f5a1a845675319757a828 src/leonardo_ai_sdk/utils/eventstreaming.py: id: 031bef878e00 - last_write_checksum: sha1:bababae5d54b7efc360db701daa49e18a92c2f3b - pristine_git_object: 0969899bfc491e5e408d05643525f347ea95e4fc + last_write_checksum: sha1:cad7e4feff4f1b2824afd0d30f2b1964a604f4dd + pristine_git_object: 1c189bf6fcad7ba90e0ec6d2f36ca7329d33bb99 src/leonardo_ai_sdk/utils/forms.py: id: b299101f1f14 last_write_checksum: sha1:15fa7e9ab1611e062a9984cf06cb20969713d295 @@ -1939,28 +1855,28 @@ trackedFiles: pristine_git_object: b661aff65d38b77d035149699aea09b2785d2fc6 src/leonardo_ai_sdk/utils/metadata.py: id: 030b4710dc9a - last_write_checksum: sha1:c6a560bd0c63ab158582f34dadb69433ea73b3d4 - pristine_git_object: 173b3e5ce658675c2f504222a56b3daaaa68107d + last_write_checksum: sha1:e703e5cbb5255144aacf86898d1420529afaaff8 + pristine_git_object: 5abddd588837ac297050ca3b543627faadb350a9 src/leonardo_ai_sdk/utils/queryparams.py: id: 9a387d3e0f1e last_write_checksum: sha1:b94c3f314fd3da0d1d215afc2731f48748e2aa59 pristine_git_object: c04e0db82b68eca041f2cb2614d748fbac80fd41 src/leonardo_ai_sdk/utils/requestbodies.py: id: c003f58fea4a - last_write_checksum: sha1:41e2d2d2d3ecc394c8122ca4d4b85e1c3e03f054 - pristine_git_object: 1de32b6d26f46590232f398fdba6ce0072f1659c + last_write_checksum: sha1:e1fef575283b7fe7fe2ad392dbbb3fb105309124 + pristine_git_object: 591415af8e64baa410627b507d2740afb5387d13 src/leonardo_ai_sdk/utils/retries.py: id: cda72ee21f8c - last_write_checksum: sha1:5b97ac4f59357d70c2529975d50364c88bcad607 - pristine_git_object: 88a91b10cd2076b4a2c6cff2ac6bfaa5e3c5ad13 + last_write_checksum: sha1:471372f5c5d1dd5583239c9cf3c75f1b636e5d87 + pristine_git_object: af07d4e941007af4213c5ec9047ef8a2fca04e5e src/leonardo_ai_sdk/utils/security.py: id: fc9558e3abcb - last_write_checksum: sha1:a17130ace2c0db6394f38dd941ad2b700cc755c8 - pristine_git_object: 295a3f40031dbb40073ad227fd4a355660f97ab2 + last_write_checksum: sha1:c11eef495b6aaa249178c24c796940cc540b7a00 + pristine_git_object: 42d8d78e9981eed7507670014d99588e27ab325a src/leonardo_ai_sdk/utils/serializers.py: id: cb9ed480897f - last_write_checksum: sha1:ce1d8d7f500a9ccba0aeca5057cee9c271f4dfd7 - pristine_git_object: 14321eb479de81d0d9580ec8291e0ff91bf29e57 + last_write_checksum: sha1:61009f2e4ef6613a1a5af813fe020373dae5a492 + pristine_git_object: d2149f8b909cb96628db140ac3cddb1b1e981367 src/leonardo_ai_sdk/utils/unmarshal_json_response.py: id: ff30a1d1db54 last_write_checksum: sha1:d59ac7c24ee25e5525eb2a3367adad63bde0b57d @@ -1975,8 +1891,8 @@ trackedFiles: pristine_git_object: dae01a44384ac3bc13ae07453a053bf6c898ebe3 src/leonardo_ai_sdk/variation.py: id: ef24451372f2 - last_write_checksum: sha1:990b3632ef2d08679d162dc91e5d39401fe22e32 - pristine_git_object: 1891ec819c601ed31c3feac18d45cd5d8de0582c + last_write_checksum: sha1:d62e713dcbd994ed110046f19bd042ca915100f1 + pristine_git_object: f8d749703f04baad1ae85aa2f4d4a823e509569f examples: executeBlueprint: speakeasy-default-execute-blueprint: @@ -2457,9 +2373,42 @@ examples: responses: "200": application/json: {} + deleteUploadedMediaById: + speakeasy-default-delete-uploaded-media-by-id: + parameters: + path: + id: "" + responses: + "200": + application/json: {} + getUploadedMediaById: + speakeasy-default-get-uploaded-media-by-id: + parameters: + path: + id: "" + responses: + "200": + application/json: {} + uploadMedia: + speakeasy-default-upload-media: + requestBody: + application/json: {"extension": "pdf"} + responses: + "200": + application/json: {} examplesVersion: 1.0.2 generatedTests: {} -releaseNotes: "## Python SDK Changes:\n* `leonardo_ai_sdk.elements.create_element()`: \n * `request` **Changed** (Breaking ⚠️)\n * `response.sd_training_job.cost` **Added**\n* `leonardo_ai_sdk.pricing_calculator.pricing_calculator()`: `request` **Changed** (Breaking ⚠️)\n* `leonardo_ai_sdk.models.get_model_by_id()`: `response.custom_models_by_pk.sd_version.enum(kino_2_0)` **Added** (Breaking ⚠️)\n* `leonardo_ai_sdk.models.get_custom_models_by_user_id()`: `response.custom_models[].sd_version.enum(kino_2_0)` **Added** (Breaking ⚠️)\n* `leonardo_ai_sdk.image.get_generations_by_user_id()`: `response.generations[].generation_elements[].lora.base_model.enum(kino_2_0)` **Added** (Breaking ⚠️)\n* `leonardo_ai_sdk.image.get_generation_by_id()`: `response.generations_by_pk.generation_elements[].lora.base_model.enum(kino_2_0)` **Added** (Breaking ⚠️)\n* `leonardo_ai_sdk.image.create_generation()`: \n * `request` **Changed** (Breaking ⚠️)\n * `response.sd_generation_job.cost` **Added**\n* `leonardo_ai_sdk.elements.list_elements()`: `response.loras[].base_model.enum(kino_2_0)` **Added** (Breaking ⚠️)\n* `leonardo_ai_sdk.motion.create_text_to_video_generation()`: **Added**\n* `leonardo_ai_sdk.motion.create_svd_motion_generation()`: `response.motion_svd_generation_job.cost` **Added**\n* `leonardo_ai_sdk.motion.create_video_upscale()`: **Added**\n* `leonardo_ai_sdk.blueprints.execute_blueprint()`: **Added**\n* `leonardo_ai_sdk.motion.create_image_to_video_generation()`: **Added**\n* `leonardo_ai_sdk.blueprints.list_blueprints()`: **Added**\n* `leonardo_ai_sdk.blueprints.get_blueprint_versions_by_blueprint_id()`: **Added**\n* `leonardo_ai_sdk.realtime_canvas.create_lcm_generation()`: `response.lcm_generation_job.cost` **Added**\n* `leonardo_ai_sdk.realtime_canvas.perform_alchemy_upscale_lcm()`: `response.lcm_generation_job.cost` **Added**\n* `leonardo_ai_sdk.realtime_canvas.perform_inpainting_lcm()`: `response.lcm_generation_job.cost` **Added**\n* `leonardo_ai_sdk.realtime_canvas.perform_instant_refine()`: `response.lcm_generation_job.cost` **Added**\n* `leonardo_ai_sdk.variation.get_motion_variation_by_id()`: **Added**\n* `leonardo_ai_sdk.texture.create_texture_generation()`: `response.texture_generation_job.cost` **Added**\n* `leonardo_ai_sdk.models.create_model()`: `response.sd_training_job.cost` **Added**\n* `leonardo_ai_sdk.blueprints.get_blueprint_execution_generations()`: **Added**\n* `leonardo_ai_sdk.blueprints.get_blueprint_execution()`: **Added**\n* `leonardo_ai_sdk.blueprints.get_blueprint_by_id()`: **Added**\n* `leonardo_ai_sdk.prompt.prompt_improve()`: \n * `request.is_video` **Added**\n * `response.prompt_generation.cost` **Added**\n* `leonardo_ai_sdk.prompt.prompt_random()`: `response.prompt_generation.cost` **Added**\n* `leonardo_ai_sdk.variation.create_universal_upscaler_job()`: `response.universal_upscaler.cost` **Added**\n* `leonardo_ai_sdk.variation.create_variation_no_bg()`: `response.sd_nobg_job.cost` **Added**\n* `leonardo_ai_sdk.variation.create_variation_unzoom()`: `response.sd_unzoom_job.cost` **Added**\n* `leonardo_ai_sdk.variation.create_variation_upscale()`: `response.sd_upscale_job.cost` **Added**\n" +releaseNotes: | + ## Python SDK Changes: + * `leonardo_ai_sdk.media.delete_uploaded_media_by_id()`: **Added** + * `leonardo_ai_sdk.media.get_uploaded_media_by_id()`: **Added** + * `leonardo_ai_sdk.media.upload_media()`: **Added** + * `leonardo_ai_sdk.motion.create_svd_motion_generation()`: **Removed** (Breaking ⚠️) + * `leonardo_ai_sdk.motion.create_video_upscale()`: **Removed** (Breaking ⚠️) + * `leonardo_ai_sdk.texture.create_texture_generation()`: **Removed** (Breaking ⚠️) + * `leonardo_ai_sdk.texture.delete_texture_generation_by_id()`: **Removed** (Breaking ⚠️) + * `leonardo_ai_sdk.texture.get_texture_generation_by_id()`: **Removed** (Breaking ⚠️) + * `leonardo_ai_sdk.texture.get_texture_generations_by_model_id()`: **Removed** (Breaking ⚠️) generatedFiles: - .devcontainer/README.md - .devcontainer/devcontainer.json diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 23c38f63..6af44f95 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,21 +1,20 @@ -speakeasyVersion: 1.704.0 +speakeasyVersion: 1.773.1 sources: my-source: sourceNamespace: my-source - sourceRevisionDigest: sha256:9adb28712398fd6389599da638dbb6d9d2681d171505e1c84e1c6fd5d2a3be63 - sourceBlobDigest: sha256:40e7a9b979438dc2368260414d20fbd7d4cfd2750887fe9032a4df9fbf985c6e + sourceRevisionDigest: sha256:647ef16641bdc7a49aec6ff81284cd31979dd60342401d83db43f94420cb52d2 + sourceBlobDigest: sha256:c6349873571ffe3c2764ccd45a1415d12cda2f724a7ee0febf1a79948cf8a723 tags: - latest - - speakeasy-sdk-regen-1758759959 - v1.0.0 targets: leonardo-python-sdk: source: my-source sourceNamespace: my-source - sourceRevisionDigest: sha256:9adb28712398fd6389599da638dbb6d9d2681d171505e1c84e1c6fd5d2a3be63 - sourceBlobDigest: sha256:40e7a9b979438dc2368260414d20fbd7d4cfd2750887fe9032a4df9fbf985c6e + sourceRevisionDigest: sha256:647ef16641bdc7a49aec6ff81284cd31979dd60342401d83db43f94420cb52d2 + sourceBlobDigest: sha256:c6349873571ffe3c2764ccd45a1415d12cda2f724a7ee0febf1a79948cf8a723 codeSamplesNamespace: my-source-python-code-samples - codeSamplesRevisionDigest: sha256:985e853c3a0ea1b724a8cf51af04675e2d3fb44a0820656a3cd71a6a1344f9e6 + codeSamplesRevisionDigest: sha256:2e6a88bd81c6057f60f10405cc654161b2511392f3cf1eb217b1d9756948f5bd workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index 2cc13a36..1da88a9b 100755 --- a/README.md +++ b/README.md @@ -268,6 +268,12 @@ asyncio.run(main()) * [upload_canvas_init_image](docs/sdks/initimages/README.md#upload_canvas_init_image) - Upload Canvas Editor init and mask image * [upload_init_image](docs/sdks/initimages/README.md#upload_init_image) - Upload init image +### [Media](docs/sdks/media/README.md) + +* [delete_uploaded_media_by_id](docs/sdks/media/README.md#delete_uploaded_media_by_id) - Delete uploaded media +* [get_uploaded_media_by_id](docs/sdks/media/README.md#get_uploaded_media_by_id) - Get uploaded media +* [upload_media](docs/sdks/media/README.md#upload_media) - Upload media + ### [Models](docs/sdks/models/README.md) * [create_model](docs/sdks/models/README.md#create_model) - Train a Custom Model @@ -279,9 +285,7 @@ asyncio.run(main()) ### [Motion](docs/sdks/motion/README.md) * [create_image_to_video_generation](docs/sdks/motion/README.md#create_image_to_video_generation) - Create a video generation from an image -* [create_svd_motion_generation](docs/sdks/motion/README.md#create_svd_motion_generation) - Create SVD Motion Generation * [create_text_to_video_generation](docs/sdks/motion/README.md#create_text_to_video_generation) - Create a video generation from a text prompt -* [create_video_upscale](docs/sdks/motion/README.md#create_video_upscale) - Upscale a generated video ### [PricingCalculator](docs/sdks/pricingcalculator/README.md) @@ -299,13 +303,6 @@ asyncio.run(main()) * [perform_inpainting_lcm](docs/sdks/realtimecanvas/README.md#perform_inpainting_lcm) - Perform inpainting on a LCM image * [perform_instant_refine](docs/sdks/realtimecanvas/README.md#perform_instant_refine) - Perform instant refine on a LCM image -### [Texture](docs/sdks/texture/README.md) - -* [create_texture_generation](docs/sdks/texture/README.md#create_texture_generation) - Create Texture Generation -* [delete_texture_generation_by_id](docs/sdks/texture/README.md#delete_texture_generation_by_id) - Delete Texture Generation by ID -* [get_texture_generation_by_id](docs/sdks/texture/README.md#get_texture_generation_by_id) - Get Texture Generation by ID -* [get_texture_generations_by_model_id](docs/sdks/texture/README.md#get_texture_generations_by_model_id) - Get texture generations by 3D Model ID - ### [User](docs/sdks/user/README.md) * [get_user_self](docs/sdks/user/README.md#get_user_self) - Get user information @@ -535,7 +532,7 @@ with LeonardoAiSDK( **Inherit from [`LeonardoAiSDKError`](./src/leonardo_ai_sdk/models/errors/leonardoaisdkerror.py)**: -* [`ExecuteBlueprintResponseBody`](./src/leonardo_ai_sdk/models/errors/executeblueprintresponsebody.py): Bad Request - Invalid input type or missing required GraphQL field. Status code `400`. Applicable to 1 of 55 methods.* +* [`ExecuteBlueprintResponseBody`](./src/leonardo_ai_sdk/models/errors/executeblueprintresponsebody.py): Bad Request - Invalid input type or missing required GraphQL field. Status code `400`. Applicable to 1 of 52 methods.* * [`ResponseValidationError`](./src/leonardo_ai_sdk/models/errors/responsevalidationerror.py): Type mismatch between the response data and the expected Pydantic model. Provides access to the Pydantic validation error via the `cause` attribute. diff --git a/RELEASES.md b/RELEASES.md index 6b24e0b5..a6dee68c 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1336,4 +1336,14 @@ Based on: ### Generated - [python v7.0.0] . ### Releases -- [PyPI v7.0.0] https://pypi.org/project/Leonardo-Ai-SDK/7.0.0 - . \ No newline at end of file +- [PyPI v7.0.0] https://pypi.org/project/Leonardo-Ai-SDK/7.0.0 - . + +## 2026-06-09 00:58:46 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.773.1 (2.897.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v7.1.0] . +### Releases +- [PyPI v7.1.0] https://pypi.org/project/Leonardo-Ai-SDK/7.1.0 - . \ No newline at end of file diff --git a/docs/models/operations/createimagetovideogenerationmotionstring.md b/docs/models/operations/createimagetovideogenerationmotionstring.md index 5882d58e..c3b3d032 100644 --- a/docs/models/operations/createimagetovideogenerationmotionstring.md +++ b/docs/models/operations/createimagetovideogenerationmotionstring.md @@ -2,6 +2,14 @@ The resolution of the output video. Acceptable values vary based on model +## Example Usage + +```python +from leonardo_ai_sdk.models.operations import CreateImageToVideoGenerationMotionString + +value = CreateImageToVideoGenerationMotionString.RESOLUTION_480 +``` + ## Values diff --git a/docs/models/operations/createimagetovideogenerationstring.md b/docs/models/operations/createimagetovideogenerationstring.md index cdced643..fc4c0f58 100644 --- a/docs/models/operations/createimagetovideogenerationstring.md +++ b/docs/models/operations/createimagetovideogenerationstring.md @@ -2,6 +2,14 @@ The model to use for the video generation. Defaults to MOTION2 if not specified. +## Example Usage + +```python +from leonardo_ai_sdk.models.operations import CreateImageToVideoGenerationString + +value = CreateImageToVideoGenerationString.MOTION2 +``` + ## Values diff --git a/docs/models/operations/createmodelsdversions.md b/docs/models/operations/createmodelsdversions.md index 45e7135d..23c5c2dc 100644 --- a/docs/models/operations/createmodelsdversions.md +++ b/docs/models/operations/createmodelsdversions.md @@ -2,6 +2,14 @@ The base version of stable diffusion to use if not using a custom model. v1_5 is 1.5, v2 is 2.1, if not specified it will default to v1_5. +## Example Usage + +```python +from leonardo_ai_sdk.models.operations import CreateModelSdVersions + +value = CreateModelSdVersions.V1_5 +``` + ## Values diff --git a/docs/models/operations/createsvdmotiongenerationrequestbody.md b/docs/models/operations/createsvdmotiongenerationrequestbody.md deleted file mode 100644 index 286454c7..00000000 --- a/docs/models/operations/createsvdmotiongenerationrequestbody.md +++ /dev/null @@ -1,14 +0,0 @@ -# CreateSVDMotionGenerationRequestBody - -Query parameters can also be provided in the request body as a JSON object - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -| `image_id` | *str* | :heavy_check_mark: | The ID of the image, supports generated images, variation images, and init images. | -| `is_init_image` | *OptionalNullable[bool]* | :heavy_minus_sign: | If it is an init image uploaded by the user. This image is uploaded from endpoint: Upload init image. | -| `is_public` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether the generation is public or not | -| `is_variation` | *OptionalNullable[bool]* | :heavy_minus_sign: | If it is a variation image. | -| `motion_strength` | *OptionalNullable[int]* | :heavy_minus_sign: | The motion strength. | \ No newline at end of file diff --git a/docs/models/operations/createsvdmotiongenerationresponse.md b/docs/models/operations/createsvdmotiongenerationresponse.md deleted file mode 100644 index 3cb5282b..00000000 --- a/docs/models/operations/createsvdmotiongenerationresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# CreateSVDMotionGenerationResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.CreateSVDMotionGenerationResponseBody]](../../models/operations/createsvdmotiongenerationresponsebody.md) | :heavy_minus_sign: | Responses for POST /generations-motion-svd | \ No newline at end of file diff --git a/docs/models/operations/createsvdmotiongenerationresponsebody.md b/docs/models/operations/createsvdmotiongenerationresponsebody.md deleted file mode 100644 index f1d30eb3..00000000 --- a/docs/models/operations/createsvdmotiongenerationresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# CreateSVDMotionGenerationResponseBody - -Responses for POST /generations-motion-svd - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `motion_svd_generation_job` | [OptionalNullable[operations.MotionSvdGenerationOutput]](../../models/operations/motionsvdgenerationoutput.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/createtexttovideogenerationmotionstring.md b/docs/models/operations/createtexttovideogenerationmotionstring.md index a6e775f5..1bc2bbea 100644 --- a/docs/models/operations/createtexttovideogenerationmotionstring.md +++ b/docs/models/operations/createtexttovideogenerationmotionstring.md @@ -2,6 +2,14 @@ The resolution of the output video. Acceptable values vary based on model +## Example Usage + +```python +from leonardo_ai_sdk.models.operations import CreateTextToVideoGenerationMotionString + +value = CreateTextToVideoGenerationMotionString.RESOLUTION_480 +``` + ## Values diff --git a/docs/models/operations/createtexttovideogenerationstring.md b/docs/models/operations/createtexttovideogenerationstring.md index d095d8c1..c5f3bba1 100644 --- a/docs/models/operations/createtexttovideogenerationstring.md +++ b/docs/models/operations/createtexttovideogenerationstring.md @@ -2,6 +2,14 @@ The model to use for the video generation. Defaults to MOTION2 if not specified. +## Example Usage + +```python +from leonardo_ai_sdk.models.operations import CreateTextToVideoGenerationString + +value = CreateTextToVideoGenerationString.MOTION2 +``` + ## Values diff --git a/docs/models/operations/createtexturegenerationrequestbody.md b/docs/models/operations/createtexturegenerationrequestbody.md deleted file mode 100644 index 36aa9b06..00000000 --- a/docs/models/operations/createtexturegenerationrequestbody.md +++ /dev/null @@ -1,17 +0,0 @@ -# CreateTextureGenerationRequestBody - -Query parameters can also be provided in the request body as a JSON object - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | -| `front_rotation_offset` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | -| `model_asset_id` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `negative_prompt` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `preview` | *OptionalNullable[bool]* | :heavy_minus_sign: | N/A | -| `preview_direction` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `prompt` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `sd_version` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `seed` | *OptionalNullable[int]* | :heavy_minus_sign: | Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models | \ No newline at end of file diff --git a/docs/models/operations/createtexturegenerationresponsebody.md b/docs/models/operations/createtexturegenerationresponsebody.md deleted file mode 100644 index bcb65923..00000000 --- a/docs/models/operations/createtexturegenerationresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# CreateTextureGenerationResponseBody - -Responses for POST /api/rest/v1/generations-texture - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `texture_generation_job` | [OptionalNullable[operations.TextureGenerationJobOutput]](../../models/operations/texturegenerationjoboutput.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/createvideoupscalemotionvideogenerationoutput.md b/docs/models/operations/createvideoupscalemotionvideogenerationoutput.md deleted file mode 100644 index 74a4dd97..00000000 --- a/docs/models/operations/createvideoupscalemotionvideogenerationoutput.md +++ /dev/null @@ -1,11 +0,0 @@ -# CreateVideoUpscaleMotionVideoGenerationOutput - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ~~`api_credit_cost`~~ | *OptionalNullable[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

API credits cost, available for Production API users. Note: it will be deprecated. Please use the cost instead. | -| `cost` | [OptionalNullable[shared.Cost]](../../models/shared/cost.md) | :heavy_minus_sign: | The cost of the operation. | -| `generation_id` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `variation_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the upscale variation. | \ No newline at end of file diff --git a/docs/models/operations/createvideoupscalerequestbody.md b/docs/models/operations/createvideoupscalerequestbody.md deleted file mode 100644 index fe3b22d6..00000000 --- a/docs/models/operations/createvideoupscalerequestbody.md +++ /dev/null @@ -1,11 +0,0 @@ -# CreateVideoUpscaleRequestBody - -Query parameters can also be provided in the request body as a JSON object - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `resolution` | [operations.CreateVideoUpscaleString](../../models/operations/createvideoupscalestring.md) | :heavy_check_mark: | The resolution of the upscaled video. RESOLUTION_720 is the only option for now. | -| `source_generation_id` | *str* | :heavy_check_mark: | The ID of the source video generation to upscale. | \ No newline at end of file diff --git a/docs/models/operations/createvideoupscaleresponse.md b/docs/models/operations/createvideoupscaleresponse.md deleted file mode 100644 index 1cd49352..00000000 --- a/docs/models/operations/createvideoupscaleresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# CreateVideoUpscaleResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.CreateVideoUpscaleResponseBody]](../../models/operations/createvideoupscaleresponsebody.md) | :heavy_minus_sign: | Responses for POST /generations-text-to-video | \ No newline at end of file diff --git a/docs/models/operations/createvideoupscaleresponsebody.md b/docs/models/operations/createvideoupscaleresponsebody.md deleted file mode 100644 index 54bc13bb..00000000 --- a/docs/models/operations/createvideoupscaleresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# CreateVideoUpscaleResponseBody - -Responses for POST /generations-text-to-video - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `motion_video_generation_job` | [OptionalNullable[operations.CreateVideoUpscaleMotionVideoGenerationOutput]](../../models/operations/createvideoupscalemotionvideogenerationoutput.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/createvideoupscalestring.md b/docs/models/operations/createvideoupscalestring.md deleted file mode 100644 index bdf3873b..00000000 --- a/docs/models/operations/createvideoupscalestring.md +++ /dev/null @@ -1,10 +0,0 @@ -# CreateVideoUpscaleString - -The resolution of the upscaled video. RESOLUTION_720 is the only option for now. - - -## Values - -| Name | Value | -| ---------------- | ---------------- | -| `RESOLUTION_720` | RESOLUTION_720 | \ No newline at end of file diff --git a/docs/models/operations/deletetexturegenerationbyidrequestbody.md b/docs/models/operations/deletetexturegenerationbyidrequestbody.md deleted file mode 100644 index a9d885e4..00000000 --- a/docs/models/operations/deletetexturegenerationbyidrequestbody.md +++ /dev/null @@ -1,10 +0,0 @@ -# DeleteTextureGenerationByIDRequestBody - -Query parameters can also be provided in the request body as a JSON object - - -## Fields - -| Field | Type | Required | Description | -| ----------------------- | ----------------------- | ----------------------- | ----------------------- | -| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/deletetexturegenerationbyidresponse.md b/docs/models/operations/deletetexturegenerationbyidresponse.md deleted file mode 100644 index 50d3a166..00000000 --- a/docs/models/operations/deletetexturegenerationbyidresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# DeleteTextureGenerationByIDResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.DeleteTextureGenerationByIDResponseBody]](../../models/operations/deletetexturegenerationbyidresponsebody.md) | :heavy_minus_sign: | Responses for DELETE /api/rest/v1/generations-texture/{id} | \ No newline at end of file diff --git a/docs/models/operations/deletetexturegenerationbyidresponsebody.md b/docs/models/operations/deletetexturegenerationbyidresponsebody.md deleted file mode 100644 index ea3e69d2..00000000 --- a/docs/models/operations/deletetexturegenerationbyidresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# DeleteTextureGenerationByIDResponseBody - -Responses for DELETE /api/rest/v1/generations-texture/{id} - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `delete_model_asset_texture_generations_by_pk` | [OptionalNullable[operations.ModelAssetTextureGenerations]](../../models/operations/modelassettexturegenerations.md) | :heavy_minus_sign: | columns and relationships of "model_asset_texture_generations" | \ No newline at end of file diff --git a/docs/models/operations/deleteuploadedmediabyidrequest.md b/docs/models/operations/deleteuploadedmediabyidrequest.md new file mode 100644 index 00000000..c4221ca0 --- /dev/null +++ b/docs/models/operations/deleteuploadedmediabyidrequest.md @@ -0,0 +1,8 @@ +# DeleteUploadedMediaByIDRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `id` | *str* | :heavy_check_mark: | _"id" is required_ | \ No newline at end of file diff --git a/docs/models/operations/createtexturegenerationresponse.md b/docs/models/operations/deleteuploadedmediabyidresponse.md similarity index 92% rename from docs/models/operations/createtexturegenerationresponse.md rename to docs/models/operations/deleteuploadedmediabyidresponse.md index 65d2ee00..358bfe57 100644 --- a/docs/models/operations/createtexturegenerationresponse.md +++ b/docs/models/operations/deleteuploadedmediabyidresponse.md @@ -1,4 +1,4 @@ -# CreateTextureGenerationResponse +# DeleteUploadedMediaByIDResponse ## Fields @@ -8,4 +8,4 @@ | `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | | `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | | `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.CreateTextureGenerationResponseBody]](../../models/operations/createtexturegenerationresponsebody.md) | :heavy_minus_sign: | Responses for POST /api/rest/v1/generations-texture | \ No newline at end of file +| `object` | [Optional[operations.DeleteUploadedMediaByIDResponseBody]](../../models/operations/deleteuploadedmediabyidresponsebody.md) | :heavy_minus_sign: | Responses for DELETE /media/{id} | \ No newline at end of file diff --git a/docs/models/operations/deleteuploadedmediabyidresponsebody.md b/docs/models/operations/deleteuploadedmediabyidresponsebody.md new file mode 100644 index 00000000..ca075d07 --- /dev/null +++ b/docs/models/operations/deleteuploadedmediabyidresponsebody.md @@ -0,0 +1,10 @@ +# DeleteUploadedMediaByIDResponseBody + +Responses for DELETE /media/{id} + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `delete_uploaded_media_by_pk` | [OptionalNullable[operations.UploadedMedia]](../../models/operations/uploadedmedia.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gettexturegenerationbyidmodelassettexturegenerations.md b/docs/models/operations/gettexturegenerationbyidmodelassettexturegenerations.md deleted file mode 100644 index 5c6e5f7d..00000000 --- a/docs/models/operations/gettexturegenerationbyidmodelassettexturegenerations.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetTextureGenerationByIDModelAssetTextureGenerations - -columns and relationships of "model_asset_texture_generations" - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | -| `created_at` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `model_asset_texture_images` | List[[operations.ModelAssetTextureImages](../../models/operations/modelassettextureimages.md)] | :heavy_minus_sign: | N/A | -| `negative_prompt` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `prompt` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `seed` | *OptionalNullable[int]* | :heavy_minus_sign: | Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models | -| `status` | [Optional[shared.JobStatus]](../../models/shared/jobstatus.md) | :heavy_minus_sign: | The status of the current task. | \ No newline at end of file diff --git a/docs/models/operations/gettexturegenerationbyidrequest.md b/docs/models/operations/gettexturegenerationbyidrequest.md deleted file mode 100644 index 6387b018..00000000 --- a/docs/models/operations/gettexturegenerationbyidrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTextureGenerationByIDRequest - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| `request_body` | [Optional[operations.GetTextureGenerationByIDRequestBody]](../../models/operations/gettexturegenerationbyidrequestbody.md) | :heavy_minus_sign: | Query parameters can also be provided in the request body as a JSON object | -| `id` | *str* | :heavy_check_mark: | _"id" is required (enter it either in parameters or request body)_ | -| `limit` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `offset` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gettexturegenerationbyidrequestbody.md b/docs/models/operations/gettexturegenerationbyidrequestbody.md deleted file mode 100644 index 60b6ef4f..00000000 --- a/docs/models/operations/gettexturegenerationbyidrequestbody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTextureGenerationByIDRequestBody - -Query parameters can also be provided in the request body as a JSON object - - -## Fields - -| Field | Type | Required | Description | -| ----------------------- | ----------------------- | ----------------------- | ----------------------- | -| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gettexturegenerationbyidresponse.md b/docs/models/operations/gettexturegenerationbyidresponse.md deleted file mode 100644 index 624ca355..00000000 --- a/docs/models/operations/gettexturegenerationbyidresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTextureGenerationByIDResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetTextureGenerationByIDResponseBody]](../../models/operations/gettexturegenerationbyidresponsebody.md) | :heavy_minus_sign: | Responses for GET /api/rest/v1/generations-texture/{id} | \ No newline at end of file diff --git a/docs/models/operations/gettexturegenerationbyidresponsebody.md b/docs/models/operations/gettexturegenerationbyidresponsebody.md deleted file mode 100644 index b1313273..00000000 --- a/docs/models/operations/gettexturegenerationbyidresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTextureGenerationByIDResponseBody - -Responses for GET /api/rest/v1/generations-texture/{id} - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `model_asset_texture_generations_by_pk` | [OptionalNullable[operations.GetTextureGenerationByIDModelAssetTextureGenerations]](../../models/operations/gettexturegenerationbyidmodelassettexturegenerations.md) | :heavy_minus_sign: | columns and relationships of "model_asset_texture_generations" | \ No newline at end of file diff --git a/docs/models/operations/gettexturegenerationsbymodelidmodelassettexturegenerations.md b/docs/models/operations/gettexturegenerationsbymodelidmodelassettexturegenerations.md deleted file mode 100644 index 399bce68..00000000 --- a/docs/models/operations/gettexturegenerationsbymodelidmodelassettexturegenerations.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetTextureGenerationsByModelIDModelAssetTextureGenerations - -columns and relationships of "model_asset_texture_generations" - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `created_at` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `model_asset_texture_images` | List[[operations.GetTextureGenerationsByModelIDModelAssetTextureImages](../../models/operations/gettexturegenerationsbymodelidmodelassettextureimages.md)] | :heavy_minus_sign: | N/A | -| `negative_prompt` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `prompt` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `seed` | *OptionalNullable[int]* | :heavy_minus_sign: | Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models | -| `status` | [Optional[shared.JobStatus]](../../models/shared/jobstatus.md) | :heavy_minus_sign: | The status of the current task. | \ No newline at end of file diff --git a/docs/models/operations/gettexturegenerationsbymodelidmodelassettextureimages.md b/docs/models/operations/gettexturegenerationsbymodelidmodelassettextureimages.md deleted file mode 100644 index df9d66b3..00000000 --- a/docs/models/operations/gettexturegenerationsbymodelidmodelassettextureimages.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetTextureGenerationsByModelIDModelAssetTextureImages - -columns and relationships of "model_asset_texture_images" - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `type` | [Optional[shared.ModelAssetTextureTypes]](../../models/shared/modelassettexturetypes.md) | :heavy_minus_sign: | When training model assets these are the texture types available to use. | -| `url` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gettexturegenerationsbymodelidrequest.md b/docs/models/operations/gettexturegenerationsbymodelidrequest.md deleted file mode 100644 index 7e961385..00000000 --- a/docs/models/operations/gettexturegenerationsbymodelidrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTextureGenerationsByModelIDRequest - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| `request_body` | [Optional[operations.GetTextureGenerationsByModelIDRequestBody]](../../models/operations/gettexturegenerationsbymodelidrequestbody.md) | :heavy_minus_sign: | Query parameters can also be provided in the request body as a JSON object | -| `limit` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `model_id` | *str* | :heavy_check_mark: | _"modelId" is required (enter it either in parameters or request body)_ | -| `offset` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gettexturegenerationsbymodelidresponse.md b/docs/models/operations/gettexturegenerationsbymodelidresponse.md deleted file mode 100644 index 3a7930c2..00000000 --- a/docs/models/operations/gettexturegenerationsbymodelidresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTextureGenerationsByModelIDResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetTextureGenerationsByModelIDResponseBody]](../../models/operations/gettexturegenerationsbymodelidresponsebody.md) | :heavy_minus_sign: | Responses for GET /api/rest/v1/generations-texture/model/{modelId} | \ No newline at end of file diff --git a/docs/models/operations/gettexturegenerationsbymodelidresponsebody.md b/docs/models/operations/gettexturegenerationsbymodelidresponsebody.md deleted file mode 100644 index b6b25932..00000000 --- a/docs/models/operations/gettexturegenerationsbymodelidresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTextureGenerationsByModelIDResponseBody - -Responses for GET /api/rest/v1/generations-texture/model/{modelId} - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `model_asset_texture_generations` | List[[operations.GetTextureGenerationsByModelIDModelAssetTextureGenerations](../../models/operations/gettexturegenerationsbymodelidmodelassettexturegenerations.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getuploadedmediabyidrequest.md b/docs/models/operations/getuploadedmediabyidrequest.md new file mode 100644 index 00000000..2abb34f6 --- /dev/null +++ b/docs/models/operations/getuploadedmediabyidrequest.md @@ -0,0 +1,8 @@ +# GetUploadedMediaByIDRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `id` | *str* | :heavy_check_mark: | _"id" is required_ | \ No newline at end of file diff --git a/docs/models/operations/getuploadedmediabyidresponse.md b/docs/models/operations/getuploadedmediabyidresponse.md new file mode 100644 index 00000000..ffa3421a --- /dev/null +++ b/docs/models/operations/getuploadedmediabyidresponse.md @@ -0,0 +1,11 @@ +# GetUploadedMediaByIDResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetUploadedMediaByIDResponseBody]](../../models/operations/getuploadedmediabyidresponsebody.md) | :heavy_minus_sign: | Responses for GET /media/{id} | \ No newline at end of file diff --git a/docs/models/operations/getuploadedmediabyidresponsebody.md b/docs/models/operations/getuploadedmediabyidresponsebody.md new file mode 100644 index 00000000..3ee3f7b4 --- /dev/null +++ b/docs/models/operations/getuploadedmediabyidresponsebody.md @@ -0,0 +1,10 @@ +# GetUploadedMediaByIDResponseBody + +Responses for GET /media/{id} + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `uploaded_media_by_pk` | [OptionalNullable[operations.GetUploadedMediaByIDUploadedMedia]](../../models/operations/getuploadedmediabyiduploadedmedia.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getuploadedmediabyiduploadedmedia.md b/docs/models/operations/getuploadedmediabyiduploadedmedia.md new file mode 100644 index 00000000..0d8a324b --- /dev/null +++ b/docs/models/operations/getuploadedmediabyiduploadedmedia.md @@ -0,0 +1,18 @@ +# GetUploadedMediaByIDUploadedMedia + + +## Fields + +| Field | Type | Required | Description | +| ------------------------- | ------------------------- | ------------------------- | ------------------------- | +| `created_at` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `duration` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | +| `height` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | +| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `media_type` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `status` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `status_reason` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `thumbnail_url` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `url` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `video_fps` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | +| `width` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/imagetype.md b/docs/models/operations/imagetype.md index f3ff2bdd..1302b183 100644 --- a/docs/models/operations/imagetype.md +++ b/docs/models/operations/imagetype.md @@ -2,6 +2,14 @@ Type indicating whether the init image is uploaded or generated. Use only image or imageId with imageType. +## Example Usage + +```python +from leonardo_ai_sdk.models.operations import ImageType + +value = ImageType.GENERATED +``` + ## Values diff --git a/docs/models/operations/gettexturegenerationsbymodelidrequestbody.md b/docs/models/operations/mediauploadoutput.md similarity index 52% rename from docs/models/operations/gettexturegenerationsbymodelidrequestbody.md rename to docs/models/operations/mediauploadoutput.md index 2d9ffcab..0bd0815b 100644 --- a/docs/models/operations/gettexturegenerationsbymodelidrequestbody.md +++ b/docs/models/operations/mediauploadoutput.md @@ -1,12 +1,10 @@ -# GetTextureGenerationsByModelIDRequestBody - -Query parameters can also be provided in the request body as a JSON object +# MediaUploadOutput ## Fields | Field | Type | Required | Description | | ----------------------- | ----------------------- | ----------------------- | ----------------------- | -| `limit` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | -| `model_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `offset` | *OptionalNullable[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `upload_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | +| `url` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/modelassettextureimages.md b/docs/models/operations/modelassettextureimages.md deleted file mode 100644 index 385e2563..00000000 --- a/docs/models/operations/modelassettextureimages.md +++ /dev/null @@ -1,12 +0,0 @@ -# ModelAssetTextureImages - -columns and relationships of "model_asset_texture_images" - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | -| `type` | [Optional[shared.ModelAssetTextureTypes]](../../models/shared/modelassettexturetypes.md) | :heavy_minus_sign: | When training model assets these are the texture types available to use. | -| `url` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/motionsvdgenerationoutput.md b/docs/models/operations/motionsvdgenerationoutput.md deleted file mode 100644 index 3cec6184..00000000 --- a/docs/models/operations/motionsvdgenerationoutput.md +++ /dev/null @@ -1,10 +0,0 @@ -# MotionSvdGenerationOutput - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ~~`api_credit_cost`~~ | *OptionalNullable[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

API credits cost, available for Production API users. Note: it will be deprecated. Please use the cost instead. | -| `cost` | [OptionalNullable[shared.Cost]](../../models/shared/cost.md) | :heavy_minus_sign: | The cost of the operation. | -| `generation_id` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/platforms.md b/docs/models/operations/platforms.md index 24a1afb9..5d0a7d1d 100644 --- a/docs/models/operations/platforms.md +++ b/docs/models/operations/platforms.md @@ -1,5 +1,13 @@ # Platforms +## Example Usage + +```python +from leonardo_ai_sdk.models.operations import Platforms + +value = Platforms.ANDROID +``` + ## Values diff --git a/docs/models/operations/pricingcalculatorstring.md b/docs/models/operations/pricingcalculatorstring.md index 205ccc6b..cc2e6a44 100644 --- a/docs/models/operations/pricingcalculatorstring.md +++ b/docs/models/operations/pricingcalculatorstring.md @@ -2,6 +2,14 @@ The resolution of the video. Supported resolution for VEO3 is RESOLUTION_720. +## Example Usage + +```python +from leonardo_ai_sdk.models.operations import PricingCalculatorString + +value = PricingCalculatorString.RESOLUTION_720 +``` + ## Values diff --git a/docs/models/operations/sdversion.md b/docs/models/operations/sdversion.md index 01967eb9..a20ff2da 100644 --- a/docs/models/operations/sdversion.md +++ b/docs/models/operations/sdversion.md @@ -2,6 +2,14 @@ The model for the training. Can be set to 'FLUX_DEV' for FLUX_DEV specific pricing or can be omitted. +## Example Usage + +```python +from leonardo_ai_sdk.models.operations import SdVersion + +value = SdVersion.FLUX_DEV +``` + ## Values diff --git a/docs/models/operations/sdversions.md b/docs/models/operations/sdversions.md index 244d34c7..5fe06319 100644 --- a/docs/models/operations/sdversions.md +++ b/docs/models/operations/sdversions.md @@ -2,6 +2,14 @@ The base version to use if not using a custom model. +## Example Usage + +```python +from leonardo_ai_sdk.models.operations import SdVersions + +value = SdVersions.SDXL_0_9 +``` + ## Values diff --git a/docs/models/operations/string.md b/docs/models/operations/string.md index 71741b58..c4aecf7e 100644 --- a/docs/models/operations/string.md +++ b/docs/models/operations/string.md @@ -2,6 +2,14 @@ Type indicating whether the end frame image is uploaded or generated. +## Example Usage + +```python +from leonardo_ai_sdk.models.operations import String + +value = String.GENERATED +``` + ## Values diff --git a/docs/models/operations/texturegenerationjoboutput.md b/docs/models/operations/texturegenerationjoboutput.md deleted file mode 100644 index 099b953c..00000000 --- a/docs/models/operations/texturegenerationjoboutput.md +++ /dev/null @@ -1,10 +0,0 @@ -# TextureGenerationJobOutput - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ~~`api_credit_cost`~~ | *OptionalNullable[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

API Credits Cost for Texture Generation. Available for Production API Users. Note: it will be deprecated. Please use the cost instead. | -| `cost` | [OptionalNullable[shared.Cost]](../../models/shared/cost.md) | :heavy_minus_sign: | The cost of the operation. | -| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/transparencytype.md b/docs/models/operations/transparencytype.md index c97e249d..ce7b0677 100644 --- a/docs/models/operations/transparencytype.md +++ b/docs/models/operations/transparencytype.md @@ -2,6 +2,14 @@ Which type of transparency this image should use +## Example Usage + +```python +from leonardo_ai_sdk.models.operations import TransparencyType + +value = TransparencyType.DISABLED +``` + ## Values diff --git a/docs/models/operations/modelassettexturegenerations.md b/docs/models/operations/uploadedmedia.md similarity index 77% rename from docs/models/operations/modelassettexturegenerations.md rename to docs/models/operations/uploadedmedia.md index 1655c0c3..84ac6e4f 100644 --- a/docs/models/operations/modelassettexturegenerations.md +++ b/docs/models/operations/uploadedmedia.md @@ -1,6 +1,4 @@ -# ModelAssetTextureGenerations - -columns and relationships of "model_asset_texture_generations" +# UploadedMedia ## Fields diff --git a/docs/models/operations/deletetexturegenerationbyidrequest.md b/docs/models/operations/uploadmediarequestbody.md similarity index 56% rename from docs/models/operations/deletetexturegenerationbyidrequest.md rename to docs/models/operations/uploadmediarequestbody.md index b9e13670..84611495 100644 --- a/docs/models/operations/deletetexturegenerationbyidrequest.md +++ b/docs/models/operations/uploadmediarequestbody.md @@ -1,9 +1,12 @@ -# DeleteTextureGenerationByIDRequest +# UploadMediaRequestBody + +Query parameters provided in the request body as a JSON object ## Fields | Field | Type | Required | Description | | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -| `request_body` | [Optional[operations.DeleteTextureGenerationByIDRequestBody]](../../models/operations/deletetexturegenerationbyidrequestbody.md) | :heavy_minus_sign: | Query parameters can also be provided in the request body as a JSON object | -| `id` | *str* | :heavy_check_mark: | _"id" is required (enter it either in parameters or request body)_ | \ No newline at end of file +| `extension` | *str* | :heavy_check_mark: | The file extension of the media file to upload. Supported extensions for video: `mp4`, `mov`. Supported for audio: `mp3`, `wav`. | +| `original_filename` | *OptionalNullable[str]* | :heavy_minus_sign: | Original file name for display. Required for audio uploads (`mp3`, `wav`). Optional for video. | +| `team_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional team UUID. When set, the upload is associated with that team and the caller must be a member. | \ No newline at end of file diff --git a/docs/models/operations/uploadmediaresponse.md b/docs/models/operations/uploadmediaresponse.md new file mode 100644 index 00000000..c6397337 --- /dev/null +++ b/docs/models/operations/uploadmediaresponse.md @@ -0,0 +1,11 @@ +# UploadMediaResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.UploadMediaResponseBody]](../../models/operations/uploadmediaresponsebody.md) | :heavy_minus_sign: | Responses for POST /media | \ No newline at end of file diff --git a/docs/models/operations/uploadmediaresponsebody.md b/docs/models/operations/uploadmediaresponsebody.md new file mode 100644 index 00000000..b03478c1 --- /dev/null +++ b/docs/models/operations/uploadmediaresponsebody.md @@ -0,0 +1,10 @@ +# UploadMediaResponseBody + +Responses for POST /media + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `upload_media` | [OptionalNullable[operations.MediaUploadOutput]](../../models/operations/mediauploadoutput.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/shared/blueprint.md b/docs/models/shared/blueprint.md index 4396fcd5..d55e7af5 100644 --- a/docs/models/shared/blueprint.md +++ b/docs/models/shared/blueprint.md @@ -12,6 +12,6 @@ A Blueprint object | `description` | *Optional[str]* | :heavy_minus_sign: | Description of the Blueprint | Relight an image with warm, golden tones of late afternoon sunlight for a soft and radiant glow. | | `name` | *Optional[str]* | :heavy_minus_sign: | Name of the Blueprint | Golden Hour Relight | | `official` | *Optional[bool]* | :heavy_minus_sign: | Whether this is an official Blueprint | true | -| `team_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Team ID if Blueprint belongs to a team | | +| `team_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Team ID if Blueprint belongs to a team | null | | `thumbnails` | List[[shared.Thumbnails](../../models/shared/thumbnails.md)] | :heavy_minus_sign: | N/A | | | `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Last update timestamp | 2025-12-19T02:34:44.740Z | \ No newline at end of file diff --git a/docs/models/shared/blueprintexecutiongenerationstatus.md b/docs/models/shared/blueprintexecutiongenerationstatus.md index abe61151..6f0e21bf 100644 --- a/docs/models/shared/blueprintexecutiongenerationstatus.md +++ b/docs/models/shared/blueprintexecutiongenerationstatus.md @@ -2,6 +2,14 @@ The status of a Blueprint Execution Generation +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import BlueprintExecutionGenerationStatus + +value = BlueprintExecutionGenerationStatus.PENDING +``` + ## Values diff --git a/docs/models/shared/blueprintexecutionstatus.md b/docs/models/shared/blueprintexecutionstatus.md index f041b6c3..c9b55003 100644 --- a/docs/models/shared/blueprintexecutionstatus.md +++ b/docs/models/shared/blueprintexecutionstatus.md @@ -2,6 +2,14 @@ The status of a Blueprint Execution. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import BlueprintExecutionStatus + +value = BlueprintExecutionStatus.PENDING +``` + ## Values diff --git a/docs/models/shared/canvasrequesttype.md b/docs/models/shared/canvasrequesttype.md index 6bb36e7a..238f523b 100644 --- a/docs/models/shared/canvasrequesttype.md +++ b/docs/models/shared/canvasrequesttype.md @@ -2,6 +2,14 @@ The type of request for the Canvas Editor. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import CanvasRequestType + +value = CanvasRequestType.INPAINT +``` + ## Values diff --git a/docs/models/shared/controlnettype.md b/docs/models/shared/controlnettype.md index 7dc0dc38..85ad012c 100644 --- a/docs/models/shared/controlnettype.md +++ b/docs/models/shared/controlnettype.md @@ -4,6 +4,14 @@ This parameter will be deprecated in September 2024. Please use the controlnets > :warning: **DEPRECATED**: This will be removed in a future release, please migrate away from it as soon as possible. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import ControlnetType + +value = ControlnetType.POSE +``` + ## Values diff --git a/docs/models/shared/custommodeltype.md b/docs/models/shared/custommodeltype.md index 005d047c..fde14e59 100644 --- a/docs/models/shared/custommodeltype.md +++ b/docs/models/shared/custommodeltype.md @@ -2,6 +2,14 @@ The category the most accurately reflects the model. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import CustomModelType + +value = CustomModelType.GENERAL +``` + ## Values diff --git a/docs/models/shared/initimagetype.md b/docs/models/shared/initimagetype.md index 37601610..8fb009c3 100644 --- a/docs/models/shared/initimagetype.md +++ b/docs/models/shared/initimagetype.md @@ -2,6 +2,14 @@ Type indicating whether the init image is uploaded or generated. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import InitImageType + +value = InitImageType.GENERATED +``` + ## Values diff --git a/docs/models/shared/jobstatus.md b/docs/models/shared/jobstatus.md index 5248e7fb..15a8580a 100644 --- a/docs/models/shared/jobstatus.md +++ b/docs/models/shared/jobstatus.md @@ -2,6 +2,14 @@ The status of the current task. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import JobStatus + +value = JobStatus.PENDING +``` + ## Values diff --git a/docs/models/shared/lcmgenerationstyle.md b/docs/models/shared/lcmgenerationstyle.md index 93a8d52d..de10d0a6 100644 --- a/docs/models/shared/lcmgenerationstyle.md +++ b/docs/models/shared/lcmgenerationstyle.md @@ -2,6 +2,14 @@ The style to generate LCM images with. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import LcmGenerationStyle + +value = LcmGenerationStyle.ANIME +``` + ## Values diff --git a/docs/models/shared/modelassettexturetypes.md b/docs/models/shared/modelassettexturetypes.md deleted file mode 100644 index e21fb578..00000000 --- a/docs/models/shared/modelassettexturetypes.md +++ /dev/null @@ -1,14 +0,0 @@ -# ModelAssetTextureTypes - -When training model assets these are the texture types available to use. - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `ALBEDO` | ALBEDO | -| `NORMAL` | NORMAL | -| `ROUGHNESS` | ROUGHNESS | -| `DISPLACEMENT` | DISPLACEMENT | -| `HDRP_MASK` | HDRP_MASK | \ No newline at end of file diff --git a/docs/models/shared/motionresolution.md b/docs/models/shared/motionresolution.md index 17f9b578..681778e9 100644 --- a/docs/models/shared/motionresolution.md +++ b/docs/models/shared/motionresolution.md @@ -2,6 +2,14 @@ The resolution of the upscaled video. RESOLUTION_720 is the only option for now. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import MotionResolution + +value = MotionResolution.RESOLUTION_720 +``` + ## Values diff --git a/docs/models/shared/motionvariationtype.md b/docs/models/shared/motionvariationtype.md index 10aefe3f..0f6f0800 100644 --- a/docs/models/shared/motionvariationtype.md +++ b/docs/models/shared/motionvariationtype.md @@ -2,6 +2,14 @@ The type of motion variation. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import MotionVariationType + +value = MotionVariationType.UPSCALE +``` + ## Values diff --git a/docs/models/shared/pricingcalculatorservices.md b/docs/models/shared/pricingcalculatorservices.md index b3216260..c6b70f3c 100644 --- a/docs/models/shared/pricingcalculatorservices.md +++ b/docs/models/shared/pricingcalculatorservices.md @@ -2,6 +2,14 @@ The services to be chosen for calculating the API credit cost. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import PricingCalculatorServices + +value = PricingCalculatorServices.IMAGE_GENERATION +``` + ## Values diff --git a/docs/models/shared/sdgenerationschedulers.md b/docs/models/shared/sdgenerationschedulers.md index 4606699f..fcdae06b 100644 --- a/docs/models/shared/sdgenerationschedulers.md +++ b/docs/models/shared/sdgenerationschedulers.md @@ -2,6 +2,14 @@ The scheduler to generate images with. Defaults to EULER_DISCRETE if not specified. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import SdGenerationSchedulers + +value = SdGenerationSchedulers.KLMS +``` + ## Values diff --git a/docs/models/shared/sdgenerationstyle.md b/docs/models/shared/sdgenerationstyle.md index 6dbe8407..7f7a5518 100644 --- a/docs/models/shared/sdgenerationstyle.md +++ b/docs/models/shared/sdgenerationstyle.md @@ -2,6 +2,14 @@ The style to generate images with. When photoReal is enabled, refer to the Guide section for a full list. When alchemy is disabled, use LEONARDO or NONE. When alchemy is enabled, use ANIME, CREATIVE, DYNAMIC, ENVIRONMENT, GENERAL, ILLUSTRATION, PHOTOGRAPHY, RAYTRACED, RENDER_3D, SKETCH_BW, SKETCH_COLOR, or NONE. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import SdGenerationStyle + +value = SdGenerationStyle.ANIME +``` + ## Values diff --git a/docs/models/shared/sdversions.md b/docs/models/shared/sdversions.md index 672cf926..1070ba0f 100644 --- a/docs/models/shared/sdversions.md +++ b/docs/models/shared/sdversions.md @@ -2,6 +2,14 @@ The base version of stable diffusion to use if not using a custom model. v1_5 is 1.5, v2 is 2.1, if not specified it will default to v1_5. Also includes SDXL and SDXL Lightning models +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import SdVersions + +value = SdVersions.V1_5 +``` + ## Values diff --git a/docs/models/shared/settingname.md b/docs/models/shared/settingname.md index 6580fd61..273ddb4b 100644 --- a/docs/models/shared/settingname.md +++ b/docs/models/shared/settingname.md @@ -5,6 +5,14 @@ The type of setting to replace: - `imageUrl`: Image URL input (value is a URL string) - `textVariables`: Text with placeholder variables (value is an array of TextVariable) +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import SettingName + +value = SettingName.TEXT +``` + ## Values diff --git a/docs/models/shared/strength.md b/docs/models/shared/strength.md index ec58567f..a579a22a 100644 --- a/docs/models/shared/strength.md +++ b/docs/models/shared/strength.md @@ -2,6 +2,14 @@ When training using the PIXEL_ART model type, this influences the training strength. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import Strength + +value = Strength.VERY_LOW +``` + ## Values diff --git a/docs/models/shared/strengthtype.md b/docs/models/shared/strengthtype.md index 5a9d1283..0e1981b0 100644 --- a/docs/models/shared/strengthtype.md +++ b/docs/models/shared/strengthtype.md @@ -2,6 +2,14 @@ Strength type for the controlnet. Can only be used for Style, Character and Content Reference controlnets. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import StrengthType + +value = StrengthType.LOW +``` + ## Values diff --git a/docs/models/shared/type.md b/docs/models/shared/type.md index 3e8992f3..e55fd7c0 100644 --- a/docs/models/shared/type.md +++ b/docs/models/shared/type.md @@ -2,6 +2,14 @@ The type of failure - PROMPT_MODERATION_BLOCKED indicates the prompt was blocked by content moderation +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import Type + +value = Type.PROMPT_MODERATION_BLOCKED +``` + ## Values diff --git a/docs/models/shared/unit.md b/docs/models/shared/unit.md index 9918b919..02881343 100644 --- a/docs/models/shared/unit.md +++ b/docs/models/shared/unit.md @@ -2,6 +2,14 @@ The unit of the cost. Can be CREDITS or DOLLARS. Note: DOLLARS unit only supports PAYG plan. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import Unit + +value = Unit.CREDITS +``` + ## Values diff --git a/docs/models/shared/universalupscalerstyle.md b/docs/models/shared/universalupscalerstyle.md index 2c1ca515..83a3ccaa 100644 --- a/docs/models/shared/universalupscalerstyle.md +++ b/docs/models/shared/universalupscalerstyle.md @@ -2,6 +2,14 @@ The style to upscale images using universal upscaler with. Can not be used with ultraUpscaleStyle. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import UniversalUpscalerStyle + +value = UniversalUpscalerStyle.GENERAL +``` + ## Values diff --git a/docs/models/shared/universalupscalerultrastyle.md b/docs/models/shared/universalupscalerultrastyle.md index 1c7b0c6c..2487e4d0 100644 --- a/docs/models/shared/universalupscalerultrastyle.md +++ b/docs/models/shared/universalupscalerultrastyle.md @@ -2,6 +2,14 @@ The ultra style to upscale images using universal upscaler with. Can not be used with upscalerStyle. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import UniversalUpscalerUltraStyle + +value = UniversalUpscalerUltraStyle.ARTISTIC +``` + ## Values diff --git a/docs/models/shared/variationtype.md b/docs/models/shared/variationtype.md index fe68789d..c999147b 100644 --- a/docs/models/shared/variationtype.md +++ b/docs/models/shared/variationtype.md @@ -2,6 +2,14 @@ The type of variation. +## Example Usage + +```python +from leonardo_ai_sdk.models.shared import VariationType + +value = VariationType.OUTPAINT +``` + ## Values diff --git a/docs/sdks/blueprints/README.md b/docs/sdks/blueprints/README.md index 39e5ee07..e877d06f 100644 --- a/docs/sdks/blueprints/README.md +++ b/docs/sdks/blueprints/README.md @@ -15,12 +15,11 @@ Execute a Blueprint Version with custom node inputs. This endpoint triggers the execution of the specified Blueprint Version and returns a Blueprint Execution ID to track the job. -### Example Usage +### Example Usage: error - + ```python from leonardo_ai_sdk import LeonardoAiSDK -from leonardo_ai_sdk.models import shared with LeonardoAiSDK( @@ -31,32 +30,33 @@ with LeonardoAiSDK( "blueprint_version_id": "550e8400-e29b-41d4-a716-446655440000", "input": { "collection_ids": [], - "node_inputs": [ - { - "node_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "setting_name": shared.SettingName.TEXT, - "value": "A futuristic cityscape at sunset", - }, - { - "node_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", - "setting_name": shared.SettingName.TEXT_VARIABLES, - "value": [ - { - "name": "characterName", - "value": "Luna", - }, - { - "name": "outfit", - "value": "cyberpunk armor", - }, - ], - }, - { - "node_id": "c3d4e5f6-a7b8-9012-cdef-123456789012", - "setting_name": shared.SettingName.IMAGE_URL, - "value": "https://cdn.leonardo.ai/users/example/image.png", - }, - ], + "node_inputs": [], + "public": False, + }, + }) + + assert res.one_of is not None + + # Handle response + print(res.one_of) + +``` +### Example Usage: success + + +```python +from leonardo_ai_sdk import LeonardoAiSDK + + +with LeonardoAiSDK( + bearer_auth="", +) as las_client: + + res = las_client.blueprints.execute_blueprint(request={ + "blueprint_version_id": "550e8400-e29b-41d4-a716-446655440000", + "input": { + "collection_ids": [], + "node_inputs": [], "public": False, }, }) @@ -90,9 +90,47 @@ with LeonardoAiSDK( Returns a single Blueprint by its akUUID -### Example Usage +### Example Usage: badRequest + + +```python +from leonardo_ai_sdk import LeonardoAiSDK + + +with LeonardoAiSDK( + bearer_auth="", +) as las_client: + + res = las_client.blueprints.get_blueprint_by_id(id="8f161ed5-dc84-4f5b-8ef5-4f3e5821df56") + + assert res.one_of is not None + + # Handle response + print(res.one_of) + +``` +### Example Usage: notFound + + +```python +from leonardo_ai_sdk import LeonardoAiSDK + + +with LeonardoAiSDK( + bearer_auth="", +) as las_client: + + res = las_client.blueprints.get_blueprint_by_id(id="d5f01775-fb53-4c5c-8d08-df840b5a6c71") + + assert res.one_of is not None + + # Handle response + print(res.one_of) + +``` +### Example Usage: success - + ```python from leonardo_ai_sdk import LeonardoAiSDK @@ -131,9 +169,47 @@ with LeonardoAiSDK( Retrieves details of a specific Blueprint Execution by its akUUID -### Example Usage +### Example Usage: badRequest + + +```python +from leonardo_ai_sdk import LeonardoAiSDK + + +with LeonardoAiSDK( + bearer_auth="", +) as las_client: + + res = las_client.blueprints.get_blueprint_execution(id="") + + assert res.one_of is not None + + # Handle response + print(res.one_of) + +``` +### Example Usage: notFound - + +```python +from leonardo_ai_sdk import LeonardoAiSDK + + +with LeonardoAiSDK( + bearer_auth="", +) as las_client: + + res = las_client.blueprints.get_blueprint_execution(id="") + + assert res.one_of is not None + + # Handle response + print(res.one_of) + +``` +### Example Usage: success + + ```python from leonardo_ai_sdk import LeonardoAiSDK @@ -172,9 +248,51 @@ with LeonardoAiSDK( Retrieves paginated generations for a specific Blueprint Execution, including their statuses and any prompt moderation failure details. -### Example Usage +### Example Usage: notAccessible - + +```python +from leonardo_ai_sdk import LeonardoAiSDK + + +with LeonardoAiSDK( + bearer_auth="", +) as las_client: + + res = las_client.blueprints.get_blueprint_execution_generations(request={ + "id": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` +### Example Usage: promptModerationFailure + + +```python +from leonardo_ai_sdk import LeonardoAiSDK + + +with LeonardoAiSDK( + bearer_auth="", +) as las_client: + + res = las_client.blueprints.get_blueprint_execution_generations(request={ + "id": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` +### Example Usage: success + + ```python from leonardo_ai_sdk import LeonardoAiSDK @@ -215,9 +333,47 @@ with LeonardoAiSDK( Returns all versions of a Blueprint by its akUUID -### Example Usage +### Example Usage: badRequest - + +```python +from leonardo_ai_sdk import LeonardoAiSDK + + +with LeonardoAiSDK( + bearer_auth="", +) as las_client: + + res = las_client.blueprints.get_blueprint_versions_by_blueprint_id(id="a6daa51b-6406-4e13-93f8-b7c8344fad6c") + + assert res.one_of is not None + + # Handle response + print(res.one_of) + +``` +### Example Usage: notFound + + +```python +from leonardo_ai_sdk import LeonardoAiSDK + + +with LeonardoAiSDK( + bearer_auth="", +) as las_client: + + res = las_client.blueprints.get_blueprint_versions_by_blueprint_id(id="7b44812d-6ac6-40b5-ad08-7c47a3f9807c") + + assert res.one_of is not None + + # Handle response + print(res.one_of) + +``` +### Example Usage: success + + ```python from leonardo_ai_sdk import LeonardoAiSDK @@ -256,9 +412,37 @@ with LeonardoAiSDK( Returns a list of Blueprints. Use either forward pagination (first/after) or backward pagination (last/before), but not both. Note: This endpoint uses a request body to support complex filtering parameters -### Example Usage +### Example Usage: error + + +```python +from leonardo_ai_sdk import LeonardoAiSDK +from leonardo_ai_sdk.models import operations + + +with LeonardoAiSDK( + bearer_auth="", +) as las_client: + + res = las_client.blueprints.list_blueprints(request={ + "categories": [ + "social-media", + ], + "platforms": [ + operations.Platforms.API, + operations.Platforms.WEB, + ], + }) + + assert res.one_of is not None + + # Handle response + print(res.one_of) + +``` +### Example Usage: success - + ```python from leonardo_ai_sdk import LeonardoAiSDK from leonardo_ai_sdk.models import operations @@ -269,13 +453,12 @@ with LeonardoAiSDK( ) as las_client: res = las_client.blueprints.list_blueprints(request={ - "after": "eyJjcmVhdGVkQXQiOiIyMDI1LTEwLTI5VDIxOjMxOjQ3Ljk5OVoiLCJha1VVSUQiOiJjODQ2NDEzZS05MmJhLTQzMDItODRmOC00N2M2NjdkNDc2MWYifQ==", "categories": [ "social-media", ], "platforms": [ - operations.Platforms.I_OS, - operations.Platforms.ANDROID, + operations.Platforms.API, + operations.Platforms.WEB, ], }) diff --git a/docs/sdks/media/README.md b/docs/sdks/media/README.md new file mode 100644 index 00000000..8c9ee73e --- /dev/null +++ b/docs/sdks/media/README.md @@ -0,0 +1,134 @@ +# Media + +## Overview + +### Available Operations + +* [delete_uploaded_media_by_id](#delete_uploaded_media_by_id) - Delete uploaded media +* [get_uploaded_media_by_id](#get_uploaded_media_by_id) - Get uploaded media +* [upload_media](#upload_media) - Upload media + +## delete_uploaded_media_by_id + +This endpoint deletes an uploaded media record and removes the associated file from S3 + +### Example Usage + + +```python +from leonardo_ai_sdk import LeonardoAiSDK + + +with LeonardoAiSDK( + bearer_auth="", +) as las_client: + + res = las_client.media.delete_uploaded_media_by_id(id="") + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | _"id" is required_ | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteUploadedMediaByIDResponse](../../models/operations/deleteuploadedmediabyidresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_uploaded_media_by_id + +This endpoint returns details of an uploaded media record + +### Example Usage + + +```python +from leonardo_ai_sdk import LeonardoAiSDK + + +with LeonardoAiSDK( + bearer_auth="", +) as las_client: + + res = las_client.media.get_uploaded_media_by_id(id="") + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | _"id" is required_ | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetUploadedMediaByIDResponse](../../models/operations/getuploadedmediabyidresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## upload_media + +This endpoint returns presigned POST credentials to upload a video or audio file directly to S3. + +### Example Usage + + +```python +from leonardo_ai_sdk import LeonardoAiSDK + + +with LeonardoAiSDK( + bearer_auth="", +) as las_client: + + res = las_client.media.upload_media(request={ + "extension": "pdf", + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.UploadMediaRequestBody](../../models/operations/uploadmediarequestbody.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.UploadMediaResponse](../../models/operations/uploadmediaresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/motion/README.md b/docs/sdks/motion/README.md index 55a0eb68..ca217e1c 100644 --- a/docs/sdks/motion/README.md +++ b/docs/sdks/motion/README.md @@ -5,9 +5,7 @@ ### Available Operations * [create_image_to_video_generation](#create_image_to_video_generation) - Create a video generation from an image -* [create_svd_motion_generation](#create_svd_motion_generation) - Create SVD Motion Generation * [create_text_to_video_generation](#create_text_to_video_generation) - Create a video generation from a text prompt -* [create_video_upscale](#create_video_upscale) - Upscale a generated video ## create_image_to_video_generation @@ -50,47 +48,6 @@ with LeonardoAiSDK( | --------------- | --------------- | --------------- | | errors.SDKError | 4XX, 5XX | \*/\* | -## create_svd_motion_generation - -This endpoint will generate a SVD motion generation. - -### Example Usage - - -```python -from leonardo_ai_sdk import LeonardoAiSDK - - -with LeonardoAiSDK( - bearer_auth="", -) as las_client: - - res = las_client.motion.create_svd_motion_generation() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `request` | [operations.CreateSVDMotionGenerationRequestBody](../../models/operations/createsvdmotiongenerationrequestbody.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.CreateSVDMotionGenerationResponse](../../models/operations/createsvdmotiongenerationresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------- | --------------- | --------------- | -| errors.SDKError | 4XX, 5XX | \*/\* | - ## create_text_to_video_generation This endpoint will generate a video using a text prompt @@ -128,47 +85,6 @@ with LeonardoAiSDK( ### Errors -| Error Type | Status Code | Content Type | -| --------------- | --------------- | --------------- | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## create_video_upscale - -This endpoint will upscale a generated video to a higher resolution. - -### Example Usage - - -```python -from leonardo_ai_sdk import LeonardoAiSDK - - -with LeonardoAiSDK( - bearer_auth="", -) as las_client: - - res = las_client.motion.create_video_upscale() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `request` | [operations.CreateVideoUpscaleRequestBody](../../models/operations/createvideoupscalerequestbody.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.CreateVideoUpscaleResponse](../../models/operations/createvideoupscaleresponse.md)** - -### Errors - | Error Type | Status Code | Content Type | | --------------- | --------------- | --------------- | | errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/texture/README.md b/docs/sdks/texture/README.md deleted file mode 100644 index 9222352c..00000000 --- a/docs/sdks/texture/README.md +++ /dev/null @@ -1,181 +0,0 @@ -# Texture - -## Overview - -### Available Operations - -* [create_texture_generation](#create_texture_generation) - Create Texture Generation -* [delete_texture_generation_by_id](#delete_texture_generation_by_id) - Delete Texture Generation by ID -* [get_texture_generation_by_id](#get_texture_generation_by_id) - Get Texture Generation by ID -* [get_texture_generations_by_model_id](#get_texture_generations_by_model_id) - Get texture generations by 3D Model ID - -## create_texture_generation - -This endpoint will generate a texture generation. - -### Example Usage - - -```python -from leonardo_ai_sdk import LeonardoAiSDK - - -with LeonardoAiSDK( - bearer_auth="", -) as las_client: - - res = las_client.texture.create_texture_generation() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `request` | [operations.CreateTextureGenerationRequestBody](../../models/operations/createtexturegenerationrequestbody.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.CreateTextureGenerationResponse](../../models/operations/createtexturegenerationresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------- | --------------- | --------------- | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## delete_texture_generation_by_id - -This endpoint deletes the specific texture generation. - -### Example Usage - - -```python -from leonardo_ai_sdk import LeonardoAiSDK - - -with LeonardoAiSDK( - bearer_auth="", -) as las_client: - - res = las_client.texture.delete_texture_generation_by_id(id="") - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | _"id" is required (enter it either in parameters or request body)_ | -| `request_body` | [Optional[operations.DeleteTextureGenerationByIDRequestBody]](../../models/operations/deletetexturegenerationbyidrequestbody.md) | :heavy_minus_sign: | Query parameters can also be provided in the request body as a JSON object | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.DeleteTextureGenerationByIDResponse](../../models/operations/deletetexturegenerationbyidresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------- | --------------- | --------------- | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_texture_generation_by_id - -This endpoint gets the specific texture generation. - -### Example Usage - - -```python -from leonardo_ai_sdk import LeonardoAiSDK - - -with LeonardoAiSDK( - bearer_auth="", -) as las_client: - - res = las_client.texture.get_texture_generation_by_id(id="", limit=10, offset=0) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | _"id" is required (enter it either in parameters or request body)_ | -| `limit` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `offset` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `request_body` | [Optional[operations.GetTextureGenerationByIDRequestBody]](../../models/operations/gettexturegenerationbyidrequestbody.md) | :heavy_minus_sign: | Query parameters can also be provided in the request body as a JSON object | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetTextureGenerationByIDResponse](../../models/operations/gettexturegenerationbyidresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------- | --------------- | --------------- | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_texture_generations_by_model_id - -This endpoint gets the specific texture generations by the 3d model id. - -### Example Usage - - -```python -from leonardo_ai_sdk import LeonardoAiSDK - - -with LeonardoAiSDK( - bearer_auth="", -) as las_client: - - res = las_client.texture.get_texture_generations_by_model_id(model_id="", limit=10, offset=0) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| `model_id` | *str* | :heavy_check_mark: | _"modelId" is required (enter it either in parameters or request body)_ | -| `limit` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `offset` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `request_body` | [Optional[operations.GetTextureGenerationsByModelIDRequestBody]](../../models/operations/gettexturegenerationsbymodelidrequestbody.md) | :heavy_minus_sign: | Query parameters can also be provided in the request body as a JSON object | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetTextureGenerationsByModelIDResponse](../../models/operations/gettexturegenerationsbymodelidresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------- | --------------- | --------------- | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/gen.yaml b/gen.yaml index 4ab36765..63ed4f35 100644 --- a/gen.yaml +++ b/gen.yaml @@ -14,6 +14,7 @@ generation: securityFeb2025: false sharedErrorComponentsApr2025: false sharedNestedComponentsJan2026: false + nameOverrideFeb2026: false auth: oAuth2ClientCredentialsEnabled: false oAuth2PasswordEnabled: false @@ -28,7 +29,7 @@ generation: generateNewTests: false skipResponseBodyAssertions: false python: - version: 7.0.0 + version: 7.1.0 additionalDependencies: dev: {} main: {} @@ -39,17 +40,25 @@ python: authors: - Leonardo-Ai baseErrorName: LeonardoAiSDKError + bodyVariantOverloads: false clientServerStatusCodesAsErrors: true constFieldCasing: upper defaultErrorName: SDKError description: Leonardo AI Python Client SDK enableCustomCodeRegions: false enumFormat: enum + eventStreamClassNames: + async: EventStreamAsync + sync: EventStream fixFlags: + asyncPaginationSep2025: false + conflictResistantModelImportsFeb2026: false responseRequiredSep2024: false flattenGlobalSecurity: true flattenRequests: false flatteningOrder: parameters-first + forwardCompatibleEnumsByDefault: false + forwardCompatibleUnionsByDefault: "false" imports: option: openapi paths: @@ -63,8 +72,11 @@ python: license: "" maxMethodParams: 4 methodArguments: require-security-and-request + methodTimeoutArgument: timeout-ms + methodTimeoutUnits: milliseconds moduleName: "" multipartArrayFormat: legacy + optionalDependencies: {} outputModelSuffix: output packageManager: poetry packageName: Leonardo-Ai-SDK @@ -72,6 +84,7 @@ python: projectUrls: {} pytestFilterWarnings: [] pytestTimeout: 0 + rawResponseHelpers: false responseFormat: envelope sseFlatResponse: false templateVersion: v2 diff --git a/pylintrc b/pylintrc index ba6a998b..cb9c15d3 100644 --- a/pylintrc +++ b/pylintrc @@ -458,7 +458,8 @@ disable=raw-checker-failed, consider-using-with, wildcard-import, unused-wildcard-import, - too-many-return-statements + too-many-return-statements, + redefined-builtin # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option diff --git a/pyproject.toml b/pyproject.toml index 71b8ee18..570beb96 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "Leonardo-Ai-SDK" -version = "7.0.0" +version = "7.1.0" description = "Leonardo AI Python Client SDK" authors = [{ name = "Leonardo-Ai" },] readme = "README-PYPI.md" diff --git a/src/leonardo_ai_sdk/_version.py b/src/leonardo_ai_sdk/_version.py index 4cf37290..09a8ea5c 100644 --- a/src/leonardo_ai_sdk/_version.py +++ b/src/leonardo_ai_sdk/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "Leonardo-Ai-SDK" -__version__: str = "7.0.0" +__version__: str = "7.1.0" __openapi_doc_version__: str = "v1.0.0" -__gen_version__: str = "2.806.4" -__user_agent__: str = "speakeasy-sdk/python 7.0.0 2.806.4 v1.0.0 Leonardo-Ai-SDK" +__gen_version__: str = "2.897.1" +__user_agent__: str = "speakeasy-sdk/python 7.1.0 2.897.1 v1.0.0 Leonardo-Ai-SDK" try: if __package__ is not None: diff --git a/src/leonardo_ai_sdk/basesdk.py b/src/leonardo_ai_sdk/basesdk.py index f7218a4f..d2ff83d7 100644 --- a/src/leonardo_ai_sdk/basesdk.py +++ b/src/leonardo_ai_sdk/basesdk.py @@ -7,6 +7,7 @@ AfterErrorContext, AfterSuccessContext, BeforeRequestContext, + HookContext, ) from leonardo_ai_sdk.models import errors from leonardo_ai_sdk.utils import ( @@ -67,6 +68,7 @@ def _build_request_async( url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: client = self.sdk_configuration.async_client return self._build_request_with_client( @@ -88,6 +90,7 @@ def _build_request_async( url_override, http_headers, allow_empty_value, + allowed_fields, ) def _build_request( @@ -111,6 +114,7 @@ def _build_request( url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: client = self.sdk_configuration.client return self._build_request_with_client( @@ -132,6 +136,7 @@ def _build_request( url_override, http_headers, allow_empty_value, + allowed_fields, ) def _build_request_with_client( @@ -156,6 +161,7 @@ def _build_request_with_client( url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: query_params = {} @@ -189,7 +195,9 @@ def _build_request_with_client( security = security() if security is not None: - security_headers, security_query_params = utils.get_security(security) + security_headers, security_query_params = utils.get_security( + security, allowed_fields + ) headers = {**headers, **security_headers} query_params = {**query_params, **security_query_params} @@ -226,15 +234,15 @@ def _build_request_with_client( data=serialized_request_body.data, files=serialized_request_body.files, headers=headers, - timeout=timeout, + timeout=timeout if timeout is not None else httpx.USE_CLIENT_DEFAULT, ) def do_request( self, - hook_ctx, - request, - error_status_codes, - stream=False, + hook_ctx: HookContext, + request: httpx.Request, + is_error_status_code: Callable[[int], bool], + stream: bool = False, retry_config: Optional[Tuple[RetryConfig, List[str]]] = None, ) -> httpx.Response: client = self.sdk_configuration.client @@ -246,6 +254,8 @@ def do(): http_res = None try: req = hooks.before_request(BeforeRequestContext(hook_ctx), request) + if "timeout" in request.extensions and "timeout" not in req.extensions: + req.extensions["timeout"] = request.extensions["timeout"] logger.debug( "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s", req.method, @@ -276,19 +286,6 @@ def do(): "" if stream else http_res.text, ) - if utils.match_status_codes(error_status_codes, http_res.status_code): - result, err = hooks.after_error( - AfterErrorContext(hook_ctx), http_res, None - ) - if err is not None: - logger.debug("Request Exception", exc_info=True) - raise err - if result is not None: - http_res = result - else: - logger.debug("Raising unexpected SDK error") - raise errors.SDKError("Unexpected error occurred", http_res) - return http_res if retry_config is not None: @@ -296,17 +293,27 @@ def do(): else: http_res = do() - if not utils.match_status_codes(error_status_codes, http_res.status_code): + if is_error_status_code(http_res.status_code): + result, err = hooks.after_error(AfterErrorContext(hook_ctx), http_res, None) + if err is not None: + logger.debug("Request Exception", exc_info=True) + raise err + if result is not None: + http_res = result + else: + logger.debug("Raising unexpected SDK error") + raise errors.SDKError("Unexpected error occurred", http_res) + else: http_res = hooks.after_success(AfterSuccessContext(hook_ctx), http_res) return http_res async def do_request_async( self, - hook_ctx, - request, - error_status_codes, - stream=False, + hook_ctx: HookContext, + request: httpx.Request, + is_error_status_code: Callable[[int], bool], + stream: bool = False, retry_config: Optional[Tuple[RetryConfig, List[str]]] = None, ) -> httpx.Response: client = self.sdk_configuration.async_client @@ -321,6 +328,8 @@ async def do(): hooks.before_request, BeforeRequestContext(hook_ctx), request ) + if "timeout" in request.extensions and "timeout" not in req.extensions: + req.extensions["timeout"] = request.extensions["timeout"] logger.debug( "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s", req.method, @@ -354,20 +363,6 @@ async def do(): "" if stream else http_res.text, ) - if utils.match_status_codes(error_status_codes, http_res.status_code): - result, err = await run_sync_in_thread( - hooks.after_error, AfterErrorContext(hook_ctx), http_res, None - ) - - if err is not None: - logger.debug("Request Exception", exc_info=True) - raise err - if result is not None: - http_res = result - else: - logger.debug("Raising unexpected SDK error") - raise errors.SDKError("Unexpected error occurred", http_res) - return http_res if retry_config is not None: @@ -377,7 +372,20 @@ async def do(): else: http_res = await do() - if not utils.match_status_codes(error_status_codes, http_res.status_code): + if is_error_status_code(http_res.status_code): + result, err = await run_sync_in_thread( + hooks.after_error, AfterErrorContext(hook_ctx), http_res, None + ) + + if err is not None: + logger.debug("Request Exception", exc_info=True) + raise err + if result is not None: + http_res = result + else: + logger.debug("Raising unexpected SDK error") + raise errors.SDKError("Unexpected error occurred", http_res) + else: http_res = await run_sync_in_thread( hooks.after_success, AfterSuccessContext(hook_ctx), http_res ) diff --git a/src/leonardo_ai_sdk/blueprints.py b/src/leonardo_ai_sdk/blueprints.py index d0a323a8..9fee9f4d 100644 --- a/src/leonardo_ai_sdk/blueprints.py +++ b/src/leonardo_ai_sdk/blueprints.py @@ -83,7 +83,7 @@ def execute_blueprint( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -185,7 +185,7 @@ async def execute_blueprint_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -281,7 +281,7 @@ def get_blueprint_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -370,7 +370,7 @@ async def get_blueprint_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -459,7 +459,7 @@ def get_blueprint_execution( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -548,7 +548,7 @@ async def get_blueprint_execution_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -642,7 +642,7 @@ def get_blueprint_execution_generations( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -737,7 +737,7 @@ async def get_blueprint_execution_generations_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -827,7 +827,7 @@ def get_blueprint_versions_by_blueprint_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -917,7 +917,7 @@ async def get_blueprint_versions_by_blueprint_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1021,7 +1021,7 @@ def list_blueprints( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1124,7 +1124,7 @@ async def list_blueprints_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/leonardo_ai_sdk/dataset.py b/src/leonardo_ai_sdk/dataset.py index 8c4aa417..6cbef271 100644 --- a/src/leonardo_ai_sdk/dataset.py +++ b/src/leonardo_ai_sdk/dataset.py @@ -83,7 +83,7 @@ def create_dataset( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -178,7 +178,7 @@ async def create_dataset_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -267,7 +267,7 @@ def delete_dataset_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -356,7 +356,7 @@ async def delete_dataset_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -445,7 +445,7 @@ def get_dataset_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -534,7 +534,7 @@ async def get_dataset_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -638,7 +638,7 @@ def upload_dataset_image( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -742,7 +742,7 @@ async def upload_dataset_image_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -846,7 +846,7 @@ def upload_dataset_image_from_gen( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -950,7 +950,7 @@ async def upload_dataset_image_from_gen_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/leonardo_ai_sdk/elements.py b/src/leonardo_ai_sdk/elements.py index 902c57dd..23248aca 100644 --- a/src/leonardo_ai_sdk/elements.py +++ b/src/leonardo_ai_sdk/elements.py @@ -83,7 +83,7 @@ def create_element( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -178,7 +178,7 @@ async def create_element_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -267,7 +267,7 @@ def delete_element_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -356,7 +356,7 @@ async def delete_element_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -445,7 +445,7 @@ def get_custom_elements_by_user_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -534,7 +534,7 @@ async def get_custom_elements_by_user_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -623,7 +623,7 @@ def get_element_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -712,7 +712,7 @@ async def get_element_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -794,7 +794,7 @@ def list_elements( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -876,7 +876,7 @@ async def list_elements_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/leonardo_ai_sdk/image.py b/src/leonardo_ai_sdk/image.py index f6bd6082..0c38bc36 100644 --- a/src/leonardo_ai_sdk/image.py +++ b/src/leonardo_ai_sdk/image.py @@ -83,7 +83,7 @@ def create_generation( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -178,7 +178,7 @@ async def create_generation_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -267,7 +267,7 @@ def delete_generation_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -356,7 +356,7 @@ async def delete_generation_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -445,7 +445,7 @@ def get_generation_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -534,7 +534,7 @@ async def get_generation_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -629,7 +629,7 @@ def get_generations_by_user_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -724,7 +724,7 @@ async def get_generations_by_user_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/leonardo_ai_sdk/init_images.py b/src/leonardo_ai_sdk/init_images.py index f209897e..37058ad0 100644 --- a/src/leonardo_ai_sdk/init_images.py +++ b/src/leonardo_ai_sdk/init_images.py @@ -77,7 +77,7 @@ def delete_init_image_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -166,7 +166,7 @@ async def delete_init_image_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -255,7 +255,7 @@ def get_init_image_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -344,7 +344,7 @@ async def get_init_image_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -445,7 +445,7 @@ def upload_canvas_init_image( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -546,7 +546,7 @@ async def upload_canvas_init_image_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -641,7 +641,7 @@ def upload_init_image( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -736,7 +736,7 @@ async def upload_init_image_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/leonardo_ai_sdk/texture.py b/src/leonardo_ai_sdk/media.py similarity index 50% rename from src/leonardo_ai_sdk/texture.py rename to src/leonardo_ai_sdk/media.py index 15071648..25b816a0 100644 --- a/src/leonardo_ai_sdk/texture.py +++ b/src/leonardo_ai_sdk/media.py @@ -9,234 +9,21 @@ from typing import Mapping, Optional, Union, cast -class Texture(BaseSDK): - def create_texture_generation( - self, - *, - request: Optional[ - Union[ - operations.CreateTextureGenerationRequestBody, - operations.CreateTextureGenerationRequestBodyTypedDict, - ] - ] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CreateTextureGenerationResponse: - r"""Create Texture Generation - - This endpoint will generate a texture generation. - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, Optional[operations.CreateTextureGenerationRequestBody] - ) - request = cast(Optional[operations.CreateTextureGenerationRequestBody], request) - - req = self._build_request( - method="POST", - path="/generations-texture", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, - False, - True, - "json", - Optional[operations.CreateTextureGenerationRequestBody], - ), - allow_empty_value=None, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="createTextureGeneration", - oauth2_scopes=None, - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return operations.CreateTextureGenerationResponse( - object=unmarshal_json_response( - Optional[operations.CreateTextureGenerationResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def create_texture_generation_async( - self, - *, - request: Optional[ - Union[ - operations.CreateTextureGenerationRequestBody, - operations.CreateTextureGenerationRequestBodyTypedDict, - ] - ] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CreateTextureGenerationResponse: - r"""Create Texture Generation - - This endpoint will generate a texture generation. - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, Optional[operations.CreateTextureGenerationRequestBody] - ) - request = cast(Optional[operations.CreateTextureGenerationRequestBody], request) - - req = self._build_request_async( - method="POST", - path="/generations-texture", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, - False, - True, - "json", - Optional[operations.CreateTextureGenerationRequestBody], - ), - allow_empty_value=None, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="createTextureGeneration", - oauth2_scopes=None, - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return operations.CreateTextureGenerationResponse( - object=unmarshal_json_response( - Optional[operations.CreateTextureGenerationResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def delete_texture_generation_by_id( +class Media(BaseSDK): + def delete_uploaded_media_by_id( self, *, id: str, - request_body: Optional[ - Union[ - operations.DeleteTextureGenerationByIDRequestBody, - operations.DeleteTextureGenerationByIDRequestBodyTypedDict, - ] - ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.DeleteTextureGenerationByIDResponse: - r"""Delete Texture Generation by ID + ) -> operations.DeleteUploadedMediaByIDResponse: + r"""Delete uploaded media - This endpoint deletes the specific texture generation. + This endpoint deletes an uploaded media record and removes the associated file from S3 - :param id: _\"id\" is required (enter it either in parameters or request body)_ - :param request_body: Query parameters can also be provided in the request body as a JSON object + :param id: _\"id\" is required_ :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -252,17 +39,13 @@ def delete_texture_generation_by_id( else: base_url = self._get_url(base_url, url_variables) - request = operations.DeleteTextureGenerationByIDRequest( + request = operations.DeleteUploadedMediaByIDRequest( id=id, - request_body=utils.get_pydantic_model( - request_body, - Optional[operations.DeleteTextureGenerationByIDRequestBody], - ), ) req = self._build_request( method="DELETE", - path="/generations-texture/{id}", + path="/media/{id}", base_url=base_url, url_variables=url_variables, request=request, @@ -273,13 +56,6 @@ def delete_texture_generation_by_id( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, - False, - True, - "json", - Optional[operations.DeleteTextureGenerationByIDRequestBody], - ), allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -296,20 +72,19 @@ def delete_texture_generation_by_id( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="deleteTextureGenerationById", + operation_id="deleteUploadedMediaById", oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) if utils.match_response(http_res, "200", "application/json"): - return operations.DeleteTextureGenerationByIDResponse( + return operations.DeleteUploadedMediaByIDResponse( object=unmarshal_json_response( - Optional[operations.DeleteTextureGenerationByIDResponseBody], - http_res, + Optional[operations.DeleteUploadedMediaByIDResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", @@ -324,27 +99,20 @@ def delete_texture_generation_by_id( raise errors.SDKError("Unexpected response received", http_res) - async def delete_texture_generation_by_id_async( + async def delete_uploaded_media_by_id_async( self, *, id: str, - request_body: Optional[ - Union[ - operations.DeleteTextureGenerationByIDRequestBody, - operations.DeleteTextureGenerationByIDRequestBodyTypedDict, - ] - ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.DeleteTextureGenerationByIDResponse: - r"""Delete Texture Generation by ID + ) -> operations.DeleteUploadedMediaByIDResponse: + r"""Delete uploaded media - This endpoint deletes the specific texture generation. + This endpoint deletes an uploaded media record and removes the associated file from S3 - :param id: _\"id\" is required (enter it either in parameters or request body)_ - :param request_body: Query parameters can also be provided in the request body as a JSON object + :param id: _\"id\" is required_ :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -360,17 +128,13 @@ async def delete_texture_generation_by_id_async( else: base_url = self._get_url(base_url, url_variables) - request = operations.DeleteTextureGenerationByIDRequest( + request = operations.DeleteUploadedMediaByIDRequest( id=id, - request_body=utils.get_pydantic_model( - request_body, - Optional[operations.DeleteTextureGenerationByIDRequestBody], - ), ) req = self._build_request_async( method="DELETE", - path="/generations-texture/{id}", + path="/media/{id}", base_url=base_url, url_variables=url_variables, request=request, @@ -381,13 +145,6 @@ async def delete_texture_generation_by_id_async( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, - False, - True, - "json", - Optional[operations.DeleteTextureGenerationByIDRequestBody], - ), allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -404,20 +161,19 @@ async def delete_texture_generation_by_id_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="deleteTextureGenerationById", + operation_id="deleteUploadedMediaById", oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) if utils.match_response(http_res, "200", "application/json"): - return operations.DeleteTextureGenerationByIDResponse( + return operations.DeleteUploadedMediaByIDResponse( object=unmarshal_json_response( - Optional[operations.DeleteTextureGenerationByIDResponseBody], - http_res, + Optional[operations.DeleteUploadedMediaByIDResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", @@ -432,31 +188,20 @@ async def delete_texture_generation_by_id_async( raise errors.SDKError("Unexpected response received", http_res) - def get_texture_generation_by_id( + def get_uploaded_media_by_id( self, *, id: str, - limit: Optional[int] = 10, - offset: Optional[int] = 0, - request_body: Optional[ - Union[ - operations.GetTextureGenerationByIDRequestBody, - operations.GetTextureGenerationByIDRequestBodyTypedDict, - ] - ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTextureGenerationByIDResponse: - r"""Get Texture Generation by ID + ) -> operations.GetUploadedMediaByIDResponse: + r"""Get uploaded media - This endpoint gets the specific texture generation. + This endpoint returns details of an uploaded media record - :param id: _\"id\" is required (enter it either in parameters or request body)_ - :param limit: - :param offset: - :param request_body: Query parameters can also be provided in the request body as a JSON object + :param id: _\"id\" is required_ :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -472,18 +217,13 @@ def get_texture_generation_by_id( else: base_url = self._get_url(base_url, url_variables) - request = operations.GetTextureGenerationByIDRequest( + request = operations.GetUploadedMediaByIDRequest( id=id, - limit=limit, - offset=offset, - request_body=utils.get_pydantic_model( - request_body, Optional[operations.GetTextureGenerationByIDRequestBody] - ), ) req = self._build_request( method="GET", - path="/generations-texture/{id}", + path="/media/{id}", base_url=base_url, url_variables=url_variables, request=request, @@ -494,13 +234,6 @@ def get_texture_generation_by_id( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, - False, - True, - "json", - Optional[operations.GetTextureGenerationByIDRequestBody], - ), allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -517,19 +250,19 @@ def get_texture_generation_by_id( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getTextureGenerationById", + operation_id="getUploadedMediaById", oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) if utils.match_response(http_res, "200", "application/json"): - return operations.GetTextureGenerationByIDResponse( + return operations.GetUploadedMediaByIDResponse( object=unmarshal_json_response( - Optional[operations.GetTextureGenerationByIDResponseBody], http_res + Optional[operations.GetUploadedMediaByIDResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", @@ -544,31 +277,20 @@ def get_texture_generation_by_id( raise errors.SDKError("Unexpected response received", http_res) - async def get_texture_generation_by_id_async( + async def get_uploaded_media_by_id_async( self, *, id: str, - limit: Optional[int] = 10, - offset: Optional[int] = 0, - request_body: Optional[ - Union[ - operations.GetTextureGenerationByIDRequestBody, - operations.GetTextureGenerationByIDRequestBodyTypedDict, - ] - ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTextureGenerationByIDResponse: - r"""Get Texture Generation by ID + ) -> operations.GetUploadedMediaByIDResponse: + r"""Get uploaded media - This endpoint gets the specific texture generation. + This endpoint returns details of an uploaded media record - :param id: _\"id\" is required (enter it either in parameters or request body)_ - :param limit: - :param offset: - :param request_body: Query parameters can also be provided in the request body as a JSON object + :param id: _\"id\" is required_ :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -584,18 +306,13 @@ async def get_texture_generation_by_id_async( else: base_url = self._get_url(base_url, url_variables) - request = operations.GetTextureGenerationByIDRequest( + request = operations.GetUploadedMediaByIDRequest( id=id, - limit=limit, - offset=offset, - request_body=utils.get_pydantic_model( - request_body, Optional[operations.GetTextureGenerationByIDRequestBody] - ), ) req = self._build_request_async( method="GET", - path="/generations-texture/{id}", + path="/media/{id}", base_url=base_url, url_variables=url_variables, request=request, @@ -606,13 +323,6 @@ async def get_texture_generation_by_id_async( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, - False, - True, - "json", - Optional[operations.GetTextureGenerationByIDRequestBody], - ), allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -629,19 +339,19 @@ async def get_texture_generation_by_id_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getTextureGenerationById", + operation_id="getUploadedMediaById", oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) if utils.match_response(http_res, "200", "application/json"): - return operations.GetTextureGenerationByIDResponse( + return operations.GetUploadedMediaByIDResponse( object=unmarshal_json_response( - Optional[operations.GetTextureGenerationByIDResponseBody], http_res + Optional[operations.GetUploadedMediaByIDResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", @@ -656,31 +366,23 @@ async def get_texture_generation_by_id_async( raise errors.SDKError("Unexpected response received", http_res) - def get_texture_generations_by_model_id( + def upload_media( self, *, - model_id: str, - limit: Optional[int] = 10, - offset: Optional[int] = 0, - request_body: Optional[ - Union[ - operations.GetTextureGenerationsByModelIDRequestBody, - operations.GetTextureGenerationsByModelIDRequestBodyTypedDict, - ] - ] = None, + request: Union[ + operations.UploadMediaRequestBody, + operations.UploadMediaRequestBodyTypedDict, + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTextureGenerationsByModelIDResponse: - r"""Get texture generations by 3D Model ID + ) -> operations.UploadMediaResponse: + r"""Upload media - This endpoint gets the specific texture generations by the 3d model id. + This endpoint returns presigned POST credentials to upload a video or audio file directly to S3. - :param model_id: _\"modelId\" is required (enter it either in parameters or request body)_ - :param limit: - :param offset: - :param request_body: Query parameters can also be provided in the request body as a JSON object + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -696,35 +398,25 @@ def get_texture_generations_by_model_id( else: base_url = self._get_url(base_url, url_variables) - request = operations.GetTextureGenerationsByModelIDRequest( - limit=limit, - model_id=model_id, - offset=offset, - request_body=utils.get_pydantic_model( - request_body, - Optional[operations.GetTextureGenerationsByModelIDRequestBody], - ), - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UploadMediaRequestBody) + request = cast(operations.UploadMediaRequestBody, request) req = self._build_request( - method="GET", - path="/generations-texture/model/{modelId}", + method="POST", + path="/media", base_url=base_url, url_variables=url_variables, request=request, - request_body_required=False, - request_has_path_params=True, + request_body_required=True, + request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, - False, - True, - "json", - Optional[operations.GetTextureGenerationsByModelIDRequestBody], + request, False, False, "json", operations.UploadMediaRequestBody ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -742,20 +434,19 @@ def get_texture_generations_by_model_id( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getTextureGenerationsByModelId", + operation_id="uploadMedia", oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) if utils.match_response(http_res, "200", "application/json"): - return operations.GetTextureGenerationsByModelIDResponse( + return operations.UploadMediaResponse( object=unmarshal_json_response( - Optional[operations.GetTextureGenerationsByModelIDResponseBody], - http_res, + Optional[operations.UploadMediaResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", @@ -770,31 +461,23 @@ def get_texture_generations_by_model_id( raise errors.SDKError("Unexpected response received", http_res) - async def get_texture_generations_by_model_id_async( + async def upload_media_async( self, *, - model_id: str, - limit: Optional[int] = 10, - offset: Optional[int] = 0, - request_body: Optional[ - Union[ - operations.GetTextureGenerationsByModelIDRequestBody, - operations.GetTextureGenerationsByModelIDRequestBodyTypedDict, - ] - ] = None, + request: Union[ + operations.UploadMediaRequestBody, + operations.UploadMediaRequestBodyTypedDict, + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTextureGenerationsByModelIDResponse: - r"""Get texture generations by 3D Model ID + ) -> operations.UploadMediaResponse: + r"""Upload media - This endpoint gets the specific texture generations by the 3d model id. + This endpoint returns presigned POST credentials to upload a video or audio file directly to S3. - :param model_id: _\"modelId\" is required (enter it either in parameters or request body)_ - :param limit: - :param offset: - :param request_body: Query parameters can also be provided in the request body as a JSON object + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -810,35 +493,25 @@ async def get_texture_generations_by_model_id_async( else: base_url = self._get_url(base_url, url_variables) - request = operations.GetTextureGenerationsByModelIDRequest( - limit=limit, - model_id=model_id, - offset=offset, - request_body=utils.get_pydantic_model( - request_body, - Optional[operations.GetTextureGenerationsByModelIDRequestBody], - ), - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UploadMediaRequestBody) + request = cast(operations.UploadMediaRequestBody, request) req = self._build_request_async( - method="GET", - path="/generations-texture/model/{modelId}", + method="POST", + path="/media", base_url=base_url, url_variables=url_variables, request=request, - request_body_required=False, - request_has_path_params=True, + request_body_required=True, + request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, - False, - True, - "json", - Optional[operations.GetTextureGenerationsByModelIDRequestBody], + request, False, False, "json", operations.UploadMediaRequestBody ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -856,20 +529,19 @@ async def get_texture_generations_by_model_id_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getTextureGenerationsByModelId", + operation_id="uploadMedia", oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) if utils.match_response(http_res, "200", "application/json"): - return operations.GetTextureGenerationsByModelIDResponse( + return operations.UploadMediaResponse( object=unmarshal_json_response( - Optional[operations.GetTextureGenerationsByModelIDResponseBody], - http_res, + Optional[operations.UploadMediaResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", diff --git a/src/leonardo_ai_sdk/models/__init__.py b/src/leonardo_ai_sdk/models/__init__.py index 726fc5eb..0d6c4dc0 100644 --- a/src/leonardo_ai_sdk/models/__init__.py +++ b/src/leonardo_ai_sdk/models/__init__.py @@ -1,3 +1,23 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" +from typing import Any, TYPE_CHECKING + +from leonardo_ai_sdk.utils.dynamic_imports import lazy_getattr, lazy_dir + +if TYPE_CHECKING: + from . import errors, operations, shared + # package + + +_sub_packages = ["errors", "operations", "shared"] + + +def __getattr__(attr_name: str) -> Any: + return lazy_getattr( + attr_name, package=__package__, dynamic_imports={}, sub_packages=_sub_packages + ) + + +def __dir__(): + return lazy_dir(dynamic_imports={}, sub_packages=_sub_packages) diff --git a/src/leonardo_ai_sdk/models/errors/__init__.py b/src/leonardo_ai_sdk/models/errors/__init__.py index 52b2e0c8..473598e3 100644 --- a/src/leonardo_ai_sdk/models/errors/__init__.py +++ b/src/leonardo_ai_sdk/models/errors/__init__.py @@ -1,10 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .leonardoaisdkerror import LeonardoAiSDKError -from typing import TYPE_CHECKING -from importlib import import_module -import builtins -import sys +from typing import Any, TYPE_CHECKING + +from leonardo_ai_sdk.utils.dynamic_imports import lazy_getattr, lazy_dir if TYPE_CHECKING: from .executeblueprint import ( @@ -33,39 +32,11 @@ } -def dynamic_import(modname, retries=3): - for attempt in range(retries): - try: - return import_module(modname, __package__) - except KeyError: - # Clear any half-initialized module and retry - sys.modules.pop(modname, None) - if attempt == retries - 1: - break - raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") - - -def __getattr__(attr_name: str) -> object: - module_name = _dynamic_imports.get(attr_name) - if module_name is None: - raise AttributeError( - f"No {attr_name} found in _dynamic_imports for module name -> {__name__} " - ) - - try: - module = dynamic_import(module_name) - result = getattr(module, attr_name) - return result - except ImportError as e: - raise ImportError( - f"Failed to import {attr_name} from {module_name}: {e}" - ) from e - except AttributeError as e: - raise AttributeError( - f"Failed to get {attr_name} from {module_name}: {e}" - ) from e +def __getattr__(attr_name: str) -> Any: + return lazy_getattr( + attr_name, package=__package__, dynamic_imports=_dynamic_imports + ) def __dir__(): - lazy_attrs = builtins.list(_dynamic_imports.keys()) - return builtins.sorted(lazy_attrs) + return lazy_dir(dynamic_imports=_dynamic_imports) diff --git a/src/leonardo_ai_sdk/models/operations/__init__.py b/src/leonardo_ai_sdk/models/operations/__init__.py index 5e152a35..5c110d65 100644 --- a/src/leonardo_ai_sdk/models/operations/__init__.py +++ b/src/leonardo_ai_sdk/models/operations/__init__.py @@ -1,9 +1,8 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from typing import TYPE_CHECKING -from importlib import import_module -import builtins -import sys +from typing import Any, TYPE_CHECKING + +from leonardo_ai_sdk.utils.dynamic_imports import lazy_getattr, lazy_dir if TYPE_CHECKING: from .createdataset import ( @@ -75,16 +74,6 @@ CreateModelSDTrainingOutputTypedDict, CreateModelSdVersions, ) - from .createsvdmotiongeneration import ( - CreateSVDMotionGenerationRequestBody, - CreateSVDMotionGenerationRequestBodyTypedDict, - CreateSVDMotionGenerationResponse, - CreateSVDMotionGenerationResponseBody, - CreateSVDMotionGenerationResponseBodyTypedDict, - CreateSVDMotionGenerationResponseTypedDict, - MotionSvdGenerationOutput, - MotionSvdGenerationOutputTypedDict, - ) from .createtexttovideogeneration import ( CreateTextToVideoGenerationMotionString, CreateTextToVideoGenerationMotionVideoGenerationOutput, @@ -97,16 +86,6 @@ CreateTextToVideoGenerationResponseTypedDict, CreateTextToVideoGenerationString, ) - from .createtexturegeneration import ( - CreateTextureGenerationRequestBody, - CreateTextureGenerationRequestBodyTypedDict, - CreateTextureGenerationResponse, - CreateTextureGenerationResponseBody, - CreateTextureGenerationResponseBodyTypedDict, - CreateTextureGenerationResponseTypedDict, - TextureGenerationJobOutput, - TextureGenerationJobOutputTypedDict, - ) from .createuniversalupscalerjob import ( CreateUniversalUpscalerJobRequestBody, CreateUniversalUpscalerJobRequestBodyTypedDict, @@ -147,17 +126,6 @@ CreateVariationUpscaleSDUpscaleJobOutput, CreateVariationUpscaleSDUpscaleJobOutputTypedDict, ) - from .createvideoupscale import ( - CreateVideoUpscaleMotionVideoGenerationOutput, - CreateVideoUpscaleMotionVideoGenerationOutputTypedDict, - CreateVideoUpscaleRequestBody, - CreateVideoUpscaleRequestBodyTypedDict, - CreateVideoUpscaleResponse, - CreateVideoUpscaleResponseBody, - CreateVideoUpscaleResponseBodyTypedDict, - CreateVideoUpscaleResponseTypedDict, - CreateVideoUpscaleString, - ) from .delete3dmodelbyid import ( Delete3DModelByIDRequest, Delete3DModelByIDRequestBody, @@ -220,17 +188,15 @@ DeleteModelByIDResponseBodyTypedDict, DeleteModelByIDResponseTypedDict, ) - from .deletetexturegenerationbyid import ( - DeleteTextureGenerationByIDRequest, - DeleteTextureGenerationByIDRequestBody, - DeleteTextureGenerationByIDRequestBodyTypedDict, - DeleteTextureGenerationByIDRequestTypedDict, - DeleteTextureGenerationByIDResponse, - DeleteTextureGenerationByIDResponseBody, - DeleteTextureGenerationByIDResponseBodyTypedDict, - DeleteTextureGenerationByIDResponseTypedDict, - ModelAssetTextureGenerations, - ModelAssetTextureGenerationsTypedDict, + from .deleteuploadedmediabyid import ( + DeleteUploadedMediaByIDRequest, + DeleteUploadedMediaByIDRequestTypedDict, + DeleteUploadedMediaByIDResponse, + DeleteUploadedMediaByIDResponseBody, + DeleteUploadedMediaByIDResponseBodyTypedDict, + DeleteUploadedMediaByIDResponseTypedDict, + UploadedMedia, + UploadedMediaTypedDict, ) from .executeblueprint import ( ExecuteBlueprint, @@ -416,33 +382,15 @@ GetMotionVariationByIDResponseBodyTypedDict, GetMotionVariationByIDResponseTypedDict, ) - from .gettexturegenerationbyid import ( - GetTextureGenerationByIDModelAssetTextureGenerations, - GetTextureGenerationByIDModelAssetTextureGenerationsTypedDict, - GetTextureGenerationByIDRequest, - GetTextureGenerationByIDRequestBody, - GetTextureGenerationByIDRequestBodyTypedDict, - GetTextureGenerationByIDRequestTypedDict, - GetTextureGenerationByIDResponse, - GetTextureGenerationByIDResponseBody, - GetTextureGenerationByIDResponseBodyTypedDict, - GetTextureGenerationByIDResponseTypedDict, - ModelAssetTextureImages, - ModelAssetTextureImagesTypedDict, - ) - from .gettexturegenerationsbymodelid import ( - GetTextureGenerationsByModelIDModelAssetTextureGenerations, - GetTextureGenerationsByModelIDModelAssetTextureGenerationsTypedDict, - GetTextureGenerationsByModelIDModelAssetTextureImages, - GetTextureGenerationsByModelIDModelAssetTextureImagesTypedDict, - GetTextureGenerationsByModelIDRequest, - GetTextureGenerationsByModelIDRequestBody, - GetTextureGenerationsByModelIDRequestBodyTypedDict, - GetTextureGenerationsByModelIDRequestTypedDict, - GetTextureGenerationsByModelIDResponse, - GetTextureGenerationsByModelIDResponseBody, - GetTextureGenerationsByModelIDResponseBodyTypedDict, - GetTextureGenerationsByModelIDResponseTypedDict, + from .getuploadedmediabyid import ( + GetUploadedMediaByIDRequest, + GetUploadedMediaByIDRequestTypedDict, + GetUploadedMediaByIDResponse, + GetUploadedMediaByIDResponseBody, + GetUploadedMediaByIDResponseBodyTypedDict, + GetUploadedMediaByIDResponseTypedDict, + GetUploadedMediaByIDUploadedMedia, + GetUploadedMediaByIDUploadedMediaTypedDict, ) from .getuserself import ( GetUserSelfResponse, @@ -623,6 +571,16 @@ UploadInitImageResponseBodyTypedDict, UploadInitImageResponseTypedDict, ) + from .uploadmedia import ( + MediaUploadOutput, + MediaUploadOutputTypedDict, + UploadMediaRequestBody, + UploadMediaRequestBodyTypedDict, + UploadMediaResponse, + UploadMediaResponseBody, + UploadMediaResponseBodyTypedDict, + UploadMediaResponseTypedDict, + ) from .uploadmodelasset import ( ModelAssetUploadOutput, ModelAssetUploadOutputTypedDict, @@ -682,12 +640,6 @@ "CreateModelSDTrainingOutput", "CreateModelSDTrainingOutputTypedDict", "CreateModelSdVersions", - "CreateSVDMotionGenerationRequestBody", - "CreateSVDMotionGenerationRequestBodyTypedDict", - "CreateSVDMotionGenerationResponse", - "CreateSVDMotionGenerationResponseBody", - "CreateSVDMotionGenerationResponseBodyTypedDict", - "CreateSVDMotionGenerationResponseTypedDict", "CreateTextToVideoGenerationMotionString", "CreateTextToVideoGenerationMotionVideoGenerationOutput", "CreateTextToVideoGenerationMotionVideoGenerationOutputTypedDict", @@ -698,12 +650,6 @@ "CreateTextToVideoGenerationResponseBodyTypedDict", "CreateTextToVideoGenerationResponseTypedDict", "CreateTextToVideoGenerationString", - "CreateTextureGenerationRequestBody", - "CreateTextureGenerationRequestBodyTypedDict", - "CreateTextureGenerationResponse", - "CreateTextureGenerationResponseBody", - "CreateTextureGenerationResponseBodyTypedDict", - "CreateTextureGenerationResponseTypedDict", "CreateUniversalUpscalerJobRequestBody", "CreateUniversalUpscalerJobRequestBodyTypedDict", "CreateUniversalUpscalerJobResponse", @@ -730,15 +676,6 @@ "CreateVariationUpscaleResponseTypedDict", "CreateVariationUpscaleSDUpscaleJobOutput", "CreateVariationUpscaleSDUpscaleJobOutputTypedDict", - "CreateVideoUpscaleMotionVideoGenerationOutput", - "CreateVideoUpscaleMotionVideoGenerationOutputTypedDict", - "CreateVideoUpscaleRequestBody", - "CreateVideoUpscaleRequestBodyTypedDict", - "CreateVideoUpscaleResponse", - "CreateVideoUpscaleResponseBody", - "CreateVideoUpscaleResponseBodyTypedDict", - "CreateVideoUpscaleResponseTypedDict", - "CreateVideoUpscaleString", "CustomModels", "CustomModelsTypedDict", "DatasetGenUploadOutput", @@ -789,14 +726,12 @@ "DeleteModelByIDResponseBody", "DeleteModelByIDResponseBodyTypedDict", "DeleteModelByIDResponseTypedDict", - "DeleteTextureGenerationByIDRequest", - "DeleteTextureGenerationByIDRequestBody", - "DeleteTextureGenerationByIDRequestBodyTypedDict", - "DeleteTextureGenerationByIDRequestTypedDict", - "DeleteTextureGenerationByIDResponse", - "DeleteTextureGenerationByIDResponseBody", - "DeleteTextureGenerationByIDResponseBodyTypedDict", - "DeleteTextureGenerationByIDResponseTypedDict", + "DeleteUploadedMediaByIDRequest", + "DeleteUploadedMediaByIDRequestTypedDict", + "DeleteUploadedMediaByIDResponse", + "DeleteUploadedMediaByIDResponseBody", + "DeleteUploadedMediaByIDResponseBodyTypedDict", + "DeleteUploadedMediaByIDResponseTypedDict", "Edges", "EdgesTypedDict", "Elements", @@ -949,28 +884,14 @@ "GetMotionVariationByIDResponseBody", "GetMotionVariationByIDResponseBodyTypedDict", "GetMotionVariationByIDResponseTypedDict", - "GetTextureGenerationByIDModelAssetTextureGenerations", - "GetTextureGenerationByIDModelAssetTextureGenerationsTypedDict", - "GetTextureGenerationByIDRequest", - "GetTextureGenerationByIDRequestBody", - "GetTextureGenerationByIDRequestBodyTypedDict", - "GetTextureGenerationByIDRequestTypedDict", - "GetTextureGenerationByIDResponse", - "GetTextureGenerationByIDResponseBody", - "GetTextureGenerationByIDResponseBodyTypedDict", - "GetTextureGenerationByIDResponseTypedDict", - "GetTextureGenerationsByModelIDModelAssetTextureGenerations", - "GetTextureGenerationsByModelIDModelAssetTextureGenerationsTypedDict", - "GetTextureGenerationsByModelIDModelAssetTextureImages", - "GetTextureGenerationsByModelIDModelAssetTextureImagesTypedDict", - "GetTextureGenerationsByModelIDRequest", - "GetTextureGenerationsByModelIDRequestBody", - "GetTextureGenerationsByModelIDRequestBodyTypedDict", - "GetTextureGenerationsByModelIDRequestTypedDict", - "GetTextureGenerationsByModelIDResponse", - "GetTextureGenerationsByModelIDResponseBody", - "GetTextureGenerationsByModelIDResponseBodyTypedDict", - "GetTextureGenerationsByModelIDResponseTypedDict", + "GetUploadedMediaByIDRequest", + "GetUploadedMediaByIDRequestTypedDict", + "GetUploadedMediaByIDResponse", + "GetUploadedMediaByIDResponseBody", + "GetUploadedMediaByIDResponseBodyTypedDict", + "GetUploadedMediaByIDResponseTypedDict", + "GetUploadedMediaByIDUploadedMedia", + "GetUploadedMediaByIDUploadedMediaTypedDict", "GetUserSelfResponse", "GetUserSelfResponseBody", "GetUserSelfResponseBodyTypedDict", @@ -1010,16 +931,12 @@ "ListPlatformModelsResponseTypedDict", "Loras", "LorasTypedDict", - "ModelAssetTextureGenerations", - "ModelAssetTextureGenerationsTypedDict", - "ModelAssetTextureImages", - "ModelAssetTextureImagesTypedDict", + "MediaUploadOutput", + "MediaUploadOutputTypedDict", "ModelAssetUploadOutput", "ModelAssetUploadOutputTypedDict", "ModelAssets", "ModelAssetsTypedDict", - "MotionSvdGenerationOutput", - "MotionSvdGenerationOutputTypedDict", "MotionVideoGenerationOutput", "MotionVideoGenerationOutputTypedDict", "Object", @@ -1107,8 +1024,6 @@ "String", "SuccessResponse", "SuccessResponseTypedDict", - "TextureGenerationJobOutput", - "TextureGenerationJobOutputTypedDict", "TransparencyType", "UniversalUpscalerOutput", "UniversalUpscalerOutputTypedDict", @@ -1140,12 +1055,20 @@ "UploadInitImageResponseBody", "UploadInitImageResponseBodyTypedDict", "UploadInitImageResponseTypedDict", + "UploadMediaRequestBody", + "UploadMediaRequestBodyTypedDict", + "UploadMediaResponse", + "UploadMediaResponseBody", + "UploadMediaResponseBodyTypedDict", + "UploadMediaResponseTypedDict", "UploadModelAssetRequestBody", "UploadModelAssetRequestBodyTypedDict", "UploadModelAssetResponse", "UploadModelAssetResponseBody", "UploadModelAssetResponseBodyTypedDict", "UploadModelAssetResponseTypedDict", + "UploadedMedia", + "UploadedMediaTypedDict", "UserDetails", "UserDetailsTypedDict", "UserLoras", @@ -1212,14 +1135,6 @@ "CreateModelSDTrainingOutput": ".createmodel", "CreateModelSDTrainingOutputTypedDict": ".createmodel", "CreateModelSdVersions": ".createmodel", - "CreateSVDMotionGenerationRequestBody": ".createsvdmotiongeneration", - "CreateSVDMotionGenerationRequestBodyTypedDict": ".createsvdmotiongeneration", - "CreateSVDMotionGenerationResponse": ".createsvdmotiongeneration", - "CreateSVDMotionGenerationResponseBody": ".createsvdmotiongeneration", - "CreateSVDMotionGenerationResponseBodyTypedDict": ".createsvdmotiongeneration", - "CreateSVDMotionGenerationResponseTypedDict": ".createsvdmotiongeneration", - "MotionSvdGenerationOutput": ".createsvdmotiongeneration", - "MotionSvdGenerationOutputTypedDict": ".createsvdmotiongeneration", "CreateTextToVideoGenerationMotionString": ".createtexttovideogeneration", "CreateTextToVideoGenerationMotionVideoGenerationOutput": ".createtexttovideogeneration", "CreateTextToVideoGenerationMotionVideoGenerationOutputTypedDict": ".createtexttovideogeneration", @@ -1230,14 +1145,6 @@ "CreateTextToVideoGenerationResponseBodyTypedDict": ".createtexttovideogeneration", "CreateTextToVideoGenerationResponseTypedDict": ".createtexttovideogeneration", "CreateTextToVideoGenerationString": ".createtexttovideogeneration", - "CreateTextureGenerationRequestBody": ".createtexturegeneration", - "CreateTextureGenerationRequestBodyTypedDict": ".createtexturegeneration", - "CreateTextureGenerationResponse": ".createtexturegeneration", - "CreateTextureGenerationResponseBody": ".createtexturegeneration", - "CreateTextureGenerationResponseBodyTypedDict": ".createtexturegeneration", - "CreateTextureGenerationResponseTypedDict": ".createtexturegeneration", - "TextureGenerationJobOutput": ".createtexturegeneration", - "TextureGenerationJobOutputTypedDict": ".createtexturegeneration", "CreateUniversalUpscalerJobRequestBody": ".createuniversalupscalerjob", "CreateUniversalUpscalerJobRequestBodyTypedDict": ".createuniversalupscalerjob", "CreateUniversalUpscalerJobResponse": ".createuniversalupscalerjob", @@ -1270,15 +1177,6 @@ "CreateVariationUpscaleResponseTypedDict": ".createvariationupscale", "CreateVariationUpscaleSDUpscaleJobOutput": ".createvariationupscale", "CreateVariationUpscaleSDUpscaleJobOutputTypedDict": ".createvariationupscale", - "CreateVideoUpscaleMotionVideoGenerationOutput": ".createvideoupscale", - "CreateVideoUpscaleMotionVideoGenerationOutputTypedDict": ".createvideoupscale", - "CreateVideoUpscaleRequestBody": ".createvideoupscale", - "CreateVideoUpscaleRequestBodyTypedDict": ".createvideoupscale", - "CreateVideoUpscaleResponse": ".createvideoupscale", - "CreateVideoUpscaleResponseBody": ".createvideoupscale", - "CreateVideoUpscaleResponseBodyTypedDict": ".createvideoupscale", - "CreateVideoUpscaleResponseTypedDict": ".createvideoupscale", - "CreateVideoUpscaleString": ".createvideoupscale", "Delete3DModelByIDRequest": ".delete3dmodelbyid", "Delete3DModelByIDRequestBody": ".delete3dmodelbyid", "Delete3DModelByIDRequestBodyTypedDict": ".delete3dmodelbyid", @@ -1329,16 +1227,14 @@ "DeleteModelByIDResponseBody": ".deletemodelbyid", "DeleteModelByIDResponseBodyTypedDict": ".deletemodelbyid", "DeleteModelByIDResponseTypedDict": ".deletemodelbyid", - "DeleteTextureGenerationByIDRequest": ".deletetexturegenerationbyid", - "DeleteTextureGenerationByIDRequestBody": ".deletetexturegenerationbyid", - "DeleteTextureGenerationByIDRequestBodyTypedDict": ".deletetexturegenerationbyid", - "DeleteTextureGenerationByIDRequestTypedDict": ".deletetexturegenerationbyid", - "DeleteTextureGenerationByIDResponse": ".deletetexturegenerationbyid", - "DeleteTextureGenerationByIDResponseBody": ".deletetexturegenerationbyid", - "DeleteTextureGenerationByIDResponseBodyTypedDict": ".deletetexturegenerationbyid", - "DeleteTextureGenerationByIDResponseTypedDict": ".deletetexturegenerationbyid", - "ModelAssetTextureGenerations": ".deletetexturegenerationbyid", - "ModelAssetTextureGenerationsTypedDict": ".deletetexturegenerationbyid", + "DeleteUploadedMediaByIDRequest": ".deleteuploadedmediabyid", + "DeleteUploadedMediaByIDRequestTypedDict": ".deleteuploadedmediabyid", + "DeleteUploadedMediaByIDResponse": ".deleteuploadedmediabyid", + "DeleteUploadedMediaByIDResponseBody": ".deleteuploadedmediabyid", + "DeleteUploadedMediaByIDResponseBodyTypedDict": ".deleteuploadedmediabyid", + "DeleteUploadedMediaByIDResponseTypedDict": ".deleteuploadedmediabyid", + "UploadedMedia": ".deleteuploadedmediabyid", + "UploadedMediaTypedDict": ".deleteuploadedmediabyid", "ExecuteBlueprint": ".executeblueprint", "ExecuteBlueprintRequestBody": ".executeblueprint", "ExecuteBlueprintRequestBodyTypedDict": ".executeblueprint", @@ -1491,30 +1387,14 @@ "GetMotionVariationByIDResponseBody": ".getmotionvariationbyid", "GetMotionVariationByIDResponseBodyTypedDict": ".getmotionvariationbyid", "GetMotionVariationByIDResponseTypedDict": ".getmotionvariationbyid", - "GetTextureGenerationByIDModelAssetTextureGenerations": ".gettexturegenerationbyid", - "GetTextureGenerationByIDModelAssetTextureGenerationsTypedDict": ".gettexturegenerationbyid", - "GetTextureGenerationByIDRequest": ".gettexturegenerationbyid", - "GetTextureGenerationByIDRequestBody": ".gettexturegenerationbyid", - "GetTextureGenerationByIDRequestBodyTypedDict": ".gettexturegenerationbyid", - "GetTextureGenerationByIDRequestTypedDict": ".gettexturegenerationbyid", - "GetTextureGenerationByIDResponse": ".gettexturegenerationbyid", - "GetTextureGenerationByIDResponseBody": ".gettexturegenerationbyid", - "GetTextureGenerationByIDResponseBodyTypedDict": ".gettexturegenerationbyid", - "GetTextureGenerationByIDResponseTypedDict": ".gettexturegenerationbyid", - "ModelAssetTextureImages": ".gettexturegenerationbyid", - "ModelAssetTextureImagesTypedDict": ".gettexturegenerationbyid", - "GetTextureGenerationsByModelIDModelAssetTextureGenerations": ".gettexturegenerationsbymodelid", - "GetTextureGenerationsByModelIDModelAssetTextureGenerationsTypedDict": ".gettexturegenerationsbymodelid", - "GetTextureGenerationsByModelIDModelAssetTextureImages": ".gettexturegenerationsbymodelid", - "GetTextureGenerationsByModelIDModelAssetTextureImagesTypedDict": ".gettexturegenerationsbymodelid", - "GetTextureGenerationsByModelIDRequest": ".gettexturegenerationsbymodelid", - "GetTextureGenerationsByModelIDRequestBody": ".gettexturegenerationsbymodelid", - "GetTextureGenerationsByModelIDRequestBodyTypedDict": ".gettexturegenerationsbymodelid", - "GetTextureGenerationsByModelIDRequestTypedDict": ".gettexturegenerationsbymodelid", - "GetTextureGenerationsByModelIDResponse": ".gettexturegenerationsbymodelid", - "GetTextureGenerationsByModelIDResponseBody": ".gettexturegenerationsbymodelid", - "GetTextureGenerationsByModelIDResponseBodyTypedDict": ".gettexturegenerationsbymodelid", - "GetTextureGenerationsByModelIDResponseTypedDict": ".gettexturegenerationsbymodelid", + "GetUploadedMediaByIDRequest": ".getuploadedmediabyid", + "GetUploadedMediaByIDRequestTypedDict": ".getuploadedmediabyid", + "GetUploadedMediaByIDResponse": ".getuploadedmediabyid", + "GetUploadedMediaByIDResponseBody": ".getuploadedmediabyid", + "GetUploadedMediaByIDResponseBodyTypedDict": ".getuploadedmediabyid", + "GetUploadedMediaByIDResponseTypedDict": ".getuploadedmediabyid", + "GetUploadedMediaByIDUploadedMedia": ".getuploadedmediabyid", + "GetUploadedMediaByIDUploadedMediaTypedDict": ".getuploadedmediabyid", "GetUserSelfResponse": ".getuserself", "GetUserSelfResponseBody": ".getuserself", "GetUserSelfResponseBodyTypedDict": ".getuserself", @@ -1664,6 +1544,14 @@ "UploadInitImageResponseBody": ".uploadinitimage", "UploadInitImageResponseBodyTypedDict": ".uploadinitimage", "UploadInitImageResponseTypedDict": ".uploadinitimage", + "MediaUploadOutput": ".uploadmedia", + "MediaUploadOutputTypedDict": ".uploadmedia", + "UploadMediaRequestBody": ".uploadmedia", + "UploadMediaRequestBodyTypedDict": ".uploadmedia", + "UploadMediaResponse": ".uploadmedia", + "UploadMediaResponseBody": ".uploadmedia", + "UploadMediaResponseBodyTypedDict": ".uploadmedia", + "UploadMediaResponseTypedDict": ".uploadmedia", "ModelAssetUploadOutput": ".uploadmodelasset", "ModelAssetUploadOutputTypedDict": ".uploadmodelasset", "UploadModelAssetRequestBody": ".uploadmodelasset", @@ -1675,39 +1563,11 @@ } -def dynamic_import(modname, retries=3): - for attempt in range(retries): - try: - return import_module(modname, __package__) - except KeyError: - # Clear any half-initialized module and retry - sys.modules.pop(modname, None) - if attempt == retries - 1: - break - raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") - - -def __getattr__(attr_name: str) -> object: - module_name = _dynamic_imports.get(attr_name) - if module_name is None: - raise AttributeError( - f"No {attr_name} found in _dynamic_imports for module name -> {__name__} " - ) - - try: - module = dynamic_import(module_name) - result = getattr(module, attr_name) - return result - except ImportError as e: - raise ImportError( - f"Failed to import {attr_name} from {module_name}: {e}" - ) from e - except AttributeError as e: - raise AttributeError( - f"Failed to get {attr_name} from {module_name}: {e}" - ) from e +def __getattr__(attr_name: str) -> Any: + return lazy_getattr( + attr_name, package=__package__, dynamic_imports=_dynamic_imports + ) def __dir__(): - lazy_attrs = builtins.list(_dynamic_imports.keys()) - return builtins.sorted(lazy_attrs) + return lazy_dir(dynamic_imports=_dynamic_imports) diff --git a/src/leonardo_ai_sdk/models/operations/createdataset.py b/src/leonardo_ai_sdk/models/operations/createdataset.py index 324fe245..83b3836c 100644 --- a/src/leonardo_ai_sdk/models/operations/createdataset.py +++ b/src/leonardo_ai_sdk/models/operations/createdataset.py @@ -41,7 +41,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -78,7 +78,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -117,7 +117,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -166,7 +166,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/leonardo_ai_sdk/models/operations/createelement.py b/src/leonardo_ai_sdk/models/operations/createelement.py index fb3eb720..6ef4e620 100644 --- a/src/leonardo_ai_sdk/models/operations/createelement.py +++ b/src/leonardo_ai_sdk/models/operations/createelement.py @@ -107,7 +107,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -156,7 +156,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -195,7 +195,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -244,10 +244,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + CreateElementRequestBody.model_rebuild() +except NameError: + pass +try: + SDTrainingOutput.model_rebuild() +except NameError: + pass +try: + CreateElementResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/creategeneration.py b/src/leonardo_ai_sdk/models/operations/creategeneration.py index d97ab708..52a31f6a 100644 --- a/src/leonardo_ai_sdk/models/operations/creategeneration.py +++ b/src/leonardo_ai_sdk/models/operations/creategeneration.py @@ -460,7 +460,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -509,7 +509,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -548,7 +548,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -597,10 +597,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + CreateGenerationRequestBody.model_rebuild() +except NameError: + pass +try: + SDGenerationOutput.model_rebuild() +except NameError: + pass +try: + CreateGenerationResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/createimagetovideogeneration.py b/src/leonardo_ai_sdk/models/operations/createimagetovideogeneration.py index 1783b0bf..970b92ef 100644 --- a/src/leonardo_ai_sdk/models/operations/createimagetovideogeneration.py +++ b/src/leonardo_ai_sdk/models/operations/createimagetovideogeneration.py @@ -224,7 +224,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -273,7 +273,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -315,7 +315,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -364,10 +364,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + CreateImageToVideoGenerationRequestBody.model_rebuild() +except NameError: + pass +try: + MotionVideoGenerationOutput.model_rebuild() +except NameError: + pass +try: + CreateImageToVideoGenerationResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/createlcmgeneration.py b/src/leonardo_ai_sdk/models/operations/createlcmgeneration.py index a0cb7085..911fc573 100644 --- a/src/leonardo_ai_sdk/models/operations/createlcmgeneration.py +++ b/src/leonardo_ai_sdk/models/operations/createlcmgeneration.py @@ -99,7 +99,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -157,7 +157,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -196,7 +196,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -245,10 +245,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + CreateLCMGenerationRequestBody.model_rebuild() +except NameError: + pass +try: + LcmGenerationOutput.model_rebuild() +except NameError: + pass +try: + CreateLCMGenerationResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/createmodel.py b/src/leonardo_ai_sdk/models/operations/createmodel.py index 099193a6..5d28bdb0 100644 --- a/src/leonardo_ai_sdk/models/operations/createmodel.py +++ b/src/leonardo_ai_sdk/models/operations/createmodel.py @@ -95,7 +95,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -146,7 +146,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -186,7 +186,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -235,10 +235,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + CreateModelRequestBody.model_rebuild() +except NameError: + pass +try: + CreateModelSDTrainingOutput.model_rebuild() +except NameError: + pass +try: + CreateModelResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/createsvdmotiongeneration.py b/src/leonardo_ai_sdk/models/operations/createsvdmotiongeneration.py deleted file mode 100644 index 67dbaf1b..00000000 --- a/src/leonardo_ai_sdk/models/operations/createsvdmotiongeneration.py +++ /dev/null @@ -1,217 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from leonardo_ai_sdk.models.shared import cost as shared_cost -from leonardo_ai_sdk.types import ( - BaseModel, - Nullable, - OptionalNullable, - UNSET, - UNSET_SENTINEL, -) -import pydantic -from pydantic import model_serializer -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class CreateSVDMotionGenerationRequestBodyTypedDict(TypedDict): - r"""Query parameters can also be provided in the request body as a JSON object""" - - image_id: str - r"""The ID of the image, supports generated images, variation images, and init images.""" - is_init_image: NotRequired[Nullable[bool]] - r"""If it is an init image uploaded by the user. This image is uploaded from endpoint: Upload init image.""" - is_public: NotRequired[Nullable[bool]] - r"""Whether the generation is public or not""" - is_variation: NotRequired[Nullable[bool]] - r"""If it is a variation image.""" - motion_strength: NotRequired[Nullable[int]] - r"""The motion strength.""" - - -class CreateSVDMotionGenerationRequestBody(BaseModel): - r"""Query parameters can also be provided in the request body as a JSON object""" - - image_id: Annotated[str, pydantic.Field(alias="imageId")] - r"""The ID of the image, supports generated images, variation images, and init images.""" - - is_init_image: Annotated[ - OptionalNullable[bool], pydantic.Field(alias="isInitImage") - ] = UNSET - r"""If it is an init image uploaded by the user. This image is uploaded from endpoint: Upload init image.""" - - is_public: Annotated[OptionalNullable[bool], pydantic.Field(alias="isPublic")] = ( - UNSET - ) - r"""Whether the generation is public or not""" - - is_variation: Annotated[ - OptionalNullable[bool], pydantic.Field(alias="isVariation") - ] = UNSET - r"""If it is a variation image.""" - - motion_strength: Annotated[ - OptionalNullable[int], pydantic.Field(alias="motionStrength") - ] = UNSET - r"""The motion strength.""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set( - ["isInitImage", "isPublic", "isVariation", "motionStrength"] - ) - nullable_fields = set( - ["isInitImage", "isPublic", "isVariation", "motionStrength"] - ) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class MotionSvdGenerationOutputTypedDict(TypedDict): - api_credit_cost: NotRequired[Nullable[int]] - r"""API credits cost, available for Production API users. Note: it will be deprecated. Please use the cost instead.""" - cost: NotRequired[Nullable[shared_cost.CostTypedDict]] - r"""The cost of the operation.""" - generation_id: NotRequired[str] - - -class MotionSvdGenerationOutput(BaseModel): - api_credit_cost: Annotated[ - OptionalNullable[int], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", - alias="apiCreditCost", - ), - ] = UNSET - r"""API credits cost, available for Production API users. Note: it will be deprecated. Please use the cost instead.""" - - cost: OptionalNullable[shared_cost.Cost] = UNSET - r"""The cost of the operation.""" - - generation_id: Annotated[Optional[str], pydantic.Field(alias="generationId")] = None - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["apiCreditCost", "cost", "generationId"]) - nullable_fields = set(["apiCreditCost", "cost"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class CreateSVDMotionGenerationResponseBodyTypedDict(TypedDict): - r"""Responses for POST /generations-motion-svd""" - - motion_svd_generation_job: NotRequired[Nullable[MotionSvdGenerationOutputTypedDict]] - - -class CreateSVDMotionGenerationResponseBody(BaseModel): - r"""Responses for POST /generations-motion-svd""" - - motion_svd_generation_job: Annotated[ - OptionalNullable[MotionSvdGenerationOutput], - pydantic.Field(alias="motionSvdGenerationJob"), - ] = UNSET - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["motionSvdGenerationJob"]) - nullable_fields = set(["motionSvdGenerationJob"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class CreateSVDMotionGenerationResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[CreateSVDMotionGenerationResponseBodyTypedDict] - r"""Responses for POST /generations-motion-svd""" - - -class CreateSVDMotionGenerationResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[CreateSVDMotionGenerationResponseBody] = None - r"""Responses for POST /generations-motion-svd""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["object"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/leonardo_ai_sdk/models/operations/createtexttovideogeneration.py b/src/leonardo_ai_sdk/models/operations/createtexttovideogeneration.py index cc67e2e7..d41ec708 100644 --- a/src/leonardo_ai_sdk/models/operations/createtexttovideogeneration.py +++ b/src/leonardo_ai_sdk/models/operations/createtexttovideogeneration.py @@ -172,7 +172,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -221,7 +221,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -263,7 +263,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -312,10 +312,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + CreateTextToVideoGenerationRequestBody.model_rebuild() +except NameError: + pass +try: + CreateTextToVideoGenerationMotionVideoGenerationOutput.model_rebuild() +except NameError: + pass +try: + CreateTextToVideoGenerationResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/createtexturegeneration.py b/src/leonardo_ai_sdk/models/operations/createtexturegeneration.py deleted file mode 100644 index 8eb0c23d..00000000 --- a/src/leonardo_ai_sdk/models/operations/createtexturegeneration.py +++ /dev/null @@ -1,228 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from leonardo_ai_sdk.models.shared import cost as shared_cost -from leonardo_ai_sdk.types import ( - BaseModel, - Nullable, - OptionalNullable, - UNSET, - UNSET_SENTINEL, -) -import pydantic -from pydantic import model_serializer -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class CreateTextureGenerationRequestBodyTypedDict(TypedDict): - r"""Query parameters can also be provided in the request body as a JSON object""" - - front_rotation_offset: NotRequired[Nullable[int]] - model_asset_id: NotRequired[str] - negative_prompt: NotRequired[Nullable[str]] - preview: NotRequired[Nullable[bool]] - preview_direction: NotRequired[Nullable[str]] - prompt: NotRequired[str] - sd_version: NotRequired[Nullable[str]] - seed: NotRequired[Nullable[int]] - r"""Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models""" - - -class CreateTextureGenerationRequestBody(BaseModel): - r"""Query parameters can also be provided in the request body as a JSON object""" - - front_rotation_offset: OptionalNullable[int] = UNSET - - model_asset_id: Annotated[Optional[str], pydantic.Field(alias="modelAssetId")] = ( - None - ) - - negative_prompt: OptionalNullable[str] = UNSET - - preview: OptionalNullable[bool] = UNSET - - preview_direction: OptionalNullable[str] = UNSET - - prompt: Optional[str] = None - - sd_version: OptionalNullable[str] = UNSET - - seed: OptionalNullable[int] = UNSET - r"""Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set( - [ - "front_rotation_offset", - "modelAssetId", - "negative_prompt", - "preview", - "preview_direction", - "prompt", - "sd_version", - "seed", - ] - ) - nullable_fields = set( - [ - "front_rotation_offset", - "negative_prompt", - "preview", - "preview_direction", - "sd_version", - "seed", - ] - ) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class TextureGenerationJobOutputTypedDict(TypedDict): - api_credit_cost: NotRequired[Nullable[int]] - r"""API Credits Cost for Texture Generation. Available for Production API Users. Note: it will be deprecated. Please use the cost instead.""" - cost: NotRequired[Nullable[shared_cost.CostTypedDict]] - r"""The cost of the operation.""" - id: NotRequired[str] - - -class TextureGenerationJobOutput(BaseModel): - api_credit_cost: Annotated[ - OptionalNullable[int], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", - alias="apiCreditCost", - ), - ] = UNSET - r"""API Credits Cost for Texture Generation. Available for Production API Users. Note: it will be deprecated. Please use the cost instead.""" - - cost: OptionalNullable[shared_cost.Cost] = UNSET - r"""The cost of the operation.""" - - id: Optional[str] = None - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["apiCreditCost", "cost", "id"]) - nullable_fields = set(["apiCreditCost", "cost"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class CreateTextureGenerationResponseBodyTypedDict(TypedDict): - r"""Responses for POST /api/rest/v1/generations-texture""" - - texture_generation_job: NotRequired[Nullable[TextureGenerationJobOutputTypedDict]] - - -class CreateTextureGenerationResponseBody(BaseModel): - r"""Responses for POST /api/rest/v1/generations-texture""" - - texture_generation_job: Annotated[ - OptionalNullable[TextureGenerationJobOutput], - pydantic.Field(alias="textureGenerationJob"), - ] = UNSET - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["textureGenerationJob"]) - nullable_fields = set(["textureGenerationJob"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class CreateTextureGenerationResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[CreateTextureGenerationResponseBodyTypedDict] - r"""Responses for POST /api/rest/v1/generations-texture""" - - -class CreateTextureGenerationResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[CreateTextureGenerationResponseBody] = None - r"""Responses for POST /api/rest/v1/generations-texture""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["object"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/leonardo_ai_sdk/models/operations/createuniversalupscalerjob.py b/src/leonardo_ai_sdk/models/operations/createuniversalupscalerjob.py index 1ac50b7a..bfae9fb5 100644 --- a/src/leonardo_ai_sdk/models/operations/createuniversalupscalerjob.py +++ b/src/leonardo_ai_sdk/models/operations/createuniversalupscalerjob.py @@ -137,7 +137,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -186,7 +186,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -224,7 +224,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -265,10 +265,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + CreateUniversalUpscalerJobRequestBody.model_rebuild() +except NameError: + pass +try: + UniversalUpscalerOutput.model_rebuild() +except NameError: + pass +try: + CreateUniversalUpscalerJobResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/createvariationnobg.py b/src/leonardo_ai_sdk/models/operations/createvariationnobg.py index 4f5e4298..fae04a31 100644 --- a/src/leonardo_ai_sdk/models/operations/createvariationnobg.py +++ b/src/leonardo_ai_sdk/models/operations/createvariationnobg.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -79,7 +79,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -117,7 +117,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -158,10 +158,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + CreateVariationNoBGRequestBody.model_rebuild() +except NameError: + pass +try: + SDUpscaleJobOutput.model_rebuild() +except NameError: + pass +try: + CreateVariationNoBGResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/createvariationunzoom.py b/src/leonardo_ai_sdk/models/operations/createvariationunzoom.py index 966cf389..e45b466b 100644 --- a/src/leonardo_ai_sdk/models/operations/createvariationunzoom.py +++ b/src/leonardo_ai_sdk/models/operations/createvariationunzoom.py @@ -41,7 +41,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -90,7 +90,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -129,7 +129,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -178,10 +178,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + CreateVariationUnzoomRequestBody.model_rebuild() +except NameError: + pass +try: + SDUnzoomOutput.model_rebuild() +except NameError: + pass +try: + CreateVariationUnzoomResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/createvariationupscale.py b/src/leonardo_ai_sdk/models/operations/createvariationupscale.py index 971a0f5e..f169455d 100644 --- a/src/leonardo_ai_sdk/models/operations/createvariationupscale.py +++ b/src/leonardo_ai_sdk/models/operations/createvariationupscale.py @@ -60,7 +60,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -102,7 +102,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -151,10 +151,20 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + CreateVariationUpscaleSDUpscaleJobOutput.model_rebuild() +except NameError: + pass +try: + CreateVariationUpscaleResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/createvideoupscale.py b/src/leonardo_ai_sdk/models/operations/createvideoupscale.py deleted file mode 100644 index 5d838b36..00000000 --- a/src/leonardo_ai_sdk/models/operations/createvideoupscale.py +++ /dev/null @@ -1,179 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from leonardo_ai_sdk.models.shared import cost as shared_cost -from leonardo_ai_sdk.types import ( - BaseModel, - Nullable, - OptionalNullable, - UNSET, - UNSET_SENTINEL, -) -import pydantic -from pydantic import model_serializer -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class CreateVideoUpscaleString(str, Enum): - r"""The resolution of the upscaled video. RESOLUTION_720 is the only option for now.""" - - RESOLUTION_720 = "RESOLUTION_720" - - -class CreateVideoUpscaleRequestBodyTypedDict(TypedDict): - r"""Query parameters can also be provided in the request body as a JSON object""" - - resolution: CreateVideoUpscaleString - r"""The resolution of the upscaled video. RESOLUTION_720 is the only option for now.""" - source_generation_id: str - r"""The ID of the source video generation to upscale.""" - - -class CreateVideoUpscaleRequestBody(BaseModel): - r"""Query parameters can also be provided in the request body as a JSON object""" - - resolution: CreateVideoUpscaleString - r"""The resolution of the upscaled video. RESOLUTION_720 is the only option for now.""" - - source_generation_id: Annotated[str, pydantic.Field(alias="sourceGenerationId")] - r"""The ID of the source video generation to upscale.""" - - -class CreateVideoUpscaleMotionVideoGenerationOutputTypedDict(TypedDict): - api_credit_cost: NotRequired[Nullable[int]] - r"""API credits cost, available for Production API users. Note: it will be deprecated. Please use the cost instead.""" - cost: NotRequired[Nullable[shared_cost.CostTypedDict]] - r"""The cost of the operation.""" - generation_id: NotRequired[str] - variation_id: NotRequired[str] - r"""The ID of the upscale variation.""" - - -class CreateVideoUpscaleMotionVideoGenerationOutput(BaseModel): - api_credit_cost: Annotated[ - OptionalNullable[int], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", - alias="apiCreditCost", - ), - ] = UNSET - r"""API credits cost, available for Production API users. Note: it will be deprecated. Please use the cost instead.""" - - cost: OptionalNullable[shared_cost.Cost] = UNSET - r"""The cost of the operation.""" - - generation_id: Annotated[Optional[str], pydantic.Field(alias="generationId")] = None - - variation_id: Annotated[Optional[str], pydantic.Field(alias="variationId")] = None - r"""The ID of the upscale variation.""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["apiCreditCost", "cost", "generationId", "variationId"]) - nullable_fields = set(["apiCreditCost", "cost"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class CreateVideoUpscaleResponseBodyTypedDict(TypedDict): - r"""Responses for POST /generations-text-to-video""" - - motion_video_generation_job: NotRequired[ - Nullable[CreateVideoUpscaleMotionVideoGenerationOutputTypedDict] - ] - - -class CreateVideoUpscaleResponseBody(BaseModel): - r"""Responses for POST /generations-text-to-video""" - - motion_video_generation_job: Annotated[ - OptionalNullable[CreateVideoUpscaleMotionVideoGenerationOutput], - pydantic.Field(alias="motionVideoGenerationJob"), - ] = UNSET - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["motionVideoGenerationJob"]) - nullable_fields = set(["motionVideoGenerationJob"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class CreateVideoUpscaleResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[CreateVideoUpscaleResponseBodyTypedDict] - r"""Responses for POST /generations-text-to-video""" - - -class CreateVideoUpscaleResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[CreateVideoUpscaleResponseBody] = None - r"""Responses for POST /generations-text-to-video""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["object"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/leonardo_ai_sdk/models/operations/delete3dmodelbyid.py b/src/leonardo_ai_sdk/models/operations/delete3dmodelbyid.py index 98ea6fda..81838f9e 100644 --- a/src/leonardo_ai_sdk/models/operations/delete3dmodelbyid.py +++ b/src/leonardo_ai_sdk/models/operations/delete3dmodelbyid.py @@ -35,7 +35,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -79,7 +79,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -108,7 +108,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -147,7 +147,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -196,7 +196,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/leonardo_ai_sdk/models/operations/deletedatasetbyid.py b/src/leonardo_ai_sdk/models/operations/deletedatasetbyid.py index f1858c38..5846c00a 100644 --- a/src/leonardo_ai_sdk/models/operations/deletedatasetbyid.py +++ b/src/leonardo_ai_sdk/models/operations/deletedatasetbyid.py @@ -47,7 +47,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -86,7 +86,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -135,7 +135,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/leonardo_ai_sdk/models/operations/deleteelementbyid.py b/src/leonardo_ai_sdk/models/operations/deleteelementbyid.py index f6a2580f..f8734f6c 100644 --- a/src/leonardo_ai_sdk/models/operations/deleteelementbyid.py +++ b/src/leonardo_ai_sdk/models/operations/deleteelementbyid.py @@ -46,7 +46,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -77,7 +77,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -126,7 +126,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/leonardo_ai_sdk/models/operations/deletegenerationbyid.py b/src/leonardo_ai_sdk/models/operations/deletegenerationbyid.py index 003c790a..21a791f0 100644 --- a/src/leonardo_ai_sdk/models/operations/deletegenerationbyid.py +++ b/src/leonardo_ai_sdk/models/operations/deletegenerationbyid.py @@ -47,7 +47,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -86,7 +86,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -135,7 +135,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/leonardo_ai_sdk/models/operations/deleteinitimagebyid.py b/src/leonardo_ai_sdk/models/operations/deleteinitimagebyid.py index a6d7e04d..556586e3 100644 --- a/src/leonardo_ai_sdk/models/operations/deleteinitimagebyid.py +++ b/src/leonardo_ai_sdk/models/operations/deleteinitimagebyid.py @@ -47,7 +47,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -86,7 +86,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -135,7 +135,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/leonardo_ai_sdk/models/operations/deletemodelbyid.py b/src/leonardo_ai_sdk/models/operations/deletemodelbyid.py index 903f01b8..c0b017de 100644 --- a/src/leonardo_ai_sdk/models/operations/deletemodelbyid.py +++ b/src/leonardo_ai_sdk/models/operations/deletemodelbyid.py @@ -47,7 +47,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -86,7 +86,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -135,7 +135,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/leonardo_ai_sdk/models/operations/deletetexturegenerationbyid.py b/src/leonardo_ai_sdk/models/operations/deletetexturegenerationbyid.py deleted file mode 100644 index 04b8e14f..00000000 --- a/src/leonardo_ai_sdk/models/operations/deletetexturegenerationbyid.py +++ /dev/null @@ -1,209 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from leonardo_ai_sdk.types import ( - BaseModel, - Nullable, - OptionalNullable, - UNSET, - UNSET_SENTINEL, -) -from leonardo_ai_sdk.utils import FieldMetadata, PathParamMetadata, RequestMetadata -from pydantic import model_serializer -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class DeleteTextureGenerationByIDRequestBodyTypedDict(TypedDict): - r"""Query parameters can also be provided in the request body as a JSON object""" - - id: NotRequired[Nullable[str]] - - -class DeleteTextureGenerationByIDRequestBody(BaseModel): - r"""Query parameters can also be provided in the request body as a JSON object""" - - id: OptionalNullable[str] = UNSET - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["id"]) - nullable_fields = set(["id"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class DeleteTextureGenerationByIDRequestTypedDict(TypedDict): - id: str - r"""_\"id\" is required (enter it either in parameters or request body)_""" - request_body: NotRequired[DeleteTextureGenerationByIDRequestBodyTypedDict] - r"""Query parameters can also be provided in the request body as a JSON object""" - - -class DeleteTextureGenerationByIDRequest(BaseModel): - id: Annotated[ - str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) - ] - r"""_\"id\" is required (enter it either in parameters or request body)_""" - - request_body: Annotated[ - Optional[DeleteTextureGenerationByIDRequestBody], - FieldMetadata(request=RequestMetadata(media_type="application/json")), - ] = None - r"""Query parameters can also be provided in the request body as a JSON object""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["RequestBody"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m - - -class ModelAssetTextureGenerationsTypedDict(TypedDict): - r"""columns and relationships of \"model_asset_texture_generations\" """ - - id: NotRequired[Nullable[str]] - - -class ModelAssetTextureGenerations(BaseModel): - r"""columns and relationships of \"model_asset_texture_generations\" """ - - id: OptionalNullable[str] = UNSET - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["id"]) - nullable_fields = set(["id"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class DeleteTextureGenerationByIDResponseBodyTypedDict(TypedDict): - r"""Responses for DELETE /api/rest/v1/generations-texture/{id}""" - - delete_model_asset_texture_generations_by_pk: NotRequired[ - Nullable[ModelAssetTextureGenerationsTypedDict] - ] - r"""columns and relationships of \"model_asset_texture_generations\" """ - - -class DeleteTextureGenerationByIDResponseBody(BaseModel): - r"""Responses for DELETE /api/rest/v1/generations-texture/{id}""" - - delete_model_asset_texture_generations_by_pk: OptionalNullable[ - ModelAssetTextureGenerations - ] = UNSET - r"""columns and relationships of \"model_asset_texture_generations\" """ - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["delete_model_asset_texture_generations_by_pk"]) - nullable_fields = set(["delete_model_asset_texture_generations_by_pk"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class DeleteTextureGenerationByIDResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[DeleteTextureGenerationByIDResponseBodyTypedDict] - r"""Responses for DELETE /api/rest/v1/generations-texture/{id}""" - - -class DeleteTextureGenerationByIDResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[DeleteTextureGenerationByIDResponseBody] = None - r"""Responses for DELETE /api/rest/v1/generations-texture/{id}""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["object"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/leonardo_ai_sdk/models/operations/deleteuploadedmediabyid.py b/src/leonardo_ai_sdk/models/operations/deleteuploadedmediabyid.py new file mode 100644 index 00000000..748201e3 --- /dev/null +++ b/src/leonardo_ai_sdk/models/operations/deleteuploadedmediabyid.py @@ -0,0 +1,138 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from leonardo_ai_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from leonardo_ai_sdk.utils import FieldMetadata, PathParamMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteUploadedMediaByIDRequestTypedDict(TypedDict): + id: str + r"""_\"id\" is required_""" + + +class DeleteUploadedMediaByIDRequest(BaseModel): + id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""_\"id\" is required_""" + + +class UploadedMediaTypedDict(TypedDict): + id: NotRequired[Nullable[str]] + + +class UploadedMedia(BaseModel): + id: OptionalNullable[str] = UNSET + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + nullable_fields = set(["id"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m + + +class DeleteUploadedMediaByIDResponseBodyTypedDict(TypedDict): + r"""Responses for DELETE /media/{id}""" + + delete_uploaded_media_by_pk: NotRequired[Nullable[UploadedMediaTypedDict]] + + +class DeleteUploadedMediaByIDResponseBody(BaseModel): + r"""Responses for DELETE /media/{id}""" + + delete_uploaded_media_by_pk: OptionalNullable[UploadedMedia] = UNSET + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["delete_uploaded_media_by_pk"]) + nullable_fields = set(["delete_uploaded_media_by_pk"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m + + +class DeleteUploadedMediaByIDResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[DeleteUploadedMediaByIDResponseBodyTypedDict] + r"""Responses for DELETE /media/{id}""" + + +class DeleteUploadedMediaByIDResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[DeleteUploadedMediaByIDResponseBody] = None + r"""Responses for DELETE /media/{id}""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["object"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m diff --git a/src/leonardo_ai_sdk/models/operations/executeblueprint.py b/src/leonardo_ai_sdk/models/operations/executeblueprint.py index 9ba83f95..1142f6f0 100644 --- a/src/leonardo_ai_sdk/models/operations/executeblueprint.py +++ b/src/leonardo_ai_sdk/models/operations/executeblueprint.py @@ -44,7 +44,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -132,10 +132,28 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + Input.model_rebuild() +except NameError: + pass +try: + ExecuteBlueprintRequestBody.model_rebuild() +except NameError: + pass +try: + ExecuteBlueprint.model_rebuild() +except NameError: + pass +try: + SuccessResponse.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/get3dmodelbyid.py b/src/leonardo_ai_sdk/models/operations/get3dmodelbyid.py index d515b389..1ba3a708 100644 --- a/src/leonardo_ai_sdk/models/operations/get3dmodelbyid.py +++ b/src/leonardo_ai_sdk/models/operations/get3dmodelbyid.py @@ -41,7 +41,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -97,7 +97,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -143,7 +143,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -182,7 +182,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -231,10 +231,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + Get3DModelByIDModelAssets.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/get3dmodelsbyuserid.py b/src/leonardo_ai_sdk/models/operations/get3dmodelsbyuserid.py index e75418e9..0eb215f2 100644 --- a/src/leonardo_ai_sdk/models/operations/get3dmodelsbyuserid.py +++ b/src/leonardo_ai_sdk/models/operations/get3dmodelsbyuserid.py @@ -41,7 +41,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -97,7 +97,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -143,7 +143,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -179,7 +179,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -220,10 +220,20 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + Get3DModelsByUserIDRequestBody.model_rebuild() +except NameError: + pass +try: + Get3DModelsByUserIDModelAssets.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/getblueprintbyid.py b/src/leonardo_ai_sdk/models/operations/getblueprintbyid.py index df9138e3..30a8f6d6 100644 --- a/src/leonardo_ai_sdk/models/operations/getblueprintbyid.py +++ b/src/leonardo_ai_sdk/models/operations/getblueprintbyid.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -100,7 +100,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/leonardo_ai_sdk/models/operations/getblueprintexecution.py b/src/leonardo_ai_sdk/models/operations/getblueprintexecution.py index 3a9d92ee..43a52baf 100644 --- a/src/leonardo_ai_sdk/models/operations/getblueprintexecution.py +++ b/src/leonardo_ai_sdk/models/operations/getblueprintexecution.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: m[k] = val @@ -63,7 +63,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -121,10 +121,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + GetBlueprintExecutionSuccessResponse.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/getblueprintexecutiongenerations.py b/src/leonardo_ai_sdk/models/operations/getblueprintexecutiongenerations.py index a21dca62..f294027e 100644 --- a/src/leonardo_ai_sdk/models/operations/getblueprintexecutiongenerations.py +++ b/src/leonardo_ai_sdk/models/operations/getblueprintexecutiongenerations.py @@ -66,7 +66,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -111,7 +111,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -152,10 +152,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + GetBlueprintExecutionGenerationsResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/getblueprintversionsbyblueprintid.py b/src/leonardo_ai_sdk/models/operations/getblueprintversionsbyblueprintid.py index 4be73a17..474b0d11 100644 --- a/src/leonardo_ai_sdk/models/operations/getblueprintversionsbyblueprintid.py +++ b/src/leonardo_ai_sdk/models/operations/getblueprintversionsbyblueprintid.py @@ -46,7 +46,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -106,10 +106,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + GetBlueprintVersionsByBlueprintIDSuccessResponse.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/getcustomelementsbyuserid.py b/src/leonardo_ai_sdk/models/operations/getcustomelementsbyuserid.py index d68baf77..0b296866 100644 --- a/src/leonardo_ai_sdk/models/operations/getcustomelementsbyuserid.py +++ b/src/leonardo_ai_sdk/models/operations/getcustomelementsbyuserid.py @@ -113,7 +113,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -154,7 +154,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -203,10 +203,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + GetCustomElementsByUserIDUserLoras.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/getcustommodelsbyuserid.py b/src/leonardo_ai_sdk/models/operations/getcustommodelsbyuserid.py index 00060295..19832a24 100644 --- a/src/leonardo_ai_sdk/models/operations/getcustommodelsbyuserid.py +++ b/src/leonardo_ai_sdk/models/operations/getcustommodelsbyuserid.py @@ -115,7 +115,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -156,7 +156,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -205,10 +205,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + GetCustomModelsByUserIDCustomModels.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/getdatasetbyid.py b/src/leonardo_ai_sdk/models/operations/getdatasetbyid.py index 58eea998..eeb72ac5 100644 --- a/src/leonardo_ai_sdk/models/operations/getdatasetbyid.py +++ b/src/leonardo_ai_sdk/models/operations/getdatasetbyid.py @@ -54,7 +54,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -108,7 +108,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -147,7 +147,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -196,10 +196,20 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + DatasetImages.model_rebuild() +except NameError: + pass +try: + GetDatasetByIDDatasets.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/getelementbyid.py b/src/leonardo_ai_sdk/models/operations/getelementbyid.py index bd64e86a..dbff9945 100644 --- a/src/leonardo_ai_sdk/models/operations/getelementbyid.py +++ b/src/leonardo_ai_sdk/models/operations/getelementbyid.py @@ -111,7 +111,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -150,7 +150,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -199,10 +199,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + GetElementByIDUserLoras.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/getgenerationbyid.py b/src/leonardo_ai_sdk/models/operations/getgenerationbyid.py index 54c09c14..271f3fcb 100644 --- a/src/leonardo_ai_sdk/models/operations/getgenerationbyid.py +++ b/src/leonardo_ai_sdk/models/operations/getgenerationbyid.py @@ -71,7 +71,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -188,7 +188,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -293,7 +293,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -340,7 +340,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -535,7 +535,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -574,7 +574,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -623,10 +623,32 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + GetGenerationByIDGeneratedImageVariationGeneric.model_rebuild() +except NameError: + pass +try: + GeneratedImages.model_rebuild() +except NameError: + pass +try: + GetGenerationByIDLoras.model_rebuild() +except NameError: + pass +try: + GenerationElements.model_rebuild() +except NameError: + pass +try: + GetGenerationByIDGenerations.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/getgenerationsbyuserid.py b/src/leonardo_ai_sdk/models/operations/getgenerationsbyuserid.py index e80eb87d..e37bcaec 100644 --- a/src/leonardo_ai_sdk/models/operations/getgenerationsbyuserid.py +++ b/src/leonardo_ai_sdk/models/operations/getgenerationsbyuserid.py @@ -54,7 +54,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -99,7 +99,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -207,7 +207,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -312,7 +312,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -359,7 +359,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -556,7 +556,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -592,7 +592,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -633,10 +633,32 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + GetGenerationsByUserIDGeneratedImageVariationGeneric.model_rebuild() +except NameError: + pass +try: + GetGenerationsByUserIDGeneratedImages.model_rebuild() +except NameError: + pass +try: + Elements.model_rebuild() +except NameError: + pass +try: + GetGenerationsByUserIDGenerationElements.model_rebuild() +except NameError: + pass +try: + GetGenerationsByUserIDGenerations.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/getinitimagebyid.py b/src/leonardo_ai_sdk/models/operations/getinitimagebyid.py index 4ee4b302..293b77ad 100644 --- a/src/leonardo_ai_sdk/models/operations/getinitimagebyid.py +++ b/src/leonardo_ai_sdk/models/operations/getinitimagebyid.py @@ -54,7 +54,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -93,7 +93,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -142,10 +142,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + GetInitImageByIDInitImages.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/getmodelbyid.py b/src/leonardo_ai_sdk/models/operations/getmodelbyid.py index b5fef15f..38c62d70 100644 --- a/src/leonardo_ai_sdk/models/operations/getmodelbyid.py +++ b/src/leonardo_ai_sdk/models/operations/getmodelbyid.py @@ -113,7 +113,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -152,7 +152,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -201,10 +201,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + GetModelByIDCustomModels.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/getmotionvariationbyid.py b/src/leonardo_ai_sdk/models/operations/getmotionvariationbyid.py index e50d0e07..3defd9ff 100644 --- a/src/leonardo_ai_sdk/models/operations/getmotionvariationbyid.py +++ b/src/leonardo_ai_sdk/models/operations/getmotionvariationbyid.py @@ -79,7 +79,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -119,7 +119,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -160,10 +160,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + GeneratedImageVariationMotion.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/gettexturegenerationbyid.py b/src/leonardo_ai_sdk/models/operations/gettexturegenerationbyid.py deleted file mode 100644 index c9e336ab..00000000 --- a/src/leonardo_ai_sdk/models/operations/gettexturegenerationbyid.py +++ /dev/null @@ -1,312 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from leonardo_ai_sdk.models.shared import ( - job_status as shared_job_status, - model_asset_texture_types as shared_model_asset_texture_types, -) -from leonardo_ai_sdk.types import ( - BaseModel, - Nullable, - OptionalNullable, - UNSET, - UNSET_SENTINEL, -) -from leonardo_ai_sdk.utils import ( - FieldMetadata, - PathParamMetadata, - QueryParamMetadata, - RequestMetadata, -) -import pydantic -from pydantic import model_serializer -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetTextureGenerationByIDRequestBodyTypedDict(TypedDict): - r"""Query parameters can also be provided in the request body as a JSON object""" - - id: NotRequired[Nullable[str]] - - -class GetTextureGenerationByIDRequestBody(BaseModel): - r"""Query parameters can also be provided in the request body as a JSON object""" - - id: OptionalNullable[str] = UNSET - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["id"]) - nullable_fields = set(["id"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class GetTextureGenerationByIDRequestTypedDict(TypedDict): - id: str - r"""_\"id\" is required (enter it either in parameters or request body)_""" - request_body: NotRequired[GetTextureGenerationByIDRequestBodyTypedDict] - r"""Query parameters can also be provided in the request body as a JSON object""" - limit: NotRequired[int] - offset: NotRequired[int] - - -class GetTextureGenerationByIDRequest(BaseModel): - id: Annotated[ - str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) - ] - r"""_\"id\" is required (enter it either in parameters or request body)_""" - - request_body: Annotated[ - Optional[GetTextureGenerationByIDRequestBody], - FieldMetadata(request=RequestMetadata(media_type="application/json")), - ] = None - r"""Query parameters can also be provided in the request body as a JSON object""" - - limit: Annotated[ - Optional[int], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 10 - - offset: Annotated[ - Optional[int], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 0 - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["RequestBody", "limit", "offset"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m - - -class ModelAssetTextureImagesTypedDict(TypedDict): - r"""columns and relationships of \"model_asset_texture_images\" """ - - id: NotRequired[Nullable[str]] - type: NotRequired[shared_model_asset_texture_types.ModelAssetTextureTypes] - r"""When training model assets these are the texture types available to use.""" - url: NotRequired[str] - - -class ModelAssetTextureImages(BaseModel): - r"""columns and relationships of \"model_asset_texture_images\" """ - - id: OptionalNullable[str] = UNSET - - type: Optional[shared_model_asset_texture_types.ModelAssetTextureTypes] = ( - shared_model_asset_texture_types.ModelAssetTextureTypes.NORMAL - ) - r"""When training model assets these are the texture types available to use.""" - - url: Optional[str] = None - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["id", "type", "url"]) - nullable_fields = set(["id"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class GetTextureGenerationByIDModelAssetTextureGenerationsTypedDict(TypedDict): - r"""columns and relationships of \"model_asset_texture_generations\" """ - - created_at: NotRequired[str] - id: NotRequired[Nullable[str]] - model_asset_texture_images: NotRequired[List[ModelAssetTextureImagesTypedDict]] - negative_prompt: NotRequired[Nullable[str]] - prompt: NotRequired[str] - seed: NotRequired[Nullable[int]] - r"""Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models""" - status: NotRequired[shared_job_status.JobStatus] - r"""The status of the current task.""" - - -class GetTextureGenerationByIDModelAssetTextureGenerations(BaseModel): - r"""columns and relationships of \"model_asset_texture_generations\" """ - - created_at: Annotated[Optional[str], pydantic.Field(alias="createdAt")] = None - - id: OptionalNullable[str] = UNSET - - model_asset_texture_images: Optional[List[ModelAssetTextureImages]] = None - - negative_prompt: Annotated[ - OptionalNullable[str], pydantic.Field(alias="negativePrompt") - ] = UNSET - - prompt: Optional[str] = None - - seed: OptionalNullable[int] = UNSET - r"""Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models""" - - status: Optional[shared_job_status.JobStatus] = None - r"""The status of the current task.""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set( - [ - "createdAt", - "id", - "model_asset_texture_images", - "negativePrompt", - "prompt", - "seed", - "status", - ] - ) - nullable_fields = set(["id", "negativePrompt", "seed"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class GetTextureGenerationByIDResponseBodyTypedDict(TypedDict): - r"""Responses for GET /api/rest/v1/generations-texture/{id}""" - - model_asset_texture_generations_by_pk: NotRequired[ - Nullable[GetTextureGenerationByIDModelAssetTextureGenerationsTypedDict] - ] - r"""columns and relationships of \"model_asset_texture_generations\" """ - - -class GetTextureGenerationByIDResponseBody(BaseModel): - r"""Responses for GET /api/rest/v1/generations-texture/{id}""" - - model_asset_texture_generations_by_pk: OptionalNullable[ - GetTextureGenerationByIDModelAssetTextureGenerations - ] = UNSET - r"""columns and relationships of \"model_asset_texture_generations\" """ - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["model_asset_texture_generations_by_pk"]) - nullable_fields = set(["model_asset_texture_generations_by_pk"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class GetTextureGenerationByIDResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetTextureGenerationByIDResponseBodyTypedDict] - r"""Responses for GET /api/rest/v1/generations-texture/{id}""" - - -class GetTextureGenerationByIDResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetTextureGenerationByIDResponseBody] = None - r"""Responses for GET /api/rest/v1/generations-texture/{id}""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["object"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/leonardo_ai_sdk/models/operations/gettexturegenerationsbymodelid.py b/src/leonardo_ai_sdk/models/operations/gettexturegenerationsbymodelid.py deleted file mode 100644 index ef05a863..00000000 --- a/src/leonardo_ai_sdk/models/operations/gettexturegenerationsbymodelid.py +++ /dev/null @@ -1,313 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from leonardo_ai_sdk.models.shared import ( - job_status as shared_job_status, - model_asset_texture_types as shared_model_asset_texture_types, -) -from leonardo_ai_sdk.types import ( - BaseModel, - Nullable, - OptionalNullable, - UNSET, - UNSET_SENTINEL, -) -from leonardo_ai_sdk.utils import ( - FieldMetadata, - PathParamMetadata, - QueryParamMetadata, - RequestMetadata, -) -import pydantic -from pydantic import model_serializer -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetTextureGenerationsByModelIDRequestBodyTypedDict(TypedDict): - r"""Query parameters can also be provided in the request body as a JSON object""" - - limit: NotRequired[Nullable[int]] - model_id: NotRequired[Nullable[str]] - offset: NotRequired[Nullable[int]] - - -class GetTextureGenerationsByModelIDRequestBody(BaseModel): - r"""Query parameters can also be provided in the request body as a JSON object""" - - limit: OptionalNullable[int] = UNSET - - model_id: Annotated[OptionalNullable[str], pydantic.Field(alias="modelId")] = UNSET - - offset: OptionalNullable[int] = UNSET - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["limit", "modelId", "offset"]) - nullable_fields = set(["limit", "modelId", "offset"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class GetTextureGenerationsByModelIDRequestTypedDict(TypedDict): - model_id: str - r"""_\"modelId\" is required (enter it either in parameters or request body)_""" - request_body: NotRequired[GetTextureGenerationsByModelIDRequestBodyTypedDict] - r"""Query parameters can also be provided in the request body as a JSON object""" - limit: NotRequired[int] - offset: NotRequired[int] - - -class GetTextureGenerationsByModelIDRequest(BaseModel): - model_id: Annotated[ - str, - pydantic.Field(alias="modelId"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""_\"modelId\" is required (enter it either in parameters or request body)_""" - - request_body: Annotated[ - Optional[GetTextureGenerationsByModelIDRequestBody], - FieldMetadata(request=RequestMetadata(media_type="application/json")), - ] = None - r"""Query parameters can also be provided in the request body as a JSON object""" - - limit: Annotated[ - Optional[int], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 10 - - offset: Annotated[ - Optional[int], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 0 - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["RequestBody", "limit", "offset"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m - - -class GetTextureGenerationsByModelIDModelAssetTextureImagesTypedDict(TypedDict): - r"""columns and relationships of \"model_asset_texture_images\" """ - - id: NotRequired[Nullable[str]] - type: NotRequired[shared_model_asset_texture_types.ModelAssetTextureTypes] - r"""When training model assets these are the texture types available to use.""" - url: NotRequired[str] - - -class GetTextureGenerationsByModelIDModelAssetTextureImages(BaseModel): - r"""columns and relationships of \"model_asset_texture_images\" """ - - id: OptionalNullable[str] = UNSET - - type: Optional[shared_model_asset_texture_types.ModelAssetTextureTypes] = ( - shared_model_asset_texture_types.ModelAssetTextureTypes.NORMAL - ) - r"""When training model assets these are the texture types available to use.""" - - url: Optional[str] = None - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["id", "type", "url"]) - nullable_fields = set(["id"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class GetTextureGenerationsByModelIDModelAssetTextureGenerationsTypedDict(TypedDict): - r"""columns and relationships of \"model_asset_texture_generations\" """ - - created_at: NotRequired[str] - id: NotRequired[Nullable[str]] - model_asset_texture_images: NotRequired[ - List[GetTextureGenerationsByModelIDModelAssetTextureImagesTypedDict] - ] - negative_prompt: NotRequired[Nullable[str]] - prompt: NotRequired[str] - seed: NotRequired[Nullable[int]] - r"""Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models""" - status: NotRequired[shared_job_status.JobStatus] - r"""The status of the current task.""" - - -class GetTextureGenerationsByModelIDModelAssetTextureGenerations(BaseModel): - r"""columns and relationships of \"model_asset_texture_generations\" """ - - created_at: Annotated[Optional[str], pydantic.Field(alias="createdAt")] = None - - id: OptionalNullable[str] = UNSET - - model_asset_texture_images: Optional[ - List[GetTextureGenerationsByModelIDModelAssetTextureImages] - ] = None - - negative_prompt: Annotated[ - OptionalNullable[str], pydantic.Field(alias="negativePrompt") - ] = UNSET - - prompt: Optional[str] = None - - seed: OptionalNullable[int] = UNSET - r"""Apply a fixed seed to maintain consistency across generation sets. The maximum seed value is 2147483637 for Flux and 9999999998 for other models""" - - status: Optional[shared_job_status.JobStatus] = None - r"""The status of the current task.""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set( - [ - "createdAt", - "id", - "model_asset_texture_images", - "negativePrompt", - "prompt", - "seed", - "status", - ] - ) - nullable_fields = set(["id", "negativePrompt", "seed"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - is_nullable_and_explicitly_set = ( - k in nullable_fields - and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member - ) - - if val != UNSET_SENTINEL: - if ( - val is not None - or k not in optional_fields - or is_nullable_and_explicitly_set - ): - m[k] = val - - return m - - -class GetTextureGenerationsByModelIDResponseBodyTypedDict(TypedDict): - r"""Responses for GET /api/rest/v1/generations-texture/model/{modelId}""" - - model_asset_texture_generations: NotRequired[ - List[GetTextureGenerationsByModelIDModelAssetTextureGenerationsTypedDict] - ] - - -class GetTextureGenerationsByModelIDResponseBody(BaseModel): - r"""Responses for GET /api/rest/v1/generations-texture/model/{modelId}""" - - model_asset_texture_generations: Optional[ - List[GetTextureGenerationsByModelIDModelAssetTextureGenerations] - ] = None - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["model_asset_texture_generations"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m - - -class GetTextureGenerationsByModelIDResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetTextureGenerationsByModelIDResponseBodyTypedDict] - r"""Responses for GET /api/rest/v1/generations-texture/model/{modelId}""" - - -class GetTextureGenerationsByModelIDResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetTextureGenerationsByModelIDResponseBody] = None - r"""Responses for GET /api/rest/v1/generations-texture/model/{modelId}""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = set(["object"]) - serialized = handler(self) - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - - if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: - m[k] = val - - return m diff --git a/src/leonardo_ai_sdk/models/operations/getuploadedmediabyid.py b/src/leonardo_ai_sdk/models/operations/getuploadedmediabyid.py new file mode 100644 index 00000000..996841f5 --- /dev/null +++ b/src/leonardo_ai_sdk/models/operations/getuploadedmediabyid.py @@ -0,0 +1,213 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from leonardo_ai_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from leonardo_ai_sdk.utils import FieldMetadata, PathParamMetadata +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetUploadedMediaByIDRequestTypedDict(TypedDict): + id: str + r"""_\"id\" is required_""" + + +class GetUploadedMediaByIDRequest(BaseModel): + id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""_\"id\" is required_""" + + +class GetUploadedMediaByIDUploadedMediaTypedDict(TypedDict): + created_at: NotRequired[Nullable[str]] + duration: NotRequired[Nullable[float]] + height: NotRequired[Nullable[int]] + id: NotRequired[Nullable[str]] + media_type: NotRequired[Nullable[str]] + status: NotRequired[Nullable[str]] + status_reason: NotRequired[Nullable[str]] + thumbnail_url: NotRequired[Nullable[str]] + url: NotRequired[Nullable[str]] + video_fps: NotRequired[Nullable[float]] + width: NotRequired[Nullable[int]] + + +class GetUploadedMediaByIDUploadedMedia(BaseModel): + created_at: Annotated[OptionalNullable[str], pydantic.Field(alias="createdAt")] = ( + UNSET + ) + + duration: OptionalNullable[float] = UNSET + + height: OptionalNullable[int] = UNSET + + id: OptionalNullable[str] = UNSET + + media_type: Annotated[OptionalNullable[str], pydantic.Field(alias="mediaType")] = ( + UNSET + ) + + status: OptionalNullable[str] = UNSET + + status_reason: Annotated[ + OptionalNullable[str], pydantic.Field(alias="statusReason") + ] = UNSET + + thumbnail_url: Annotated[ + OptionalNullable[str], pydantic.Field(alias="thumbnailUrl") + ] = UNSET + + url: OptionalNullable[str] = UNSET + + video_fps: OptionalNullable[float] = UNSET + + width: OptionalNullable[int] = UNSET + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "createdAt", + "duration", + "height", + "id", + "mediaType", + "status", + "statusReason", + "thumbnailUrl", + "url", + "video_fps", + "width", + ] + ) + nullable_fields = set( + [ + "createdAt", + "duration", + "height", + "id", + "mediaType", + "status", + "statusReason", + "thumbnailUrl", + "url", + "video_fps", + "width", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m + + +class GetUploadedMediaByIDResponseBodyTypedDict(TypedDict): + r"""Responses for GET /media/{id}""" + + uploaded_media_by_pk: NotRequired[ + Nullable[GetUploadedMediaByIDUploadedMediaTypedDict] + ] + + +class GetUploadedMediaByIDResponseBody(BaseModel): + r"""Responses for GET /media/{id}""" + + uploaded_media_by_pk: OptionalNullable[GetUploadedMediaByIDUploadedMedia] = UNSET + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["uploaded_media_by_pk"]) + nullable_fields = set(["uploaded_media_by_pk"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m + + +class GetUploadedMediaByIDResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetUploadedMediaByIDResponseBodyTypedDict] + r"""Responses for GET /media/{id}""" + + +class GetUploadedMediaByIDResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetUploadedMediaByIDResponseBody] = None + r"""Responses for GET /media/{id}""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["object"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +try: + GetUploadedMediaByIDUploadedMedia.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/getuserself.py b/src/leonardo_ai_sdk/models/operations/getuserself.py index 22ca8728..1c6587f6 100644 --- a/src/leonardo_ai_sdk/models/operations/getuserself.py +++ b/src/leonardo_ai_sdk/models/operations/getuserself.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -163,7 +163,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -199,7 +199,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -240,10 +240,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + UserDetails.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/getvariationbyid.py b/src/leonardo_ai_sdk/models/operations/getvariationbyid.py index a9880c88..4422d828 100644 --- a/src/leonardo_ai_sdk/models/operations/getvariationbyid.py +++ b/src/leonardo_ai_sdk/models/operations/getvariationbyid.py @@ -71,7 +71,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -111,7 +111,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -152,10 +152,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + GeneratedImageVariationGeneric.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/listblueprints.py b/src/leonardo_ai_sdk/models/operations/listblueprints.py index 597ed248..cbf8ccd6 100644 --- a/src/leonardo_ai_sdk/models/operations/listblueprints.py +++ b/src/leonardo_ai_sdk/models/operations/listblueprints.py @@ -66,7 +66,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -97,7 +97,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -133,7 +133,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -199,10 +199,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + Blueprints.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/listelements.py b/src/leonardo_ai_sdk/models/operations/listelements.py index 75f0b999..51779c31 100644 --- a/src/leonardo_ai_sdk/models/operations/listelements.py +++ b/src/leonardo_ai_sdk/models/operations/listelements.py @@ -113,7 +113,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -149,7 +149,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -190,10 +190,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + Loras.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/listplatformmodels.py b/src/leonardo_ai_sdk/models/operations/listplatformmodels.py index 4e5893da..66fcda20 100644 --- a/src/leonardo_ai_sdk/models/operations/listplatformmodels.py +++ b/src/leonardo_ai_sdk/models/operations/listplatformmodels.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -93,7 +93,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -129,7 +129,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -170,7 +170,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/leonardo_ai_sdk/models/operations/performalchemyupscalelcm.py b/src/leonardo_ai_sdk/models/operations/performalchemyupscalelcm.py index efbf07fc..01e381da 100644 --- a/src/leonardo_ai_sdk/models/operations/performalchemyupscalelcm.py +++ b/src/leonardo_ai_sdk/models/operations/performalchemyupscalelcm.py @@ -125,7 +125,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -206,7 +206,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -248,7 +248,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -297,10 +297,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + PerformAlchemyUpscaleLCMRequestBody.model_rebuild() +except NameError: + pass +try: + PerformAlchemyUpscaleLCMLCMGenerationOutput.model_rebuild() +except NameError: + pass +try: + PerformAlchemyUpscaleLCMResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/performinpaintinglcm.py b/src/leonardo_ai_sdk/models/operations/performinpaintinglcm.py index 8dd67907..8712b1b6 100644 --- a/src/leonardo_ai_sdk/models/operations/performinpaintinglcm.py +++ b/src/leonardo_ai_sdk/models/operations/performinpaintinglcm.py @@ -104,7 +104,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -162,7 +162,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -204,7 +204,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -253,10 +253,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + PerformInpaintingLCMRequestBody.model_rebuild() +except NameError: + pass +try: + PerformInpaintingLCMLCMGenerationOutput.model_rebuild() +except NameError: + pass +try: + PerformInpaintingLCMResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/performinstantrefine.py b/src/leonardo_ai_sdk/models/operations/performinstantrefine.py index 36858f59..9b00a70f 100644 --- a/src/leonardo_ai_sdk/models/operations/performinstantrefine.py +++ b/src/leonardo_ai_sdk/models/operations/performinstantrefine.py @@ -99,7 +99,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -157,7 +157,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -199,7 +199,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -248,10 +248,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + PerformInstantRefineRequestBody.model_rebuild() +except NameError: + pass +try: + PerformInstantRefineLcmGenerationOutput.model_rebuild() +except NameError: + pass +try: + PerformInstantRefineResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/pricingcalculator.py b/src/leonardo_ai_sdk/models/operations/pricingcalculator.py index 6c777f26..8782d9de 100644 --- a/src/leonardo_ai_sdk/models/operations/pricingcalculator.py +++ b/src/leonardo_ai_sdk/models/operations/pricingcalculator.py @@ -50,7 +50,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -262,7 +262,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -318,7 +318,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -379,7 +379,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -433,7 +433,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -465,7 +465,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -499,7 +499,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -545,7 +545,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -585,7 +585,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -765,7 +765,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -806,7 +806,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -832,7 +832,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -866,7 +866,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -915,10 +915,44 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + PricingCalculatorPricingCalculatorObject.model_rebuild() +except NameError: + pass +try: + PricingCalculatorPricingCalculatorRequestObject.model_rebuild() +except NameError: + pass +try: + PricingCalculatorPricingCalculatorRequestRequestBodyObject.model_rebuild() +except NameError: + pass +try: + PricingCalculatorPricingCalculatorRequestRequestBodyServiceParamsObject.model_rebuild() +except NameError: + pass +try: + PricingCalculatorPricingCalculatorRequestRequestBodyServiceParamsUNIVERSALUPSCALERULTRAObject.model_rebuild() +except NameError: + pass +try: + PricingCalculatorObject.model_rebuild() +except NameError: + pass +try: + PricingCalculatorRequestBody.model_rebuild() +except NameError: + pass +try: + PricingCalculatorResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/promptimprove.py b/src/leonardo_ai_sdk/models/operations/promptimprove.py index 48535ee6..651f63b4 100644 --- a/src/leonardo_ai_sdk/models/operations/promptimprove.py +++ b/src/leonardo_ai_sdk/models/operations/promptimprove.py @@ -50,7 +50,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -101,7 +101,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -139,7 +139,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -180,10 +180,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + PromptImproveRequestBody.model_rebuild() +except NameError: + pass +try: + PromptGenerationOutput.model_rebuild() +except NameError: + pass +try: + PromptImproveResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/promptrandom.py b/src/leonardo_ai_sdk/models/operations/promptrandom.py index bf0d6ce0..72e71bf6 100644 --- a/src/leonardo_ai_sdk/models/operations/promptrandom.py +++ b/src/leonardo_ai_sdk/models/operations/promptrandom.py @@ -50,7 +50,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -89,7 +89,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -130,10 +130,20 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + PromptRandomPromptGenerationOutput.model_rebuild() +except NameError: + pass +try: + PromptRandomResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/uploadcanvasinitimage.py b/src/leonardo_ai_sdk/models/operations/uploadcanvasinitimage.py index 64d2906f..6855fc18 100644 --- a/src/leonardo_ai_sdk/models/operations/uploadcanvasinitimage.py +++ b/src/leonardo_ai_sdk/models/operations/uploadcanvasinitimage.py @@ -101,7 +101,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -143,7 +143,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -192,10 +192,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + UploadCanvasInitImageRequestBody.model_rebuild() +except NameError: + pass +try: + CanvasInitImageUploadOutput.model_rebuild() +except NameError: + pass +try: + UploadCanvasInitImageResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/uploaddatasetimage.py b/src/leonardo_ai_sdk/models/operations/uploaddatasetimage.py index 8bb4f3de..4c8ac21b 100644 --- a/src/leonardo_ai_sdk/models/operations/uploaddatasetimage.py +++ b/src/leonardo_ai_sdk/models/operations/uploaddatasetimage.py @@ -77,7 +77,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -117,7 +117,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -166,10 +166,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + UploadDatasetImageResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/uploaddatasetimagefromgen.py b/src/leonardo_ai_sdk/models/operations/uploaddatasetimagefromgen.py index 1521442c..f6727545 100644 --- a/src/leonardo_ai_sdk/models/operations/uploaddatasetimagefromgen.py +++ b/src/leonardo_ai_sdk/models/operations/uploaddatasetimagefromgen.py @@ -68,7 +68,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -110,7 +110,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -159,10 +159,20 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + UploadDatasetImageFromGenRequestBody.model_rebuild() +except NameError: + pass +try: + UploadDatasetImageFromGenResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/uploadinitimage.py b/src/leonardo_ai_sdk/models/operations/uploadinitimage.py index c2c1fe34..91c3fb1c 100644 --- a/src/leonardo_ai_sdk/models/operations/uploadinitimage.py +++ b/src/leonardo_ai_sdk/models/operations/uploadinitimage.py @@ -54,7 +54,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -93,7 +93,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -142,10 +142,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + UploadInitImageResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/uploadmedia.py b/src/leonardo_ai_sdk/models/operations/uploadmedia.py new file mode 100644 index 00000000..b52bc212 --- /dev/null +++ b/src/leonardo_ai_sdk/models/operations/uploadmedia.py @@ -0,0 +1,201 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from leonardo_ai_sdk.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UploadMediaRequestBodyTypedDict(TypedDict): + r"""Query parameters provided in the request body as a JSON object""" + + extension: str + r"""The file extension of the media file to upload. Supported extensions for video: `mp4`, `mov`. Supported for audio: `mp3`, `wav`.""" + original_filename: NotRequired[Nullable[str]] + r"""Original file name for display. Required for audio uploads (`mp3`, `wav`). Optional for video.""" + team_id: NotRequired[Nullable[str]] + r"""Optional team UUID. When set, the upload is associated with that team and the caller must be a member.""" + + +class UploadMediaRequestBody(BaseModel): + r"""Query parameters provided in the request body as a JSON object""" + + extension: str + r"""The file extension of the media file to upload. Supported extensions for video: `mp4`, `mov`. Supported for audio: `mp3`, `wav`.""" + + original_filename: Annotated[ + OptionalNullable[str], pydantic.Field(alias="originalFilename") + ] = UNSET + r"""Original file name for display. Required for audio uploads (`mp3`, `wav`). Optional for video.""" + + team_id: Annotated[OptionalNullable[str], pydantic.Field(alias="teamId")] = UNSET + r"""Optional team UUID. When set, the upload is associated with that team and the caller must be a member.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["originalFilename", "teamId"]) + nullable_fields = set(["originalFilename", "teamId"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m + + +class MediaUploadOutputTypedDict(TypedDict): + fields: NotRequired[Nullable[str]] + upload_id: NotRequired[Nullable[str]] + url: NotRequired[Nullable[str]] + + +class MediaUploadOutput(BaseModel): + fields: OptionalNullable[str] = UNSET + + upload_id: Annotated[OptionalNullable[str], pydantic.Field(alias="uploadId")] = ( + UNSET + ) + + url: OptionalNullable[str] = UNSET + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["fields", "uploadId", "url"]) + nullable_fields = set(["fields", "uploadId", "url"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m + + +class UploadMediaResponseBodyTypedDict(TypedDict): + r"""Responses for POST /media""" + + upload_media: NotRequired[Nullable[MediaUploadOutputTypedDict]] + + +class UploadMediaResponseBody(BaseModel): + r"""Responses for POST /media""" + + upload_media: Annotated[ + OptionalNullable[MediaUploadOutput], pydantic.Field(alias="uploadMedia") + ] = UNSET + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["uploadMedia"]) + nullable_fields = set(["uploadMedia"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) + + if val != UNSET_SENTINEL: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): + m[k] = val + + return m + + +class UploadMediaResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[UploadMediaResponseBodyTypedDict] + r"""Responses for POST /media""" + + +class UploadMediaResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[UploadMediaResponseBody] = None + r"""Responses for POST /media""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["object"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +try: + UploadMediaRequestBody.model_rebuild() +except NameError: + pass +try: + MediaUploadOutput.model_rebuild() +except NameError: + pass +try: + UploadMediaResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/operations/uploadmodelasset.py b/src/leonardo_ai_sdk/models/operations/uploadmodelasset.py index 5622258a..26139422 100644 --- a/src/leonardo_ai_sdk/models/operations/uploadmodelasset.py +++ b/src/leonardo_ai_sdk/models/operations/uploadmodelasset.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -88,7 +88,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -128,7 +128,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -177,10 +177,24 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + UploadModelAssetRequestBody.model_rebuild() +except NameError: + pass +try: + ModelAssetUploadOutput.model_rebuild() +except NameError: + pass +try: + UploadModelAssetResponseBody.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/shared/__init__.py b/src/leonardo_ai_sdk/models/shared/__init__.py index c1534528..f7d77c7e 100644 --- a/src/leonardo_ai_sdk/models/shared/__init__.py +++ b/src/leonardo_ai_sdk/models/shared/__init__.py @@ -1,9 +1,8 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from typing import TYPE_CHECKING -from importlib import import_module -import builtins -import sys +from typing import Any, TYPE_CHECKING + +from leonardo_ai_sdk.utils.dynamic_imports import lazy_getattr, lazy_dir if TYPE_CHECKING: from .apierror import ( @@ -68,7 +67,6 @@ from .element_input import ElementInput, ElementInputTypedDict from .job_status import JobStatus from .lcm_generation_style import LcmGenerationStyle - from .model_asset_texture_types import ModelAssetTextureTypes from .motion_resolution import MotionResolution from .motion_variation_type import MotionVariationType from .nodeinput import ( @@ -137,7 +135,6 @@ "LcmGenerationStyle", "Locations", "LocationsTypedDict", - "ModelAssetTextureTypes", "MotionResolution", "MotionVariationType", "Node", @@ -231,7 +228,6 @@ "ElementInputTypedDict": ".element_input", "JobStatus": ".job_status", "LcmGenerationStyle": ".lcm_generation_style", - "ModelAssetTextureTypes": ".model_asset_texture_types", "MotionResolution": ".motion_resolution", "MotionVariationType": ".motion_variation_type", "NodeInput": ".nodeinput", @@ -261,39 +257,11 @@ } -def dynamic_import(modname, retries=3): - for attempt in range(retries): - try: - return import_module(modname, __package__) - except KeyError: - # Clear any half-initialized module and retry - sys.modules.pop(modname, None) - if attempt == retries - 1: - break - raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") - - -def __getattr__(attr_name: str) -> object: - module_name = _dynamic_imports.get(attr_name) - if module_name is None: - raise AttributeError( - f"No {attr_name} found in _dynamic_imports for module name -> {__name__} " - ) - - try: - module = dynamic_import(module_name) - result = getattr(module, attr_name) - return result - except ImportError as e: - raise ImportError( - f"Failed to import {attr_name} from {module_name}: {e}" - ) from e - except AttributeError as e: - raise AttributeError( - f"Failed to get {attr_name} from {module_name}: {e}" - ) from e +def __getattr__(attr_name: str) -> Any: + return lazy_getattr( + attr_name, package=__package__, dynamic_imports=_dynamic_imports + ) def __dir__(): - lazy_attrs = builtins.list(_dynamic_imports.keys()) - return builtins.sorted(lazy_attrs) + return lazy_dir(dynamic_imports=_dynamic_imports) diff --git a/src/leonardo_ai_sdk/models/shared/apierror.py b/src/leonardo_ai_sdk/models/shared/apierror.py index a6c02676..bf8c4468 100644 --- a/src/leonardo_ai_sdk/models/shared/apierror.py +++ b/src/leonardo_ai_sdk/models/shared/apierror.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -78,7 +78,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/leonardo_ai_sdk/models/shared/blueprint.py b/src/leonardo_ai_sdk/models/shared/blueprint.py index 1baa1e31..de6cd509 100644 --- a/src/leonardo_ai_sdk/models/shared/blueprint.py +++ b/src/leonardo_ai_sdk/models/shared/blueprint.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -112,7 +112,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -127,3 +127,9 @@ def serialize_model(self, handler): m[k] = val return m + + +try: + Blueprint.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/shared/blueprintexecution.py b/src/leonardo_ai_sdk/models/shared/blueprintexecution.py index 4c3b7705..cef769d3 100644 --- a/src/leonardo_ai_sdk/models/shared/blueprintexecution.py +++ b/src/leonardo_ai_sdk/models/shared/blueprintexecution.py @@ -35,3 +35,9 @@ class BlueprintExecution(BaseModel): status: BlueprintExecutionStatus r"""The status of a Blueprint Execution.""" + + +try: + BlueprintExecution.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/shared/blueprintexecutiongeneration.py b/src/leonardo_ai_sdk/models/shared/blueprintexecutiongeneration.py index d7476b56..3bbdf8e3 100644 --- a/src/leonardo_ai_sdk/models/shared/blueprintexecutiongeneration.py +++ b/src/leonardo_ai_sdk/models/shared/blueprintexecutiongeneration.py @@ -56,7 +56,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -71,3 +71,9 @@ def serialize_model(self, handler): m[k] = val return m + + +try: + BlueprintExecutionGeneration.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/shared/blueprintexecutiongenerationsconnection.py b/src/leonardo_ai_sdk/models/shared/blueprintexecutiongenerationsconnection.py index 78a44fd3..6eb75e9e 100644 --- a/src/leonardo_ai_sdk/models/shared/blueprintexecutiongenerationsconnection.py +++ b/src/leonardo_ai_sdk/models/shared/blueprintexecutiongenerationsconnection.py @@ -29,3 +29,9 @@ class BlueprintExecutionGenerationsConnection(BaseModel): page_info: Annotated[PageInfo, pydantic.Field(alias="pageInfo")] r"""Pagination information following the Relay cursor pagination spec""" + + +try: + BlueprintExecutionGenerationsConnection.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/shared/blueprintversion.py b/src/leonardo_ai_sdk/models/shared/blueprintversion.py index 930ea695..e0331afa 100644 --- a/src/leonardo_ai_sdk/models/shared/blueprintversion.py +++ b/src/leonardo_ai_sdk/models/shared/blueprintversion.py @@ -24,7 +24,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -53,7 +53,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -96,7 +96,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -156,7 +156,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -183,7 +183,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -220,7 +220,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -256,10 +256,28 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + Executability.model_rebuild() +except NameError: + pass +try: + Node.model_rebuild() +except NameError: + pass +try: + BlueprintVersionPageInfo.model_rebuild() +except NameError: + pass +try: + BlueprintVersion.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/shared/controlnet_input.py b/src/leonardo_ai_sdk/models/shared/controlnet_input.py index 7c40f48d..7d5bc8db 100644 --- a/src/leonardo_ai_sdk/models/shared/controlnet_input.py +++ b/src/leonardo_ai_sdk/models/shared/controlnet_input.py @@ -78,7 +78,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -93,3 +93,9 @@ def serialize_model(self, handler): m[k] = val return m + + +try: + ControlnetInput.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/shared/cost.py b/src/leonardo_ai_sdk/models/shared/cost.py index a148c3be..4b2fa42a 100644 --- a/src/leonardo_ai_sdk/models/shared/cost.py +++ b/src/leonardo_ai_sdk/models/shared/cost.py @@ -41,7 +41,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/leonardo_ai_sdk/models/shared/element_input.py b/src/leonardo_ai_sdk/models/shared/element_input.py index 5a98da34..c2424097 100644 --- a/src/leonardo_ai_sdk/models/shared/element_input.py +++ b/src/leonardo_ai_sdk/models/shared/element_input.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -45,3 +45,9 @@ def serialize_model(self, handler): m[k] = val return m + + +try: + ElementInput.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/shared/model_asset_texture_types.py b/src/leonardo_ai_sdk/models/shared/model_asset_texture_types.py deleted file mode 100644 index f667ffaa..00000000 --- a/src/leonardo_ai_sdk/models/shared/model_asset_texture_types.py +++ /dev/null @@ -1,14 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum - - -class ModelAssetTextureTypes(str, Enum): - r"""When training model assets these are the texture types available to use.""" - - ALBEDO = "ALBEDO" - NORMAL = "NORMAL" - ROUGHNESS = "ROUGHNESS" - DISPLACEMENT = "DISPLACEMENT" - HDRP_MASK = "HDRP_MASK" diff --git a/src/leonardo_ai_sdk/models/shared/nodeinput.py b/src/leonardo_ai_sdk/models/shared/nodeinput.py index 48296ecb..eeff024f 100644 --- a/src/leonardo_ai_sdk/models/shared/nodeinput.py +++ b/src/leonardo_ai_sdk/models/shared/nodeinput.py @@ -77,3 +77,9 @@ class NodeInput(BaseModel): - `imageUrl`: string (the image URL) - `textVariables`: array of TextVariable objects """ + + +try: + NodeInput.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/shared/pageinfo.py b/src/leonardo_ai_sdk/models/shared/pageinfo.py index 6cddc5b6..02bdb20b 100644 --- a/src/leonardo_ai_sdk/models/shared/pageinfo.py +++ b/src/leonardo_ai_sdk/models/shared/pageinfo.py @@ -48,10 +48,16 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: m[k] = val return m + + +try: + PageInfo.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/shared/promptmoderationfailurereason.py b/src/leonardo_ai_sdk/models/shared/promptmoderationfailurereason.py index aceb6e65..6953f401 100644 --- a/src/leonardo_ai_sdk/models/shared/promptmoderationfailurereason.py +++ b/src/leonardo_ai_sdk/models/shared/promptmoderationfailurereason.py @@ -35,3 +35,9 @@ class PromptModerationFailureReason(BaseModel): type: Type r"""The type of failure - PROMPT_MODERATION_BLOCKED indicates the prompt was blocked by content moderation""" + + +try: + PromptModerationFailureReason.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models/shared/user_elements_input.py b/src/leonardo_ai_sdk/models/shared/user_elements_input.py index 5175f571..48a79b0a 100644 --- a/src/leonardo_ai_sdk/models/shared/user_elements_input.py +++ b/src/leonardo_ai_sdk/models/shared/user_elements_input.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) is_nullable_and_explicitly_set = ( k in nullable_fields and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member @@ -53,3 +53,9 @@ def serialize_model(self, handler): m[k] = val return m + + +try: + UserElementsInput.model_rebuild() +except NameError: + pass diff --git a/src/leonardo_ai_sdk/models_.py b/src/leonardo_ai_sdk/models_.py index ee9fd2d6..1d287c4e 100644 --- a/src/leonardo_ai_sdk/models_.py +++ b/src/leonardo_ai_sdk/models_.py @@ -83,7 +83,7 @@ def create_model( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -178,7 +178,7 @@ async def create_model_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -267,7 +267,7 @@ def delete_model_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -356,7 +356,7 @@ async def delete_model_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -445,7 +445,7 @@ def get_custom_models_by_user_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -534,7 +534,7 @@ async def get_custom_models_by_user_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -623,7 +623,7 @@ def get_model_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -712,7 +712,7 @@ async def get_model_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -794,7 +794,7 @@ def list_platform_models( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -876,7 +876,7 @@ async def list_platform_models_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/leonardo_ai_sdk/motion.py b/src/leonardo_ai_sdk/motion.py index 4bf04d88..320306c6 100644 --- a/src/leonardo_ai_sdk/motion.py +++ b/src/leonardo_ai_sdk/motion.py @@ -93,7 +93,7 @@ def create_image_to_video_generation( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -199,7 +199,7 @@ async def create_image_to_video_generation_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -222,216 +222,6 @@ async def create_image_to_video_generation_async( raise errors.SDKError("Unexpected response received", http_res) - def create_svd_motion_generation( - self, - *, - request: Optional[ - Union[ - operations.CreateSVDMotionGenerationRequestBody, - operations.CreateSVDMotionGenerationRequestBodyTypedDict, - ] - ] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CreateSVDMotionGenerationResponse: - r"""Create SVD Motion Generation - - This endpoint will generate a SVD motion generation. - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, Optional[operations.CreateSVDMotionGenerationRequestBody] - ) - request = cast( - Optional[operations.CreateSVDMotionGenerationRequestBody], request - ) - - req = self._build_request( - method="POST", - path="/generations-motion-svd", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, - False, - True, - "json", - Optional[operations.CreateSVDMotionGenerationRequestBody], - ), - allow_empty_value=None, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="createSVDMotionGeneration", - oauth2_scopes=None, - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return operations.CreateSVDMotionGenerationResponse( - object=unmarshal_json_response( - Optional[operations.CreateSVDMotionGenerationResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def create_svd_motion_generation_async( - self, - *, - request: Optional[ - Union[ - operations.CreateSVDMotionGenerationRequestBody, - operations.CreateSVDMotionGenerationRequestBodyTypedDict, - ] - ] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CreateSVDMotionGenerationResponse: - r"""Create SVD Motion Generation - - This endpoint will generate a SVD motion generation. - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, Optional[operations.CreateSVDMotionGenerationRequestBody] - ) - request = cast( - Optional[operations.CreateSVDMotionGenerationRequestBody], request - ) - - req = self._build_request_async( - method="POST", - path="/generations-motion-svd", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, - False, - True, - "json", - Optional[operations.CreateSVDMotionGenerationRequestBody], - ), - allow_empty_value=None, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="createSVDMotionGeneration", - oauth2_scopes=None, - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return operations.CreateSVDMotionGenerationResponse( - object=unmarshal_json_response( - Optional[operations.CreateSVDMotionGenerationResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - def create_text_to_video_generation( self, *, @@ -515,7 +305,7 @@ def create_text_to_video_generation( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -621,7 +411,7 @@ async def create_text_to_video_generation_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -643,209 +433,3 @@ async def create_text_to_video_generation_async( raise errors.SDKError("API error occurred", http_res, http_res_text) raise errors.SDKError("Unexpected response received", http_res) - - def create_video_upscale( - self, - *, - request: Optional[ - Union[ - operations.CreateVideoUpscaleRequestBody, - operations.CreateVideoUpscaleRequestBodyTypedDict, - ] - ] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CreateVideoUpscaleResponse: - r"""Upscale a generated video - - This endpoint will upscale a generated video to a higher resolution. - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, Optional[operations.CreateVideoUpscaleRequestBody] - ) - request = cast(Optional[operations.CreateVideoUpscaleRequestBody], request) - - req = self._build_request( - method="POST", - path="/generations-video-upscale", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, - False, - True, - "json", - Optional[operations.CreateVideoUpscaleRequestBody], - ), - allow_empty_value=None, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="createVideoUpscale", - oauth2_scopes=None, - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return operations.CreateVideoUpscaleResponse( - object=unmarshal_json_response( - Optional[operations.CreateVideoUpscaleResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def create_video_upscale_async( - self, - *, - request: Optional[ - Union[ - operations.CreateVideoUpscaleRequestBody, - operations.CreateVideoUpscaleRequestBodyTypedDict, - ] - ] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CreateVideoUpscaleResponse: - r"""Upscale a generated video - - This endpoint will upscale a generated video to a higher resolution. - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, Optional[operations.CreateVideoUpscaleRequestBody] - ) - request = cast(Optional[operations.CreateVideoUpscaleRequestBody], request) - - req = self._build_request_async( - method="POST", - path="/generations-video-upscale", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, - False, - True, - "json", - Optional[operations.CreateVideoUpscaleRequestBody], - ), - allow_empty_value=None, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="createVideoUpscale", - oauth2_scopes=None, - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return operations.CreateVideoUpscaleResponse( - object=unmarshal_json_response( - Optional[operations.CreateVideoUpscaleResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/leonardo_ai_sdk/pricing_calculator.py b/src/leonardo_ai_sdk/pricing_calculator.py index 64fa6e05..332f3185 100644 --- a/src/leonardo_ai_sdk/pricing_calculator.py +++ b/src/leonardo_ai_sdk/pricing_calculator.py @@ -91,7 +91,7 @@ def pricing_calculator( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -194,7 +194,7 @@ async def pricing_calculator_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/leonardo_ai_sdk/prompt.py b/src/leonardo_ai_sdk/prompt.py index de2fabc4..02e43840 100644 --- a/src/leonardo_ai_sdk/prompt.py +++ b/src/leonardo_ai_sdk/prompt.py @@ -83,7 +83,7 @@ def prompt_improve( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -178,7 +178,7 @@ async def prompt_improve_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -260,7 +260,7 @@ def prompt_random( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -342,7 +342,7 @@ async def prompt_random_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/leonardo_ai_sdk/realtime_canvas.py b/src/leonardo_ai_sdk/realtime_canvas.py index c079049c..3cde9267 100644 --- a/src/leonardo_ai_sdk/realtime_canvas.py +++ b/src/leonardo_ai_sdk/realtime_canvas.py @@ -91,7 +91,7 @@ def create_lcm_generation( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -194,7 +194,7 @@ async def create_lcm_generation_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -299,7 +299,7 @@ def perform_alchemy_upscale_lcm( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -404,7 +404,7 @@ async def perform_alchemy_upscale_lcm_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -507,7 +507,7 @@ def perform_inpainting_lcm( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -610,7 +610,7 @@ async def perform_inpainting_lcm_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -713,7 +713,7 @@ def perform_instant_refine( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -816,7 +816,7 @@ async def perform_instant_refine_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/leonardo_ai_sdk/sdk.py b/src/leonardo_ai_sdk/sdk.py index 347f981a..fe48bf09 100644 --- a/src/leonardo_ai_sdk/sdk.py +++ b/src/leonardo_ai_sdk/sdk.py @@ -21,12 +21,12 @@ from leonardo_ai_sdk.elements import Elements from leonardo_ai_sdk.image import Image from leonardo_ai_sdk.init_images import InitImages + from leonardo_ai_sdk.media import Media from leonardo_ai_sdk.models_ import Models from leonardo_ai_sdk.motion import Motion from leonardo_ai_sdk.pricing_calculator import PricingCalculator from leonardo_ai_sdk.prompt import Prompt from leonardo_ai_sdk.realtime_canvas import RealtimeCanvas - from leonardo_ai_sdk.texture import Texture from leonardo_ai_sdk.threed_model_assets import ThreeDModelAssets from leonardo_ai_sdk.user import User from leonardo_ai_sdk.variation import Variation @@ -42,8 +42,8 @@ class LeonardoAiSDK(BaseSDK): image: "Image" motion: "Motion" realtime_canvas: "RealtimeCanvas" - texture: "Texture" user: "User" + media: "Media" models: "Models" three_d_model_assets: "ThreeDModelAssets" variation: "Variation" @@ -57,8 +57,8 @@ class LeonardoAiSDK(BaseSDK): "image": ("leonardo_ai_sdk.image", "Image"), "motion": ("leonardo_ai_sdk.motion", "Motion"), "realtime_canvas": ("leonardo_ai_sdk.realtime_canvas", "RealtimeCanvas"), - "texture": ("leonardo_ai_sdk.texture", "Texture"), "user": ("leonardo_ai_sdk.user", "User"), + "media": ("leonardo_ai_sdk.media", "Media"), "models": ("leonardo_ai_sdk.models_", "Models"), "three_d_model_assets": ( "leonardo_ai_sdk.threed_model_assets", @@ -76,8 +76,8 @@ def __init__( self, bearer_auth: Union[str, Callable[[], str]], server_idx: Optional[int] = None, - server_url: Optional[str] = None, url_params: Optional[Dict[str, str]] = None, + server_url: Optional[str] = None, client: Optional[HttpClient] = None, async_client: Optional[AsyncHttpClient] = None, retry_config: OptionalNullable[RetryConfig] = UNSET, @@ -117,7 +117,9 @@ def __init__( ), "The provided async_client must implement the AsyncHttpClient protocol." security: Any = None - if callable(bearer_auth): + if bearer_auth is None: + security = None + elif callable(bearer_auth): # pylint: disable=unnecessary-lambda-assignment security = lambda: shared.Security(bearer_auth=bearer_auth()) else: diff --git a/src/leonardo_ai_sdk/threed_model_assets.py b/src/leonardo_ai_sdk/threed_model_assets.py index 0a6b6160..d7941328 100644 --- a/src/leonardo_ai_sdk/threed_model_assets.py +++ b/src/leonardo_ai_sdk/threed_model_assets.py @@ -67,7 +67,7 @@ def delete3_d_model_by_id( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, + request.request_body if request is not None else None, False, True, "json", @@ -94,7 +94,7 @@ def delete3_d_model_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -173,7 +173,7 @@ async def delete3_d_model_by_id_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, + request.request_body if request is not None else None, False, True, "json", @@ -200,7 +200,7 @@ async def delete3_d_model_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -285,7 +285,7 @@ def get3_d_model_by_id( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, + request.request_body if request is not None else None, False, True, "json", @@ -312,7 +312,7 @@ def get3_d_model_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -397,7 +397,7 @@ async def get3_d_model_by_id_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, + request.request_body if request is not None else None, False, True, "json", @@ -424,7 +424,7 @@ async def get3_d_model_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -509,7 +509,7 @@ def get3_d_models_by_user_id( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, + request.request_body if request is not None else None, False, True, "json", @@ -536,7 +536,7 @@ def get3_d_models_by_user_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -621,7 +621,7 @@ async def get3_d_models_by_user_id_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, + request.request_body if request is not None else None, False, True, "json", @@ -648,7 +648,7 @@ async def get3_d_models_by_user_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -751,7 +751,7 @@ def upload_model_asset( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -854,7 +854,7 @@ async def upload_model_asset_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/leonardo_ai_sdk/types/__init__.py b/src/leonardo_ai_sdk/types/__init__.py index fc76fe0c..faa26813 100644 --- a/src/leonardo_ai_sdk/types/__init__.py +++ b/src/leonardo_ai_sdk/types/__init__.py @@ -1,5 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" +from .base64fileinput import Base64EncodedString, Base64FileInput from .basemodel import ( BaseModel, Nullable, @@ -11,6 +12,8 @@ ) __all__ = [ + "Base64EncodedString", + "Base64FileInput", "BaseModel", "Nullable", "OptionalNullable", diff --git a/src/leonardo_ai_sdk/types/base64fileinput.py b/src/leonardo_ai_sdk/types/base64fileinput.py new file mode 100644 index 00000000..25fc5398 --- /dev/null +++ b/src/leonardo_ai_sdk/types/base64fileinput.py @@ -0,0 +1,39 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations + +import base64 +import io +from os import PathLike +from typing import IO, Any, Union + +from pydantic.functional_validators import BeforeValidator +from typing_extensions import Annotated + + +Base64FileInput = Union[IO[bytes], PathLike[str]] + + +def encode_base64_file_input(value: Any) -> Any: + """Convert PathLike or IO[bytes] inputs to a base64 string. All standard binary streams + that inherit from io.IOBase are handled. Other values pass through. + """ + if isinstance(value, (PathLike, io.IOBase)): + if isinstance(value, PathLike): + with open(value, "rb") as fh: + binary = fh.read() + else: + binary = value.read() + if isinstance(binary, str): + binary = binary.encode() + if not isinstance(binary, (bytes, bytearray)): + raise TypeError( + f"Base64FileInput expected binary IO returning bytes; got {type(binary).__name__}" + ) + return base64.b64encode(binary).decode("ascii") + return value + + +# Non-str inputs are converted to base64 by the BeforeValidator at construction time. +# Callers can also pass a pre-encoded base64 str. +Base64EncodedString = Annotated[str, BeforeValidator(encode_base64_file_input)] diff --git a/src/leonardo_ai_sdk/user.py b/src/leonardo_ai_sdk/user.py index 76d41b38..2ff0f737 100644 --- a/src/leonardo_ai_sdk/user.py +++ b/src/leonardo_ai_sdk/user.py @@ -70,7 +70,7 @@ def get_user_self( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -152,7 +152,7 @@ async def get_user_self_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/leonardo_ai_sdk/utils/__init__.py b/src/leonardo_ai_sdk/utils/__init__.py index 15394a08..0498cb8d 100644 --- a/src/leonardo_ai_sdk/utils/__init__.py +++ b/src/leonardo_ai_sdk/utils/__init__.py @@ -1,10 +1,9 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from typing import TYPE_CHECKING, Callable, TypeVar -from importlib import import_module +from typing import Any, TYPE_CHECKING, Callable, TypeVar import asyncio -import builtins -import sys + +from .dynamic_imports import lazy_getattr, lazy_dir _T = TypeVar("_T") @@ -166,38 +165,11 @@ async def run_sync_in_thread(func: Callable[..., _T], *args) -> _T: } -def dynamic_import(modname, retries=3): - for attempt in range(retries): - try: - return import_module(modname, __package__) - except KeyError: - # Clear any half-initialized module and retry - sys.modules.pop(modname, None) - if attempt == retries - 1: - break - raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") - - -def __getattr__(attr_name: str) -> object: - module_name = _dynamic_imports.get(attr_name) - if module_name is None: - raise AttributeError( - f"no {attr_name} found in _dynamic_imports, module name -> {__name__} " - ) - - try: - module = dynamic_import(module_name) - return getattr(module, attr_name) - except ImportError as e: - raise ImportError( - f"Failed to import {attr_name} from {module_name}: {e}" - ) from e - except AttributeError as e: - raise AttributeError( - f"Failed to get {attr_name} from {module_name}: {e}" - ) from e +def __getattr__(attr_name: str) -> Any: + return lazy_getattr( + attr_name, package=__package__, dynamic_imports=_dynamic_imports + ) def __dir__(): - lazy_attrs = builtins.list(_dynamic_imports.keys()) - return builtins.sorted(lazy_attrs) + return lazy_dir(dynamic_imports=_dynamic_imports) diff --git a/src/leonardo_ai_sdk/utils/dynamic_imports.py b/src/leonardo_ai_sdk/utils/dynamic_imports.py new file mode 100644 index 00000000..673edf82 --- /dev/null +++ b/src/leonardo_ai_sdk/utils/dynamic_imports.py @@ -0,0 +1,54 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from importlib import import_module +import builtins +import sys + + +def dynamic_import(package, modname, retries=3): + """Import a module relative to package, retrying on KeyError from half-initialized modules.""" + for attempt in range(retries): + try: + return import_module(modname, package) + except KeyError: + sys.modules.pop(modname, None) + if attempt == retries - 1: + break + raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") + + +def lazy_getattr(attr_name, *, package, dynamic_imports, sub_packages=None): + """Module-level __getattr__ that lazily loads from a dynamic_imports mapping. + + Args: + attr_name: The attribute being looked up. + package: The caller's __package__ (for relative imports). + dynamic_imports: Dict mapping attribute names to relative module paths. + sub_packages: Optional list of subpackage names to lazy-load. + """ + module_name = dynamic_imports.get(attr_name) + if module_name is not None: + try: + module = dynamic_import(package, module_name) + return getattr(module, attr_name) + except ImportError as e: + raise ImportError( + f"Failed to import {attr_name} from {module_name}: {e}" + ) from e + except AttributeError as e: + raise AttributeError( + f"Failed to get {attr_name} from {module_name}: {e}" + ) from e + + if sub_packages and attr_name in sub_packages: + return import_module(f".{attr_name}", package) + + raise AttributeError(f"module '{package}' has no attribute '{attr_name}'") + + +def lazy_dir(*, dynamic_imports, sub_packages=None): + """Module-level __dir__ that lists lazily-loadable attributes.""" + lazy_attrs = builtins.list(dynamic_imports.keys()) + if sub_packages: + lazy_attrs.extend(sub_packages) + return builtins.sorted(lazy_attrs) diff --git a/src/leonardo_ai_sdk/utils/eventstreaming.py b/src/leonardo_ai_sdk/utils/eventstreaming.py index 0969899b..1c189bf6 100644 --- a/src/leonardo_ai_sdk/utils/eventstreaming.py +++ b/src/leonardo_ai_sdk/utils/eventstreaming.py @@ -2,7 +2,9 @@ import re import json +from dataclasses import dataclass, asdict from typing import ( + Any, Callable, Generic, TypeVar, @@ -22,6 +24,7 @@ class EventStream(Generic[T]): client_ref: Optional[object] response: httpx.Response generator: Generator[T, None, None] + _closed: bool def __init__( self, @@ -29,21 +32,31 @@ def __init__( decoder: Callable[[str], T], sentinel: Optional[str] = None, client_ref: Optional[object] = None, + data_required: bool = True, ): self.response = response - self.generator = stream_events(response, decoder, sentinel) + self.generator = stream_events( + response, decoder, sentinel, data_required=data_required + ) self.client_ref = client_ref + self._closed = False def __iter__(self): return self def __next__(self): + if self._closed: + raise StopIteration return next(self.generator) def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): + self.close() + + def close(self): + self._closed = True self.response.close() @@ -53,6 +66,7 @@ class EventStreamAsync(Generic[T]): client_ref: Optional[object] response: httpx.Response generator: AsyncGenerator[T, None] + _closed: bool def __init__( self, @@ -60,125 +74,176 @@ def __init__( decoder: Callable[[str], T], sentinel: Optional[str] = None, client_ref: Optional[object] = None, + data_required: bool = True, ): self.response = response - self.generator = stream_events_async(response, decoder, sentinel) + self.generator = stream_events_async( + response, decoder, sentinel, data_required=data_required + ) self.client_ref = client_ref + self._closed = False def __aiter__(self): return self async def __anext__(self): + if self._closed: + raise StopAsyncIteration return await self.generator.__anext__() async def __aenter__(self): return self async def __aexit__(self, exc_type, exc_val, exc_tb): + await self.close() + + async def close(self): + self._closed = True await self.response.aclose() +@dataclass class ServerEvent: id: Optional[str] = None event: Optional[str] = None - data: Optional[str] = None + data: Any = None retry: Optional[int] = None MESSAGE_BOUNDARIES = [ b"\r\n\r\n", - b"\n\n", + b"\r\n\r", + b"\r\n\n", + b"\r\r\n", + b"\n\r\n", b"\r\r", + b"\n\r", + b"\n\n", ] +UTF8_BOM = b"\xef\xbb\xbf" + async def stream_events_async( response: httpx.Response, decoder: Callable[[str], T], sentinel: Optional[str] = None, + data_required: bool = True, ) -> AsyncGenerator[T, None]: - buffer = bytearray() - position = 0 - discard = False - async for chunk in response.aiter_bytes(): - # We've encountered the sentinel value and should no longer process - # incoming data. Instead we throw new data away until the server closes - # the connection. - if discard: - continue - - buffer += chunk - for i in range(position, len(buffer)): - char = buffer[i : i + 1] - seq: Optional[bytes] = None - if char in [b"\r", b"\n"]: - for boundary in MESSAGE_BOUNDARIES: - seq = _peek_sequence(i, buffer, boundary) - if seq is not None: - break - if seq is None: - continue - - block = buffer[position:i] - position = i + len(seq) - event, discard = _parse_event(block, decoder, sentinel) - if event is not None: - yield event - - if position > 0: - buffer = buffer[position:] - position = 0 - - event, discard = _parse_event(buffer, decoder, sentinel) - if event is not None: - yield event + try: + buffer = bytearray() + position = 0 + event_id: Optional[str] = None + async for chunk in response.aiter_bytes(): + if len(buffer) == 0 and chunk.startswith(UTF8_BOM): + chunk = chunk[len(UTF8_BOM) :] + buffer += chunk + for i in range(position, len(buffer)): + char = buffer[i : i + 1] + seq: Optional[bytes] = None + if char in [b"\r", b"\n"]: + for boundary in MESSAGE_BOUNDARIES: + seq = _peek_sequence(i, buffer, boundary) + if seq is not None: + break + if seq is None: + continue + + block = buffer[position:i] + position = i + len(seq) + event, discard, event_id = _parse_event( + raw=block, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) + if event is not None: + yield event + if discard: + return + + if position > 0: + buffer = buffer[position:] + position = 0 + + event, discard, _ = _parse_event( + raw=buffer, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) + if event is not None: + yield event + finally: + await response.aclose() def stream_events( response: httpx.Response, decoder: Callable[[str], T], sentinel: Optional[str] = None, + data_required: bool = True, ) -> Generator[T, None, None]: - buffer = bytearray() - position = 0 - discard = False - for chunk in response.iter_bytes(): - # We've encountered the sentinel value and should no longer process - # incoming data. Instead we throw new data away until the server closes - # the connection. - if discard: - continue - - buffer += chunk - for i in range(position, len(buffer)): - char = buffer[i : i + 1] - seq: Optional[bytes] = None - if char in [b"\r", b"\n"]: - for boundary in MESSAGE_BOUNDARIES: - seq = _peek_sequence(i, buffer, boundary) - if seq is not None: - break - if seq is None: - continue - - block = buffer[position:i] - position = i + len(seq) - event, discard = _parse_event(block, decoder, sentinel) - if event is not None: - yield event - - if position > 0: - buffer = buffer[position:] - position = 0 - - event, discard = _parse_event(buffer, decoder, sentinel) - if event is not None: - yield event + try: + buffer = bytearray() + position = 0 + event_id: Optional[str] = None + for chunk in response.iter_bytes(): + if len(buffer) == 0 and chunk.startswith(UTF8_BOM): + chunk = chunk[len(UTF8_BOM) :] + buffer += chunk + for i in range(position, len(buffer)): + char = buffer[i : i + 1] + seq: Optional[bytes] = None + if char in [b"\r", b"\n"]: + for boundary in MESSAGE_BOUNDARIES: + seq = _peek_sequence(i, buffer, boundary) + if seq is not None: + break + if seq is None: + continue + + block = buffer[position:i] + position = i + len(seq) + event, discard, event_id = _parse_event( + raw=block, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) + if event is not None: + yield event + if discard: + return + + if position > 0: + buffer = buffer[position:] + position = 0 + + event, discard, _ = _parse_event( + raw=buffer, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) + if event is not None: + yield event + finally: + response.close() def _parse_event( - raw: bytearray, decoder: Callable[[str], T], sentinel: Optional[str] = None -) -> Tuple[Optional[T], bool]: + *, + raw: bytearray, + decoder: Callable[[str], T], + sentinel: Optional[str] = None, + event_id: Optional[str] = None, + data_required: bool = True, +) -> Tuple[Optional[T], bool, Optional[str]]: block = raw.decode() lines = re.split(r"\r?\n|\r", block) publish = False @@ -189,13 +254,16 @@ def _parse_event( continue delim = line.find(":") - if delim <= 0: + if delim == 0: continue - field = line[0:delim] - value = line[delim + 1 :] if delim < len(line) - 1 else "" - if len(value) and value[0] == " ": - value = value[1:] + field = line + value = "" + if delim > 0: + field = line[0:delim] + value = line[delim + 1 :] if delim < len(line) - 1 else "" + if len(value) and value[0] == " ": + value = value[1:] if field == "event": event.event = value @@ -204,37 +272,40 @@ def _parse_event( data += value + "\n" publish = True elif field == "id": - event.id = value publish = True + if "\x00" not in value: + event_id = value elif field == "retry": - event.retry = int(value) if value.isdigit() else None + if value.isdigit(): + event.retry = int(value) publish = True + event.id = event_id + if sentinel and data == f"{sentinel}\n": - return None, True + return None, True, event_id + + # Skip data-less events when data is required + if not data and publish and data_required: + return None, False, event_id if data: data = data[:-1] - event.data = data - - data_is_primitive = ( - data.isnumeric() or data == "true" or data == "false" or data == "null" - ) - data_is_json = ( - data.startswith("{") or data.startswith("[") or data.startswith('"') - ) - - if data_is_primitive or data_is_json: - try: - event.data = json.loads(data) - except Exception: - pass + try: + event.data = json.loads(data) + except json.JSONDecodeError: + event.data = data out = None if publish: - out = decoder(json.dumps(event.__dict__)) - - return out, False + out_dict = { + k: v + for k, v in asdict(event).items() + if v is not None or (k == "data" and data) + } + out = decoder(json.dumps(out_dict)) + + return out, False, event_id def _peek_sequence(position: int, buffer: bytearray, sequence: bytes): diff --git a/src/leonardo_ai_sdk/utils/metadata.py b/src/leonardo_ai_sdk/utils/metadata.py index 173b3e5c..5abddd58 100644 --- a/src/leonardo_ai_sdk/utils/metadata.py +++ b/src/leonardo_ai_sdk/utils/metadata.py @@ -15,6 +15,7 @@ class SecurityMetadata: scheme_type: Optional[str] = None sub_type: Optional[str] = None field_name: Optional[str] = None + composite: bool = False def get_field_name(self, default: str) -> str: return self.field_name or default diff --git a/src/leonardo_ai_sdk/utils/requestbodies.py b/src/leonardo_ai_sdk/utils/requestbodies.py index 1de32b6d..591415af 100644 --- a/src/leonardo_ai_sdk/utils/requestbodies.py +++ b/src/leonardo_ai_sdk/utils/requestbodies.py @@ -46,6 +46,7 @@ def serialize_request_body( if re.match(r"^(application|text)\/([^+]+\+)*json.*", media_type) is not None: serialized_request_body.content = marshal_json(request_body, request_body_type) + elif re.match(r"^multipart\/.*", media_type) is not None: ( serialized_request_body.media_type, diff --git a/src/leonardo_ai_sdk/utils/retries.py b/src/leonardo_ai_sdk/utils/retries.py index 88a91b10..af07d4e9 100644 --- a/src/leonardo_ai_sdk/utils/retries.py +++ b/src/leonardo_ai_sdk/utils/retries.py @@ -144,12 +144,7 @@ def do_request() -> httpx.Response: if res.status_code == parsed_code: raise TemporaryError(res) - except httpx.ConnectError as exception: - if retries.config.retry_connection_errors: - raise - - raise PermanentError(exception) from exception - except httpx.TimeoutException as exception: + except (httpx.NetworkError, httpx.TimeoutException) as exception: if retries.config.retry_connection_errors: raise @@ -193,12 +188,7 @@ async def do_request() -> httpx.Response: if res.status_code == parsed_code: raise TemporaryError(res) - except httpx.ConnectError as exception: - if retries.config.retry_connection_errors: - raise - - raise PermanentError(exception) from exception - except httpx.TimeoutException as exception: + except (httpx.NetworkError, httpx.TimeoutException) as exception: if retries.config.retry_connection_errors: raise diff --git a/src/leonardo_ai_sdk/utils/security.py b/src/leonardo_ai_sdk/utils/security.py index 295a3f40..42d8d78e 100644 --- a/src/leonardo_ai_sdk/utils/security.py +++ b/src/leonardo_ai_sdk/utils/security.py @@ -5,6 +5,7 @@ Any, Dict, List, + Optional, Tuple, ) from pydantic import BaseModel @@ -16,7 +17,9 @@ ) -def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: +def get_security( + security: Any, allowed_fields: Optional[List[str]] = None +) -> Tuple[Dict[str, str], Dict[str, List[str]]]: headers: Dict[str, str] = {} query_params: Dict[str, List[str]] = {} @@ -27,7 +30,14 @@ def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: raise TypeError("security must be a pydantic model") sec_fields: Dict[str, FieldInfo] = security.__class__.model_fields - for name in sec_fields: + sec_field_names = ( + list(sec_fields.keys()) if allowed_fields is None else allowed_fields + ) + + for name in sec_field_names: + if name not in sec_fields: + continue + sec_field = sec_fields[name] value = getattr(security, name) @@ -49,6 +59,9 @@ def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: else: _parse_security_scheme(headers, query_params, metadata, name, value) + if not metadata.composite: + return headers, query_params + return headers, query_params @@ -59,15 +72,24 @@ def _parse_security_option( raise TypeError("security option must be a pydantic model") opt_fields: Dict[str, FieldInfo] = option.__class__.model_fields + for name in opt_fields: opt_field = opt_fields[name] metadata = find_field_metadata(opt_field, SecurityMetadata) if metadata is None or not metadata.scheme: continue - _parse_security_scheme( - headers, query_params, metadata, name, getattr(option, name) - ) + + value = getattr(option, name) + if ( + metadata.scheme_type == "http" + and metadata.sub_type == "basic" + and not isinstance(value, BaseModel) + ): + _parse_basic_auth_scheme(headers, option) + return + + _parse_security_scheme(headers, query_params, metadata, name, value) def _parse_security_scheme( @@ -135,6 +157,8 @@ def _parse_security_scheme_value( elif scheme_type == "http": if sub_type == "bearer": headers[header_name] = _apply_bearer(value) + elif sub_type == "basic": + headers[header_name] = value elif sub_type == "custom": return else: diff --git a/src/leonardo_ai_sdk/utils/serializers.py b/src/leonardo_ai_sdk/utils/serializers.py index 14321eb4..d2149f8b 100644 --- a/src/leonardo_ai_sdk/utils/serializers.py +++ b/src/leonardo_ai_sdk/utils/serializers.py @@ -17,8 +17,7 @@ def serialize_decimal(as_str: bool): def serialize(d): - # Optional[T] is a Union[T, None] - if is_union(type(d)) and type(None) in get_args(type(d)) and d is None: + if d is None: return None if isinstance(d, Unset): return d @@ -46,8 +45,7 @@ def validate_decimal(d): def serialize_float(as_str: bool): def serialize(f): - # Optional[T] is a Union[T, None] - if is_union(type(f)) and type(None) in get_args(type(f)) and f is None: + if f is None: return None if isinstance(f, Unset): return f @@ -75,8 +73,7 @@ def validate_float(f): def serialize_int(as_str: bool): def serialize(i): - # Optional[T] is a Union[T, None] - if is_union(type(i)) and type(None) in get_args(type(i)) and i is None: + if i is None: return None if isinstance(i, Unset): return i @@ -104,8 +101,7 @@ def validate_int(b): def validate_const(v): def validate(c): - # Optional[T] is a Union[T, None] - if is_union(type(c)) and type(None) in get_args(type(c)) and c is None: + if c is None: return None if v != c: diff --git a/src/leonardo_ai_sdk/variation.py b/src/leonardo_ai_sdk/variation.py index 1891ec81..f8d74970 100644 --- a/src/leonardo_ai_sdk/variation.py +++ b/src/leonardo_ai_sdk/variation.py @@ -89,7 +89,7 @@ def create_universal_upscaler_job( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -191,7 +191,7 @@ async def create_universal_upscaler_job_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -289,7 +289,7 @@ def create_variation_no_bg( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -386,7 +386,7 @@ async def create_variation_no_bg_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -489,7 +489,7 @@ def create_variation_unzoom( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -592,7 +592,7 @@ async def create_variation_unzoom_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -695,7 +695,7 @@ def create_variation_upscale( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -798,7 +798,7 @@ async def create_variation_upscale_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -887,7 +887,7 @@ def get_motion_variation_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -976,7 +976,7 @@ async def get_motion_variation_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1065,7 +1065,7 @@ def get_variation_by_id( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1154,7 +1154,7 @@ async def get_variation_by_id_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, )