aioscaleway 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. aioscaleway-0.1.0/.github/workflows/pull-request.yml +68 -0
  2. aioscaleway-0.1.0/.github/workflows/release.yml +59 -0
  3. aioscaleway-0.1.0/.gitignore +23 -0
  4. aioscaleway-0.1.0/.python-version +1 -0
  5. aioscaleway-0.1.0/CHANGELOG.md +34 -0
  6. aioscaleway-0.1.0/CITATION.cff +24 -0
  7. aioscaleway-0.1.0/CONTRIBUTING.md +115 -0
  8. aioscaleway-0.1.0/LICENSE +21 -0
  9. aioscaleway-0.1.0/PKG-INFO +205 -0
  10. aioscaleway-0.1.0/README.md +170 -0
  11. aioscaleway-0.1.0/mapping.yaml +283 -0
  12. aioscaleway-0.1.0/pyproject.toml +94 -0
  13. aioscaleway-0.1.0/scripts/fetch_specs.sh +22 -0
  14. aioscaleway-0.1.0/scripts/generate.py +28 -0
  15. aioscaleway-0.1.0/scripts/objects.py +1370 -0
  16. aioscaleway-0.1.0/scripts/operations.py +906 -0
  17. aioscaleway-0.1.0/scripts/release.sh +74 -0
  18. aioscaleway-0.1.0/scripts/roll_changelog.py +87 -0
  19. aioscaleway-0.1.0/scripts/spec_index.py +33 -0
  20. aioscaleway-0.1.0/src/aioscaleway/__init__.py +48 -0
  21. aioscaleway-0.1.0/src/aioscaleway/_client.py +295 -0
  22. aioscaleway-0.1.0/src/aioscaleway/_enums.py +15 -0
  23. aioscaleway-0.1.0/src/aioscaleway/_errors.py +133 -0
  24. aioscaleway-0.1.0/src/aioscaleway/_models.py +30 -0
  25. aioscaleway-0.1.0/src/aioscaleway/_namespaces.py +167 -0
  26. aioscaleway-0.1.0/src/aioscaleway/_objects.py +143 -0
  27. aioscaleway-0.1.0/src/aioscaleway/_operations/__init__.py +1 -0
  28. aioscaleway-0.1.0/src/aioscaleway/_operations/account/__init__.py +1 -0
  29. aioscaleway-0.1.0/src/aioscaleway/_operations/account/v3/__init__.py +272 -0
  30. aioscaleway-0.1.0/src/aioscaleway/_operations/account/v3/api.py +2199 -0
  31. aioscaleway-0.1.0/src/aioscaleway/_operations/account/v3/models.py +1797 -0
  32. aioscaleway-0.1.0/src/aioscaleway/_operations/annotations/__init__.py +1 -0
  33. aioscaleway-0.1.0/src/aioscaleway/_operations/annotations/v1/__init__.py +38 -0
  34. aioscaleway-0.1.0/src/aioscaleway/_operations/annotations/v1/api.py +527 -0
  35. aioscaleway-0.1.0/src/aioscaleway/_operations/annotations/v1/models.py +223 -0
  36. aioscaleway-0.1.0/src/aioscaleway/_operations/applesilicon/__init__.py +1 -0
  37. aioscaleway-0.1.0/src/aioscaleway/_operations/applesilicon/v1alpha1/__init__.py +102 -0
  38. aioscaleway-0.1.0/src/aioscaleway/_operations/applesilicon/v1alpha1/api.py +1120 -0
  39. aioscaleway-0.1.0/src/aioscaleway/_operations/applesilicon/v1alpha1/models.py +630 -0
  40. aioscaleway-0.1.0/src/aioscaleway/_operations/audit_trail/__init__.py +1 -0
  41. aioscaleway-0.1.0/src/aioscaleway/_operations/audit_trail/v1alpha1/__init__.py +246 -0
  42. aioscaleway-0.1.0/src/aioscaleway/_operations/audit_trail/v1alpha1/api.py +1014 -0
  43. aioscaleway-0.1.0/src/aioscaleway/_operations/audit_trail/v1alpha1/models.py +3289 -0
  44. aioscaleway-0.1.0/src/aioscaleway/_operations/autoscaling/__init__.py +1 -0
  45. aioscaleway-0.1.0/src/aioscaleway/_operations/autoscaling/v1alpha2/__init__.py +62 -0
  46. aioscaleway-0.1.0/src/aioscaleway/_operations/autoscaling/v1alpha2/api.py +334 -0
  47. aioscaleway-0.1.0/src/aioscaleway/_operations/autoscaling/v1alpha2/models.py +476 -0
  48. aioscaleway-0.1.0/src/aioscaleway/_operations/baremetal/__init__.py +1 -0
  49. aioscaleway-0.1.0/src/aioscaleway/_operations/baremetal/v1/__init__.py +160 -0
  50. aioscaleway-0.1.0/src/aioscaleway/_operations/baremetal/v1/api.py +1561 -0
  51. aioscaleway-0.1.0/src/aioscaleway/_operations/baremetal/v1/models.py +1281 -0
  52. aioscaleway-0.1.0/src/aioscaleway/_operations/baremetal/v3/__init__.py +20 -0
  53. aioscaleway-0.1.0/src/aioscaleway/_operations/baremetal/v3/api.py +229 -0
  54. aioscaleway-0.1.0/src/aioscaleway/_operations/baremetal/v3/models.py +80 -0
  55. aioscaleway-0.1.0/src/aioscaleway/_operations/billing/__init__.py +1 -0
  56. aioscaleway-0.1.0/src/aioscaleway/_operations/billing/v2beta1/__init__.py +62 -0
  57. aioscaleway-0.1.0/src/aioscaleway/_operations/billing/v2beta1/api.py +609 -0
  58. aioscaleway-0.1.0/src/aioscaleway/_operations/billing/v2beta1/models.py +464 -0
  59. aioscaleway-0.1.0/src/aioscaleway/_operations/block/__init__.py +1 -0
  60. aioscaleway-0.1.0/src/aioscaleway/_operations/block/v1/__init__.py +46 -0
  61. aioscaleway-0.1.0/src/aioscaleway/_operations/block/v1/api.py +711 -0
  62. aioscaleway-0.1.0/src/aioscaleway/_operations/block/v1/models.py +366 -0
  63. aioscaleway-0.1.0/src/aioscaleway/_operations/block/v1alpha1/__init__.py +46 -0
  64. aioscaleway-0.1.0/src/aioscaleway/_operations/block/v1alpha1/api.py +721 -0
  65. aioscaleway-0.1.0/src/aioscaleway/_operations/block/v1alpha1/models.py +338 -0
  66. aioscaleway-0.1.0/src/aioscaleway/_operations/cockpit/__init__.py +1 -0
  67. aioscaleway-0.1.0/src/aioscaleway/_operations/cockpit/v1/__init__.py +106 -0
  68. aioscaleway-0.1.0/src/aioscaleway/_operations/cockpit/v1/api.py +1772 -0
  69. aioscaleway-0.1.0/src/aioscaleway/_operations/cockpit/v1/models.py +746 -0
  70. aioscaleway-0.1.0/src/aioscaleway/_operations/container/__init__.py +1 -0
  71. aioscaleway-0.1.0/src/aioscaleway/_operations/container/v1/__init__.py +96 -0
  72. aioscaleway-0.1.0/src/aioscaleway/_operations/container/v1/api.py +1214 -0
  73. aioscaleway-0.1.0/src/aioscaleway/_operations/container/v1/models.py +835 -0
  74. aioscaleway-0.1.0/src/aioscaleway/_operations/container/v1beta1/__init__.py +90 -0
  75. aioscaleway-0.1.0/src/aioscaleway/_operations/container/v1beta1/api.py +1569 -0
  76. aioscaleway-0.1.0/src/aioscaleway/_operations/container/v1beta1/models.py +735 -0
  77. aioscaleway-0.1.0/src/aioscaleway/_operations/datalab/__init__.py +1 -0
  78. aioscaleway-0.1.0/src/aioscaleway/_operations/datalab/v1beta1/__init__.py +58 -0
  79. aioscaleway-0.1.0/src/aioscaleway/_operations/datalab/v1beta1/api.py +536 -0
  80. aioscaleway-0.1.0/src/aioscaleway/_operations/datalab/v1beta1/models.py +382 -0
  81. aioscaleway-0.1.0/src/aioscaleway/_operations/datawarehouse/__init__.py +1 -0
  82. aioscaleway-0.1.0/src/aioscaleway/_operations/datawarehouse/v1beta1/__init__.py +58 -0
  83. aioscaleway-0.1.0/src/aioscaleway/_operations/datawarehouse/v1beta1/api.py +891 -0
  84. aioscaleway-0.1.0/src/aioscaleway/_operations/datawarehouse/v1beta1/models.py +395 -0
  85. aioscaleway-0.1.0/src/aioscaleway/_operations/dedibox/__init__.py +1 -0
  86. aioscaleway-0.1.0/src/aioscaleway/_operations/dedibox/v1/__init__.py +192 -0
  87. aioscaleway-0.1.0/src/aioscaleway/_operations/dedibox/v1/api.py +1840 -0
  88. aioscaleway-0.1.0/src/aioscaleway/_operations/dedibox/v1/models.py +1491 -0
  89. aioscaleway-0.1.0/src/aioscaleway/_operations/domain/__init__.py +1 -0
  90. aioscaleway-0.1.0/src/aioscaleway/_operations/domain/v2beta1/__init__.py +254 -0
  91. aioscaleway-0.1.0/src/aioscaleway/_operations/domain/v2beta1/api.py +2528 -0
  92. aioscaleway-0.1.0/src/aioscaleway/_operations/domain/v2beta1/models.py +1715 -0
  93. aioscaleway-0.1.0/src/aioscaleway/_operations/edge_services/__init__.py +1 -0
  94. aioscaleway-0.1.0/src/aioscaleway/_operations/edge_services/v1beta1/__init__.py +148 -0
  95. aioscaleway-0.1.0/src/aioscaleway/_operations/edge_services/v1beta1/api.py +2068 -0
  96. aioscaleway-0.1.0/src/aioscaleway/_operations/edge_services/v1beta1/models.py +1088 -0
  97. aioscaleway-0.1.0/src/aioscaleway/_operations/environmental_footprint/__init__.py +1 -0
  98. aioscaleway-0.1.0/src/aioscaleway/_operations/environmental_footprint/v1alpha1/__init__.py +34 -0
  99. aioscaleway-0.1.0/src/aioscaleway/_operations/environmental_footprint/v1alpha1/api.py +140 -0
  100. aioscaleway-0.1.0/src/aioscaleway/_operations/environmental_footprint/v1alpha1/models.py +182 -0
  101. aioscaleway-0.1.0/src/aioscaleway/_operations/file/__init__.py +1 -0
  102. aioscaleway-0.1.0/src/aioscaleway/_operations/file/v1alpha1/__init__.py +42 -0
  103. aioscaleway-0.1.0/src/aioscaleway/_operations/file/v1alpha1/api.py +719 -0
  104. aioscaleway-0.1.0/src/aioscaleway/_operations/file/v1alpha1/models.py +297 -0
  105. aioscaleway-0.1.0/src/aioscaleway/_operations/flexibleip/__init__.py +1 -0
  106. aioscaleway-0.1.0/src/aioscaleway/_operations/flexibleip/v1alpha1/__init__.py +28 -0
  107. aioscaleway-0.1.0/src/aioscaleway/_operations/flexibleip/v1alpha1/api.py +442 -0
  108. aioscaleway-0.1.0/src/aioscaleway/_operations/flexibleip/v1alpha1/models.py +180 -0
  109. aioscaleway-0.1.0/src/aioscaleway/_operations/function/__init__.py +1 -0
  110. aioscaleway-0.1.0/src/aioscaleway/_operations/function/v1beta1/__init__.py +94 -0
  111. aioscaleway-0.1.0/src/aioscaleway/_operations/function/v1beta1/api.py +1497 -0
  112. aioscaleway-0.1.0/src/aioscaleway/_operations/function/v1beta1/models.py +752 -0
  113. aioscaleway-0.1.0/src/aioscaleway/_operations/generative_apis/__init__.py +1 -0
  114. aioscaleway-0.1.0/src/aioscaleway/_operations/generative_apis/v1/__init__.py +212 -0
  115. aioscaleway-0.1.0/src/aioscaleway/_operations/generative_apis/v1/api.py +703 -0
  116. aioscaleway-0.1.0/src/aioscaleway/_operations/generative_apis/v1/models.py +1574 -0
  117. aioscaleway-0.1.0/src/aioscaleway/_operations/iam/__init__.py +1 -0
  118. aioscaleway-0.1.0/src/aioscaleway/_operations/iam/v1alpha1/__init__.py +176 -0
  119. aioscaleway-0.1.0/src/aioscaleway/_operations/iam/v1alpha1/api.py +3233 -0
  120. aioscaleway-0.1.0/src/aioscaleway/_operations/iam/v1alpha1/models.py +1430 -0
  121. aioscaleway-0.1.0/src/aioscaleway/_operations/inference/__init__.py +1 -0
  122. aioscaleway-0.1.0/src/aioscaleway/_operations/inference/v1/__init__.py +56 -0
  123. aioscaleway-0.1.0/src/aioscaleway/_operations/inference/v1/api.py +731 -0
  124. aioscaleway-0.1.0/src/aioscaleway/_operations/inference/v1/models.py +415 -0
  125. aioscaleway-0.1.0/src/aioscaleway/_operations/instance/__init__.py +1 -0
  126. aioscaleway-0.1.0/src/aioscaleway/_operations/instance/v1/__init__.py +278 -0
  127. aioscaleway-0.1.0/src/aioscaleway/_operations/instance/v1/api.py +3448 -0
  128. aioscaleway-0.1.0/src/aioscaleway/_operations/instance/v1/models.py +1664 -0
  129. aioscaleway-0.1.0/src/aioscaleway/_operations/instance/v2alpha1/__init__.py +172 -0
  130. aioscaleway-0.1.0/src/aioscaleway/_operations/instance/v2alpha1/api.py +2553 -0
  131. aioscaleway-0.1.0/src/aioscaleway/_operations/instance/v2alpha1/models.py +1648 -0
  132. aioscaleway-0.1.0/src/aioscaleway/_operations/interlink/__init__.py +1 -0
  133. aioscaleway-0.1.0/src/aioscaleway/_operations/interlink/v1beta1/__init__.py +56 -0
  134. aioscaleway-0.1.0/src/aioscaleway/_operations/interlink/v1beta1/api.py +1290 -0
  135. aioscaleway-0.1.0/src/aioscaleway/_operations/interlink/v1beta1/models.py +514 -0
  136. aioscaleway-0.1.0/src/aioscaleway/_operations/iot/__init__.py +1 -0
  137. aioscaleway-0.1.0/src/aioscaleway/_operations/iot/v1/__init__.py +112 -0
  138. aioscaleway-0.1.0/src/aioscaleway/_operations/iot/v1/api.py +1468 -0
  139. aioscaleway-0.1.0/src/aioscaleway/_operations/iot/v1/models.py +743 -0
  140. aioscaleway-0.1.0/src/aioscaleway/_operations/ipam/__init__.py +1 -0
  141. aioscaleway-0.1.0/src/aioscaleway/_operations/ipam/v1/__init__.py +26 -0
  142. aioscaleway-0.1.0/src/aioscaleway/_operations/ipam/v1/api.py +509 -0
  143. aioscaleway-0.1.0/src/aioscaleway/_operations/ipam/v1/models.py +206 -0
  144. aioscaleway-0.1.0/src/aioscaleway/_operations/jobs/__init__.py +1 -0
  145. aioscaleway-0.1.0/src/aioscaleway/_operations/jobs/v1alpha1/__init__.py +48 -0
  146. aioscaleway-0.1.0/src/aioscaleway/_operations/jobs/v1alpha1/api.py +609 -0
  147. aioscaleway-0.1.0/src/aioscaleway/_operations/jobs/v1alpha1/models.py +231 -0
  148. aioscaleway-0.1.0/src/aioscaleway/_operations/jobs/v1alpha2/__init__.py +62 -0
  149. aioscaleway-0.1.0/src/aioscaleway/_operations/jobs/v1alpha2/api.py +851 -0
  150. aioscaleway-0.1.0/src/aioscaleway/_operations/jobs/v1alpha2/models.py +476 -0
  151. aioscaleway-0.1.0/src/aioscaleway/_operations/k8s/__init__.py +1 -0
  152. aioscaleway-0.1.0/src/aioscaleway/_operations/k8s/v1/__init__.py +118 -0
  153. aioscaleway-0.1.0/src/aioscaleway/_operations/k8s/v1/api.py +1595 -0
  154. aioscaleway-0.1.0/src/aioscaleway/_operations/k8s/v1/models.py +1354 -0
  155. aioscaleway-0.1.0/src/aioscaleway/_operations/kafka/__init__.py +1 -0
  156. aioscaleway-0.1.0/src/aioscaleway/_operations/kafka/v1alpha1/__init__.py +72 -0
  157. aioscaleway-0.1.0/src/aioscaleway/_operations/kafka/v1alpha1/api.py +682 -0
  158. aioscaleway-0.1.0/src/aioscaleway/_operations/kafka/v1alpha1/models.py +458 -0
  159. aioscaleway-0.1.0/src/aioscaleway/_operations/key_manager/__init__.py +1 -0
  160. aioscaleway-0.1.0/src/aioscaleway/_operations/key_manager/v1alpha1/__init__.py +78 -0
  161. aioscaleway-0.1.0/src/aioscaleway/_operations/key_manager/v1alpha1/api.py +1019 -0
  162. aioscaleway-0.1.0/src/aioscaleway/_operations/key_manager/v1alpha1/models.py +470 -0
  163. aioscaleway-0.1.0/src/aioscaleway/_operations/lb/__init__.py +1 -0
  164. aioscaleway-0.1.0/src/aioscaleway/_operations/lb/v1/__init__.py +152 -0
  165. aioscaleway-0.1.0/src/aioscaleway/_operations/lb/v1/api.py +2790 -0
  166. aioscaleway-0.1.0/src/aioscaleway/_operations/lb/v1/models.py +1335 -0
  167. aioscaleway-0.1.0/src/aioscaleway/_operations/mailbox/__init__.py +1 -0
  168. aioscaleway-0.1.0/src/aioscaleway/_operations/mailbox/v1alpha1/__init__.py +60 -0
  169. aioscaleway-0.1.0/src/aioscaleway/_operations/mailbox/v1alpha1/api.py +853 -0
  170. aioscaleway-0.1.0/src/aioscaleway/_operations/mailbox/v1alpha1/models.py +483 -0
  171. aioscaleway-0.1.0/src/aioscaleway/_operations/marketplace/__init__.py +1 -0
  172. aioscaleway-0.1.0/src/aioscaleway/_operations/marketplace/v2/__init__.py +48 -0
  173. aioscaleway-0.1.0/src/aioscaleway/_operations/marketplace/v2/api.py +573 -0
  174. aioscaleway-0.1.0/src/aioscaleway/_operations/marketplace/v2/models.py +268 -0
  175. aioscaleway-0.1.0/src/aioscaleway/_operations/messageq/__init__.py +1 -0
  176. aioscaleway-0.1.0/src/aioscaleway/_operations/messageq/v1alpha1/__init__.py +60 -0
  177. aioscaleway-0.1.0/src/aioscaleway/_operations/messageq/v1alpha1/api.py +695 -0
  178. aioscaleway-0.1.0/src/aioscaleway/_operations/messageq/v1alpha1/models.py +381 -0
  179. aioscaleway-0.1.0/src/aioscaleway/_operations/mnq/__init__.py +1 -0
  180. aioscaleway-0.1.0/src/aioscaleway/_operations/mnq/v1beta1/__init__.py +60 -0
  181. aioscaleway-0.1.0/src/aioscaleway/_operations/mnq/v1beta1/api.py +1043 -0
  182. aioscaleway-0.1.0/src/aioscaleway/_operations/mnq/v1beta1/models.py +410 -0
  183. aioscaleway-0.1.0/src/aioscaleway/_operations/mongodb/__init__.py +1 -0
  184. aioscaleway-0.1.0/src/aioscaleway/_operations/mongodb/v1/__init__.py +94 -0
  185. aioscaleway-0.1.0/src/aioscaleway/_operations/mongodb/v1/api.py +1279 -0
  186. aioscaleway-0.1.0/src/aioscaleway/_operations/mongodb/v1/models.py +634 -0
  187. aioscaleway-0.1.0/src/aioscaleway/_operations/mongodb/v1alpha1/__init__.py +80 -0
  188. aioscaleway-0.1.0/src/aioscaleway/_operations/mongodb/v1alpha1/api.py +1031 -0
  189. aioscaleway-0.1.0/src/aioscaleway/_operations/mongodb/v1alpha1/models.py +557 -0
  190. aioscaleway-0.1.0/src/aioscaleway/_operations/partner/__init__.py +1 -0
  191. aioscaleway-0.1.0/src/aioscaleway/_operations/partner/v1/__init__.py +22 -0
  192. aioscaleway-0.1.0/src/aioscaleway/_operations/partner/v1/api.py +297 -0
  193. aioscaleway-0.1.0/src/aioscaleway/_operations/partner/v1/models.py +110 -0
  194. aioscaleway-0.1.0/src/aioscaleway/_operations/product_catalog/__init__.py +1 -0
  195. aioscaleway-0.1.0/src/aioscaleway/_operations/product_catalog/v2alpha1/__init__.py +182 -0
  196. aioscaleway-0.1.0/src/aioscaleway/_operations/product_catalog/v2alpha1/api.py +151 -0
  197. aioscaleway-0.1.0/src/aioscaleway/_operations/product_catalog/v2alpha1/models.py +1379 -0
  198. aioscaleway-0.1.0/src/aioscaleway/_operations/qaas/__init__.py +1 -0
  199. aioscaleway-0.1.0/src/aioscaleway/_operations/qaas/v1alpha1/__init__.py +100 -0
  200. aioscaleway-0.1.0/src/aioscaleway/_operations/qaas/v1alpha1/api.py +1441 -0
  201. aioscaleway-0.1.0/src/aioscaleway/_operations/qaas/v1alpha1/models.py +834 -0
  202. aioscaleway-0.1.0/src/aioscaleway/_operations/rdb/__init__.py +1 -0
  203. aioscaleway-0.1.0/src/aioscaleway/_operations/rdb/v1/__init__.py +186 -0
  204. aioscaleway-0.1.0/src/aioscaleway/_operations/rdb/v1/api.py +2610 -0
  205. aioscaleway-0.1.0/src/aioscaleway/_operations/rdb/v1/models.py +1277 -0
  206. aioscaleway-0.1.0/src/aioscaleway/_operations/redis/__init__.py +1 -0
  207. aioscaleway-0.1.0/src/aioscaleway/_operations/redis/v1/__init__.py +74 -0
  208. aioscaleway-0.1.0/src/aioscaleway/_operations/redis/v1/api.py +988 -0
  209. aioscaleway-0.1.0/src/aioscaleway/_operations/redis/v1/models.py +473 -0
  210. aioscaleway-0.1.0/src/aioscaleway/_operations/registry/__init__.py +1 -0
  211. aioscaleway-0.1.0/src/aioscaleway/_operations/registry/v1/__init__.py +36 -0
  212. aioscaleway-0.1.0/src/aioscaleway/_operations/registry/v1/api.py +627 -0
  213. aioscaleway-0.1.0/src/aioscaleway/_operations/registry/v1/models.py +245 -0
  214. aioscaleway-0.1.0/src/aioscaleway/_operations/reseller/__init__.py +1 -0
  215. aioscaleway-0.1.0/src/aioscaleway/_operations/reseller/v1/__init__.py +34 -0
  216. aioscaleway-0.1.0/src/aioscaleway/_operations/reseller/v1/api.py +396 -0
  217. aioscaleway-0.1.0/src/aioscaleway/_operations/reseller/v1/models.py +262 -0
  218. aioscaleway-0.1.0/src/aioscaleway/_operations/s2s_vpn/__init__.py +1 -0
  219. aioscaleway-0.1.0/src/aioscaleway/_operations/s2s_vpn/v1alpha1/__init__.py +84 -0
  220. aioscaleway-0.1.0/src/aioscaleway/_operations/s2s_vpn/v1alpha1/api.py +1409 -0
  221. aioscaleway-0.1.0/src/aioscaleway/_operations/s2s_vpn/v1alpha1/models.py +650 -0
  222. aioscaleway-0.1.0/src/aioscaleway/_operations/search/__init__.py +1 -0
  223. aioscaleway-0.1.0/src/aioscaleway/_operations/search/v1alpha1/__init__.py +36 -0
  224. aioscaleway-0.1.0/src/aioscaleway/_operations/search/v1alpha1/api.py +79 -0
  225. aioscaleway-0.1.0/src/aioscaleway/_operations/search/v1alpha1/models.py +272 -0
  226. aioscaleway-0.1.0/src/aioscaleway/_operations/searchdb/__init__.py +1 -0
  227. aioscaleway-0.1.0/src/aioscaleway/_operations/searchdb/v1alpha1/__init__.py +60 -0
  228. aioscaleway-0.1.0/src/aioscaleway/_operations/searchdb/v1alpha1/api.py +703 -0
  229. aioscaleway-0.1.0/src/aioscaleway/_operations/searchdb/v1alpha1/models.py +388 -0
  230. aioscaleway-0.1.0/src/aioscaleway/_operations/secret/__init__.py +1 -0
  231. aioscaleway-0.1.0/src/aioscaleway/_operations/secret/v1beta1/__init__.py +38 -0
  232. aioscaleway-0.1.0/src/aioscaleway/_operations/secret/v1beta1/api.py +831 -0
  233. aioscaleway-0.1.0/src/aioscaleway/_operations/secret/v1beta1/models.py +304 -0
  234. aioscaleway-0.1.0/src/aioscaleway/_operations/serverless_sqldb/__init__.py +1 -0
  235. aioscaleway-0.1.0/src/aioscaleway/_operations/serverless_sqldb/v1alpha1/__init__.py +30 -0
  236. aioscaleway-0.1.0/src/aioscaleway/_operations/serverless_sqldb/v1alpha1/api.py +515 -0
  237. aioscaleway-0.1.0/src/aioscaleway/_operations/serverless_sqldb/v1alpha1/models.py +221 -0
  238. aioscaleway-0.1.0/src/aioscaleway/_operations/tem/__init__.py +1 -0
  239. aioscaleway-0.1.0/src/aioscaleway/_operations/tem/v1alpha1/__init__.py +126 -0
  240. aioscaleway-0.1.0/src/aioscaleway/_operations/tem/v1alpha1/api.py +1494 -0
  241. aioscaleway-0.1.0/src/aioscaleway/_operations/tem/v1alpha1/models.py +1058 -0
  242. aioscaleway-0.1.0/src/aioscaleway/_operations/test/__init__.py +1 -0
  243. aioscaleway-0.1.0/src/aioscaleway/_operations/test/v1/__init__.py +38 -0
  244. aioscaleway-0.1.0/src/aioscaleway/_operations/test/v1/api.py +290 -0
  245. aioscaleway-0.1.0/src/aioscaleway/_operations/test/v1/models.py +112 -0
  246. aioscaleway-0.1.0/src/aioscaleway/_operations/vpc/__init__.py +1 -0
  247. aioscaleway-0.1.0/src/aioscaleway/_operations/vpc/v2/__init__.py +96 -0
  248. aioscaleway-0.1.0/src/aioscaleway/_operations/vpc/v2/api.py +2018 -0
  249. aioscaleway-0.1.0/src/aioscaleway/_operations/vpc/v2/models.py +679 -0
  250. aioscaleway-0.1.0/src/aioscaleway/_operations/vpcgw/__init__.py +1 -0
  251. aioscaleway-0.1.0/src/aioscaleway/_operations/vpcgw/v2/__init__.py +52 -0
  252. aioscaleway-0.1.0/src/aioscaleway/_operations/vpcgw/v2/api.py +1242 -0
  253. aioscaleway-0.1.0/src/aioscaleway/_operations/vpcgw/v2/models.py +430 -0
  254. aioscaleway-0.1.0/src/aioscaleway/_operations/webhosting/__init__.py +1 -0
  255. aioscaleway-0.1.0/src/aioscaleway/_operations/webhosting/v1/__init__.py +198 -0
  256. aioscaleway-0.1.0/src/aioscaleway/_operations/webhosting/v1/api.py +2337 -0
  257. aioscaleway-0.1.0/src/aioscaleway/_operations/webhosting/v1/models.py +1260 -0
  258. aioscaleway-0.1.0/src/aioscaleway/_root.py +68 -0
  259. aioscaleway-0.1.0/src/aioscaleway/_settings.py +22 -0
  260. aioscaleway-0.1.0/src/aioscaleway/account/__init__.py +98 -0
  261. aioscaleway-0.1.0/src/aioscaleway/account/resources.py +2542 -0
  262. aioscaleway-0.1.0/src/aioscaleway/account/types.py +354 -0
  263. aioscaleway-0.1.0/src/aioscaleway/ai/__init__.py +82 -0
  264. aioscaleway-0.1.0/src/aioscaleway/ai/resources.py +1978 -0
  265. aioscaleway-0.1.0/src/aioscaleway/ai/types.py +340 -0
  266. aioscaleway-0.1.0/src/aioscaleway/analytics/__init__.py +20 -0
  267. aioscaleway-0.1.0/src/aioscaleway/analytics/resources.py +364 -0
  268. aioscaleway-0.1.0/src/aioscaleway/analytics/types.py +52 -0
  269. aioscaleway-0.1.0/src/aioscaleway/billing/__init__.py +22 -0
  270. aioscaleway-0.1.0/src/aioscaleway/billing/resources.py +474 -0
  271. aioscaleway-0.1.0/src/aioscaleway/billing/types.py +88 -0
  272. aioscaleway-0.1.0/src/aioscaleway/compute/__init__.py +256 -0
  273. aioscaleway-0.1.0/src/aioscaleway/compute/resources.py +6331 -0
  274. aioscaleway-0.1.0/src/aioscaleway/compute/types.py +866 -0
  275. aioscaleway-0.1.0/src/aioscaleway/databases/__init__.py +198 -0
  276. aioscaleway-0.1.0/src/aioscaleway/databases/resources.py +4970 -0
  277. aioscaleway-0.1.0/src/aioscaleway/databases/types.py +604 -0
  278. aioscaleway-0.1.0/src/aioscaleway/domains/__init__.py +66 -0
  279. aioscaleway-0.1.0/src/aioscaleway/domains/resources.py +1740 -0
  280. aioscaleway-0.1.0/src/aioscaleway/domains/types.py +244 -0
  281. aioscaleway-0.1.0/src/aioscaleway/email/__init__.py +68 -0
  282. aioscaleway-0.1.0/src/aioscaleway/email/resources.py +1619 -0
  283. aioscaleway-0.1.0/src/aioscaleway/email/types.py +172 -0
  284. aioscaleway-0.1.0/src/aioscaleway/iam/__init__.py +128 -0
  285. aioscaleway-0.1.0/src/aioscaleway/iam/resources.py +3613 -0
  286. aioscaleway-0.1.0/src/aioscaleway/iam/types.py +256 -0
  287. aioscaleway-0.1.0/src/aioscaleway/iot/__init__.py +44 -0
  288. aioscaleway-0.1.0/src/aioscaleway/iot/resources.py +1000 -0
  289. aioscaleway-0.1.0/src/aioscaleway/iot/types.py +96 -0
  290. aioscaleway-0.1.0/src/aioscaleway/kubernetes/__init__.py +70 -0
  291. aioscaleway-0.1.0/src/aioscaleway/kubernetes/resources.py +1569 -0
  292. aioscaleway-0.1.0/src/aioscaleway/kubernetes/types.py +124 -0
  293. aioscaleway-0.1.0/src/aioscaleway/messaging/__init__.py +76 -0
  294. aioscaleway-0.1.0/src/aioscaleway/messaging/resources.py +1800 -0
  295. aioscaleway-0.1.0/src/aioscaleway/messaging/types.py +208 -0
  296. aioscaleway-0.1.0/src/aioscaleway/network/__init__.py +284 -0
  297. aioscaleway-0.1.0/src/aioscaleway/network/resources.py +7895 -0
  298. aioscaleway-0.1.0/src/aioscaleway/network/types.py +534 -0
  299. aioscaleway-0.1.0/src/aioscaleway/observability/__init__.py +70 -0
  300. aioscaleway-0.1.0/src/aioscaleway/observability/resources.py +1949 -0
  301. aioscaleway-0.1.0/src/aioscaleway/observability/types.py +342 -0
  302. aioscaleway-0.1.0/src/aioscaleway/orders/__init__.py +10 -0
  303. aioscaleway-0.1.0/src/aioscaleway/orders/resources.py +82 -0
  304. aioscaleway-0.1.0/src/aioscaleway/orders/types.py +180 -0
  305. aioscaleway-0.1.0/src/aioscaleway/py.typed +0 -0
  306. aioscaleway-0.1.0/src/aioscaleway/serverless/__init__.py +94 -0
  307. aioscaleway-0.1.0/src/aioscaleway/serverless/resources.py +2551 -0
  308. aioscaleway-0.1.0/src/aioscaleway/serverless/types.py +258 -0
  309. aioscaleway-0.1.0/src/aioscaleway/storage/__init__.py +38 -0
  310. aioscaleway-0.1.0/src/aioscaleway/storage/resources.py +933 -0
  311. aioscaleway-0.1.0/src/aioscaleway/storage/types.py +84 -0
  312. aioscaleway-0.1.0/src/aioscaleway/web_hosting/__init__.py +78 -0
  313. aioscaleway-0.1.0/src/aioscaleway/web_hosting/resources.py +1673 -0
  314. aioscaleway-0.1.0/src/aioscaleway/web_hosting/types.py +166 -0
  315. aioscaleway-0.1.0/tests/__init__.py +0 -0
  316. aioscaleway-0.1.0/tests/conftest.py +71 -0
  317. aioscaleway-0.1.0/tests/test_client.py +225 -0
  318. aioscaleway-0.1.0/tests/test_objects.py +244 -0
  319. aioscaleway-0.1.0/tests/test_operations.py +145 -0
  320. aioscaleway-0.1.0/uv.lock +1152 -0
