From 6a2c3ffe9dc068cf185e69d1659663b95102150b Mon Sep 17 00:00:00 2001 From: root Date: Mon, 10 Jul 2023 14:16:42 +0000 Subject: [PATCH 1/5] update travis deploy script --- appwrite.egg-info/PKG-INFO | 121 ++++++++++++++++++ appwrite.egg-info/SOURCES.txt | 29 +++++ appwrite.egg-info/dependency_links.txt | 1 + appwrite.egg-info/requires.txt | 1 + appwrite.egg-info/top_level.txt | 2 + appwrite/client.py | 5 +- appwrite/services/databases.py | 27 ++++ dist/appwrite-2.0.2.tar.gz | Bin 0 -> 15709 bytes .../account/create-phone-verification.md | 2 +- docs/examples/account/create-recovery.md | 2 +- docs/examples/account/create-verification.md | 2 +- docs/examples/account/delete-session.md | 2 +- docs/examples/account/delete-sessions.md | 2 +- docs/examples/account/get-prefs.md | 2 +- docs/examples/account/get-session.md | 2 +- docs/examples/account/get.md | 2 +- docs/examples/account/list-logs.md | 2 +- docs/examples/account/list-sessions.md | 2 +- docs/examples/account/update-email.md | 2 +- docs/examples/account/update-name.md | 2 +- docs/examples/account/update-password.md | 2 +- .../account/update-phone-verification.md | 2 +- docs/examples/account/update-phone.md | 2 +- docs/examples/account/update-prefs.md | 2 +- docs/examples/account/update-recovery.md | 2 +- docs/examples/account/update-session.md | 2 +- docs/examples/account/update-status.md | 2 +- docs/examples/account/update-verification.md | 2 +- docs/examples/avatars/get-browser.md | 2 +- docs/examples/avatars/get-credit-card.md | 2 +- docs/examples/avatars/get-favicon.md | 2 +- docs/examples/avatars/get-flag.md | 2 +- docs/examples/avatars/get-image.md | 2 +- docs/examples/avatars/get-initials.md | 2 +- docs/examples/avatars/get-q-r.md | 2 +- .../databases/create-boolean-attribute.md | 2 +- docs/examples/databases/create-collection.md | 2 +- .../databases/create-datetime-attribute.md | 2 +- docs/examples/databases/create-document.md | 2 +- .../databases/create-email-attribute.md | 2 +- .../databases/create-enum-attribute.md | 2 +- .../databases/create-float-attribute.md | 2 +- docs/examples/databases/create-index.md | 2 +- .../databases/create-integer-attribute.md | 2 +- .../examples/databases/create-ip-attribute.md | 2 +- .../create-relationship-attribute.md | 2 +- .../databases/create-string-attribute.md | 2 +- .../databases/create-url-attribute.md | 2 +- docs/examples/databases/create.md | 2 +- docs/examples/databases/delete-attribute.md | 2 +- docs/examples/databases/delete-collection.md | 2 +- docs/examples/databases/delete-document.md | 2 +- docs/examples/databases/delete-index.md | 2 +- docs/examples/databases/delete.md | 2 +- docs/examples/databases/get-attribute.md | 2 +- docs/examples/databases/get-collection.md | 2 +- docs/examples/databases/get-document.md | 2 +- docs/examples/databases/get-index.md | 2 +- docs/examples/databases/get.md | 2 +- docs/examples/databases/list-attributes.md | 2 +- docs/examples/databases/list-collections.md | 2 +- docs/examples/databases/list-documents.md | 2 +- docs/examples/databases/list-indexes.md | 2 +- docs/examples/databases/list.md | 2 +- .../databases/update-boolean-attribute.md | 2 +- docs/examples/databases/update-collection.md | 2 +- .../databases/update-datetime-attribute.md | 2 +- docs/examples/databases/update-document.md | 2 +- .../databases/update-email-attribute.md | 2 +- .../databases/update-enum-attribute.md | 2 +- .../databases/update-float-attribute.md | 2 +- .../databases/update-integer-attribute.md | 2 +- .../examples/databases/update-ip-attribute.md | 2 +- .../update-relationship-attribute.md | 2 +- .../databases/update-string-attribute.md | 2 +- .../databases/update-url-attribute.md | 2 +- docs/examples/databases/update.md | 2 +- docs/examples/functions/create-build.md | 2 +- docs/examples/functions/create-deployment.md | 2 +- docs/examples/functions/create-execution.md | 2 +- docs/examples/functions/create-variable.md | 2 +- docs/examples/functions/create.md | 2 +- docs/examples/functions/delete-deployment.md | 2 +- docs/examples/functions/delete-variable.md | 2 +- docs/examples/functions/delete.md | 2 +- docs/examples/functions/get-deployment.md | 2 +- docs/examples/functions/get-execution.md | 2 +- docs/examples/functions/get-variable.md | 2 +- docs/examples/functions/get.md | 2 +- docs/examples/functions/list-deployments.md | 2 +- docs/examples/functions/list-executions.md | 2 +- docs/examples/functions/list-runtimes.md | 2 +- docs/examples/functions/list-variables.md | 2 +- docs/examples/functions/list.md | 2 +- docs/examples/functions/update-deployment.md | 2 +- docs/examples/functions/update-variable.md | 2 +- docs/examples/functions/update.md | 2 +- docs/examples/graphql/mutation.md | 2 +- docs/examples/graphql/query.md | 2 +- docs/examples/health/get-antivirus.md | 2 +- docs/examples/health/get-cache.md | 2 +- docs/examples/health/get-d-b.md | 2 +- .../examples/health/get-queue-certificates.md | 2 +- docs/examples/health/get-queue-functions.md | 2 +- docs/examples/health/get-queue-logs.md | 2 +- docs/examples/health/get-queue-webhooks.md | 2 +- docs/examples/health/get-storage-local.md | 2 +- docs/examples/health/get-time.md | 2 +- docs/examples/health/get.md | 2 +- docs/examples/locale/get.md | 2 +- docs/examples/locale/list-continents.md | 2 +- docs/examples/locale/list-countries-e-u.md | 2 +- docs/examples/locale/list-countries-phones.md | 2 +- docs/examples/locale/list-countries.md | 2 +- docs/examples/locale/list-currencies.md | 2 +- docs/examples/locale/list-languages.md | 2 +- docs/examples/storage/create-bucket.md | 2 +- docs/examples/storage/create-file.md | 2 +- docs/examples/storage/delete-bucket.md | 2 +- docs/examples/storage/delete-file.md | 2 +- docs/examples/storage/get-bucket.md | 2 +- docs/examples/storage/get-file-download.md | 2 +- docs/examples/storage/get-file-preview.md | 2 +- docs/examples/storage/get-file-view.md | 2 +- docs/examples/storage/get-file.md | 2 +- docs/examples/storage/list-buckets.md | 2 +- docs/examples/storage/list-files.md | 2 +- docs/examples/storage/update-bucket.md | 2 +- docs/examples/storage/update-file.md | 2 +- docs/examples/teams/create-membership.md | 2 +- docs/examples/teams/create.md | 2 +- docs/examples/teams/delete-membership.md | 2 +- docs/examples/teams/delete.md | 2 +- docs/examples/teams/get-membership.md | 2 +- docs/examples/teams/get-prefs.md | 2 +- docs/examples/teams/get.md | 2 +- docs/examples/teams/list-memberships.md | 2 +- docs/examples/teams/list.md | 2 +- .../examples/teams/update-membership-roles.md | 2 +- .../teams/update-membership-status.md | 2 +- docs/examples/teams/update-name.md | 2 +- docs/examples/teams/update-prefs.md | 2 +- docs/examples/users/create-argon2user.md | 2 +- docs/examples/users/create-bcrypt-user.md | 2 +- docs/examples/users/create-m-d5user.md | 2 +- docs/examples/users/create-p-h-pass-user.md | 2 +- docs/examples/users/create-s-h-a-user.md | 2 +- .../users/create-scrypt-modified-user.md | 2 +- docs/examples/users/create-scrypt-user.md | 2 +- docs/examples/users/create.md | 2 +- docs/examples/users/delete-session.md | 2 +- docs/examples/users/delete-sessions.md | 2 +- docs/examples/users/delete.md | 2 +- docs/examples/users/get-prefs.md | 2 +- docs/examples/users/get.md | 2 +- docs/examples/users/list-logs.md | 2 +- docs/examples/users/list-memberships.md | 2 +- docs/examples/users/list-sessions.md | 2 +- docs/examples/users/list.md | 2 +- .../users/update-email-verification.md | 2 +- docs/examples/users/update-email.md | 2 +- docs/examples/users/update-name.md | 2 +- docs/examples/users/update-password.md | 2 +- .../users/update-phone-verification.md | 2 +- docs/examples/users/update-phone.md | 2 +- docs/examples/users/update-prefs.md | 2 +- docs/examples/users/update-status.md | 2 +- requirements.txt | 2 +- setup.py | 4 +- 169 files changed, 344 insertions(+), 166 deletions(-) create mode 100644 appwrite.egg-info/PKG-INFO create mode 100644 appwrite.egg-info/SOURCES.txt create mode 100644 appwrite.egg-info/dependency_links.txt create mode 100644 appwrite.egg-info/requires.txt create mode 100644 appwrite.egg-info/top_level.txt create mode 100644 dist/appwrite-2.0.2.tar.gz diff --git a/appwrite.egg-info/PKG-INFO b/appwrite.egg-info/PKG-INFO new file mode 100644 index 0000000..0e39812 --- /dev/null +++ b/appwrite.egg-info/PKG-INFO @@ -0,0 +1,121 @@ +Metadata-Version: 2.1 +Name: appwrite +Version: 2.0.2 +Summary: Appwrite is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API +Home-page: https://appwrite.io/support +Download-URL: https://github.com/appwrite/sdk-for-python/archive/2.0.2.tar.gz +Author: Appwrite Team +Author-email: team@appwrite.io +Maintainer: Appwrite Team +Maintainer-email: team@appwrite.io +License: BSD-3-Clause +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Environment :: Web Environment +Classifier: Topic :: Software Development +Classifier: License :: OSI Approved :: BSD License +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Description-Content-Type: text/markdown +License-File: LICENSE + +# Appwrite Python SDK + +![License](https://img.shields.io/github/license/appwrite/sdk-for-python.svg?style=flat-square) +![Version](https://img.shields.io/badge/api%20version-1.3.2-blue.svg?style=flat-square) +[![Build Status](https://img.shields.io/travis/com/appwrite/sdk-generator?style=flat-square)](https://travis-ci.com/appwrite/sdk-generator) +[![Twitter Account](https://img.shields.io/twitter/follow/appwrite?color=00acee&label=twitter&style=flat-square)](https://twitter.com/appwrite) +[![Discord](https://img.shields.io/discord/564160730845151244?label=discord&style=flat-square)](https://appwrite.io/discord) + +**This SDK is compatible with Appwrite server version 1.3.x. For older versions, please check [previous releases](https://github.com/appwrite/sdk-for-python/releases).** + +Appwrite is an open-source backend as a service server that abstract and simplify complex and repetitive development tasks behind a very simple to use REST API. Appwrite aims to help you develop your apps faster and in a more secure way. Use the Python SDK to integrate your app with the Appwrite server to easily start interacting with all of Appwrite backend APIs and tools. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs) + +![Appwrite](https://appwrite.io/images/github.png) + +## Installation + +To install via [PyPI](https://pypi.org/): + +```bash +pip install appwrite +``` + + +## Getting Started + +### Init your SDK +Initialize your SDK with your Appwrite server API endpoint and project ID which can be found on your project settings page and your new API secret Key from project's API keys section. + +```python +from appwrite.client import Client +from appwrite.services.users import Users + +client = Client() + +(client + .set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint + .set_project('5df5acd0d48c2') # Your project ID + .set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key + .set_self_signed() # Use only on dev mode with a self-signed SSL cert +) +``` + +### Make Your First Request +Once your SDK object is set, create any of the Appwrite service objects and choose any request to send. Full documentation for any service method you would like to use can be found in your SDK documentation or in the [API References](https://appwrite.io/docs) section. + +```python +users = Users(client) + +result = users.create('[USER_ID]', 'email@example.com', 'password') +``` + +### Full Example +```python +from appwrite.client import Client +from appwrite.services.users import Users +from appwrite.id import ID + +client = Client() + +(client + .set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint + .set_project('5df5acd0d48c2') # Your project ID + .set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key + .set_self_signed() # Use only on dev mode with a self-signed SSL cert +) + +users = Users(client) + +result = users.create(ID.unique(), 'email@example.com', 'password') +``` + +### Error Handling +The Appwrite Python SDK raises `AppwriteException` object with `message`, `code` and `response` properties. You can handle any errors by catching `AppwriteException` and present the `message` to the user or handle it yourself based on the provided error information. Below is an example. + +```python +users = Users(client) +try: + result = users.create(ID.unique(), 'email@example.com', 'password') +except AppwriteException as e: + print(e.message) +``` + +### Learn more +You can use the following resources to learn more and get help +- 🚀 [Getting Started Tutorial](https://appwrite.io/docs/getting-started-for-server) +- 📜 [Appwrite Docs](https://appwrite.io/docs) +- 💬 [Discord Community](https://appwrite.io/discord) +- 🚂 [Appwrite Python Playground](https://github.com/appwrite/playground-for-python) + + +## Contribution + +This library is auto-generated by Appwrite custom [SDK Generator](https://github.com/appwrite/sdk-generator). To learn more about how you can help us improve this SDK, please check the [contribution guide](https://github.com/appwrite/sdk-generator/blob/master/CONTRIBUTING.md) before sending a pull-request. + +## License + +Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. diff --git a/appwrite.egg-info/SOURCES.txt b/appwrite.egg-info/SOURCES.txt new file mode 100644 index 0000000..996394b --- /dev/null +++ b/appwrite.egg-info/SOURCES.txt @@ -0,0 +1,29 @@ +LICENSE +README.md +setup.cfg +setup.py +appwrite/__init__.py +appwrite/client.py +appwrite/exception.py +appwrite/id.py +appwrite/input_file.py +appwrite/permission.py +appwrite/query.py +appwrite/role.py +appwrite/service.py +appwrite.egg-info/PKG-INFO +appwrite.egg-info/SOURCES.txt +appwrite.egg-info/dependency_links.txt +appwrite.egg-info/requires.txt +appwrite.egg-info/top_level.txt +appwrite/services/__init__.py +appwrite/services/account.py +appwrite/services/avatars.py +appwrite/services/databases.py +appwrite/services/functions.py +appwrite/services/graphql.py +appwrite/services/health.py +appwrite/services/locale.py +appwrite/services/storage.py +appwrite/services/teams.py +appwrite/services/users.py \ No newline at end of file diff --git a/appwrite.egg-info/dependency_links.txt b/appwrite.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/appwrite.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/appwrite.egg-info/requires.txt b/appwrite.egg-info/requires.txt new file mode 100644 index 0000000..f229360 --- /dev/null +++ b/appwrite.egg-info/requires.txt @@ -0,0 +1 @@ +requests diff --git a/appwrite.egg-info/top_level.txt b/appwrite.egg-info/top_level.txt new file mode 100644 index 0000000..297f199 --- /dev/null +++ b/appwrite.egg-info/top_level.txt @@ -0,0 +1,2 @@ +appwrite +appwrite/services diff --git a/appwrite/client.py b/appwrite/client.py index 22347da..9af5f32 100644 --- a/appwrite/client.py +++ b/appwrite/client.py @@ -11,11 +11,10 @@ def __init__(self): self._endpoint = 'https://HOSTNAME/v1' self._global_headers = { 'content-type': '', - 'user-agent' : 'AppwritePythonSDK/2.0.1 (${os.uname().sysname}; ${os.uname().version}; ${os.uname().machine})', 'x-sdk-name': 'Python', 'x-sdk-platform': 'server', 'x-sdk-language': 'python', - 'x-sdk-version': '2.0.1', + 'x-sdk-version': '2.0.2', 'X-Appwrite-Response-Format' : '1.0.0', } @@ -60,8 +59,6 @@ def call(self, method, path='', headers=None, params=None): if params is None: params = {} - params = {k: v for k, v in params.items() if v is not None} # Remove None values from params dictionary - data = {} json = {} files = {} diff --git a/appwrite/services/databases.py b/appwrite/services/databases.py index 6d1b932..eb9fcf6 100644 --- a/appwrite/services/databases.py +++ b/appwrite/services/databases.py @@ -271,6 +271,9 @@ def update_boolean_attribute(self, database_id, collection_id, key, required, de if required is None: raise AppwriteException('Missing required parameter: "required"') + if default is None: + raise AppwriteException('Missing required parameter: "default"') + path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -330,6 +333,9 @@ def update_datetime_attribute(self, database_id, collection_id, key, required, d if required is None: raise AppwriteException('Missing required parameter: "required"') + if default is None: + raise AppwriteException('Missing required parameter: "default"') + path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -389,6 +395,9 @@ def update_email_attribute(self, database_id, collection_id, key, required, defa if required is None: raise AppwriteException('Missing required parameter: "required"') + if default is None: + raise AppwriteException('Missing required parameter: "default"') + path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -455,6 +464,9 @@ def update_enum_attribute(self, database_id, collection_id, key, elements, requi if required is None: raise AppwriteException('Missing required parameter: "required"') + if default is None: + raise AppwriteException('Missing required parameter: "default"') + path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -523,6 +535,9 @@ def update_float_attribute(self, database_id, collection_id, key, required, min, if max is None: raise AppwriteException('Missing required parameter: "max"') + if default is None: + raise AppwriteException('Missing required parameter: "default"') + path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -592,6 +607,9 @@ def update_integer_attribute(self, database_id, collection_id, key, required, mi if max is None: raise AppwriteException('Missing required parameter: "max"') + if default is None: + raise AppwriteException('Missing required parameter: "default"') + path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -653,6 +671,9 @@ def update_ip_attribute(self, database_id, collection_id, key, required, default if required is None: raise AppwriteException('Missing required parameter: "required"') + if default is None: + raise AppwriteException('Missing required parameter: "default"') + path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -748,6 +769,9 @@ def update_string_attribute(self, database_id, collection_id, key, required, def if required is None: raise AppwriteException('Missing required parameter: "required"') + if default is None: + raise AppwriteException('Missing required parameter: "default"') + path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -807,6 +831,9 @@ def update_url_attribute(self, database_id, collection_id, key, required, defaul if required is None: raise AppwriteException('Missing required parameter: "required"') + if default is None: + raise AppwriteException('Missing required parameter: "default"') + path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) diff --git a/dist/appwrite-2.0.2.tar.gz b/dist/appwrite-2.0.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..f3c19e60386d825ae42f78fbf7a4cf5361b7ef0b GIT binary patch literal 15709 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 Date: Mon, 10 Jul 2023 14:23:02 +0000 Subject: [PATCH 2/5] update travis ci file --- appwrite.egg-info/PKG-INFO | 121 ------------------ appwrite.egg-info/SOURCES.txt | 29 ----- appwrite.egg-info/dependency_links.txt | 1 - appwrite.egg-info/requires.txt | 1 - appwrite.egg-info/top_level.txt | 2 - appwrite/client.py | 3 + appwrite/services/databases.py | 27 ---- dist/appwrite-2.0.2.tar.gz | Bin 15709 -> 0 bytes .../account/create-phone-verification.md | 2 +- docs/examples/account/create-recovery.md | 2 +- docs/examples/account/create-verification.md | 2 +- docs/examples/account/delete-session.md | 2 +- docs/examples/account/delete-sessions.md | 2 +- docs/examples/account/get-prefs.md | 2 +- docs/examples/account/get-session.md | 2 +- docs/examples/account/get.md | 2 +- docs/examples/account/list-logs.md | 2 +- docs/examples/account/list-sessions.md | 2 +- docs/examples/account/update-email.md | 2 +- docs/examples/account/update-name.md | 2 +- docs/examples/account/update-password.md | 2 +- .../account/update-phone-verification.md | 2 +- docs/examples/account/update-phone.md | 2 +- docs/examples/account/update-prefs.md | 2 +- docs/examples/account/update-recovery.md | 2 +- docs/examples/account/update-session.md | 2 +- docs/examples/account/update-status.md | 2 +- docs/examples/account/update-verification.md | 2 +- docs/examples/avatars/get-browser.md | 2 +- docs/examples/avatars/get-credit-card.md | 2 +- docs/examples/avatars/get-favicon.md | 2 +- docs/examples/avatars/get-flag.md | 2 +- docs/examples/avatars/get-image.md | 2 +- docs/examples/avatars/get-initials.md | 2 +- docs/examples/avatars/get-q-r.md | 2 +- .../databases/create-boolean-attribute.md | 2 +- docs/examples/databases/create-collection.md | 2 +- .../databases/create-datetime-attribute.md | 2 +- docs/examples/databases/create-document.md | 2 +- .../databases/create-email-attribute.md | 2 +- .../databases/create-enum-attribute.md | 2 +- .../databases/create-float-attribute.md | 2 +- docs/examples/databases/create-index.md | 2 +- .../databases/create-integer-attribute.md | 2 +- .../examples/databases/create-ip-attribute.md | 2 +- .../create-relationship-attribute.md | 2 +- .../databases/create-string-attribute.md | 2 +- .../databases/create-url-attribute.md | 2 +- docs/examples/databases/create.md | 2 +- docs/examples/databases/delete-attribute.md | 2 +- docs/examples/databases/delete-collection.md | 2 +- docs/examples/databases/delete-document.md | 2 +- docs/examples/databases/delete-index.md | 2 +- docs/examples/databases/delete.md | 2 +- docs/examples/databases/get-attribute.md | 2 +- docs/examples/databases/get-collection.md | 2 +- docs/examples/databases/get-document.md | 2 +- docs/examples/databases/get-index.md | 2 +- docs/examples/databases/get.md | 2 +- docs/examples/databases/list-attributes.md | 2 +- docs/examples/databases/list-collections.md | 2 +- docs/examples/databases/list-documents.md | 2 +- docs/examples/databases/list-indexes.md | 2 +- docs/examples/databases/list.md | 2 +- .../databases/update-boolean-attribute.md | 2 +- docs/examples/databases/update-collection.md | 2 +- .../databases/update-datetime-attribute.md | 2 +- docs/examples/databases/update-document.md | 2 +- .../databases/update-email-attribute.md | 2 +- .../databases/update-enum-attribute.md | 2 +- .../databases/update-float-attribute.md | 2 +- .../databases/update-integer-attribute.md | 2 +- .../examples/databases/update-ip-attribute.md | 2 +- .../update-relationship-attribute.md | 2 +- .../databases/update-string-attribute.md | 2 +- .../databases/update-url-attribute.md | 2 +- docs/examples/databases/update.md | 2 +- docs/examples/functions/create-build.md | 2 +- docs/examples/functions/create-deployment.md | 2 +- docs/examples/functions/create-execution.md | 2 +- docs/examples/functions/create-variable.md | 2 +- docs/examples/functions/create.md | 2 +- docs/examples/functions/delete-deployment.md | 2 +- docs/examples/functions/delete-variable.md | 2 +- docs/examples/functions/delete.md | 2 +- docs/examples/functions/get-deployment.md | 2 +- docs/examples/functions/get-execution.md | 2 +- docs/examples/functions/get-variable.md | 2 +- docs/examples/functions/get.md | 2 +- docs/examples/functions/list-deployments.md | 2 +- docs/examples/functions/list-executions.md | 2 +- docs/examples/functions/list-runtimes.md | 2 +- docs/examples/functions/list-variables.md | 2 +- docs/examples/functions/list.md | 2 +- docs/examples/functions/update-deployment.md | 2 +- docs/examples/functions/update-variable.md | 2 +- docs/examples/functions/update.md | 2 +- docs/examples/graphql/mutation.md | 2 +- docs/examples/graphql/query.md | 2 +- docs/examples/health/get-antivirus.md | 2 +- docs/examples/health/get-cache.md | 2 +- docs/examples/health/get-d-b.md | 2 +- .../examples/health/get-queue-certificates.md | 2 +- docs/examples/health/get-queue-functions.md | 2 +- docs/examples/health/get-queue-logs.md | 2 +- docs/examples/health/get-queue-webhooks.md | 2 +- docs/examples/health/get-storage-local.md | 2 +- docs/examples/health/get-time.md | 2 +- docs/examples/health/get.md | 2 +- docs/examples/locale/get.md | 2 +- docs/examples/locale/list-continents.md | 2 +- docs/examples/locale/list-countries-e-u.md | 2 +- docs/examples/locale/list-countries-phones.md | 2 +- docs/examples/locale/list-countries.md | 2 +- docs/examples/locale/list-currencies.md | 2 +- docs/examples/locale/list-languages.md | 2 +- docs/examples/storage/create-bucket.md | 2 +- docs/examples/storage/create-file.md | 2 +- docs/examples/storage/delete-bucket.md | 2 +- docs/examples/storage/delete-file.md | 2 +- docs/examples/storage/get-bucket.md | 2 +- docs/examples/storage/get-file-download.md | 2 +- docs/examples/storage/get-file-preview.md | 2 +- docs/examples/storage/get-file-view.md | 2 +- docs/examples/storage/get-file.md | 2 +- docs/examples/storage/list-buckets.md | 2 +- docs/examples/storage/list-files.md | 2 +- docs/examples/storage/update-bucket.md | 2 +- docs/examples/storage/update-file.md | 2 +- docs/examples/teams/create-membership.md | 2 +- docs/examples/teams/create.md | 2 +- docs/examples/teams/delete-membership.md | 2 +- docs/examples/teams/delete.md | 2 +- docs/examples/teams/get-membership.md | 2 +- docs/examples/teams/get-prefs.md | 2 +- docs/examples/teams/get.md | 2 +- docs/examples/teams/list-memberships.md | 2 +- docs/examples/teams/list.md | 2 +- .../examples/teams/update-membership-roles.md | 2 +- .../teams/update-membership-status.md | 2 +- docs/examples/teams/update-name.md | 2 +- docs/examples/teams/update-prefs.md | 2 +- docs/examples/users/create-argon2user.md | 2 +- docs/examples/users/create-bcrypt-user.md | 2 +- docs/examples/users/create-m-d5user.md | 2 +- docs/examples/users/create-p-h-pass-user.md | 2 +- docs/examples/users/create-s-h-a-user.md | 2 +- .../users/create-scrypt-modified-user.md | 2 +- docs/examples/users/create-scrypt-user.md | 2 +- docs/examples/users/create.md | 2 +- docs/examples/users/delete-session.md | 2 +- docs/examples/users/delete-sessions.md | 2 +- docs/examples/users/delete.md | 2 +- docs/examples/users/get-prefs.md | 2 +- docs/examples/users/get.md | 2 +- docs/examples/users/list-logs.md | 2 +- docs/examples/users/list-memberships.md | 2 +- docs/examples/users/list-sessions.md | 2 +- docs/examples/users/list.md | 2 +- .../users/update-email-verification.md | 2 +- docs/examples/users/update-email.md | 2 +- docs/examples/users/update-name.md | 2 +- docs/examples/users/update-password.md | 2 +- .../users/update-phone-verification.md | 2 +- docs/examples/users/update-phone.md | 2 +- docs/examples/users/update-prefs.md | 2 +- docs/examples/users/update-status.md | 2 +- requirements.txt | 2 +- 168 files changed, 163 insertions(+), 341 deletions(-) delete mode 100644 appwrite.egg-info/PKG-INFO delete mode 100644 appwrite.egg-info/SOURCES.txt delete mode 100644 appwrite.egg-info/dependency_links.txt delete mode 100644 appwrite.egg-info/requires.txt delete mode 100644 appwrite.egg-info/top_level.txt delete mode 100644 dist/appwrite-2.0.2.tar.gz diff --git a/appwrite.egg-info/PKG-INFO b/appwrite.egg-info/PKG-INFO deleted file mode 100644 index 0e39812..0000000 --- a/appwrite.egg-info/PKG-INFO +++ /dev/null @@ -1,121 +0,0 @@ -Metadata-Version: 2.1 -Name: appwrite -Version: 2.0.2 -Summary: Appwrite is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API -Home-page: https://appwrite.io/support -Download-URL: https://github.com/appwrite/sdk-for-python/archive/2.0.2.tar.gz -Author: Appwrite Team -Author-email: team@appwrite.io -Maintainer: Appwrite Team -Maintainer-email: team@appwrite.io -License: BSD-3-Clause -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: Environment :: Web Environment -Classifier: Topic :: Software Development -Classifier: License :: OSI Approved :: BSD License -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Description-Content-Type: text/markdown -License-File: LICENSE - -# Appwrite Python SDK - -![License](https://img.shields.io/github/license/appwrite/sdk-for-python.svg?style=flat-square) -![Version](https://img.shields.io/badge/api%20version-1.3.2-blue.svg?style=flat-square) -[![Build Status](https://img.shields.io/travis/com/appwrite/sdk-generator?style=flat-square)](https://travis-ci.com/appwrite/sdk-generator) -[![Twitter Account](https://img.shields.io/twitter/follow/appwrite?color=00acee&label=twitter&style=flat-square)](https://twitter.com/appwrite) -[![Discord](https://img.shields.io/discord/564160730845151244?label=discord&style=flat-square)](https://appwrite.io/discord) - -**This SDK is compatible with Appwrite server version 1.3.x. For older versions, please check [previous releases](https://github.com/appwrite/sdk-for-python/releases).** - -Appwrite is an open-source backend as a service server that abstract and simplify complex and repetitive development tasks behind a very simple to use REST API. Appwrite aims to help you develop your apps faster and in a more secure way. Use the Python SDK to integrate your app with the Appwrite server to easily start interacting with all of Appwrite backend APIs and tools. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs) - -![Appwrite](https://appwrite.io/images/github.png) - -## Installation - -To install via [PyPI](https://pypi.org/): - -```bash -pip install appwrite -``` - - -## Getting Started - -### Init your SDK -Initialize your SDK with your Appwrite server API endpoint and project ID which can be found on your project settings page and your new API secret Key from project's API keys section. - -```python -from appwrite.client import Client -from appwrite.services.users import Users - -client = Client() - -(client - .set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint - .set_project('5df5acd0d48c2') # Your project ID - .set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key - .set_self_signed() # Use only on dev mode with a self-signed SSL cert -) -``` - -### Make Your First Request -Once your SDK object is set, create any of the Appwrite service objects and choose any request to send. Full documentation for any service method you would like to use can be found in your SDK documentation or in the [API References](https://appwrite.io/docs) section. - -```python -users = Users(client) - -result = users.create('[USER_ID]', 'email@example.com', 'password') -``` - -### Full Example -```python -from appwrite.client import Client -from appwrite.services.users import Users -from appwrite.id import ID - -client = Client() - -(client - .set_endpoint('https://[HOSTNAME_OR_IP]/v1') # Your API Endpoint - .set_project('5df5acd0d48c2') # Your project ID - .set_key('919c2d18fb5d4...a2ae413da83346ad2') # Your secret API key - .set_self_signed() # Use only on dev mode with a self-signed SSL cert -) - -users = Users(client) - -result = users.create(ID.unique(), 'email@example.com', 'password') -``` - -### Error Handling -The Appwrite Python SDK raises `AppwriteException` object with `message`, `code` and `response` properties. You can handle any errors by catching `AppwriteException` and present the `message` to the user or handle it yourself based on the provided error information. Below is an example. - -```python -users = Users(client) -try: - result = users.create(ID.unique(), 'email@example.com', 'password') -except AppwriteException as e: - print(e.message) -``` - -### Learn more -You can use the following resources to learn more and get help -- 🚀 [Getting Started Tutorial](https://appwrite.io/docs/getting-started-for-server) -- 📜 [Appwrite Docs](https://appwrite.io/docs) -- 💬 [Discord Community](https://appwrite.io/discord) -- 🚂 [Appwrite Python Playground](https://github.com/appwrite/playground-for-python) - - -## Contribution - -This library is auto-generated by Appwrite custom [SDK Generator](https://github.com/appwrite/sdk-generator). To learn more about how you can help us improve this SDK, please check the [contribution guide](https://github.com/appwrite/sdk-generator/blob/master/CONTRIBUTING.md) before sending a pull-request. - -## License - -Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. diff --git a/appwrite.egg-info/SOURCES.txt b/appwrite.egg-info/SOURCES.txt deleted file mode 100644 index 996394b..0000000 --- a/appwrite.egg-info/SOURCES.txt +++ /dev/null @@ -1,29 +0,0 @@ -LICENSE -README.md -setup.cfg -setup.py -appwrite/__init__.py -appwrite/client.py -appwrite/exception.py -appwrite/id.py -appwrite/input_file.py -appwrite/permission.py -appwrite/query.py -appwrite/role.py -appwrite/service.py -appwrite.egg-info/PKG-INFO -appwrite.egg-info/SOURCES.txt -appwrite.egg-info/dependency_links.txt -appwrite.egg-info/requires.txt -appwrite.egg-info/top_level.txt -appwrite/services/__init__.py -appwrite/services/account.py -appwrite/services/avatars.py -appwrite/services/databases.py -appwrite/services/functions.py -appwrite/services/graphql.py -appwrite/services/health.py -appwrite/services/locale.py -appwrite/services/storage.py -appwrite/services/teams.py -appwrite/services/users.py \ No newline at end of file diff --git a/appwrite.egg-info/dependency_links.txt b/appwrite.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789..0000000 --- a/appwrite.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/appwrite.egg-info/requires.txt b/appwrite.egg-info/requires.txt deleted file mode 100644 index f229360..0000000 --- a/appwrite.egg-info/requires.txt +++ /dev/null @@ -1 +0,0 @@ -requests diff --git a/appwrite.egg-info/top_level.txt b/appwrite.egg-info/top_level.txt deleted file mode 100644 index 297f199..0000000 --- a/appwrite.egg-info/top_level.txt +++ /dev/null @@ -1,2 +0,0 @@ -appwrite -appwrite/services diff --git a/appwrite/client.py b/appwrite/client.py index 9af5f32..61248fa 100644 --- a/appwrite/client.py +++ b/appwrite/client.py @@ -11,6 +11,7 @@ def __init__(self): self._endpoint = 'https://HOSTNAME/v1' self._global_headers = { 'content-type': '', + 'user-agent' : 'AppwritePythonSDK/2.0.2 (${os.uname().sysname}; ${os.uname().version}; ${os.uname().machine})', 'x-sdk-name': 'Python', 'x-sdk-platform': 'server', 'x-sdk-language': 'python', @@ -59,6 +60,8 @@ def call(self, method, path='', headers=None, params=None): if params is None: params = {} + params = {k: v for k, v in params.items() if v is not None} # Remove None values from params dictionary + data = {} json = {} files = {} diff --git a/appwrite/services/databases.py b/appwrite/services/databases.py index eb9fcf6..6d1b932 100644 --- a/appwrite/services/databases.py +++ b/appwrite/services/databases.py @@ -271,9 +271,6 @@ def update_boolean_attribute(self, database_id, collection_id, key, required, de if required is None: raise AppwriteException('Missing required parameter: "required"') - if default is None: - raise AppwriteException('Missing required parameter: "default"') - path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -333,9 +330,6 @@ def update_datetime_attribute(self, database_id, collection_id, key, required, d if required is None: raise AppwriteException('Missing required parameter: "required"') - if default is None: - raise AppwriteException('Missing required parameter: "default"') - path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -395,9 +389,6 @@ def update_email_attribute(self, database_id, collection_id, key, required, defa if required is None: raise AppwriteException('Missing required parameter: "required"') - if default is None: - raise AppwriteException('Missing required parameter: "default"') - path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -464,9 +455,6 @@ def update_enum_attribute(self, database_id, collection_id, key, elements, requi if required is None: raise AppwriteException('Missing required parameter: "required"') - if default is None: - raise AppwriteException('Missing required parameter: "default"') - path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -535,9 +523,6 @@ def update_float_attribute(self, database_id, collection_id, key, required, min, if max is None: raise AppwriteException('Missing required parameter: "max"') - if default is None: - raise AppwriteException('Missing required parameter: "default"') - path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -607,9 +592,6 @@ def update_integer_attribute(self, database_id, collection_id, key, required, mi if max is None: raise AppwriteException('Missing required parameter: "max"') - if default is None: - raise AppwriteException('Missing required parameter: "default"') - path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -671,9 +653,6 @@ def update_ip_attribute(self, database_id, collection_id, key, required, default if required is None: raise AppwriteException('Missing required parameter: "required"') - if default is None: - raise AppwriteException('Missing required parameter: "default"') - path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -769,9 +748,6 @@ def update_string_attribute(self, database_id, collection_id, key, required, def if required is None: raise AppwriteException('Missing required parameter: "required"') - if default is None: - raise AppwriteException('Missing required parameter: "default"') - path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) @@ -831,9 +807,6 @@ def update_url_attribute(self, database_id, collection_id, key, required, defaul if required is None: raise AppwriteException('Missing required parameter: "required"') - if default is None: - raise AppwriteException('Missing required parameter: "default"') - path = path.replace('{databaseId}', database_id) path = path.replace('{collectionId}', collection_id) path = path.replace('{key}', key) diff --git a/dist/appwrite-2.0.2.tar.gz b/dist/appwrite-2.0.2.tar.gz deleted file mode 100644 index f3c19e60386d825ae42f78fbf7a4cf5361b7ef0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15709 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 Date: Mon, 10 Jul 2023 14:26:42 +0000 Subject: [PATCH 3/5] feat: update travis script --- .gitpod.yml | 10 ++++++++++ .travis.yml | 4 ++++ 2 files changed, 14 insertions(+) create mode 100644 .gitpod.yml diff --git a/.gitpod.yml b/.gitpod.yml new file mode 100644 index 0000000..b1c4d2b --- /dev/null +++ b/.gitpod.yml @@ -0,0 +1,10 @@ +# This configuration file was automatically generated by Gitpod. +# Please adjust to your needs (see https://www.gitpod.io/docs/introduction/learn-gitpod/gitpod-yaml) +# and commit this file to your remote git repository to share the goodness with others. + +# Learn more from ready-to-use templates: https://www.gitpod.io/docs/introduction/getting-started/quickstart + +tasks: + - init: pip install -r requirements.txt + + diff --git a/.travis.yml b/.travis.yml index 712f791..f77fae5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,10 @@ language: python python: - "3.8" +before_install: + - pip uninstall -y urllib3 + - pip install urllib3==1.26.6 + jobs: include: - stage: pypi release From cb1aa3679c9e320d90764c5f094af42f2dc7092e Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 10 Jul 2023 14:27:31 +0000 Subject: [PATCH 4/5] chore: remove gitpod.yml --- .gitpod.yml | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 .gitpod.yml diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index b1c4d2b..0000000 --- a/.gitpod.yml +++ /dev/null @@ -1,10 +0,0 @@ -# This configuration file was automatically generated by Gitpod. -# Please adjust to your needs (see https://www.gitpod.io/docs/introduction/learn-gitpod/gitpod-yaml) -# and commit this file to your remote git repository to share the goodness with others. - -# Learn more from ready-to-use templates: https://www.gitpod.io/docs/introduction/getting-started/quickstart - -tasks: - - init: pip install -r requirements.txt - - From ba72c704dce84d3a15ea60bea061c13f8f7e4fd7 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 10 Jul 2023 15:08:37 +0000 Subject: [PATCH 5/5] revert sdk version --- appwrite/client.py | 4 ++-- setup.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/appwrite/client.py b/appwrite/client.py index 61248fa..22347da 100644 --- a/appwrite/client.py +++ b/appwrite/client.py @@ -11,11 +11,11 @@ def __init__(self): self._endpoint = 'https://HOSTNAME/v1' self._global_headers = { 'content-type': '', - 'user-agent' : 'AppwritePythonSDK/2.0.2 (${os.uname().sysname}; ${os.uname().version}; ${os.uname().machine})', + 'user-agent' : 'AppwritePythonSDK/2.0.1 (${os.uname().sysname}; ${os.uname().version}; ${os.uname().machine})', 'x-sdk-name': 'Python', 'x-sdk-platform': 'server', 'x-sdk-language': 'python', - 'x-sdk-version': '2.0.2', + 'x-sdk-version': '2.0.1', 'X-Appwrite-Response-Format' : '1.0.0', } diff --git a/setup.py b/setup.py index 67f7899..07c7ac7 100644 --- a/setup.py +++ b/setup.py @@ -8,7 +8,7 @@ setuptools.setup( name = 'appwrite', packages = ['appwrite', 'appwrite/services'], - version = '2.0.2', + version = '2.0.1', license='BSD-3-Clause', description = 'Appwrite is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API', long_description = long_description, @@ -18,7 +18,7 @@ maintainer = 'Appwrite Team', maintainer_email = 'team@appwrite.io', url = 'https://appwrite.io/support', - download_url='https://github.com/appwrite/sdk-for-python/archive/2.0.2.tar.gz', + download_url='https://github.com/appwrite/sdk-for-python/archive/2.0.1.tar.gz', # keywords = ['SOME', 'MEANINGFULL', 'KEYWORDS'], install_requires=[ 'requests',