yandexcloud 0.288.0__py3-none-any.whl → 0.289.0__py3-none-any.whl

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 (557) hide show
  1. yandex/cloud/access/access_pb2.pyi +288 -0
  2. yandex/cloud/ai/foundation_models/v1/embedding/embedding_service_pb2.pyi +63 -0
  3. yandex/cloud/ai/foundation_models/v1/image_generation/image_generation_pb2.pyi +53 -0
  4. yandex/cloud/ai/foundation_models/v1/image_generation/image_generation_service_pb2.pyi +67 -0
  5. yandex/cloud/ai/foundation_models/v1/text_classification/text_classification_pb2.pyi +55 -0
  6. yandex/cloud/ai/foundation_models/v1/text_classification/text_classification_service_pb2.pyi +122 -0
  7. yandex/cloud/ai/foundation_models/v1/text_common_pb2.pyi +195 -0
  8. yandex/cloud/ai/foundation_models/v1/text_generation/text_generation_service_pb2.pyi +122 -0
  9. yandex/cloud/ai/llm/v1alpha/llm_pb2.pyi +121 -0
  10. yandex/cloud/ai/llm/v1alpha/llm_service_pb2.pyi +280 -0
  11. yandex/cloud/ai/ocr/v1/ocr_pb2.pyi +364 -0
  12. yandex/cloud/ai/ocr/v1/ocr_service_pb2.pyi +92 -0
  13. yandex/cloud/ai/stt/v2/stt_service_pb2.pyi +299 -0
  14. yandex/cloud/ai/stt/v3/stt_pb2.pyi +1437 -0
  15. yandex/cloud/ai/stt/v3/stt_service_pb2.pyi +26 -0
  16. yandex/cloud/ai/translate/v2/translation_pb2.pyi +55 -0
  17. yandex/cloud/ai/translate/v2/translation_service_pb2.pyi +272 -0
  18. yandex/cloud/ai/tts/v3/tts_pb2.pyi +474 -0
  19. yandex/cloud/ai/tts/v3/tts_service_pb2.pyi +8 -0
  20. yandex/cloud/ai/vision/v1/classification_pb2.pyi +55 -0
  21. yandex/cloud/ai/vision/v1/face_detection_pb2.pyi +51 -0
  22. yandex/cloud/ai/vision/v1/image_copy_search_pb2.pyi +63 -0
  23. yandex/cloud/ai/vision/v1/primitives_pb2.pyi +51 -0
  24. yandex/cloud/ai/vision/v1/text_detection_pb2.pyi +196 -0
  25. yandex/cloud/ai/vision/v1/vision_service_pb2.pyi +284 -0
  26. yandex/cloud/ai/vision/v2/image_classifier_pb2.pyi +159 -0
  27. yandex/cloud/ai/vision/v2/image_classifier_service_pb2.pyi +8 -0
  28. yandex/cloud/ai/vision/v2/image_pb2.pyi +57 -0
  29. yandex/cloud/api/operation_pb2.pyi +47 -0
  30. yandex/cloud/apploadbalancer/v1/backend_group_pb2.pyi +944 -0
  31. yandex/cloud/apploadbalancer/v1/backend_group_service_pb2.pyi +558 -0
  32. yandex/cloud/apploadbalancer/v1/http_router_pb2.pyi +92 -0
  33. yandex/cloud/apploadbalancer/v1/http_router_service_pb2.pyi +389 -0
  34. yandex/cloud/apploadbalancer/v1/load_balancer_pb2.pyi +837 -0
  35. yandex/cloud/apploadbalancer/v1/load_balancer_service_pb2.pyi +1073 -0
  36. yandex/cloud/apploadbalancer/v1/logging_pb2.pyi +117 -0
  37. yandex/cloud/apploadbalancer/v1/payload_pb2.pyi +31 -0
  38. yandex/cloud/apploadbalancer/v1/target_group_pb2.pyi +117 -0
  39. yandex/cloud/apploadbalancer/v1/target_group_service_pb2.pyi +450 -0
  40. yandex/cloud/apploadbalancer/v1/tls_pb2.pyi +34 -0
  41. yandex/cloud/apploadbalancer/v1/virtual_host_pb2.pyi +798 -0
  42. yandex/cloud/apploadbalancer/v1/virtual_host_service_pb2.pyi +501 -0
  43. yandex/cloud/audittrails/v1/trail_pb2.pyi +449 -0
  44. yandex/cloud/audittrails/v1/trail_service_pb2.pyi +363 -0
  45. yandex/cloud/backup/v1/backup_pb2.pyi +468 -0
  46. yandex/cloud/backup/v1/backup_service_pb2.pyi +454 -0
  47. yandex/cloud/backup/v1/policy_pb2.pyi +742 -0
  48. yandex/cloud/backup/v1/policy_service_pb2.pyi +342 -0
  49. yandex/cloud/backup/v1/provider_service_pb2.pyi +90 -0
  50. yandex/cloud/backup/v1/resource_pb2.pyi +273 -0
  51. yandex/cloud/backup/v1/resource_service_pb2.pyi +357 -0
  52. yandex/cloud/billing/v1/billable_object_pb2.pyi +65 -0
  53. yandex/cloud/billing/v1/billing_account_pb2.pyi +62 -0
  54. yandex/cloud/billing/v1/billing_account_service_pb2.pyi +190 -0
  55. yandex/cloud/billing/v1/budget_pb2.pyi +409 -0
  56. yandex/cloud/billing/v1/budget_service_pb2.pyi +151 -0
  57. yandex/cloud/billing/v1/customer_pb2.pyi +79 -0
  58. yandex/cloud/billing/v1/customer_service_pb2.pyi +187 -0
  59. yandex/cloud/billing/v1/service_pb2.pyi +37 -0
  60. yandex/cloud/billing/v1/service_service_pb2.pyi +96 -0
  61. yandex/cloud/billing/v1/sku_pb2.pyi +173 -0
  62. yandex/cloud/billing/v1/sku_service_pb2.pyi +128 -0
  63. yandex/cloud/cdn/v1/cache_service_pb2.pyi +95 -0
  64. yandex/cloud/cdn/v1/origin_group_pb2.pyi +54 -0
  65. yandex/cloud/cdn/v1/origin_group_service_pb2.pyi +252 -0
  66. yandex/cloud/cdn/v1/origin_pb2.pyi +186 -0
  67. yandex/cloud/cdn/v1/origin_service_pb2.pyi +262 -0
  68. yandex/cloud/cdn/v1/provider_service_pb2.pyi +86 -0
  69. yandex/cloud/cdn/v1/raw_logs_pb2.pyi +80 -0
  70. yandex/cloud/cdn/v1/raw_logs_service_pb2.pyi +207 -0
  71. yandex/cloud/cdn/v1/resource_pb2.pyi +1067 -0
  72. yandex/cloud/cdn/v1/resource_service_pb2.pyi +401 -0
  73. yandex/cloud/cdn/v1/rule_pb2.pyi +45 -0
  74. yandex/cloud/cdn/v1/rule_service_pb2.pyi +211 -0
  75. yandex/cloud/certificatemanager/v1/certificate_content_service_pb2.pyi +87 -0
  76. yandex/cloud/certificatemanager/v1/certificate_pb2.pyi +381 -0
  77. yandex/cloud/certificatemanager/v1/certificate_service_pb2.pyi +515 -0
  78. yandex/cloud/compute/v1/disk_pb2.pyi +202 -0
  79. yandex/cloud/compute/v1/disk_placement_group_pb2.pyi +143 -0
  80. yandex/cloud/compute/v1/disk_placement_group_service_pb2.pyi +425 -0
  81. yandex/cloud/compute/v1/disk_service_pb2.pyi +561 -0
  82. yandex/cloud/compute/v1/disk_type_pb2.pyi +39 -0
  83. yandex/cloud/compute/v1/disk_type_service_pb2.pyi +86 -0
  84. yandex/cloud/compute/v1/filesystem_pb2.pyi +137 -0
  85. yandex/cloud/compute/v1/filesystem_service_pb2.pyi +394 -0
  86. yandex/cloud/compute/v1/gpu_cluster_pb2.pyi +139 -0
  87. yandex/cloud/compute/v1/gpu_cluster_service_pb2.pyi +439 -0
  88. yandex/cloud/compute/v1/host_group_pb2.pyi +224 -0
  89. yandex/cloud/compute/v1/host_group_service_pb2.pyi +556 -0
  90. yandex/cloud/compute/v1/host_type_pb2.pyi +48 -0
  91. yandex/cloud/compute/v1/host_type_service_pb2.pyi +87 -0
  92. yandex/cloud/compute/v1/image_pb2.pyi +188 -0
  93. yandex/cloud/compute/v1/image_service_pb2.pyi +430 -0
  94. yandex/cloud/compute/v1/instance_pb2.pyi +798 -0
  95. yandex/cloud/compute/v1/instance_service_pb2.pyi +1806 -0
  96. yandex/cloud/compute/v1/instancegroup/instance_group_pb2.pyi +2064 -0
  97. yandex/cloud/compute/v1/instancegroup/instance_group_service_pb2.pyi +1004 -0
  98. yandex/cloud/compute/v1/maintenance_pb2.pyi +38 -0
  99. yandex/cloud/compute/v1/placement_group_pb2.pyi +115 -0
  100. yandex/cloud/compute/v1/placement_group_service_pb2.pyi +423 -0
  101. yandex/cloud/compute/v1/snapshot_pb2.pyi +139 -0
  102. yandex/cloud/compute/v1/snapshot_schedule_pb2.pyi +221 -0
  103. yandex/cloud/compute/v1/snapshot_schedule_service_pb2.pyi +678 -0
  104. yandex/cloud/compute/v1/snapshot_service_pb2.pyi +350 -0
  105. yandex/cloud/compute/v1/zone_pb2.pyi +63 -0
  106. yandex/cloud/compute/v1/zone_service_pb2.pyi +84 -0
  107. yandex/cloud/containerregistry/v1/blob_pb2.pyi +45 -0
  108. yandex/cloud/containerregistry/v1/image_pb2.pyi +75 -0
  109. yandex/cloud/containerregistry/v1/image_service_pb2.pyi +160 -0
  110. yandex/cloud/containerregistry/v1/ip_permission_pb2.pyi +95 -0
  111. yandex/cloud/containerregistry/v1/lifecycle_policy_pb2.pyi +131 -0
  112. yandex/cloud/containerregistry/v1/lifecycle_policy_service_pb2.pyi +479 -0
  113. yandex/cloud/containerregistry/v1/registry_pb2.pyi +103 -0
  114. yandex/cloud/containerregistry/v1/registry_service_pb2.pyi +386 -0
  115. yandex/cloud/containerregistry/v1/repository_pb2.pyi +35 -0
  116. yandex/cloud/containerregistry/v1/repository_service_pb2.pyi +202 -0
  117. yandex/cloud/containerregistry/v1/scan_policy_pb2.pyi +140 -0
  118. yandex/cloud/containerregistry/v1/scan_policy_service_pb2.pyi +177 -0
  119. yandex/cloud/containerregistry/v1/scanner_pb2.pyi +254 -0
  120. yandex/cloud/containerregistry/v1/scanner_service_pb2.pyi +234 -0
  121. yandex/cloud/dataproc/manager/v1/job_pb2.pyi +608 -0
  122. yandex/cloud/dataproc/manager/v1/job_service_pb2.pyi +201 -0
  123. yandex/cloud/dataproc/manager/v1/manager_service_pb2.pyi +449 -0
  124. yandex/cloud/dataproc/v1/cluster_pb2.pyi +351 -0
  125. yandex/cloud/dataproc/v1/cluster_service_pb2.pyi +764 -0
  126. yandex/cloud/dataproc/v1/common_pb2.pyi +75 -0
  127. yandex/cloud/dataproc/v1/job_pb2.pyi +526 -0
  128. yandex/cloud/dataproc/v1/job_service_pb2.pyi +250 -0
  129. yandex/cloud/dataproc/v1/resource_preset_pb2.pyi +45 -0
  130. yandex/cloud/dataproc/v1/resource_preset_service_pb2.pyi +83 -0
  131. yandex/cloud/dataproc/v1/subcluster_pb2.pyi +248 -0
  132. yandex/cloud/dataproc/v1/subcluster_service_pb2.pyi +301 -0
  133. yandex/cloud/datasphere/v1/app_token_service_pb2.pyi +27 -0
  134. yandex/cloud/datasphere/v1/folder_budget_service_pb2.pyi +101 -0
  135. yandex/cloud/datasphere/v1/node_execution_error_details_pb2.pyi +41 -0
  136. yandex/cloud/datasphere/v1/node_service_pb2.pyi +104 -0
  137. yandex/cloud/datasphere/v1/project_data_service_pb2.pyi +122 -0
  138. yandex/cloud/datasphere/v1/project_pb2.pyi +149 -0
  139. yandex/cloud/datasphere/v1/project_service_pb2.pyi +606 -0
  140. yandex/cloud/datasphere/v2/community_pb2.pyi +75 -0
  141. yandex/cloud/datasphere/v2/community_service_pb2.pyi +384 -0
  142. yandex/cloud/datasphere/v2/dataset_pb2.pyi +159 -0
  143. yandex/cloud/datasphere/v2/dataset_service_pb2.pyi +47 -0
  144. yandex/cloud/datasphere/v2/docker_image_service_pb2.pyi +29 -0
  145. yandex/cloud/datasphere/v2/jobs/jobs_pb2.pyi +484 -0
  146. yandex/cloud/datasphere/v2/jobs/project_job_service_pb2.pyi +694 -0
  147. yandex/cloud/datasphere/v2/project_pb2.pyi +265 -0
  148. yandex/cloud/datasphere/v2/project_service_pb2.pyi +815 -0
  149. yandex/cloud/datasphere/v2/resource_types_pb2.pyi +46 -0
  150. yandex/cloud/datasphere/v2/restrictions_pb2.pyi +127 -0
  151. yandex/cloud/datasphere/v2/s3_service_pb2.pyi +47 -0
  152. yandex/cloud/datasphere/v2/secret_pb2.pyi +102 -0
  153. yandex/cloud/datasphere/v2/user_pb2.pyi +43 -0
  154. yandex/cloud/datatransfer/v1/endpoint/clickhouse_pb2.pyi +295 -0
  155. yandex/cloud/datatransfer/v1/endpoint/common_pb2.pyi +324 -0
  156. yandex/cloud/datatransfer/v1/endpoint/kafka_pb2.pyi +294 -0
  157. yandex/cloud/datatransfer/v1/endpoint/metrika_pb2.pyi +84 -0
  158. yandex/cloud/datatransfer/v1/endpoint/mongo_pb2.pyi +191 -0
  159. yandex/cloud/datatransfer/v1/endpoint/mysql_pb2.pyi +261 -0
  160. yandex/cloud/datatransfer/v1/endpoint/parsers_pb2.pyi +91 -0
  161. yandex/cloud/datatransfer/v1/endpoint/postgres_pb2.pyi +326 -0
  162. yandex/cloud/datatransfer/v1/endpoint/serializers_pb2.pyi +105 -0
  163. yandex/cloud/datatransfer/v1/endpoint/ydb_pb2.pyi +154 -0
  164. yandex/cloud/datatransfer/v1/endpoint/yds_pb2.pyi +155 -0
  165. yandex/cloud/datatransfer/v1/endpoint_pb2.pyi +144 -0
  166. yandex/cloud/datatransfer/v1/endpoint_service_pb2.pyi +262 -0
  167. yandex/cloud/datatransfer/v1/transfer_pb2.pyi +689 -0
  168. yandex/cloud/datatransfer/v1/transfer_service_pb2.pyi +338 -0
  169. yandex/cloud/dns/v1/dns_zone_pb2.pyi +163 -0
  170. yandex/cloud/dns/v1/dns_zone_service_pb2.pyi +655 -0
  171. yandex/cloud/endpoint/api_endpoint_pb2.pyi +29 -0
  172. yandex/cloud/endpoint/api_endpoint_service_pb2.pyi +66 -0
  173. yandex/cloud/iam/v1/api_key_pb2.pyi +61 -0
  174. yandex/cloud/iam/v1/api_key_service_pb2.pyi +293 -0
  175. yandex/cloud/iam/v1/awscompatibility/access_key_pb2.pyi +61 -0
  176. yandex/cloud/iam/v1/awscompatibility/access_key_service_pb2.pyi +283 -0
  177. yandex/cloud/iam/v1/iam_token_service_pb2.pyi +80 -0
  178. yandex/cloud/iam/v1/key_pb2.pyi +90 -0
  179. yandex/cloud/iam/v1/key_service_pb2.pyi +320 -0
  180. yandex/cloud/iam/v1/resource_pb2.pyi +33 -0
  181. yandex/cloud/iam/v1/role_pb2.pyi +33 -0
  182. yandex/cloud/iam/v1/role_service_pb2.pyi +92 -0
  183. yandex/cloud/iam/v1/service_account_pb2.pyi +75 -0
  184. yandex/cloud/iam/v1/service_account_service_pb2.pyi +335 -0
  185. yandex/cloud/iam/v1/service_control_pb2.pyi +98 -0
  186. yandex/cloud/iam/v1/service_control_service_pb2.pyi +310 -0
  187. yandex/cloud/iam/v1/user_account_pb2.pyi +133 -0
  188. yandex/cloud/iam/v1/user_account_service_pb2.pyi +27 -0
  189. yandex/cloud/iam/v1/yandex_passport_user_account_service_pb2.pyi +27 -0
  190. yandex/cloud/iot/broker/v1/broker_data_service_pb2.pyi +45 -0
  191. yandex/cloud/iot/broker/v1/broker_pb2.pyi +209 -0
  192. yandex/cloud/iot/broker/v1/broker_service_pb2.pyi +627 -0
  193. yandex/cloud/iot/devices/v1/device_data_service_pb2.pyi +45 -0
  194. yandex/cloud/iot/devices/v1/device_pb2.pyi +233 -0
  195. yandex/cloud/iot/devices/v1/device_service_pb2.pyi +670 -0
  196. yandex/cloud/iot/devices/v1/registry_data_service_pb2.pyi +45 -0
  197. yandex/cloud/iot/devices/v1/registry_pb2.pyi +291 -0
  198. yandex/cloud/iot/devices/v1/registry_service_pb2.pyi +849 -0
  199. yandex/cloud/k8s/v1/cluster_pb2.pyi +610 -0
  200. yandex/cloud/k8s/v1/cluster_service_pb2.pyi +904 -0
  201. yandex/cloud/k8s/v1/maintenance_pb2.pyi +132 -0
  202. yandex/cloud/k8s/v1/node_group_pb2.pyi +365 -0
  203. yandex/cloud/k8s/v1/node_group_service_pb2.pyi +566 -0
  204. yandex/cloud/k8s/v1/node_pb2.pyi +784 -0
  205. yandex/cloud/k8s/v1/version_pb2.pyi +68 -0
  206. yandex/cloud/k8s/v1/version_service_pb2.pyi +64 -0
  207. yandex/cloud/kms/v1/asymmetricencryption/asymmetric_encryption_crypto_service_pb2.pyi +92 -0
  208. yandex/cloud/kms/v1/asymmetricencryption/asymmetric_encryption_key_pb2.pyi +149 -0
  209. yandex/cloud/kms/v1/asymmetricencryption/asymmetric_encryption_key_service_pb2.pyi +335 -0
  210. yandex/cloud/kms/v1/asymmetricsignature/asymmetric_signature_crypto_service_pb2.pyi +140 -0
  211. yandex/cloud/kms/v1/asymmetricsignature/asymmetric_signature_key_pb2.pyi +189 -0
  212. yandex/cloud/kms/v1/asymmetricsignature/asymmetric_signature_key_service_pb2.pyi +335 -0
  213. yandex/cloud/kms/v1/symmetric_crypto_service_pb2.pyi +270 -0
  214. yandex/cloud/kms/v1/symmetric_key_pb2.pyi +260 -0
  215. yandex/cloud/kms/v1/symmetric_key_service_pb2.pyi +591 -0
  216. yandex/cloud/loadbalancer/v1/health_check_pb2.pyi +102 -0
  217. yandex/cloud/loadbalancer/v1/network_load_balancer_pb2.pyi +364 -0
  218. yandex/cloud/loadbalancer/v1/network_load_balancer_service_pb2.pyi +747 -0
  219. yandex/cloud/loadbalancer/v1/target_group_pb2.pyi +109 -0
  220. yandex/cloud/loadbalancer/v1/target_group_service_pb2.pyi +434 -0
  221. yandex/cloud/loadtesting/agent/v1/agent_pb2.pyi +26 -0
  222. yandex/cloud/loadtesting/agent/v1/agent_registration_service_pb2.pyi +83 -0
  223. yandex/cloud/loadtesting/agent/v1/agent_service_pb2.pyi +79 -0
  224. yandex/cloud/loadtesting/agent/v1/job_service_pb2.pyi +309 -0
  225. yandex/cloud/loadtesting/agent/v1/monitoring_service_pb2.pyi +102 -0
  226. yandex/cloud/loadtesting/agent/v1/test_pb2.pyi +181 -0
  227. yandex/cloud/loadtesting/agent/v1/test_service_pb2.pyi +105 -0
  228. yandex/cloud/loadtesting/agent/v1/trail_service_pb2.pyi +178 -0
  229. yandex/cloud/loadtesting/api/v1/agent/agent_pb2.pyi +91 -0
  230. yandex/cloud/loadtesting/api/v1/agent/create_compute_instance_pb2.pyi +120 -0
  231. yandex/cloud/loadtesting/api/v1/agent/status_pb2.pyi +97 -0
  232. yandex/cloud/loadtesting/api/v1/agent_service_pb2.pyi +301 -0
  233. yandex/cloud/loadtesting/api/v1/common/quantiles_pb2.pyi +61 -0
  234. yandex/cloud/loadtesting/api/v1/common/tag_pb2.pyi +33 -0
  235. yandex/cloud/loadtesting/api/v1/config/config_pb2.pyi +53 -0
  236. yandex/cloud/loadtesting/api/v1/config_service_pb2.pyi +165 -0
  237. yandex/cloud/loadtesting/api/v1/report/status_pb2.pyi +45 -0
  238. yandex/cloud/loadtesting/api/v1/report/table/report_pb2.pyi +79 -0
  239. yandex/cloud/loadtesting/api/v1/report_service_pb2.pyi +78 -0
  240. yandex/cloud/loadtesting/api/v1/test/agent_selector_pb2.pyi +42 -0
  241. yandex/cloud/loadtesting/api/v1/test/artifact_settings_pb2.pyi +61 -0
  242. yandex/cloud/loadtesting/api/v1/test/details_pb2.pyi +54 -0
  243. yandex/cloud/loadtesting/api/v1/test/file_pointer_pb2.pyi +34 -0
  244. yandex/cloud/loadtesting/api/v1/test/imbalance_point_pb2.pyi +37 -0
  245. yandex/cloud/loadtesting/api/v1/test/object_storage_pb2.pyi +33 -0
  246. yandex/cloud/loadtesting/api/v1/test/single_agent_configuration_pb2.pyi +74 -0
  247. yandex/cloud/loadtesting/api/v1/test/status_pb2.pyi +96 -0
  248. yandex/cloud/loadtesting/api/v1/test/summary_pb2.pyi +96 -0
  249. yandex/cloud/loadtesting/api/v1/test/test_pb2.pyi +65 -0
  250. yandex/cloud/loadtesting/api/v1/test_service_pb2.pyi +233 -0
  251. yandex/cloud/lockbox/v1/payload_pb2.pyi +61 -0
  252. yandex/cloud/lockbox/v1/payload_service_pb2.pyi +31 -0
  253. yandex/cloud/lockbox/v1/secret_pb2.pyi +209 -0
  254. yandex/cloud/lockbox/v1/secret_service_pb2.pyi +634 -0
  255. yandex/cloud/logging/v1/export_pb2.pyi +121 -0
  256. yandex/cloud/logging/v1/export_service_pb2.pyi +474 -0
  257. yandex/cloud/logging/v1/log_entry_pb2.pyi +289 -0
  258. yandex/cloud/logging/v1/log_group_pb2.pyi +143 -0
  259. yandex/cloud/logging/v1/log_group_service_pb2.pyi +479 -0
  260. yandex/cloud/logging/v1/log_ingestion_service_pb2.pyi +98 -0
  261. yandex/cloud/logging/v1/log_reading_service_pb2.pyi +171 -0
  262. yandex/cloud/logging/v1/log_resource_pb2.pyi +65 -0
  263. yandex/cloud/logging/v1/sink_pb2.pyi +124 -0
  264. yandex/cloud/logging/v1/sink_service_pb2.pyi +390 -0
  265. yandex/cloud/marketplace/licensemanager/v1/instance_pb2.pyi +135 -0
  266. yandex/cloud/marketplace/licensemanager/v1/instance_service_pb2.pyi +102 -0
  267. yandex/cloud/marketplace/licensemanager/v1/lock_pb2.pyi +99 -0
  268. yandex/cloud/marketplace/licensemanager/v1/lock_service_pb2.pyi +230 -0
  269. yandex/cloud/marketplace/licensemanager/v1/template_pb2.pyi +107 -0
  270. yandex/cloud/marketplace/metering/v1/image_product_usage_service_pb2.pyi +64 -0
  271. yandex/cloud/marketplace/metering/v1/usage_record_pb2.pyi +111 -0
  272. yandex/cloud/marketplace/v1/metering/image_product_usage_service_pb2.pyi +64 -0
  273. yandex/cloud/marketplace/v1/metering/usage_record_pb2.pyi +111 -0
  274. yandex/cloud/mdb/clickhouse/v1/backup_pb2.pyi +97 -0
  275. yandex/cloud/mdb/clickhouse/v1/backup_service_pb2.pyi +125 -0
  276. yandex/cloud/mdb/clickhouse/v1/cluster_pb2.pyi +747 -0
  277. yandex/cloud/mdb/clickhouse/v1/cluster_service_pb2.pyi +2274 -0
  278. yandex/cloud/mdb/clickhouse/v1/config/clickhouse_pb2.pyi +1473 -0
  279. yandex/cloud/mdb/clickhouse/v1/database_pb2.pyi +51 -0
  280. yandex/cloud/mdb/clickhouse/v1/database_service_pb2.pyi +184 -0
  281. yandex/cloud/mdb/clickhouse/v1/format_schema_pb2.pyi +67 -0
  282. yandex/cloud/mdb/clickhouse/v1/format_schema_service_pb2.pyi +246 -0
  283. yandex/cloud/mdb/clickhouse/v1/maintenance_pb2.pyi +129 -0
  284. yandex/cloud/mdb/clickhouse/v1/ml_model_pb2.pyi +63 -0
  285. yandex/cloud/mdb/clickhouse/v1/ml_model_service_pb2.pyi +241 -0
  286. yandex/cloud/mdb/clickhouse/v1/resource_preset_pb2.pyi +45 -0
  287. yandex/cloud/mdb/clickhouse/v1/resource_preset_service_pb2.pyi +83 -0
  288. yandex/cloud/mdb/clickhouse/v1/user_pb2.pyi +1717 -0
  289. yandex/cloud/mdb/clickhouse/v1/user_service_pb2.pyi +353 -0
  290. yandex/cloud/mdb/clickhouse/v1/version_pb2.pyi +43 -0
  291. yandex/cloud/mdb/clickhouse/v1/versions_service_pb2.pyi +67 -0
  292. yandex/cloud/mdb/elasticsearch/v1/auth_pb2.pyi +139 -0
  293. yandex/cloud/mdb/elasticsearch/v1/auth_service_pb2.pyi +247 -0
  294. yandex/cloud/mdb/elasticsearch/v1/backup_pb2.pyi +69 -0
  295. yandex/cloud/mdb/elasticsearch/v1/backup_service_pb2.pyi +87 -0
  296. yandex/cloud/mdb/elasticsearch/v1/cluster_pb2.pyi +544 -0
  297. yandex/cloud/mdb/elasticsearch/v1/cluster_service_pb2.pyi +1422 -0
  298. yandex/cloud/mdb/elasticsearch/v1/config/elasticsearch_pb2.pyi +105 -0
  299. yandex/cloud/mdb/elasticsearch/v1/extension_pb2.pyi +67 -0
  300. yandex/cloud/mdb/elasticsearch/v1/extension_service_pb2.pyi +223 -0
  301. yandex/cloud/mdb/elasticsearch/v1/maintenance_pb2.pyi +115 -0
  302. yandex/cloud/mdb/elasticsearch/v1/resource_preset_pb2.pyi +45 -0
  303. yandex/cloud/mdb/elasticsearch/v1/resource_preset_service_pb2.pyi +85 -0
  304. yandex/cloud/mdb/elasticsearch/v1/user_pb2.pyi +53 -0
  305. yandex/cloud/mdb/elasticsearch/v1/user_service_pb2.pyi +247 -0
  306. yandex/cloud/mdb/greenplum/v1/backup_pb2.pyi +110 -0
  307. yandex/cloud/mdb/greenplum/v1/backup_service_pb2.pyi +122 -0
  308. yandex/cloud/mdb/greenplum/v1/cluster_pb2.pyi +519 -0
  309. yandex/cloud/mdb/greenplum/v1/cluster_service_pb2.pyi +1274 -0
  310. yandex/cloud/mdb/greenplum/v1/config_pb2.pyi +961 -0
  311. yandex/cloud/mdb/greenplum/v1/hba_rule_pb2.pyi +101 -0
  312. yandex/cloud/mdb/greenplum/v1/hba_rule_service_pb2.pyi +184 -0
  313. yandex/cloud/mdb/greenplum/v1/host_pb2.pyi +127 -0
  314. yandex/cloud/mdb/greenplum/v1/maintenance_pb2.pyi +145 -0
  315. yandex/cloud/mdb/greenplum/v1/pxf_pb2.pyi +539 -0
  316. yandex/cloud/mdb/greenplum/v1/pxf_service_pb2.pyi +164 -0
  317. yandex/cloud/mdb/greenplum/v1/resource_preset_pb2.pyi +89 -0
  318. yandex/cloud/mdb/greenplum/v1/resource_preset_service_pb2.pyi +91 -0
  319. yandex/cloud/mdb/kafka/v1/cluster_pb2.pyi +844 -0
  320. yandex/cloud/mdb/kafka/v1/cluster_service_pb2.pyi +915 -0
  321. yandex/cloud/mdb/kafka/v1/common_pb2.pyi +71 -0
  322. yandex/cloud/mdb/kafka/v1/connector_pb2.pyi +690 -0
  323. yandex/cloud/mdb/kafka/v1/connector_service_pb2.pyi +342 -0
  324. yandex/cloud/mdb/kafka/v1/maintenance_pb2.pyi +115 -0
  325. yandex/cloud/mdb/kafka/v1/resource_preset_pb2.pyi +45 -0
  326. yandex/cloud/mdb/kafka/v1/resource_preset_service_pb2.pyi +85 -0
  327. yandex/cloud/mdb/kafka/v1/topic_pb2.pyi +375 -0
  328. yandex/cloud/mdb/kafka/v1/topic_service_pb2.pyi +252 -0
  329. yandex/cloud/mdb/kafka/v1/user_pb2.pyi +137 -0
  330. yandex/cloud/mdb/kafka/v1/user_service_pb2.pyi +360 -0
  331. yandex/cloud/mdb/mongodb/v1/backup_pb2.pyi +97 -0
  332. yandex/cloud/mdb/mongodb/v1/backup_service_pb2.pyi +121 -0
  333. yandex/cloud/mdb/mongodb/v1/cluster_pb2.pyi +1890 -0
  334. yandex/cloud/mdb/mongodb/v1/cluster_service_pb2.pyi +3146 -0
  335. yandex/cloud/mdb/mongodb/v1/config/mongodb3_6_pb2.pyi +536 -0
  336. yandex/cloud/mdb/mongodb/v1/config/mongodb4_0_pb2.pyi +522 -0
  337. yandex/cloud/mdb/mongodb/v1/config/mongodb4_2_pb2.pyi +693 -0
  338. yandex/cloud/mdb/mongodb/v1/config/mongodb4_4_enterprise_pb2.pyi +781 -0
  339. yandex/cloud/mdb/mongodb/v1/config/mongodb4_4_pb2.pyi +693 -0
  340. yandex/cloud/mdb/mongodb/v1/config/mongodb5_0_enterprise_pb2.pyi +794 -0
  341. yandex/cloud/mdb/mongodb/v1/config/mongodb5_0_pb2.pyi +699 -0
  342. yandex/cloud/mdb/mongodb/v1/config/mongodb6_0_enterprise_pb2.pyi +794 -0
  343. yandex/cloud/mdb/mongodb/v1/config/mongodb6_0_pb2.pyi +699 -0
  344. yandex/cloud/mdb/mongodb/v1/database_pb2.pyi +51 -0
  345. yandex/cloud/mdb/mongodb/v1/database_service_pb2.pyi +184 -0
  346. yandex/cloud/mdb/mongodb/v1/maintenance_pb2.pyi +129 -0
  347. yandex/cloud/mdb/mongodb/v1/resource_preset_pb2.pyi +45 -0
  348. yandex/cloud/mdb/mongodb/v1/resource_preset_service_pb2.pyi +84 -0
  349. yandex/cloud/mdb/mongodb/v1/user_pb2.pyi +91 -0
  350. yandex/cloud/mdb/mongodb/v1/user_service_pb2.pyi +347 -0
  351. yandex/cloud/mdb/mysql/v1/backup_pb2.pyi +111 -0
  352. yandex/cloud/mdb/mysql/v1/backup_service_pb2.pyi +129 -0
  353. yandex/cloud/mdb/mysql/v1/cluster_pb2.pyi +601 -0
  354. yandex/cloud/mdb/mysql/v1/cluster_service_pb2.pyi +1537 -0
  355. yandex/cloud/mdb/mysql/v1/config/mysql5_7_pb2.pyi +1023 -0
  356. yandex/cloud/mdb/mysql/v1/config/mysql8_0_pb2.pyi +969 -0
  357. yandex/cloud/mdb/mysql/v1/database_pb2.pyi +52 -0
  358. yandex/cloud/mdb/mysql/v1/database_service_pb2.pyi +192 -0
  359. yandex/cloud/mdb/mysql/v1/maintenance_pb2.pyi +129 -0
  360. yandex/cloud/mdb/mysql/v1/resource_preset_pb2.pyi +49 -0
  361. yandex/cloud/mdb/mysql/v1/resource_preset_service_pb2.pyi +86 -0
  362. yandex/cloud/mdb/mysql/v1/user_pb2.pyi +357 -0
  363. yandex/cloud/mdb/mysql/v1/user_service_pb2.pyi +378 -0
  364. yandex/cloud/mdb/mysql/v1alpha/backup_pb2.pyi +53 -0
  365. yandex/cloud/mdb/mysql/v1alpha/backup_service_pb2.pyi +89 -0
  366. yandex/cloud/mdb/mysql/v1alpha/cluster_pb2.pyi +470 -0
  367. yandex/cloud/mdb/mysql/v1alpha/cluster_service_pb2.pyi +1025 -0
  368. yandex/cloud/mdb/mysql/v1alpha/config/mysql5_7_pb2.pyi +87 -0
  369. yandex/cloud/mdb/mysql/v1alpha/database_pb2.pyi +49 -0
  370. yandex/cloud/mdb/mysql/v1alpha/database_service_pb2.pyi +184 -0
  371. yandex/cloud/mdb/mysql/v1alpha/resource_preset_pb2.pyi +45 -0
  372. yandex/cloud/mdb/mysql/v1alpha/resource_preset_service_pb2.pyi +83 -0
  373. yandex/cloud/mdb/mysql/v1alpha/user_pb2.pyi +185 -0
  374. yandex/cloud/mdb/mysql/v1alpha/user_service_pb2.pyi +312 -0
  375. yandex/cloud/mdb/opensearch/v1/auth_pb2.pyi +69 -0
  376. yandex/cloud/mdb/opensearch/v1/backup_pb2.pyi +69 -0
  377. yandex/cloud/mdb/opensearch/v1/backup_service_pb2.pyi +91 -0
  378. yandex/cloud/mdb/opensearch/v1/cluster_pb2.pyi +726 -0
  379. yandex/cloud/mdb/opensearch/v1/cluster_service_pb2.pyi +1827 -0
  380. yandex/cloud/mdb/opensearch/v1/config/opensearch_pb2.pyi +63 -0
  381. yandex/cloud/mdb/opensearch/v1/maintenance_pb2.pyi +155 -0
  382. yandex/cloud/mdb/opensearch/v1/resource_preset_pb2.pyi +45 -0
  383. yandex/cloud/mdb/opensearch/v1/resource_preset_service_pb2.pyi +87 -0
  384. yandex/cloud/mdb/postgresql/v1/backup_pb2.pyi +139 -0
  385. yandex/cloud/mdb/postgresql/v1/backup_service_pb2.pyi +125 -0
  386. yandex/cloud/mdb/postgresql/v1/cluster_pb2.pyi +935 -0
  387. yandex/cloud/mdb/postgresql/v1/cluster_service_pb2.pyi +1708 -0
  388. yandex/cloud/mdb/postgresql/v1/config/host10_1c_pb2.pyi +507 -0
  389. yandex/cloud/mdb/postgresql/v1/config/host10_pb2.pyi +507 -0
  390. yandex/cloud/mdb/postgresql/v1/config/host11_1c_pb2.pyi +501 -0
  391. yandex/cloud/mdb/postgresql/v1/config/host11_pb2.pyi +501 -0
  392. yandex/cloud/mdb/postgresql/v1/config/host12_1c_pb2.pyi +501 -0
  393. yandex/cloud/mdb/postgresql/v1/config/host12_pb2.pyi +501 -0
  394. yandex/cloud/mdb/postgresql/v1/config/host13_1c_pb2.pyi +501 -0
  395. yandex/cloud/mdb/postgresql/v1/config/host13_pb2.pyi +501 -0
  396. yandex/cloud/mdb/postgresql/v1/config/host14_1c_pb2.pyi +497 -0
  397. yandex/cloud/mdb/postgresql/v1/config/host14_pb2.pyi +497 -0
  398. yandex/cloud/mdb/postgresql/v1/config/host15_1c_pb2.pyi +497 -0
  399. yandex/cloud/mdb/postgresql/v1/config/host15_pb2.pyi +497 -0
  400. yandex/cloud/mdb/postgresql/v1/config/host16_1c_pb2.pyi +516 -0
  401. yandex/cloud/mdb/postgresql/v1/config/host16_pb2.pyi +516 -0
  402. yandex/cloud/mdb/postgresql/v1/config/host9_6_pb2.pyi +458 -0
  403. yandex/cloud/mdb/postgresql/v1/config/postgresql10_1c_pb2.pyi +931 -0
  404. yandex/cloud/mdb/postgresql/v1/config/postgresql10_pb2.pyi +923 -0
  405. yandex/cloud/mdb/postgresql/v1/config/postgresql11_1c_pb2.pyi +975 -0
  406. yandex/cloud/mdb/postgresql/v1/config/postgresql11_pb2.pyi +967 -0
  407. yandex/cloud/mdb/postgresql/v1/config/postgresql12_1c_pb2.pyi +999 -0
  408. yandex/cloud/mdb/postgresql/v1/config/postgresql12_pb2.pyi +991 -0
  409. yandex/cloud/mdb/postgresql/v1/config/postgresql13_1c_pb2.pyi +1053 -0
  410. yandex/cloud/mdb/postgresql/v1/config/postgresql13_pb2.pyi +1051 -0
  411. yandex/cloud/mdb/postgresql/v1/config/postgresql14_1c_pb2.pyi +1081 -0
  412. yandex/cloud/mdb/postgresql/v1/config/postgresql14_pb2.pyi +1079 -0
  413. yandex/cloud/mdb/postgresql/v1/config/postgresql15_1c_pb2.pyi +1091 -0
  414. yandex/cloud/mdb/postgresql/v1/config/postgresql15_pb2.pyi +1083 -0
  415. yandex/cloud/mdb/postgresql/v1/config/postgresql16_1c_pb2.pyi +1093 -0
  416. yandex/cloud/mdb/postgresql/v1/config/postgresql16_pb2.pyi +1085 -0
  417. yandex/cloud/mdb/postgresql/v1/config/postgresql9_6_pb2.pyi +651 -0
  418. yandex/cloud/mdb/postgresql/v1/database_pb2.pyi +150 -0
  419. yandex/cloud/mdb/postgresql/v1/database_service_pb2.pyi +260 -0
  420. yandex/cloud/mdb/postgresql/v1/maintenance_pb2.pyi +129 -0
  421. yandex/cloud/mdb/postgresql/v1/perf_diag_pb2.pyi +462 -0
  422. yandex/cloud/mdb/postgresql/v1/perf_diag_service_pb2.pyi +139 -0
  423. yandex/cloud/mdb/postgresql/v1/resource_preset_pb2.pyi +45 -0
  424. yandex/cloud/mdb/postgresql/v1/resource_preset_service_pb2.pyi +83 -0
  425. yandex/cloud/mdb/postgresql/v1/user_pb2.pyi +534 -0
  426. yandex/cloud/mdb/postgresql/v1/user_service_pb2.pyi +396 -0
  427. yandex/cloud/mdb/redis/v1/backup_pb2.pyi +65 -0
  428. yandex/cloud/mdb/redis/v1/backup_service_pb2.pyi +89 -0
  429. yandex/cloud/mdb/redis/v1/cluster_pb2.pyi +610 -0
  430. yandex/cloud/mdb/redis/v1/cluster_service_pb2.pyi +1686 -0
  431. yandex/cloud/mdb/redis/v1/config/redis5_0_pb2.pyi +204 -0
  432. yandex/cloud/mdb/redis/v1/config/redis6_0_pb2.pyi +204 -0
  433. yandex/cloud/mdb/redis/v1/config/redis6_2_pb2.pyi +210 -0
  434. yandex/cloud/mdb/redis/v1/config/redis7_0_pb2.pyi +210 -0
  435. yandex/cloud/mdb/redis/v1/config/redis_pb2.pyi +210 -0
  436. yandex/cloud/mdb/redis/v1/maintenance_pb2.pyi +129 -0
  437. yandex/cloud/mdb/redis/v1/resource_preset_pb2.pyi +45 -0
  438. yandex/cloud/mdb/redis/v1/resource_preset_service_pb2.pyi +83 -0
  439. yandex/cloud/mdb/sqlserver/v1/backup_pb2.pyi +62 -0
  440. yandex/cloud/mdb/sqlserver/v1/backup_service_pb2.pyi +90 -0
  441. yandex/cloud/mdb/sqlserver/v1/cluster_pb2.pyi +571 -0
  442. yandex/cloud/mdb/sqlserver/v1/cluster_service_pb2.pyi +1226 -0
  443. yandex/cloud/mdb/sqlserver/v1/config/sqlserver2016sp2_pb2.pyi +231 -0
  444. yandex/cloud/mdb/sqlserver/v1/config/sqlserver2017_pb2.pyi +231 -0
  445. yandex/cloud/mdb/sqlserver/v1/config/sqlserver2019_pb2.pyi +231 -0
  446. yandex/cloud/mdb/sqlserver/v1/database_pb2.pyi +52 -0
  447. yandex/cloud/mdb/sqlserver/v1/database_service_pb2.pyi +384 -0
  448. yandex/cloud/mdb/sqlserver/v1/resource_preset_pb2.pyi +45 -0
  449. yandex/cloud/mdb/sqlserver/v1/resource_preset_service_pb2.pyi +83 -0
  450. yandex/cloud/mdb/sqlserver/v1/user_pb2.pyi +185 -0
  451. yandex/cloud/mdb/sqlserver/v1/user_service_pb2.pyi +368 -0
  452. yandex/cloud/monitoring/v3/chart_widget_pb2.pyi +641 -0
  453. yandex/cloud/monitoring/v3/dashboard_pb2.pyi +122 -0
  454. yandex/cloud/monitoring/v3/dashboard_service_pb2.pyi +377 -0
  455. yandex/cloud/monitoring/v3/downsampling_pb2.pyi +118 -0
  456. yandex/cloud/monitoring/v3/parametrization_pb2.pyi +256 -0
  457. yandex/cloud/monitoring/v3/text_widget_pb2.pyi +29 -0
  458. yandex/cloud/monitoring/v3/title_widget_pb2.pyi +69 -0
  459. yandex/cloud/monitoring/v3/unit_format_pb2.pyi +480 -0
  460. yandex/cloud/monitoring/v3/widget_pb2.pyi +82 -0
  461. yandex/cloud/oauth/claims_pb2.pyi +136 -0
  462. yandex/cloud/operation/operation_pb2.pyi +89 -0
  463. yandex/cloud/operation/operation_service_pb2.pyi +43 -0
  464. yandex/cloud/organizationmanager/v1/group_mapping_pb2.pyi +57 -0
  465. yandex/cloud/organizationmanager/v1/group_mapping_service_pb2.pyi +305 -0
  466. yandex/cloud/organizationmanager/v1/group_pb2.pyi +51 -0
  467. yandex/cloud/organizationmanager/v1/group_service_pb2.pyi +464 -0
  468. yandex/cloud/organizationmanager/v1/organization_pb2.pyi +73 -0
  469. yandex/cloud/organizationmanager/v1/organization_service_pb2.pyi +231 -0
  470. yandex/cloud/organizationmanager/v1/os_login_service_pb2.pyi +421 -0
  471. yandex/cloud/organizationmanager/v1/saml/certificate_pb2.pyi +53 -0
  472. yandex/cloud/organizationmanager/v1/saml/certificate_service_pb2.pyi +298 -0
  473. yandex/cloud/organizationmanager/v1/saml/federation_pb2.pyi +179 -0
  474. yandex/cloud/organizationmanager/v1/saml/federation_service_pb2.pyi +625 -0
  475. yandex/cloud/organizationmanager/v1/ssh_certificate_service_pb2.pyi +62 -0
  476. yandex/cloud/organizationmanager/v1/user_account_pb2.pyi +133 -0
  477. yandex/cloud/organizationmanager/v1/user_service_pb2.pyi +150 -0
  478. yandex/cloud/organizationmanager/v1/user_ssh_key_pb2.pyi +53 -0
  479. yandex/cloud/organizationmanager/v1/user_ssh_key_service_pb2.pyi +194 -0
  480. yandex/cloud/quota/quota_pb2.pyi +88 -0
  481. yandex/cloud/reference/reference_pb2.pyi +77 -0
  482. yandex/cloud/resourcemanager/v1/cloud_pb2.pyi +73 -0
  483. yandex/cloud/resourcemanager/v1/cloud_service_pb2.pyi +360 -0
  484. yandex/cloud/resourcemanager/v1/folder_pb2.pyi +109 -0
  485. yandex/cloud/resourcemanager/v1/folder_service_pb2.pyi +364 -0
  486. yandex/cloud/serverless/apigateway/v1/apigateway_pb2.pyi +332 -0
  487. yandex/cloud/serverless/apigateway/v1/apigateway_service_pb2.pyi +618 -0
  488. yandex/cloud/serverless/apigateway/websocket/v1/connection_pb2.pyi +71 -0
  489. yandex/cloud/serverless/apigateway/websocket/v1/connection_service_pb2.pyi +113 -0
  490. yandex/cloud/serverless/containers/v1/container_pb2.pyi +538 -0
  491. yandex/cloud/serverless/containers/v1/container_service_pb2.pyi +668 -0
  492. yandex/cloud/serverless/functions/v1/function_pb2.pyi +607 -0
  493. yandex/cloud/serverless/functions/v1/function_service_pb2.pyi +1073 -0
  494. yandex/cloud/serverless/functions/v1/network_service_pb2.pyi +312 -0
  495. yandex/cloud/serverless/mdbproxy/v1/proxy_pb2.pyi +163 -0
  496. yandex/cloud/serverless/mdbproxy/v1/proxy_service_pb2.pyi +359 -0
  497. yandex/cloud/serverless/triggers/v1/predicate_pb2.pyi +80 -0
  498. yandex/cloud/serverless/triggers/v1/trigger_pb2.pyi +1109 -0
  499. yandex/cloud/serverless/triggers/v1/trigger_service_pb2.pyi +439 -0
  500. yandex/cloud/speechsense/v1/audio_pb2.pyi +204 -0
  501. yandex/cloud/speechsense/v1/talk_service_pb2.pyi +161 -0
  502. yandex/cloud/speechsense/v1/text_pb2.pyi +70 -0
  503. yandex/cloud/storage/v1/bucket_pb2.pyi +1465 -0
  504. yandex/cloud/storage/v1/bucket_service_pb2.pyi +540 -0
  505. yandex/cloud/validation_pb2.pyi +53 -0
  506. yandex/cloud/video/v1/channel_pb2.pyi +79 -0
  507. yandex/cloud/video/v1/channel_service_pb2.pyi +259 -0
  508. yandex/cloud/video/v1/episode_pb2.pyi +140 -0
  509. yandex/cloud/video/v1/episode_service_pb2.pyi +451 -0
  510. yandex/cloud/video/v1/stream_line_pb2.pyi +305 -0
  511. yandex/cloud/video/v1/stream_line_service_pb2.pyi +563 -0
  512. yandex/cloud/video/v1/stream_pb2.pyi +197 -0
  513. yandex/cloud/video/v1/stream_service_pb2.pyi +396 -0
  514. yandex/cloud/video/v1/thumbnail_pb2.pyi +39 -0
  515. yandex/cloud/video/v1/thumbnail_service_pb2.pyi +184 -0
  516. yandex/cloud/video/v1/video_pb2.pyi +211 -0
  517. yandex/cloud/video/v1/video_service_pb2.pyi +464 -0
  518. yandex/cloud/vpc/v1/address_pb2.pyi +226 -0
  519. yandex/cloud/vpc/v1/address_service_pb2.pyi +491 -0
  520. yandex/cloud/vpc/v1/gateway_pb2.pyi +92 -0
  521. yandex/cloud/vpc/v1/gateway_service_pb2.pyi +403 -0
  522. yandex/cloud/vpc/v1/network_pb2.pyi +79 -0
  523. yandex/cloud/vpc/v1/network_service_pb2.pyi +547 -0
  524. yandex/cloud/vpc/v1/route_table_pb2.pyi +136 -0
  525. yandex/cloud/vpc/v1/route_table_service_pb2.pyi +381 -0
  526. yandex/cloud/vpc/v1/security_group_pb2.pyi +266 -0
  527. yandex/cloud/vpc/v1/security_group_service_pb2.pyi +591 -0
  528. yandex/cloud/vpc/v1/subnet_pb2.pyi +155 -0
  529. yandex/cloud/vpc/v1/subnet_service_pb2.pyi +593 -0
  530. yandex/cloud/ydb/v1/backup_pb2.pyi +353 -0
  531. yandex/cloud/ydb/v1/backup_service_pb2.pyi +166 -0
  532. yandex/cloud/ydb/v1/database_pb2.pyi +577 -0
  533. yandex/cloud/ydb/v1/database_service_pb2.pyi +550 -0
  534. yandex/cloud/ydb/v1/location_pb2.pyi +29 -0
  535. yandex/cloud/ydb/v1/location_service_pb2.pyi +83 -0
  536. yandex/cloud/ydb/v1/resource_preset_pb2.pyi +32 -0
  537. yandex/cloud/ydb/v1/resource_preset_service_pb2.pyi +83 -0
  538. yandex/cloud/ydb/v1/storage_type_pb2.pyi +32 -0
  539. yandex/cloud/ydb/v1/storage_type_service_pb2.pyi +83 -0
  540. yandexcloud/_auth_fabric.py +46 -41
  541. yandexcloud/_auth_plugin.py +36 -18
  542. yandexcloud/_backoff.py +8 -7
  543. yandexcloud/_channels.py +27 -13
  544. yandexcloud/_helpers.py +15 -29
  545. yandexcloud/_operation_waiter.py +32 -18
  546. yandexcloud/_retry_interceptor.py +39 -22
  547. yandexcloud/_sdk.py +81 -32
  548. yandexcloud/_wrappers/__init__.py +9 -2
  549. yandexcloud/_wrappers/dataproc/__init__.py +11 -10
  550. yandexcloud/auth.py +10 -2
  551. yandexcloud/operations.py +22 -7
  552. {yandexcloud-0.288.0.dist-info → yandexcloud-0.289.0.dist-info}/AUTHORS +2 -3
  553. {yandexcloud-0.288.0.dist-info → yandexcloud-0.289.0.dist-info}/METADATA +4 -4
  554. {yandexcloud-0.288.0.dist-info → yandexcloud-0.289.0.dist-info}/RECORD +557 -18
  555. {yandexcloud-0.288.0.dist-info → yandexcloud-0.289.0.dist-info}/LICENSE +0 -0
  556. {yandexcloud-0.288.0.dist-info → yandexcloud-0.289.0.dist-info}/WHEEL +0 -0
  557. {yandexcloud-0.288.0.dist-info → yandexcloud-0.289.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,32 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.message
9
+ import typing
10
+
11
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
12
+
13
+ @typing.final
14
+ class ResourcePreset(google.protobuf.message.Message):
15
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
16
+
17
+ ID_FIELD_NUMBER: builtins.int
18
+ CORES_FIELD_NUMBER: builtins.int
19
+ MEMORY_FIELD_NUMBER: builtins.int
20
+ id: builtins.str
21
+ cores: builtins.int
22
+ memory: builtins.int
23
+ def __init__(
24
+ self,
25
+ *,
26
+ id: builtins.str = ...,
27
+ cores: builtins.int = ...,
28
+ memory: builtins.int = ...,
29
+ ) -> None: ...
30
+ def ClearField(self, field_name: typing.Literal["cores", b"cores", "id", b"id", "memory", b"memory"]) -> None: ...
31
+
32
+ global___ResourcePreset = ResourcePreset
@@ -0,0 +1,83 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import collections.abc
8
+ import google.protobuf.descriptor
9
+ import google.protobuf.internal.containers
10
+ import google.protobuf.message
11
+ import typing
12
+ import yandex.cloud.ydb.v1.resource_preset_pb2
13
+
14
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
15
+
16
+ @typing.final
17
+ class GetResourcePresetRequest(google.protobuf.message.Message):
18
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
19
+
20
+ RESOURCE_PRESET_ID_FIELD_NUMBER: builtins.int
21
+ resource_preset_id: builtins.str
22
+ """Required. ID of the resource preset to return."""
23
+ def __init__(
24
+ self,
25
+ *,
26
+ resource_preset_id: builtins.str = ...,
27
+ ) -> None: ...
28
+ def ClearField(self, field_name: typing.Literal["resource_preset_id", b"resource_preset_id"]) -> None: ...
29
+
30
+ global___GetResourcePresetRequest = GetResourcePresetRequest
31
+
32
+ @typing.final
33
+ class ListResourcePresetsRequest(google.protobuf.message.Message):
34
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
35
+
36
+ PAGE_SIZE_FIELD_NUMBER: builtins.int
37
+ PAGE_TOKEN_FIELD_NUMBER: builtins.int
38
+ page_size: builtins.int
39
+ """The maximum number of results per page that should be returned. If the number of available
40
+ results is larger than `page_size`, the service returns a `next_page_token` that can be used
41
+ to get the next page of results in subsequent ListResourcePresets requests.
42
+ Acceptable values are 0 to 1000, inclusive. Default value: 100.
43
+ """
44
+ page_token: builtins.str
45
+ """Page token. Set `page_token` to the `next_page_token` returned by a previous ListResourcePresets
46
+ request to get the next page of results.
47
+ """
48
+ def __init__(
49
+ self,
50
+ *,
51
+ page_size: builtins.int = ...,
52
+ page_token: builtins.str = ...,
53
+ ) -> None: ...
54
+ def ClearField(self, field_name: typing.Literal["page_size", b"page_size", "page_token", b"page_token"]) -> None: ...
55
+
56
+ global___ListResourcePresetsRequest = ListResourcePresetsRequest
57
+
58
+ @typing.final
59
+ class ListResourcePresetsResponse(google.protobuf.message.Message):
60
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
61
+
62
+ RESOURCE_PRESETS_FIELD_NUMBER: builtins.int
63
+ NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int
64
+ next_page_token: builtins.str
65
+ """This token allows you to get the next page of results for ListResourcePresets requests,
66
+ if the number of results is larger than `page_size` specified in the request.
67
+ To get the next page, specify the value of `next_page_token` as a value for
68
+ the `page_token` parameter in the next ListResourcePresets request. Subsequent ListResourcePresets
69
+ requests will have their own `next_page_token` to continue paging through the results.
70
+ """
71
+ @property
72
+ def resource_presets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.ydb.v1.resource_preset_pb2.ResourcePreset]:
73
+ """Requested list of resource presets."""
74
+
75
+ def __init__(
76
+ self,
77
+ *,
78
+ resource_presets: collections.abc.Iterable[yandex.cloud.ydb.v1.resource_preset_pb2.ResourcePreset] | None = ...,
79
+ next_page_token: builtins.str = ...,
80
+ ) -> None: ...
81
+ def ClearField(self, field_name: typing.Literal["next_page_token", b"next_page_token", "resource_presets", b"resource_presets"]) -> None: ...
82
+
83
+ global___ListResourcePresetsResponse = ListResourcePresetsResponse
@@ -0,0 +1,32 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import google.protobuf.descriptor
8
+ import google.protobuf.message
9
+ import typing
10
+
11
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
12
+
13
+ @typing.final
14
+ class StorageType(google.protobuf.message.Message):
15
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
16
+
17
+ ID_FIELD_NUMBER: builtins.int
18
+ DEVICE_TYPE_FIELD_NUMBER: builtins.int
19
+ REDUNDANCY_TYPE_FIELD_NUMBER: builtins.int
20
+ id: builtins.str
21
+ device_type: builtins.str
22
+ redundancy_type: builtins.str
23
+ def __init__(
24
+ self,
25
+ *,
26
+ id: builtins.str = ...,
27
+ device_type: builtins.str = ...,
28
+ redundancy_type: builtins.str = ...,
29
+ ) -> None: ...
30
+ def ClearField(self, field_name: typing.Literal["device_type", b"device_type", "id", b"id", "redundancy_type", b"redundancy_type"]) -> None: ...
31
+
32
+ global___StorageType = StorageType
@@ -0,0 +1,83 @@
1
+ """
2
+ @generated by mypy-protobuf. Do not edit manually!
3
+ isort:skip_file
4
+ """
5
+
6
+ import builtins
7
+ import collections.abc
8
+ import google.protobuf.descriptor
9
+ import google.protobuf.internal.containers
10
+ import google.protobuf.message
11
+ import typing
12
+ import yandex.cloud.ydb.v1.storage_type_pb2
13
+
14
+ DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
15
+
16
+ @typing.final
17
+ class GetStorageTypeRequest(google.protobuf.message.Message):
18
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
19
+
20
+ STORAGE_TYPE_ID_FIELD_NUMBER: builtins.int
21
+ storage_type_id: builtins.str
22
+ """Required. ID of the storage type to return."""
23
+ def __init__(
24
+ self,
25
+ *,
26
+ storage_type_id: builtins.str = ...,
27
+ ) -> None: ...
28
+ def ClearField(self, field_name: typing.Literal["storage_type_id", b"storage_type_id"]) -> None: ...
29
+
30
+ global___GetStorageTypeRequest = GetStorageTypeRequest
31
+
32
+ @typing.final
33
+ class ListStorageTypesRequest(google.protobuf.message.Message):
34
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
35
+
36
+ PAGE_SIZE_FIELD_NUMBER: builtins.int
37
+ PAGE_TOKEN_FIELD_NUMBER: builtins.int
38
+ page_size: builtins.int
39
+ """The maximum number of results per page that should be returned. If the number of available
40
+ results is larger than `page_size`, the service returns a `next_page_token` that can be used
41
+ to get the next page of results in subsequent ListStorageTypes requests.
42
+ Acceptable values are 0 to 1000, inclusive. Default value: 100.
43
+ """
44
+ page_token: builtins.str
45
+ """Page token. Set `page_token` to the `next_page_token` returned by a previous ListStorageTypes
46
+ request to get the next page of results.
47
+ """
48
+ def __init__(
49
+ self,
50
+ *,
51
+ page_size: builtins.int = ...,
52
+ page_token: builtins.str = ...,
53
+ ) -> None: ...
54
+ def ClearField(self, field_name: typing.Literal["page_size", b"page_size", "page_token", b"page_token"]) -> None: ...
55
+
56
+ global___ListStorageTypesRequest = ListStorageTypesRequest
57
+
58
+ @typing.final
59
+ class ListStorageTypesResponse(google.protobuf.message.Message):
60
+ DESCRIPTOR: google.protobuf.descriptor.Descriptor
61
+
62
+ STORAGE_TYPES_FIELD_NUMBER: builtins.int
63
+ NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int
64
+ next_page_token: builtins.str
65
+ """This token allows you to get the next page of results for ListStorageTypes requests,
66
+ if the number of results is larger than `page_size` specified in the request.
67
+ To get the next page, specify the value of `next_page_token` as a value for
68
+ the `page_token` parameter in the next ListStorageTypes request. Subsequent ListStorageTypes
69
+ requests will have their own `next_page_token` to continue paging through the results.
70
+ """
71
+ @property
72
+ def storage_types(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[yandex.cloud.ydb.v1.storage_type_pb2.StorageType]:
73
+ """Requested list of storage types."""
74
+
75
+ def __init__(
76
+ self,
77
+ *,
78
+ storage_types: collections.abc.Iterable[yandex.cloud.ydb.v1.storage_type_pb2.StorageType] | None = ...,
79
+ next_page_token: builtins.str = ...,
80
+ ) -> None: ...
81
+ def ClearField(self, field_name: typing.Literal["next_page_token", b"next_page_token", "storage_types", b"storage_types"]) -> None: ...
82
+
83
+ global___ListStorageTypesResponse = ListStorageTypesResponse
@@ -1,6 +1,7 @@
1
1
  import os
2
2
  import time
3
3
  from datetime import datetime
4
+ from typing import Dict, Optional, Union
4
5
 
5
6
  # noinspection PyUnresolvedReferences
6
7
  # jwt package depends on cryptography
@@ -26,9 +27,9 @@ def set_up_yc_api_endpoint(endpoint: str) -> str:
26
27
  return YC_API_ENDPOINT
27
28
 
28
29
 
29
- def __validate_service_account_key(sa_key):
30
+ def __validate_service_account_key(sa_key: Optional[dict]) -> bool:
30
31
  if not isinstance(sa_key, dict):
31
- raise RuntimeError("Invalid Service Account Key: expecting dictionary, actually got {}".format(type(sa_key)))
32
+ raise RuntimeError(f"Invalid Service Account Key: expecting dictionary, actually got {type(sa_key)}")
32
33
 
33
34
  obj_id = sa_key.get("id")
34
35
  sa_id = sa_key.get("service_account_id")
@@ -47,46 +48,21 @@ def __validate_service_account_key(sa_key):
47
48
  if not isinstance(private_key, six.string_types) or private_key_prefix not in private_key:
48
49
  error_message = (
49
50
  "Invalid Service Account Key: private key is in incorrect format."
50
- + "Should start with {prefix}.\n".format(prefix=private_key_prefix)
51
- + "To obtain one you can use YC CLI: yc iam key create --output sa.json --service-account-id <id>"
51
+ f"Should start with {private_key_prefix}.\n"
52
+ "To obtain one you can use YC CLI: yc iam key create --output sa.json --service-account-id <id>"
52
53
  )
53
54
  raise RuntimeError(error_message)
54
-
55
-
56
- def get_auth_token_requester(token=None, service_account_key=None, iam_token=None, metadata_addr=None, endpoint=None):
57
- if endpoint is None:
58
- endpoint = YC_API_ENDPOINT
59
- auth_methods = [("token", token), ("service_account_key", service_account_key), ("iam_token", iam_token)]
60
- auth_methods = [(auth_type, value) for auth_type, value in auth_methods if value is not None]
61
-
62
- if len(auth_methods) == 0:
63
- return MetadataAuth(metadata_addr=metadata_addr or os.environ.get("YC_METADATA_ADDR", _MDS_ADDR))
64
-
65
- if len(auth_methods) > 1:
66
- raise RuntimeError(
67
- "Conflicting API credentials properties are set: {}.".format([auth[0] for auth in auth_methods])
68
- )
69
-
70
- auth_name, _ = auth_methods[0]
71
- if auth_name == "token":
72
- return TokenAuth(token=token)
73
- if auth_name == "service_account_key":
74
- __validate_service_account_key(service_account_key)
75
- return ServiceAccountAuth(service_account_key, endpoint)
76
- if auth_name == "iam_token":
77
- return IamTokenAuth(iam_token)
78
-
79
- raise RuntimeError("Unknown auth method: {}".format(auth_name))
55
+ return True
80
56
 
81
57
 
82
58
  class MetadataAuth:
83
- def __init__(self, metadata_addr):
59
+ def __init__(self, metadata_addr: str):
84
60
  self.__metadata_addr = metadata_addr
85
61
 
86
- def url(self):
62
+ def url(self) -> str:
87
63
  return _MDS_URL.format(self.__metadata_addr)
88
64
 
89
- def get_token(self):
65
+ def get_token(self) -> str:
90
66
  r = requests.get(self.url(), headers=_MDS_HEADERS, timeout=_MDS_TIMEOUT)
91
67
  r.raise_for_status()
92
68
  response = r.json()
@@ -94,28 +70,28 @@ class MetadataAuth:
94
70
 
95
71
 
96
72
  class TokenAuth:
97
- def __init__(self, token):
73
+ def __init__(self, token: str):
98
74
  self.__oauth_token = token
99
75
 
100
- def get_token_request(self):
76
+ def get_token_request(self) -> "CreateIamTokenRequest":
101
77
  return CreateIamTokenRequest(yandex_passport_oauth_token=self.__oauth_token)
102
78
 
103
79
 
104
80
  class ServiceAccountAuth:
105
81
  __SECONDS_IN_HOUR = 60.0 * 60.0
106
82
 
107
- def __init__(self, sa_key, endpoint=None):
83
+ def __init__(self, sa_key: Dict[str, str], endpoint: Optional[str] = None):
108
84
  self.__sa_key = sa_key
109
85
  self._endpoint = endpoint if endpoint is not None else YC_API_ENDPOINT
110
86
 
111
- def get_token_request(self):
87
+ def get_token_request(self) -> "CreateIamTokenRequest":
112
88
  return CreateIamTokenRequest(jwt=self.__prepare_request(self._endpoint))
113
89
 
114
- def __prepare_request(self, endpoint):
90
+ def __prepare_request(self, endpoint: str) -> str:
115
91
  now = time.time()
116
92
  now_utc = datetime.utcfromtimestamp(now)
117
93
  exp_utc = datetime.utcfromtimestamp(now + self.__SECONDS_IN_HOUR)
118
- url = "https://iam.{}/iam/v1/tokens".format(endpoint)
94
+ url = f"https://iam.{endpoint}/iam/v1/tokens"
119
95
  payload = {
120
96
  "iss": self.__sa_key["service_account_id"],
121
97
  "aud": url,
@@ -133,8 +109,37 @@ class ServiceAccountAuth:
133
109
 
134
110
 
135
111
  class IamTokenAuth:
136
- def __init__(self, iam_token):
112
+ def __init__(self, iam_token: str):
137
113
  self.__iam_token = iam_token
138
114
 
139
- def get_token(self):
115
+ def get_token(self) -> str:
140
116
  return self.__iam_token
117
+
118
+
119
+ def get_auth_token_requester(
120
+ token: Optional[str] = None,
121
+ service_account_key: Optional[dict] = None,
122
+ iam_token: Optional[str] = None,
123
+ metadata_addr: Optional[str] = None,
124
+ endpoint: Optional[str] = None,
125
+ ) -> Union["MetadataAuth", "TokenAuth", "IamTokenAuth", "ServiceAccountAuth"]:
126
+ if endpoint is None:
127
+ endpoint = YC_API_ENDPOINT
128
+ auth_methods = [("token", token), ("service_account_key", service_account_key), ("iam_token", iam_token)]
129
+ auth_methods = [(auth_type, value) for auth_type, value in auth_methods if value is not None]
130
+
131
+ if len(auth_methods) == 0:
132
+ metadata_addr = metadata_addr if metadata_addr is not None else os.environ.get("YC_METADATA_ADDR", _MDS_ADDR)
133
+ return MetadataAuth(metadata_addr)
134
+
135
+ if len(auth_methods) > 1:
136
+ raise RuntimeError(f"Conflicting API credentials properties are set: {[auth[0] for auth in auth_methods]}.")
137
+
138
+ if token is not None:
139
+ return TokenAuth(token=token)
140
+ if iam_token is not None:
141
+ return IamTokenAuth(iam_token)
142
+ if service_account_key is not None and __validate_service_account_key(service_account_key):
143
+ return ServiceAccountAuth(service_account_key, endpoint)
144
+
145
+ raise RuntimeError("Unknown auth method")
@@ -1,41 +1,57 @@
1
1
  from datetime import datetime
2
+ from typing import TYPE_CHECKING, Callable, Optional, Tuple, Union
2
3
 
3
4
  import grpc
4
5
  from six.moves.urllib.parse import urlparse
5
6
 
6
7
  from yandex.cloud.iam.v1.iam_token_service_pb2_grpc import IamTokenServiceStub
7
8
 
9
+ if TYPE_CHECKING:
10
+ from yandex.cloud.iam.v1.iam_token_service_pb2 import CreateIamTokenResponse
11
+ from yandexcloud._auth_fabric import (
12
+ IamTokenAuth,
13
+ MetadataAuth,
14
+ ServiceAccountAuth,
15
+ TokenAuth,
16
+ )
17
+
18
+
8
19
  TIMEOUT_SECONDS = 20
9
20
 
10
21
 
11
22
  class Credentials(grpc.AuthMetadataPlugin):
12
- def __init__(self, token_requester, lazy_channel):
23
+ def __init__(
24
+ self,
25
+ token_requester: Union["MetadataAuth", "TokenAuth", "IamTokenAuth", "ServiceAccountAuth"],
26
+ lazy_channel: Callable[[], "grpc.Channel"],
27
+ ):
13
28
  # pylint: disable=super-init-not-called
14
29
  self.__token_requester = token_requester
15
30
  self._lazy_channel = lazy_channel
16
- self._channel = None
17
- self._cached_iam_token = None
18
- self._iam_token_timestamp = None
31
+ self._channel: Optional[grpc.Channel] = None
32
+ self._cached_iam_token: str = ""
33
+ self._iam_token_timestamp: Optional[datetime] = None
19
34
 
20
- def __call__(self, context, callback):
35
+ def __call__(self, context: "grpc.AuthMetadataContext", callback: "grpc.AuthMetadataPluginCallback") -> None:
21
36
  try:
22
37
  return self._call(context, callback)
23
38
  except Exception as exception: # pylint: disable=broad-except
24
- callback(None, exception)
39
+ callback(tuple(), exception)
40
+ return None
25
41
 
26
- def _call(self, context, callback):
42
+ def _call(self, context: "grpc.AuthMetadataContext", callback: "grpc.AuthMetadataPluginCallback") -> None:
27
43
  u = urlparse(context.service_url)
28
44
  if u.path in (
29
45
  "/yandex.cloud.iam.v1.IamTokenService",
30
46
  "/yandex.cloud.endpoint.ApiEndpointService",
31
47
  ):
32
- callback(None, None)
48
+ callback(tuple(), None)
33
49
  return
34
50
 
35
- if not self._channel:
51
+ if self._channel is None:
36
52
  self._channel = self._lazy_channel()
37
53
 
38
- if self._cached_iam_token is None or not self._fresh():
54
+ if not self._fresh():
39
55
  get_token = getattr(self.__token_requester, "get_token", None)
40
56
  if callable(get_token):
41
57
  self._cached_iam_token = get_token()
@@ -51,28 +67,30 @@ class Credentials(grpc.AuthMetadataPlugin):
51
67
 
52
68
  callback(self._metadata(), None)
53
69
 
54
- def create_done_callback(self, callback):
55
- def done_callback(future):
70
+ def create_done_callback(self, callback: "grpc.AuthMetadataPluginCallback") -> Callable[["grpc.Future"], None]:
71
+ def done_callback(future: "grpc.Future") -> None:
56
72
  try:
57
73
  resp = future.result()
58
74
  except Exception as exception: # pylint: disable=broad-except
59
- callback(None, exception)
75
+ callback(tuple(), exception)
60
76
  else:
61
77
  self._save_token(resp)
62
78
  callback(self._metadata(), None)
63
79
 
64
80
  return done_callback
65
81
 
66
- def _metadata(self):
67
- metadata = (("authorization", "Bearer " + self._cached_iam_token),)
82
+ def _metadata(self) -> Tuple[Tuple[str, str]]:
83
+ metadata = (("authorization", f"Bearer {self._cached_iam_token}"),)
68
84
  return metadata
69
85
 
70
- def _save_token(self, resp):
86
+ def _save_token(self, resp: "CreateIamTokenResponse") -> None:
71
87
  self._cached_iam_token = resp.iam_token
72
88
  self._iam_token_timestamp = datetime.now()
73
89
 
74
- def _fresh(self):
75
- if self._cached_iam_token is None:
90
+ def _fresh(self) -> bool:
91
+ if self._cached_iam_token == "":
92
+ return False
93
+ if self._iam_token_timestamp is None:
76
94
  return False
77
95
  diff = datetime.now() - self._iam_token_timestamp
78
96
  return diff.total_seconds() < TIMEOUT_SECONDS
yandexcloud/_backoff.py CHANGED
@@ -1,16 +1,17 @@
1
1
  import random
2
+ from typing import Callable
2
3
 
3
4
 
4
- def backoff_linear_with_jitter(wait_time, jitter):
5
- def func(attempt): # pylint: disable=unused-argument
5
+ def backoff_linear_with_jitter(wait_time: float, jitter: float) -> Callable[[int], float]:
6
+ def func(attempt: int) -> float: # pylint: disable=unused-argument
6
7
  multiplier = jitter * (random.random() * 2 - 1)
7
8
  return wait_time * (1 + multiplier)
8
9
 
9
10
  return func
10
11
 
11
12
 
12
- def backoff_exponential_with_jitter(base, cap):
13
- def func(attempt):
13
+ def backoff_exponential_with_jitter(base: float, cap: float) -> Callable[[int], float]:
14
+ def func(attempt: int) -> float: # pylint: disable=unused-argument
14
15
  try:
15
16
  res = (2**attempt) * base * random.random()
16
17
  except OverflowError:
@@ -24,8 +25,8 @@ def backoff_exponential_with_jitter(base, cap):
24
25
  return func
25
26
 
26
27
 
27
- def backoff_exponential_jittered_min_interval(base=0.05, cap=60):
28
- def func(attempt):
28
+ def backoff_exponential_jittered_min_interval(base: float = 0.05, cap: float = 60) -> Callable[[int], float]:
29
+ def func(attempt: int) -> float: # pylint: disable=unused-argument
29
30
  try:
30
31
  base_interval = (2**attempt) * base
31
32
  res = base_interval / 2 + base_interval * random.random()
@@ -40,5 +41,5 @@ def backoff_exponential_jittered_min_interval(base=0.05, cap=60):
40
41
  return func
41
42
 
42
43
 
43
- def default_backoff():
44
+ def default_backoff() -> Callable[[int], float]:
44
45
  return backoff_exponential_with_jitter(0.05, 60)
yandexcloud/_channels.py CHANGED
@@ -14,28 +14,40 @@ try:
14
14
  except PackageNotFoundError:
15
15
  VERSION = "0.0.0"
16
16
 
17
- SDK_USER_AGENT = "yandex-cloud-python-sdk/{version}".format(version=VERSION)
17
+ SDK_USER_AGENT = f"yandex-cloud-python-sdk/{VERSION}"
18
18
  logger = logging.getLogger(__name__)
19
19
 
20
20
 
21
21
  class Channels:
22
- def __init__(self, client_user_agent=None, endpoints: Optional[Dict[str, str]] = None, **kwargs):
22
+ def __init__(
23
+ self,
24
+ client_user_agent: Optional[str] = None,
25
+ endpoints: Optional[Dict[str, str]] = None,
26
+ token: Optional[str] = None,
27
+ iam_token: Optional[str] = None,
28
+ endpoint: Optional[str] = None,
29
+ service_account_key: Optional[Dict[str, str]] = None,
30
+ root_certificates: Optional[bytes] = None,
31
+ private_key: Optional[bytes] = None,
32
+ certificate_chain: Optional[bytes] = None,
33
+ **_: str,
34
+ ) -> None:
23
35
  self._channel_creds = grpc.ssl_channel_credentials(
24
- root_certificates=kwargs.get("root_certificates"),
25
- private_key=kwargs.get("private_key"),
26
- certificate_chain=kwargs.get("certificate_chain"),
36
+ root_certificates=root_certificates,
37
+ private_key=private_key,
38
+ certificate_chain=certificate_chain,
27
39
  )
28
- self._endpoint = kwargs.get("endpoint", YC_API_ENDPOINT)
40
+ self._endpoint = endpoint if endpoint is not None else YC_API_ENDPOINT
29
41
  self._token_requester = get_auth_token_requester(
30
- token=kwargs.get("token"),
31
- service_account_key=kwargs.get("service_account_key"),
32
- iam_token=kwargs.get("iam_token"),
42
+ token=token,
43
+ service_account_key=service_account_key,
44
+ iam_token=iam_token,
33
45
  endpoint=self._endpoint,
34
46
  )
35
47
 
36
48
  self._client_user_agent = client_user_agent
37
49
  self._config_endpoints = endpoints if endpoints is not None else {}
38
- self._endpoints = None
50
+ self._endpoints: Optional[Dict[str, str]] = None
39
51
  self.channel_options = tuple(
40
52
  ("grpc.primary_user_agent", user_agent)
41
53
  for user_agent in [self._client_user_agent, SDK_USER_AGENT]
@@ -49,7 +61,7 @@ class Channels:
49
61
  logger.info("Insecure option is ON, no IAM endpoint used for verification")
50
62
  return grpc.insecure_channel(endpoint, options=self.channel_options)
51
63
  logger.info("Insecure option is OFF,IAM endpoint %s used for verification")
52
- creds = self._get_creds(self.endpoints["iam"])
64
+ creds: grpc.ChannelCredentials = self._get_creds(self.endpoints["iam"])
53
65
  return grpc.secure_channel(endpoint, creds, options=self.channel_options)
54
66
  if service not in self._config_endpoints and insecure:
55
67
  logger.warning(
@@ -74,7 +86,7 @@ class Channels:
74
86
  return grpc.secure_channel(self.endpoints[service], creds, options=self.channel_options)
75
87
 
76
88
  @property
77
- def endpoints(self) -> Optional[dict]:
89
+ def endpoints(self) -> Dict[str, str]:
78
90
  if self._endpoints is None:
79
91
  self._endpoints = self._get_endpoints()
80
92
  for id_, address in self._config_endpoints.items():
@@ -94,7 +106,9 @@ class Channels:
94
106
  return {endpoint.id: endpoint.address for endpoint in resp.endpoints}
95
107
 
96
108
  def _get_creds(self, iam_endpoint: str) -> grpc.ChannelCredentials:
97
- plugin = _auth_plugin.Credentials(self._token_requester, lambda: iam_endpoint)
109
+ plugin = _auth_plugin.Credentials(
110
+ self._token_requester, lambda: grpc.secure_channel(iam_endpoint, creds, options=self.channel_options)
111
+ )
98
112
  call_creds = grpc.metadata_call_credentials(plugin)
99
113
  creds = grpc.composite_channel_credentials(self._channel_creds, call_creds)
100
114
  return creds