@@ -0,0 +1,68 @@
1
+ name: Pull request
2
+
3
+ on:
4
+ pull_request:
5
+ branches: [development]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ concurrency:
11
+ group: ${{ github.workflow }}-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ env:
15
+ UV_FROZEN: "1"
16
+
17
+ jobs:
18
+ check:
19
+ runs-on: ubuntu-latest
20
+ strategy:
21
+ fail-fast: false
22
+ matrix:
23
+ python-version: ["3.12", "3.13", "3.14"]
24
+ env:
25
+ UV_PYTHON: ${{ matrix.python-version }}
26
+ steps:
27
+ - uses: actions/checkout@v7
28
+
29
+ - name: Install uv
30
+ uses: astral-sh/setup-uv@v10.3.0
31
+ with:
32
+ version: "0.13.4"
33
+ enable-cache: true
34
+
35
+ - name: Install the project
36
+ run: uv sync
37
+
38
+ - name: Lint
39
+ run: |
40
+ uv run ruff check .
41
+ uv run ruff format --check .
42
+
43
+ - name: Check the generated code matches the specs
44
+ run: |
45
+ uv run python scripts/generate.py
46
+ git diff --exit-code -- src docs
47
+
48
+ - name: Type check
49
+ run: uv run mypy
50
+
51
+ - name: Test
52
+ run: uv run pytest -q
53
+
54
+ docs:
55
+ runs-on: ubuntu-latest
56
+ steps:
57
+ - uses: actions/checkout@v7
58
+
59
+ - name: Install uv
60
+ uses: astral-sh/setup-uv@v10.3.0
61
+ with:
62
+ version: "0.13.4"
63
+ enable-cache: true
64
+
65
+ - name: Build the documentation site
66
+ run: |
67
+ uv sync --group docs
68
+ uv run zensical build --clean
@@ -0,0 +1,59 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags: ["v*"]
6
+
7
+ env:
8
+ UV_FROZEN: "1"
9
+
10
+ jobs:
11
+ release:
12
+ runs-on: ubuntu-latest
13
+
14
+ # PyPI trusts this workflow over OIDC, so no token is stored; the pypi
15
+ # environment waits for a reviewer, since an upload cannot be taken back
16
+ environment:
17
+ name: pypi
18
+ url: https://pypi.org/project/aioscaleway/
19
+
20
+ permissions:
21
+ contents: read
22
+ id-token: write
23
+
24
+ steps:
25
+ - uses: actions/checkout@v7
26
+
27
+ - name: Install uv
28
+ uses: astral-sh/setup-uv@v10.3.0
29
+ with:
30
+ version: "0.13.4"
31
+ enable-cache: true
32
+
33
+ - name: Check the tag matches the declared version
34
+ run: test "v$(uv version --short)" = "$GITHUB_REF_NAME"
35
+
36
+ - name: Install the project
37
+ run: uv sync
38
+
39
+ - name: Lint
40
+ run: |
41
+ uv run ruff check .
42
+ uv run ruff format --check .
43
+
44
+ - name: Check the generated code matches the specs
45
+ run: |
46
+ uv run python scripts/generate.py
47
+ git diff --exit-code -- src docs
48
+
49
+ - name: Type check
50
+ run: uv run mypy
51
+
52
+ - name: Test
53
+ run: uv run pytest -q
54
+
55
+ - name: Build
56
+ run: uv build
57
+
58
+ - name: Publish to PyPI
59
+ run: uv publish --trusted-publishing always
@@ -0,0 +1,23 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+
12
+ # Tooling caches
13
+ .pytest_cache/
14
+ .ruff_cache/
15
+ .mypy_cache/
16
+
17
+ # Profiler output
18
+ gmon.out
19
+
20
+ # Documentation site build
21
+ site/
22
+ .cache/
23
+ .claude/
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1,34 @@
1
+ # Changelog
2
+
3
+ Notable changes to this project, newest first.
4
+
5
+ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and the project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.1.0] - 2026-11-11
11
+
12
+ First version published on PyPI.
13
+
14
+ ### Added
15
+
16
+ - `Scaleway`, the client, read from the `SCW_*` variables of the Scaleway CLI,
17
+ with `with_options()` to change defaults while sharing connections.
18
+ - Business areas shared with aioovh: `compute`, `storage`, `network`,
19
+ `kubernetes`, `serverless`, `databases`, `analytics`, `messaging`, `ai`,
20
+ `iot`, `email`, `domains`, `web_hosting`, `observability`, `iam`,
21
+ `account`, `billing` and `orders`, covering the 59 API versions published
22
+ on the Scaleway developers website.
23
+ - Collections iterated with `async for`, every page read, narrowed with
24
+ `filter()`, with `pages()` for the totals a page carries; references that act without loading and load when awaited;
25
+ loaded objects that are references too.
26
+ - One method per action, including one per value of the Instance server
27
+ actions (`reboot()`, `power_off()`...).
28
+ - Typed errors under `ScalewayAPIError`, retries with `stamina`, dates as
29
+ `whenever.Instant`, open enumerations, `Money.to_decimal()`.
30
+ - `scw.raw`, the underlying HTTP client, for anything else.
31
+ - Type information shipped with the package (`py.typed`).
32
+
33
+ [Unreleased]: https://gitlab.com/businessagile/libraries/aioscaleway/-/compare/v0.1.0...development
34
+ [0.1.0]: https://gitlab.com/businessagile/libraries/aioscaleway/-/tags/v0.1.0
@@ -0,0 +1,24 @@
1
+ cff-version: 1.2.0
2
+ message: If you use aioscaleway in your work, please cite it as below.
3
+ type: software
4
+ title: aioscaleway
5
+ abstract: Asynchronous, fully typed client for every Scaleway API, on httpx2 and pydantic.
6
+ authors:
7
+ - given-names: Alexandre
8
+ family-names: BERREBI
9
+ email: alexandre.berrebi@businessagile.eu
10
+ affiliation: Business Agile
11
+ website: https://businessagile.eu/en/about
12
+ version: 0.1.0
13
+ date-released: 2026-11-11
14
+ license: MIT
15
+ url: https://aioscaleway.businessagile.eu
16
+ repository-code: https://gitlab.com/businessagile/libraries/aioscaleway
17
+ keywords:
18
+ - scaleway
19
+ - asyncio
20
+ - httpx
21
+ - pydantic
22
+ - sdk
23
+ - api
24
+ - cloud
@@ -0,0 +1,115 @@
1
+ # Contributing
2
+
3
+ ## Issues and pull requests
4
+
5
+ Report bugs, ask questions and propose changes on
6
+ [GitHub](https://github.com/BiBzz/aioscaleway): [issues](https://github.com/BiBzz/aioscaleway/issues) and pull requests against `development`
7
+ are welcome there, and your commits do not need to be signed.
8
+
9
+ The code is reviewed and merged on
10
+ [GitLab](https://gitlab.com/businessagile/libraries/aioscaleway), which mirrors
11
+ itself to GitHub. A pull request is picked up into a GitLab merge request that
12
+ links back to it, keeps you as the author of your commits, and runs the full
13
+ CI. Once merged, the mirror brings the commits to GitHub, which marks the pull
14
+ request as merged; if they had to be rebased, the pull request is closed with
15
+ a link to the commit. Do not expect the GitHub merge button to work: only the
16
+ mirror writes to `development`.
17
+
18
+ ## Setting up
19
+
20
+ The project is managed with [uv](https://docs.astral.sh/uv/), 0.13 or later:
21
+
22
+ ```bash
23
+ uv sync
24
+ ```
25
+
26
+ It uses the interpreter in `.python-version`, the oldest version the library
27
+ supports.
28
+
29
+ ## The checks
30
+
31
+ These are the gates CI runs on every merge request on GitLab, and GitHub
32
+ Actions on every pull request:
33
+
34
+ ```bash
35
+ uv run ruff check .
36
+ uv run ruff format --check .
37
+ uv run python scripts/generate.py && git diff --exit-code -- src docs
38
+ uv run mypy
39
+ uv run pytest -q
40
+ ```
41
+
42
+ The tests run on Python 3.12, 3.13 and 3.14 in CI.
43
+
44
+ ## Generated code
45
+
46
+ Everything under `src/aioscaleway/_operations/` and the area packages
47
+ (`src/aioscaleway/compute/`...) is generated, as are `docs/objects.md` and
48
+ `docs/coverage.md`; each generated file starts with a line saying so. Change
49
+ the generators (`scripts/operations.py`, `scripts/objects.py`), the naming
50
+ table (`mapping.yaml`) or the hand-written runtime (`src/aioscaleway/_*.py`),
51
+ never the output, then regenerate:
52
+
53
+ ```bash
54
+ uv run python scripts/generate.py
55
+ ```
56
+
57
+ The generator stops on a name clash and says which entry of `mapping.yaml` to
58
+ add. Read the diff of `docs/objects.md`: it is the public surface.
59
+
60
+ To pick up what Scaleway changed in its APIs:
61
+
62
+ ```bash
63
+ scripts/fetch_specs.sh
64
+ ```
65
+
66
+ It downloads every OpenAPI file listed on the developers website and
67
+ regenerates. Commit the specs and the generated code together, in a merge
68
+ request of their own: its diff is the list of API changes.
69
+
70
+ ## Commits
71
+
72
+ Work branches off `development`, the default branch, and lands through a
73
+ merge request. Everything in the repository is written in English, and commit
74
+ messages follow the Angular convention: `feat(client): ...`,
75
+ `fix(generator): ...`, `docs: ...`. Maintainers sign their commits and tags.
76
+
77
+ ## The changelog
78
+
79
+ Anything a user of the library would notice goes under `## [Unreleased]` in
80
+ [CHANGELOG.md](CHANGELOG.md), in the merge request that changes the behaviour.
81
+ The format is [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
82
+
83
+ ## Releasing
84
+
85
+ 1. In a merge request, bump `version` in `pyproject.toml`, run `uv lock`, and
86
+ turn the `## [Unreleased]` section into the release:
87
+
88
+ ```bash
89
+ python3 scripts/roll_changelog.py 0.2.0
90
+ ```
91
+
92
+ 2. Once it is merged, from an up to date `development`:
93
+
94
+ ```bash
95
+ scripts/release.sh
96
+ ```
97
+
98
+ It checks the tree matches `origin`, the commit is signed and the
99
+ changelog has the section, replays the checks, signs the `v0.2.0` tag with
100
+ the changelog entry as its message, and pushes it after asking.
101
+
102
+ 3. The GitLab mirror carries the tag to GitHub, where the `Release` workflow
103
+ checks the tag matches the version, replays the checks, then waits for a
104
+ reviewer to approve the `pypi` environment. Approving it is the point of no
105
+ return: a version on PyPI can be yanked, but its files can never be uploaded
106
+ again. The workflow builds the wheel and the sdist and uploads them with
107
+ PyPI trusted publishing, so no token is stored anywhere.
108
+
109
+ ### What PyPI trusts
110
+
111
+ The trusted publisher declared on PyPI for `aioscaleway` is the GitHub repository
112
+ `BiBzz/aioscaleway`, workflow `release.yml`, environment `pypi`. Renaming the
113
+ repository, the workflow or the environment breaks the upload until the
114
+ publisher is updated on PyPI. Tags matching `v*` are protected on GitLab, and
115
+ on GitHub only the mirror may create them.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Alexandre BERREBI
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,205 @@
1
+ Metadata-Version: 2.5
2
+ Name: aioscaleway
3
+ Version: 0.1.0
4
+ Summary: Asynchronous, fully typed client for every Scaleway API, on httpx2 and pydantic
5
+ Project-URL: Homepage, https://aioscaleway.businessagile.eu
6
+ Project-URL: Documentation, https://aioscaleway.businessagile.eu
7
+ Project-URL: Repository, https://gitlab.com/businessagile/libraries/aioscaleway
8
+ Project-URL: Mirror, https://github.com/BiBzz/aioscaleway
9
+ Project-URL: Issues, https://github.com/BiBzz/aioscaleway/issues
10
+ Project-URL: Changelog, https://gitlab.com/businessagile/libraries/aioscaleway/-/blob/development/CHANGELOG.md
11
+ Author-email: Alexandre BERREBI <alexandre.berrebi@businessagile.eu>
12
+ Maintainer-email: Business Agile <contact@businessagile.eu>
13
+ License-Expression: MIT
14
+ License-File: LICENSE
15
+ Keywords: api,asyncio,cloud,httpx,pydantic,scaleway,sdk
16
+ Classifier: Development Status :: 4 - Beta
17
+ Classifier: Framework :: AsyncIO
18
+ Classifier: Framework :: Pydantic :: 2
19
+ Classifier: Intended Audience :: Developers
20
+ Classifier: Operating System :: OS Independent
21
+ Classifier: Programming Language :: Python :: 3
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Programming Language :: Python :: 3.14
25
+ Classifier: Topic :: Internet :: WWW/HTTP
26
+ Classifier: Topic :: System :: Systems Administration
27
+ Classifier: Typing :: Typed
28
+ Requires-Python: >=3.12
29
+ Requires-Dist: httpx2>=2.16.0
30
+ Requires-Dist: pydantic-settings>=2.16.0
31
+ Requires-Dist: pydantic>=2.14.1
32
+ Requires-Dist: stamina>=26.1.0
33
+ Requires-Dist: whenever>=0.11.0
34
+ Description-Content-Type: text/markdown
35
+
36
+ # aioscaleway
37
+
38
+ Asynchronous, fully typed Python client for every
39
+ [Scaleway API](https://www.scaleway.com/en/developers/api/), built on
40
+ [httpx2](https://pypi.org/project/httpx2/), [pydantic](https://docs.pydantic.dev/)
41
+ and [whenever](https://whenever.readthedocs.io/).
42
+
43
+ **Documentation**: https://aioscaleway.businessagile.eu
44
+
45
+ ```python
46
+ from aioscaleway import Scaleway
47
+
48
+ async with Scaleway() as scw: # SCW_* from the environment
49
+ server = await scw.compute.servers(server_id) # load
50
+ print(server.name, server.state)
51
+ await server.reboot()
52
+
53
+ async for server in scw.compute.servers.filter(name="web"):
54
+ await server.power_off()
55
+
56
+ async for line in scw.billing.consumptions.filter(billing_period="2026-10"):
57
+ print(line.sku, line.value.to_decimal() if line.value else 0)
58
+ ```
59
+
60
+ ## Why it exists
61
+
62
+ The official SDK, `scaleway` and `scaleway-async`, sends its requests through
63
+ `requests`: the `async def` methods of `scaleway-async` block the event loop
64
+ while they wait. It also mirrors the API's own layout, one class per product
65
+ and version (`InstanceV1API`, `BillingV2Beta1API`) with flat methods.
66
+
67
+ `aioscaleway` is asynchronous down to the socket and organised around what you
68
+ manipulate rather than where Scaleway files it:
69
+
70
+ - **business areas** shared with its sibling [aioovh](https://pypi.org/project/aioovh/):
71
+ `compute`, `storage`, `network`, `kubernetes`, `databases`, `billing`...;
72
+ - **collections** you iterate with `async for`, narrowed with `filter()`, every
73
+ page read for you;
74
+ - **references** (`scw.compute.servers(server_id)`) that act without a
75
+ request to read them first, and that `await` loads;
76
+ - **objects** that are references too, with typed fields;
77
+ - **one method per action**: `server.reboot()`, `server.power_off()`,
78
+ `server.attach_volume(volume_id=volume)`;
79
+ - **no API version in any name**: the library picks the latest stable version
80
+ of each API, else the latest preview, and says so in the docstring.
81
+
82
+ Everything is generated from the OpenAPI files Scaleway publishes, committed in
83
+ [`specs/`](specs/): 59 API versions and about 1,500 operations. Every
84
+ operation is reachable, either through the objects or through `scw.raw`, and
85
+ [`docs/coverage.md`](docs/coverage.md) says where.
86
+
87
+ ## Installation
88
+
89
+ ```bash
90
+ uv add aioscaleway
91
+ ```
92
+
93
+ Python 3.12 or later.
94
+
95
+ ## Usage
96
+
97
+ ### Client
98
+
99
+ ```python
100
+ scw = Scaleway(
101
+ secret_key="...",
102
+ default_region="fr-par",
103
+ default_zone="fr-par-1",
104
+ default_project_id="...",
105
+ )
106
+ nl = scw.with_options(default_zone="nl-ams-1") # same connections, other defaults
107
+ ```
108
+
109
+ Every value left out is read from the variables of the Scaleway CLI
110
+ (`SCW_SECRET_KEY`, `SCW_DEFAULT_REGION`, `SCW_DEFAULT_ZONE`,
111
+ `SCW_DEFAULT_PROJECT_ID`, `SCW_DEFAULT_ORGANIZATION_ID`, `SCW_API_URL`).
112
+ Use it as an async context manager, or call `await scw.aclose()`.
113
+
114
+ ### Collections, references, objects
115
+
116
+ | You write | You get | Requests |
117
+ | --- | --- | --- |
118
+ | `scw.compute.servers` | a collection | none |
119
+ | `scw.compute.servers.filter(name="web")` | the same collection, narrowed | none |
120
+ | `async for s in scw.compute.servers` | loaded objects | one per page |
121
+ | `scw.compute.servers(server_id)` | a reference | none |
122
+ | `await scw.compute.servers(server_id)` | a loaded object | one |
123
+ | `await scw.compute.servers(server_id).reboot()` | the action's result | one |
124
+ | `await scw.compute.servers.create(name=..., commercial_type=...)` | the created object | one |
125
+
126
+ `pages()` yields each page response instead, for the totals and sums an item
127
+ does not carry (`page.total_discount_untaxed_value` of the billing
128
+ consumptions).
129
+
130
+ A loaded object is also a reference: anything that takes a reference takes an
131
+ object. It cannot load itself when printed or read, because those are
132
+ synchronous; mypy flags a field read on a bare reference. `repr()` tells which
133
+ one you hold.
134
+
135
+ Sub-resources hang off their parent:
136
+
137
+ ```python
138
+ async for pool in scw.kubernetes.clusters(cluster_id).pools:
139
+ print(pool.name, pool.size)
140
+ async for nic in scw.compute.servers(server_id).nics:
141
+ ...
142
+ ```
143
+
144
+ A resource with a zone or a region takes it as a keyword
145
+ (`scw.compute.servers(server_id, zone="nl-ams-1")`,
146
+ `servers.filter(zone="nl-ams-1")`), defaulting to the client's.
147
+
148
+ ### Types
149
+
150
+ Arguments and fields are typed. Enumerations and nested models of an area live
151
+ in its `types` module:
152
+
153
+ ```python
154
+ from aioscaleway.compute.types import ServerState, BootType
155
+ ```
156
+
157
+ Dates are `whenever.Instant`, amounts `Money` (`.to_decimal()`).
158
+ Enumerations are open: a value Scaleway adds later is accepted instead of
159
+ failing the response.
160
+
161
+ ### Errors
162
+
163
+ ```python
164
+ from aioscaleway import ResourceNotFoundError, ScalewayAPIError
165
+
166
+ try:
167
+ await scw.compute.servers(server_id)
168
+ except ResourceNotFoundError:
169
+ ...
170
+ except ScalewayAPIError as error:
171
+ print(error.status_code, error.type, error.message)
172
+ ```
173
+
174
+ `ScalewayTransportError` reports a request that got no answer. Throttling and
175
+ transient failures are retried with [stamina](https://stamina.hynek.me/),
176
+ honouring `Retry-After`; a `POST` is only retried when Scaleway cannot have
177
+ processed it.
178
+
179
+ ### The raw layer
180
+
181
+ `scw.raw` is the underlying client, for a call the objects do not cover:
182
+
183
+ ```python
184
+ await scw.raw.request_json("GET", "/instance/v1/zones/fr-par-1/dashboard")
185
+ ```
186
+
187
+ ## Development
188
+
189
+ See [CONTRIBUTING.md](CONTRIBUTING.md) and
190
+ [docs/architecture.md](docs/architecture.md). The full object tree is in
191
+ [docs/objects.md](docs/objects.md).
192
+
193
+ The source lives on
194
+ [GitLab](https://gitlab.com/businessagile/libraries/aioscaleway), mirrored to
195
+ [GitHub](https://github.com/BiBzz/aioscaleway), where
196
+ [issues](https://github.com/BiBzz/aioscaleway/issues) and pull requests are welcome.
197
+
198
+ ## Author
199
+
200
+ Created by [Alexandre BERREBI](https://businessagile.eu/en/about), maintained by
201
+ [Business Agile](https://businessagile.eu).
202
+
203
+ ## License
204
+
205
+ MIT, see [LICENSE](LICENSE).