appwrite 19.1.0__tar.gz → 19.2.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 (341) hide show
  1. {appwrite-19.1.0 → appwrite-19.2.0}/PKG-INFO +2 -2
  2. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/client.py +96 -36
  3. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite.egg-info/PKG-INFO +2 -2
  4. {appwrite-19.1.0 → appwrite-19.2.0}/pyproject.toml +1 -1
  5. {appwrite-19.1.0 → appwrite-19.2.0}/setup.py +2 -2
  6. {appwrite-19.1.0 → appwrite-19.2.0}/LICENSE +0 -0
  7. {appwrite-19.1.0 → appwrite-19.2.0}/README.md +0 -0
  8. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/__init__.py +0 -0
  9. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/encoders/__init__.py +0 -0
  10. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/encoders/value_class_encoder.py +0 -0
  11. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/__init__.py +0 -0
  12. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/adapter.py +0 -0
  13. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/attribute_status.py +0 -0
  14. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/authentication_factor.py +0 -0
  15. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/authenticator_type.py +0 -0
  16. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/backup_services.py +0 -0
  17. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/browser.py +0 -0
  18. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/browser_permission.py +0 -0
  19. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/build_runtime.py +0 -0
  20. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/column_status.py +0 -0
  21. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/compression.py +0 -0
  22. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/credit_card.py +0 -0
  23. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/database_type.py +0 -0
  24. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/databases_index_type.py +0 -0
  25. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/deployment_download_type.py +0 -0
  26. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/deployment_status.py +0 -0
  27. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/execution_method.py +0 -0
  28. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/execution_status.py +0 -0
  29. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/execution_trigger.py +0 -0
  30. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/flag.py +0 -0
  31. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/framework.py +0 -0
  32. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/health_antivirus_status.py +0 -0
  33. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/health_check_status.py +0 -0
  34. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/image_format.py +0 -0
  35. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/image_gravity.py +0 -0
  36. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/index_status.py +0 -0
  37. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/message_priority.py +0 -0
  38. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/message_status.py +0 -0
  39. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/messaging_provider_type.py +0 -0
  40. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/name.py +0 -0
  41. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/o_auth2_google_prompt.py +0 -0
  42. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/o_auth_provider.py +0 -0
  43. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/order_by.py +0 -0
  44. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/password_hash.py +0 -0
  45. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/platform_type.py +0 -0
  46. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/project_auth_method_id.py +0 -0
  47. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/project_email_template_id.py +0 -0
  48. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/project_email_template_locale.py +0 -0
  49. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/project_key_scopes.py +0 -0
  50. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/project_o_auth2_google_prompt.py +0 -0
  51. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/project_o_auth_provider_id.py +0 -0
  52. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/project_policy_id.py +0 -0
  53. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/project_protocol_id.py +0 -0
  54. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/project_service_id.py +0 -0
  55. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/project_smtp_secure.py +0 -0
  56. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/proxy_resource_type.py +0 -0
  57. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/proxy_rule_deployment_resource_type.py +0 -0
  58. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/proxy_rule_status.py +0 -0
  59. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/relation_mutate.py +0 -0
  60. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/relationship_type.py +0 -0
  61. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/runtime.py +0 -0
  62. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/scopes.py +0 -0
  63. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/smtp_encryption.py +0 -0
  64. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/status_code.py +0 -0
  65. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/tables_db_index_type.py +0 -0
  66. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/template_reference_type.py +0 -0
  67. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/theme.py +0 -0
  68. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/timezone.py +0 -0
  69. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/enums/vcs_reference_type.py +0 -0
  70. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/exception.py +0 -0
  71. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/id.py +0 -0
  72. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/input_file.py +0 -0
  73. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/__init__.py +0 -0
  74. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/activity_event.py +0 -0
  75. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/activity_event_list.py +0 -0
  76. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/algo_argon2.py +0 -0
  77. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/algo_bcrypt.py +0 -0
  78. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/algo_md5.py +0 -0
  79. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/algo_phpass.py +0 -0
  80. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/algo_scrypt.py +0 -0
  81. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/algo_scrypt_modified.py +0 -0
  82. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/algo_sha.py +0 -0
  83. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_bigint.py +0 -0
  84. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_boolean.py +0 -0
  85. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_datetime.py +0 -0
  86. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_email.py +0 -0
  87. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_enum.py +0 -0
  88. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_float.py +0 -0
  89. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_integer.py +0 -0
  90. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_ip.py +0 -0
  91. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_line.py +0 -0
  92. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_list.py +0 -0
  93. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_longtext.py +0 -0
  94. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_mediumtext.py +0 -0
  95. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_point.py +0 -0
  96. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_polygon.py +0 -0
  97. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_relationship.py +0 -0
  98. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_string.py +0 -0
  99. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_text.py +0 -0
  100. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_url.py +0 -0
  101. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/attribute_varchar.py +0 -0
  102. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/backup_archive.py +0 -0
  103. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/backup_archive_list.py +0 -0
  104. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/backup_policy.py +0 -0
  105. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/backup_policy_list.py +0 -0
  106. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/backup_restoration.py +0 -0
  107. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/backup_restoration_list.py +0 -0
  108. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/base_model.py +0 -0
  109. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/billing_limits.py +0 -0
  110. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/block.py +0 -0
  111. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/bucket.py +0 -0
  112. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/bucket_list.py +0 -0
  113. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/collection.py +0 -0
  114. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/collection_list.py +0 -0
  115. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_bigint.py +0 -0
  116. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_boolean.py +0 -0
  117. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_datetime.py +0 -0
  118. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_email.py +0 -0
  119. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_enum.py +0 -0
  120. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_float.py +0 -0
  121. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_index.py +0 -0
  122. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_index_list.py +0 -0
  123. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_integer.py +0 -0
  124. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_ip.py +0 -0
  125. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_line.py +0 -0
  126. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_list.py +0 -0
  127. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_longtext.py +0 -0
  128. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_mediumtext.py +0 -0
  129. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_point.py +0 -0
  130. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_polygon.py +0 -0
  131. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_relationship.py +0 -0
  132. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_string.py +0 -0
  133. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_text.py +0 -0
  134. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_url.py +0 -0
  135. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/column_varchar.py +0 -0
  136. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/continent.py +0 -0
  137. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/continent_list.py +0 -0
  138. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/country.py +0 -0
  139. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/country_list.py +0 -0
  140. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/currency.py +0 -0
  141. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/currency_list.py +0 -0
  142. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/database.py +0 -0
  143. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/database_list.py +0 -0
  144. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/deployment.py +0 -0
  145. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/deployment_list.py +0 -0
  146. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/dev_key.py +0 -0
  147. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/document.py +0 -0
  148. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/document_list.py +0 -0
  149. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/email_template.py +0 -0
  150. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/email_template_list.py +0 -0
  151. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/ephemeral_key.py +0 -0
  152. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/execution.py +0 -0
  153. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/execution_list.py +0 -0
  154. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/file.py +0 -0
  155. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/file_list.py +0 -0
  156. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/framework.py +0 -0
  157. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/framework_adapter.py +0 -0
  158. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/framework_list.py +0 -0
  159. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/function.py +0 -0
  160. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/function_list.py +0 -0
  161. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/headers.py +0 -0
  162. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/health_antivirus.py +0 -0
  163. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/health_certificate.py +0 -0
  164. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/health_queue.py +0 -0
  165. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/health_status.py +0 -0
  166. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/health_status_list.py +0 -0
  167. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/health_time.py +0 -0
  168. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/identity.py +0 -0
  169. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/identity_list.py +0 -0
  170. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/index.py +0 -0
  171. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/index_list.py +0 -0
  172. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/insight.py +0 -0
  173. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/insight_cta.py +0 -0
  174. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/insight_list.py +0 -0
  175. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/jwt.py +0 -0
  176. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/key.py +0 -0
  177. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/key_list.py +0 -0
  178. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/language.py +0 -0
  179. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/language_list.py +0 -0
  180. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/locale.py +0 -0
  181. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/locale_code.py +0 -0
  182. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/locale_code_list.py +0 -0
  183. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/log.py +0 -0
  184. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/log_list.py +0 -0
  185. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/membership.py +0 -0
  186. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/membership_list.py +0 -0
  187. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/message.py +0 -0
  188. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/message_list.py +0 -0
  189. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/mfa_challenge.py +0 -0
  190. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/mfa_factors.py +0 -0
  191. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/mfa_recovery_codes.py +0 -0
  192. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/mfa_type.py +0 -0
  193. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/mock_number.py +0 -0
  194. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/mock_number_list.py +0 -0
  195. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_amazon.py +0 -0
  196. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_apple.py +0 -0
  197. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_auth0.py +0 -0
  198. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_authentik.py +0 -0
  199. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_autodesk.py +0 -0
  200. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_bitbucket.py +0 -0
  201. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_bitly.py +0 -0
  202. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_box.py +0 -0
  203. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_dailymotion.py +0 -0
  204. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_discord.py +0 -0
  205. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_disqus.py +0 -0
  206. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_dropbox.py +0 -0
  207. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_etsy.py +0 -0
  208. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_facebook.py +0 -0
  209. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_figma.py +0 -0
  210. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_fusion_auth.py +0 -0
  211. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_github.py +0 -0
  212. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_gitlab.py +0 -0
  213. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_google.py +0 -0
  214. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_keycloak.py +0 -0
  215. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_kick.py +0 -0
  216. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_linkedin.py +0 -0
  217. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_microsoft.py +0 -0
  218. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_notion.py +0 -0
  219. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_oidc.py +0 -0
  220. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_okta.py +0 -0
  221. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_paypal.py +0 -0
  222. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_podio.py +0 -0
  223. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_provider_list.py +0 -0
  224. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_salesforce.py +0 -0
  225. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_slack.py +0 -0
  226. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_spotify.py +0 -0
  227. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_stripe.py +0 -0
  228. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_tradeshift.py +0 -0
  229. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_twitch.py +0 -0
  230. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_word_press.py +0 -0
  231. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_x.py +0 -0
  232. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_yahoo.py +0 -0
  233. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_yandex.py +0 -0
  234. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_zoho.py +0 -0
  235. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/o_auth2_zoom.py +0 -0
  236. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/phone.py +0 -0
  237. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/phone_list.py +0 -0
  238. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/platform_android.py +0 -0
  239. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/platform_apple.py +0 -0
  240. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/platform_linux.py +0 -0
  241. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/platform_list.py +0 -0
  242. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/platform_web.py +0 -0
  243. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/platform_windows.py +0 -0
  244. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/policy_list.py +0 -0
  245. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/policy_membership_privacy.py +0 -0
  246. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/policy_password_dictionary.py +0 -0
  247. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/policy_password_history.py +0 -0
  248. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/policy_password_personal_data.py +0 -0
  249. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/policy_session_alert.py +0 -0
  250. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/policy_session_duration.py +0 -0
  251. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/policy_session_invalidation.py +0 -0
  252. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/policy_session_limit.py +0 -0
  253. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/policy_user_limit.py +0 -0
  254. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/preferences.py +0 -0
  255. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/presence.py +0 -0
  256. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/presence_list.py +0 -0
  257. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/project.py +0 -0
  258. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/project_auth_method.py +0 -0
  259. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/project_protocol.py +0 -0
  260. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/project_service.py +0 -0
  261. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/provider.py +0 -0
  262. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/provider_list.py +0 -0
  263. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/proxy_rule.py +0 -0
  264. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/proxy_rule_list.py +0 -0
  265. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/report.py +0 -0
  266. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/report_list.py +0 -0
  267. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/resource_token.py +0 -0
  268. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/resource_token_list.py +0 -0
  269. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/row.py +0 -0
  270. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/row_list.py +0 -0
  271. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/runtime.py +0 -0
  272. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/runtime_list.py +0 -0
  273. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/session.py +0 -0
  274. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/session_list.py +0 -0
  275. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/site.py +0 -0
  276. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/site_list.py +0 -0
  277. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/specification.py +0 -0
  278. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/specification_list.py +0 -0
  279. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/subscriber.py +0 -0
  280. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/subscriber_list.py +0 -0
  281. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/table.py +0 -0
  282. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/table_list.py +0 -0
  283. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/target.py +0 -0
  284. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/target_list.py +0 -0
  285. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/team.py +0 -0
  286. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/team_list.py +0 -0
  287. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/token.py +0 -0
  288. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/topic.py +0 -0
  289. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/topic_list.py +0 -0
  290. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/transaction.py +0 -0
  291. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/transaction_list.py +0 -0
  292. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/usage_event.py +0 -0
  293. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/usage_event_list.py +0 -0
  294. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/usage_gauge.py +0 -0
  295. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/usage_gauge_list.py +0 -0
  296. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/user.py +0 -0
  297. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/user_list.py +0 -0
  298. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/variable.py +0 -0
  299. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/variable_list.py +0 -0
  300. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/webhook.py +0 -0
  301. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/models/webhook_list.py +0 -0
  302. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/operator.py +0 -0
  303. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/permission.py +0 -0
  304. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/query.py +0 -0
  305. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/role.py +0 -0
  306. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/service.py +0 -0
  307. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/__init__.py +0 -0
  308. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/account.py +0 -0
  309. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/activities.py +0 -0
  310. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/advisor.py +0 -0
  311. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/avatars.py +0 -0
  312. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/backups.py +0 -0
  313. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/databases.py +0 -0
  314. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/functions.py +0 -0
  315. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/graphql.py +0 -0
  316. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/health.py +0 -0
  317. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/locale.py +0 -0
  318. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/messaging.py +0 -0
  319. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/presences.py +0 -0
  320. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/project.py +0 -0
  321. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/proxy.py +0 -0
  322. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/sites.py +0 -0
  323. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/storage.py +0 -0
  324. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/tables_db.py +0 -0
  325. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/teams.py +0 -0
  326. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/tokens.py +0 -0
  327. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/usage.py +0 -0
  328. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/users.py +0 -0
  329. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/services/webhooks.py +0 -0
  330. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/utils/__init__.py +0 -0
  331. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite/utils/deprecated.py +0 -0
  332. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite.egg-info/SOURCES.txt +0 -0
  333. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite.egg-info/dependency_links.txt +0 -0
  334. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite.egg-info/requires.txt +0 -0
  335. {appwrite-19.1.0 → appwrite-19.2.0}/appwrite.egg-info/top_level.txt +0 -0
  336. {appwrite-19.1.0 → appwrite-19.2.0}/setup.cfg +0 -0
  337. {appwrite-19.1.0 → appwrite-19.2.0}/test/test_id.py +0 -0
  338. {appwrite-19.1.0 → appwrite-19.2.0}/test/test_operator.py +0 -0
  339. {appwrite-19.1.0 → appwrite-19.2.0}/test/test_permission.py +0 -0
  340. {appwrite-19.1.0 → appwrite-19.2.0}/test/test_query.py +0 -0
  341. {appwrite-19.1.0 → appwrite-19.2.0}/test/test_role.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: appwrite
3
- Version: 19.1.0
3
+ Version: 19.2.0
4
4
  Summary: Appwrite is an open-source self-hosted backend server that abstracts and simplifies complex and repetitive development tasks behind a very simple REST API
5
5
  Home-page: https://appwrite.io/support
6
- Download-URL: https://github.com/appwrite/sdk-for-python/archive/19.1.0.tar.gz
6
+ Download-URL: https://github.com/appwrite/sdk-for-python/archive/19.2.0.tar.gz
7
7
  Author: Appwrite Team
8
8
  Author-email: Appwrite Team <team@appwrite.io>
9
9
  Maintainer: Appwrite Team
@@ -4,6 +4,8 @@ import os
4
4
  import platform
5
5
  import sys
6
6
  import requests
7
+ from concurrent.futures import ThreadPoolExecutor, as_completed
8
+ from threading import Lock
7
9
  from .input_file import InputFile
8
10
  from .exception import AppwriteException
9
11
  from .encoders.value_class_encoder import ValueClassEncoder
@@ -15,11 +17,11 @@ class Client:
15
17
  self._endpoint = 'https://cloud.appwrite.io/v1'
16
18
  self._global_headers = {
17
19
  'content-type': '',
18
- 'user-agent' : f'AppwritePythonSDK/19.1.0 ({platform.uname().system}; {platform.uname().version}; {platform.uname().machine})',
20
+ 'user-agent' : f'AppwritePythonSDK/19.2.0 ({platform.uname().system}; {platform.uname().version}; {platform.uname().machine})',
19
21
  'x-sdk-name': 'Python',
20
22
  'x-sdk-platform': 'server',
21
23
  'x-sdk-language': 'python',
22
- 'x-sdk-version': '19.1.0',
24
+ 'x-sdk-version': '19.2.0',
23
25
  'X-Appwrite-Response-Format' : '1.9.5',
24
26
  }
25
27
 
@@ -186,14 +188,15 @@ class Client:
186
188
 
187
189
  if input_file.source_type == 'path':
188
190
  size = os.stat(input_file.path).st_size
189
- input = open(input_file.path, 'rb')
191
+ input = None
190
192
  elif input_file.source_type == 'bytes':
191
193
  size = len(input_file.data)
192
194
  input = input_file.data
193
195
 
194
196
  if size < self._chunk_size:
195
197
  if input_file.source_type == 'path':
196
- input_file.data = input.read()
198
+ with open(input_file.path, 'rb') as input:
199
+ input_file.data = input.read()
197
200
 
198
201
  params[param_name] = input_file
199
202
  return self.call(
@@ -214,46 +217,103 @@ class Client:
214
217
 
215
218
  if counter > 0:
216
219
  offset = counter * self._chunk_size
217
- input.seek(offset)
218
220
 
221
+ total_chunks = (size + self._chunk_size - 1) // self._chunk_size
222
+ chunks = []
219
223
  while offset < size:
220
- if input_file.source_type == 'path':
221
- input_file.data = input.read(self._chunk_size) or input.read(size - offset)
222
- elif input_file.source_type == 'bytes':
223
- if offset + self._chunk_size < size:
224
- end = offset + self._chunk_size
225
- else:
226
- end = size
227
- input_file.data = input[offset:end]
224
+ end = min(offset + self._chunk_size, size)
225
+ chunks.append({
226
+ 'index': counter,
227
+ 'start': offset,
228
+ 'end': end,
229
+ })
230
+ offset = end
231
+ counter = counter + 1
228
232
 
229
- params[param_name] = input_file
230
- headers["content-range"] = f'bytes {offset}-{min((offset + self._chunk_size) - 1, size - 1)}/{size}'
233
+ if not chunks:
234
+ return result
235
+
236
+ def read_chunk(start, end):
237
+ if input_file.source_type == 'path':
238
+ with open(input_file.path, 'rb') as chunk_file:
239
+ chunk_file.seek(start)
240
+ return chunk_file.read(end - start)
241
+ return input[start:end]
242
+
243
+ upload_id_header = upload_id
244
+ completed_count = chunks[0]['index']
245
+ uploaded_size = chunks[0]['start']
246
+ progress_lock = Lock()
247
+ last_result = None
248
+ final_result = None
249
+
250
+ def is_upload_complete(chunk_result):
251
+ chunks_uploaded = chunk_result.get('chunksUploaded')
252
+ if chunks_uploaded is None:
253
+ return False
254
+ chunks_total = chunk_result.get('chunksTotal', total_chunks)
255
+ return int(chunks_uploaded) >= int(chunks_total)
256
+
257
+ def upload_chunk(chunk, current_upload_id):
258
+ chunk_input = InputFile.from_bytes(
259
+ read_chunk(chunk['start'], chunk['end']),
260
+ input_file.filename,
261
+ getattr(input_file, 'mime_type', None)
262
+ )
263
+ chunk_params = {**params, param_name: chunk_input}
264
+ chunk_headers = {**headers}
265
+ chunk_headers["content-range"] = f"bytes {chunk['start']}-{chunk['end'] - 1}/{size}"
266
+ if current_upload_id:
267
+ chunk_headers["x-appwrite-id"] = current_upload_id
231
268
 
232
- result = self.call(
269
+ return self.call(
233
270
  'post',
234
271
  path,
235
- headers,
236
- params,
272
+ chunk_headers,
273
+ chunk_params,
237
274
  )
238
275
 
239
- offset = offset + self._chunk_size
240
-
241
- if "$id" in result:
242
- headers["x-appwrite-id"] = result["$id"]
243
-
244
- if on_progress is not None:
245
- end = min((((counter * self._chunk_size) + self._chunk_size) - 1), size - 1)
246
- on_progress({
247
- "$id": result["$id"],
248
- "progress": min(offset, size)/size * 100,
249
- "sizeUploaded": end+1,
250
- "chunksTotal": result["chunksTotal"],
251
- "chunksUploaded": result["chunksUploaded"],
252
- })
253
-
254
- counter = counter + 1
255
-
256
- return result
276
+ result = upload_chunk(chunks[0], upload_id_header)
277
+ last_result = result
278
+ if "$id" in result:
279
+ upload_id_header = result["$id"]
280
+
281
+ completed_count = chunks[0]['index'] + 1
282
+ uploaded_size = chunks[0]['end']
283
+
284
+ if on_progress is not None:
285
+ on_progress({
286
+ "$id": result.get("$id"),
287
+ "progress": uploaded_size / size * 100,
288
+ "sizeUploaded": uploaded_size,
289
+ "chunksTotal": total_chunks,
290
+ "chunksUploaded": completed_count,
291
+ })
292
+
293
+ def upload_remaining_chunk(chunk):
294
+ nonlocal completed_count, uploaded_size, last_result, final_result
295
+ chunk_result = upload_chunk(chunk, upload_id_header)
296
+ with progress_lock:
297
+ completed_count = completed_count + 1
298
+ uploaded_size = uploaded_size + (chunk['end'] - chunk['start'])
299
+ last_result = chunk_result
300
+ if is_upload_complete(chunk_result):
301
+ final_result = chunk_result
302
+ if on_progress is not None:
303
+ on_progress({
304
+ "$id": upload_id_header,
305
+ "progress": uploaded_size / size * 100,
306
+ "sizeUploaded": uploaded_size,
307
+ "chunksTotal": total_chunks,
308
+ "chunksUploaded": completed_count,
309
+ })
310
+
311
+ with ThreadPoolExecutor(max_workers=8) as executor:
312
+ futures = [executor.submit(upload_remaining_chunk, chunk) for chunk in chunks[1:]]
313
+ for future in as_completed(futures):
314
+ future.result()
315
+
316
+ return final_result or last_result
257
317
 
258
318
  def flatten(self, data, prefix='', stringify=False):
259
319
  output = {}
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: appwrite
3
- Version: 19.1.0
3
+ Version: 19.2.0
4
4
  Summary: Appwrite is an open-source self-hosted backend server that abstracts and simplifies complex and repetitive development tasks behind a very simple REST API
5
5
  Home-page: https://appwrite.io/support
6
- Download-URL: https://github.com/appwrite/sdk-for-python/archive/19.1.0.tar.gz
6
+ Download-URL: https://github.com/appwrite/sdk-for-python/archive/19.2.0.tar.gz
7
7
  Author: Appwrite Team
8
8
  Author-email: Appwrite Team <team@appwrite.io>
9
9
  Maintainer: Appwrite Team
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "appwrite"
7
- version = "19.1.0"
7
+ version = "19.2.0"
8
8
  description = "Appwrite is an open-source self-hosted backend server that abstracts and simplifies complex and repetitive development tasks behind a very simple REST API"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -8,7 +8,7 @@ with open("README.md", "r", encoding="utf-8") as readme_file_desc:
8
8
  setuptools.setup(
9
9
  name = 'appwrite',
10
10
  packages = setuptools.find_packages(),
11
- version = '19.1.0',
11
+ version = '19.2.0',
12
12
  license='BSD-3-Clause',
13
13
  description = 'Appwrite is an open-source self-hosted backend server that abstracts and simplifies complex and repetitive development tasks behind a very simple REST API',
14
14
  long_description = long_description,
@@ -18,7 +18,7 @@ setuptools.setup(
18
18
  maintainer = 'Appwrite Team',
19
19
  maintainer_email = 'team@appwrite.io',
20
20
  url = 'https://appwrite.io/support',
21
- download_url='https://github.com/appwrite/sdk-for-python/archive/19.1.0.tar.gz',
21
+ download_url='https://github.com/appwrite/sdk-for-python/archive/19.2.0.tar.gz',
22
22
  install_requires=[
23
23
  'requests',
24
24
  'pydantic>=2,<3',
File without changes
File without changes
File without changes