From 58392fce97c1b780ee1c1e624a5dc98abffd6302 Mon Sep 17 00:00:00 2001 From: Thomas De Smedt Date: Wed, 24 Apr 2024 09:42:19 +0200 Subject: [PATCH] chore: regenerate service (sdk-stagingb20240423) --- .github/workflows/python.yml | 3 +- .openapi-generator/FILES | 2 + Makefile | 2 +- README.md | 39 +++-- docs/AboutApi.md | 88 +++++------ docs/BucketApi.md | 4 +- docs/ObjectApi.md | 8 +- docs/Operation.md | 2 + docs/SubscriptionApi.md | 14 +- openapi/storage.openapi.yaml | 6 +- openapi/storage.transformed.openapi.yaml | 8 +- requirements.txt | 2 +- test/api/about_api_test.py | 80 +++++----- test/conftest.py | 3 + test/types/auth_stub.py | 9 +- test/types/authentication_config_stub.py | 15 +- test/types/bucket_configuration_stub.py | 13 +- test/types/bucket_listing_stub.py | 13 +- test/types/bucket_object_listing_stub.py | 15 +- test/types/bucket_object_stub.py | 13 +- test/types/bucket_stub.py | 9 +- test/types/bucketcreationstatus_stub.py | 15 +- test/types/bucketpolicystatus_stub.py | 13 +- test/types/channel_stub.py | 9 +- test/types/channeltype_stub.py | 11 +- test/types/event_filter_stub.py | 11 +- test/types/expiry_stub.py | 9 +- test/types/hal_entity_stub.py | 9 +- test/types/hal_link_stub.py | 9 +- test/types/http_validation_error_stub.py | 15 +- test/types/httpmethod_stub.py | 11 +- test/types/links_stub.py | 9 +- test/types/location_inner_stub.py | 13 +- .../notification_queue_status_report_stub.py | 16 +- test/types/notification_queue_status_stub.py | 15 +- test/types/payload_config_stub.py | 13 +- test/types/queuesetupstatus_stub.py | 13 +- test/types/response_list_stub.py | 13 +- test/types/sign_stub.py | 9 +- test/types/store_stub.py | 9 +- test/types/storetype_stub.py | 9 +- test/types/subscription_config_stub.py | 13 +- test/types/subscriptions_listing_stub.py | 15 +- test/types/subscriptions_stub.py | 13 +- test/types/system_channel_config_stub.py | 15 +- test/types/system_channel_config_type_stub.py | 15 +- test/types/tenant_status_report_stub.py | 13 +- test/types/validation_error_stub.py | 13 +- test/types/venttype_stub.py | 9 +- test/types/web_script_channel_config_stub.py | 15 +- .../web_script_channel_config_type_stub.py | 15 +- .../.openapi-generator/FILES | 1 - waylay-sdk-storage-types/README.md | 34 +++-- waylay-sdk-storage-types/pyproject.toml | 9 +- .../services/storage/models/__init__.py | 4 +- .../storage/models/authentication_config.py | 5 +- .../waylay/services/storage/models/bucket.py | 5 +- .../storage/models/bucket_configuration.py | 5 +- .../services/storage/models/bucket_listing.py | 5 +- .../services/storage/models/bucket_object.py | 5 +- .../storage/models/bucket_object_listing.py | 5 +- .../services/storage/models/event_filter.py | 5 +- .../waylay/services/storage/models/expiry.py | 5 +- .../services/storage/models/hal_entity.py | 5 +- .../services/storage/models/hal_link.py | 5 +- .../storage/models/http_validation_error.py | 5 +- .../models/notification_queue_status.py | 5 +- .../notification_queue_status_report.py | 5 +- .../services/storage/models/payload_config.py | 5 +- .../waylay/services/storage/models/store.py | 5 +- .../storage/models/subscription_config.py | 5 +- .../services/storage/models/subscriptions.py | 5 +- .../storage/models/subscriptions_listing.py | 5 +- .../storage/models/system_channel_config.py | 5 +- .../storage/models/tenant_status_report.py | 5 +- .../storage/models/validation_error.py | 5 +- .../models/web_script_channel_config.py | 5 +- .../services/storage/queries/__init__.py | 2 +- .../services/storage/queries/about_api.py | 32 ++-- .../services/storage/queries/bucket_api.py | 2 - .../services/storage/queries/object_api.py | 4 - .../storage/queries/subscription_api.py | 7 - waylay-sdk-storage/.openapi-generator/FILES | 1 - waylay-sdk-storage/README.md | 36 +++-- waylay-sdk-storage/pyproject.toml | 7 +- .../waylay/services/storage/api/about_api.py | 138 +++++++++--------- .../waylay/services/storage/api/bucket_api.py | 26 ++-- .../waylay/services/storage/api/object_api.py | 52 ++++--- .../services/storage/api/subscription_api.py | 95 +++++++----- .../services/storage/service/__init__.py | 4 +- 90 files changed, 789 insertions(+), 490 deletions(-) diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 267a512..eef14a5 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -133,5 +133,4 @@ jobs: - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: - packages-dir: waylay-sdk-storage-types/dist - password: ${{ secrets.PYPI_TYPES_PKG_API_TOKEN }} + packages-dir: waylay-sdk-storage-types/dist \ No newline at end of file diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 8aa76dc..1ab4126 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -93,3 +93,5 @@ test/types/validation_error_stub.py test/types/venttype_stub.py test/types/web_script_channel_config_stub.py test/types/web_script_channel_config_type_stub.py +waylay-sdk-storage-types/README.md +waylay-sdk-storage/README.md diff --git a/Makefile b/Makefile index 2d025fb..7b0d2e7 100644 --- a/Makefile +++ b/Makefile @@ -64,7 +64,7 @@ typecheck: install ### Run type checks code-qa: install ### perform code quality checks @${VENV_TYPES_ACTIVATE} && make exec-code-qa -test: test-types test-notypes ### Run unit tests with and without types installed +test: test-notypes test-types ### Run unit tests with and without types installed test-types: install-types ### Run unit tests with types installed @${VENV_TYPES_ACTIVATE} && make exec-test diff --git a/README.md b/README.md index c7db574..b605e59 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,10 @@ Manage storage buckets and subscriptions. This Python package is automatically generated based on the -Waylay Storage OpenAPI specification (API version: v0.4.1) +Waylay Storage OpenAPI specification (API version: 0.4.2) +For more information, please visit [the openapi specification](https://docs.waylay.io/openapi/public/redocly/storage.html). -It consists of two sub-packages that are both plugins for the waylay-sdk package. +It consists of two sub-packages that are both plugins for the waylay-sdk-core package. - The `waylay-sdk-storage` sub-package contains the Storage api methods. - The `waylay-sdk-storage-types` sub-package is an extension that contains the typed model classes for all path params, query params, body params and responses for each of the api methods in `waylay-sdk-storage`. @@ -14,21 +15,20 @@ It consists of two sub-packages that are both plugins for the waylay-sdk package This package requires Python 3.9+. ## Installation -Typically this package is installed when installing the [waylay-sdk](https://github.com/waylayio/waylay-sdk-py) package to enable the service's functionality. +Typically this package is installed when installing the [waylay-sdk-core](https://pypi.org/project/waylay-sdk/) package to enable the service's functionality. When the service api methods are required, waylay-sdk-storage is included in: -- ```pip install waylay-sdk[storage]``` to install `waylay-sdk` along with only this service, or -- ```pip install waylay-sdk[services]``` to install `waylay-sdk` along with all services. +- ```pip install waylay-sdk-core[storage]``` to install `waylay-sdk-core` along with only this service, or +- ```pip install waylay-sdk-core[services]``` to install `waylay-sdk-core` along with all services. When the typed models are required, both waylay-sdk-storage and waylay-sdk-storage-types are included in: -- ```pip install waylay-sdk[storage,storage-types]``` to install `waylay-sdk` along with only this service including the typed models, or -- ```pip install waylay-sdk[services,services-types]``` to install `waylay-sdk` along with all services along with the typed models. +- ```pip install waylay-sdk-core[storage,storage-types]``` to install `waylay-sdk-core` along with only this service including the typed models, or +- ```pip install waylay-sdk-core[services,services-types]``` to install `waylay-sdk-core` along with all services along with the typed models. ## Usage - ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -36,26 +36,35 @@ from waylay.sdk.api.api_exceptions import ApiError waylay_client = WaylayClient.from_profile() # Note that the typed model classes for responses/parameters/... are only available when `waylay-sdk-storage-types` is installed +from waylay.services.storage.models.tenant_status_report import TenantStatusReport try: - # Version - # calls `GET /storage/v1/` - api_response = await waylay_client.storage.about.version( + # Status + # calls `GET /storage/v1/status` + api_response = await waylay_client.storage.about.status( + # query parameters: + query = { + 'include_buckets': True + 'include_queues': True + 'include_disk_usage': False + }, ) - print("The response of storage.about.version:\n") + print("The response of storage.about.status:\n") pprint(api_response) except ApiError as e: - print("Exception when calling storage.about.version: %s\n" % e) + print("Exception when calling storage.about.status: %s\n" % e) ``` +For more information, please visit the [Waylay API documentation](https://docs.waylay.io/#/api/?id=software-development-kits). + ## Documentation for API Endpoints All URIs are relative to *https://api-aws-dev.waylay.io* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- +*AboutApi* | [**get**](docs/AboutApi.md#get) | **GET** /storage/v1/ | Version *AboutApi* | [**status**](docs/AboutApi.md#status) | **GET** /storage/v1/status | Status -*AboutApi* | [**version**](docs/AboutApi.md#version) | **GET** /storage/v1/ | Version *BucketApi* | [**get**](docs/BucketApi.md#get) | **GET** /storage/v1/bucket/{bucket_name} | Get Bucket *BucketApi* | [**list**](docs/BucketApi.md#list) | **GET** /storage/v1/bucket | List Buckets *ObjectApi* | [**copy_or_move**](docs/ObjectApi.md#copy_or_move) | **PUT** /storage/v1/bucket/{bucket_name}/{target_path} | Copy Or Move Object diff --git a/docs/AboutApi.md b/docs/AboutApi.md index bb0124d..91bba44 100644 --- a/docs/AboutApi.md +++ b/docs/AboutApi.md @@ -4,25 +4,24 @@ All URIs are relative to *https://api-aws-dev.waylay.io* Method | HTTP request | Description ------------- | ------------- | ------------- +[**get**](AboutApi.md#get) | **GET** /storage/v1/ | Version [**status**](AboutApi.md#status) | **GET** /storage/v1/status | Status -[**version**](AboutApi.md#version) | **GET** /storage/v1/ | Version -# **status** -> status( -> query: StatusQuery, +# **get** +> get( > headers -> ) -> TenantStatusReport +> ) -> str -Status +Version -Validate consistency of buckets and notification queues for this tenant. +Get the application version. ### Example ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -30,44 +29,31 @@ from waylay.sdk.api.api_exceptions import ApiError waylay_client = WaylayClient.from_profile() # Note that the typed model classes for responses/parameters/... are only available when `waylay-sdk-storage-types` is installed -from waylay.services.storage.models.tenant_status_report import TenantStatusReport try: - # Status - # calls `GET /storage/v1/status` - api_response = await waylay_client.storage.about.status( - # query parameters: - query = { - 'include_buckets': True - 'include_queues': True - 'include_disk_usage': False - }, + # Version + # calls `GET /storage/v1/` + api_response = await waylay_client.storage.about.get( ) - print("The response of storage.about.status:\n") + print("The response of storage.about.get:\n") pprint(api_response) except ApiError as e: - print("Exception when calling storage.about.status: %s\n" % e) + print("Exception when calling storage.about.get: %s\n" % e) ``` ### Endpoint ``` -GET /storage/v1/status +GET /storage/v1/ ``` ### Parameters -Name | Type | API binding | Description | Notes --------- | ----- | ------------- | ------------- | ------------- -**query** | [QueryParamTypes](Operation.md#req_arg_query) \| **None** | URL query parameter | | -**query['store']** (dict)
**query.store** (Query) | **str** | query parameter `"store"` | | [optional] -**query['include_buckets']** (dict)
**query.include_buckets** (Query) | **bool** | query parameter `"include_buckets"` | | [optional] [default True] -**query['include_queues']** (dict)
**query.include_queues** (Query) | **bool** | query parameter `"include_queues"` | | [optional] [default True] -**query['include_disk_usage']** (dict)
**query.include_disk_usage** (Query) | **bool** | query parameter `"include_disk_usage"` | | [optional] [default False] +This endpoint does not need any parameter. **headers** | [HeaderTypes](Operation.md#req_headers) | request headers | | ### Return type Selected path param | Raw response param | Return Type | Description | Links ------------------- | ------------------ | ------------ | ----------- | ----- -Literal[""] _(default)_ | False _(default)_ | **`TenantStatusReport`** | | [TenantStatusReport](TenantStatusReport.md) +Literal[""] _(default)_ | False _(default)_ | **`str`** | | str | False _(default)_ | **`Any`** | If any other string value for the selected path is provided, the exact type of the response will only be known at runtime. | / | True | `Response` | The raw http response object. @@ -81,25 +67,25 @@ str | False _(default)_ | **`Any`** | If any other string value for the selected | Status code | Description | Response headers | |-------------|-------------|------------------| **200** | Successful Response | - | -**422** | Validation Error | - | [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **version** -> version( +# **status** +> status( +> query: StatusQuery, > headers -> ) -> str +> ) -> TenantStatusReport -Version +Status -Get the application version. +Validate consistency of buckets and notification queues for this tenant. ### Example ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -107,31 +93,44 @@ from waylay.sdk.api.api_exceptions import ApiError waylay_client = WaylayClient.from_profile() # Note that the typed model classes for responses/parameters/... are only available when `waylay-sdk-storage-types` is installed +from waylay.services.storage.models.tenant_status_report import TenantStatusReport try: - # Version - # calls `GET /storage/v1/` - api_response = await waylay_client.storage.about.version( + # Status + # calls `GET /storage/v1/status` + api_response = await waylay_client.storage.about.status( + # query parameters: + query = { + 'include_buckets': True + 'include_queues': True + 'include_disk_usage': False + }, ) - print("The response of storage.about.version:\n") + print("The response of storage.about.status:\n") pprint(api_response) except ApiError as e: - print("Exception when calling storage.about.version: %s\n" % e) + print("Exception when calling storage.about.status: %s\n" % e) ``` ### Endpoint ``` -GET /storage/v1/ +GET /storage/v1/status ``` ### Parameters -This endpoint does not need any parameter. +Name | Type | API binding | Description | Notes +-------- | ----- | ------------- | ------------- | ------------- +**query** | [QueryParamTypes](Operation.md#req_arg_query) \| **None** | URL query parameter | | +**query['store']** (dict)
**query.store** (Query) | **str** | query parameter `"store"` | | [optional] +**query['include_buckets']** (dict)
**query.include_buckets** (Query) | **bool** | query parameter `"include_buckets"` | | [optional] [default True] +**query['include_queues']** (dict)
**query.include_queues** (Query) | **bool** | query parameter `"include_queues"` | | [optional] [default True] +**query['include_disk_usage']** (dict)
**query.include_disk_usage** (Query) | **bool** | query parameter `"include_disk_usage"` | | [optional] [default False] **headers** | [HeaderTypes](Operation.md#req_headers) | request headers | | ### Return type Selected path param | Raw response param | Return Type | Description | Links ------------------- | ------------------ | ------------ | ----------- | ----- -Literal[""] _(default)_ | False _(default)_ | **`str`** | | +Literal[""] _(default)_ | False _(default)_ | **`TenantStatusReport`** | | [TenantStatusReport](TenantStatusReport.md) str | False _(default)_ | **`Any`** | If any other string value for the selected path is provided, the exact type of the response will only be known at runtime. | / | True | `Response` | The raw http response object. @@ -145,6 +144,7 @@ str | False _(default)_ | **`Any`** | If any other string value for the selected | Status code | Description | Response headers | |-------------|-------------|------------------| **200** | Successful Response | - | +**422** | Validation Error | - | [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) diff --git a/docs/BucketApi.md b/docs/BucketApi.md index ec49524..b270486 100644 --- a/docs/BucketApi.md +++ b/docs/BucketApi.md @@ -23,7 +23,7 @@ Get a descriptive representation of a bucket. ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -97,7 +97,7 @@ List authorized buckets. ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError diff --git a/docs/ObjectApi.md b/docs/ObjectApi.md index 4ed617c..6b44ac2 100644 --- a/docs/ObjectApi.md +++ b/docs/ObjectApi.md @@ -26,7 +26,7 @@ Copy or move object to new location. ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -107,7 +107,7 @@ Create a (virtual) folder. * (`all=true`) force creation of a hidden folder, ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -187,7 +187,7 @@ List, inspect or sign objects. * list the objects of a bucket with {object_path ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -285,7 +285,7 @@ Remove the object or folder at {object_path}. An {object_path} ending in a `/` ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError diff --git a/docs/Operation.md b/docs/Operation.md index 1139f3b..a9d5281 100644 --- a/docs/Operation.md +++ b/docs/Operation.md @@ -34,6 +34,8 @@ response = await waylay_client.demo.gadgets.combatulate_trinket( raw_response=False, select_path=None, response_type=None, + # optional flag to disable the validation of the request arguments when using typed requests + validate_request=True, # optional named arguments passed to the http client (named) timeout=10.0, ) diff --git a/docs/SubscriptionApi.md b/docs/SubscriptionApi.md index 259f8f8..df23eea 100644 --- a/docs/SubscriptionApi.md +++ b/docs/SubscriptionApi.md @@ -28,7 +28,7 @@ Create a new notification subscription on a bucket with a given or generated id. ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -106,7 +106,7 @@ Remove all notification subscription on a bucket that match a given event and/or ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -193,7 +193,7 @@ Fetch a notification subscription. ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -269,7 +269,7 @@ List notification subscriptions per bucket that have notification enabled. ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -352,7 +352,7 @@ List notification subscriptions for given bucket. ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -439,7 +439,7 @@ Remove a notification subscription. ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -517,7 +517,7 @@ Create or replace a notification subscription on a bucket with a given id. ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError diff --git a/openapi/storage.openapi.yaml b/openapi/storage.openapi.yaml index 7a19ad0..1f85c79 100644 --- a/openapi/storage.openapi.yaml +++ b/openapi/storage.openapi.yaml @@ -6,7 +6,7 @@ info: Manage storage buckets and subscriptions. ' - version: v0.4.1 + version: v0.4.2 paths: /storage/v1/bucket: get: @@ -764,7 +764,7 @@ paths: - About summary: Version description: Get the application version. - operationId: version_about + operationId: get_about responses: '200': description: Successful Response @@ -772,7 +772,7 @@ paths: application/json: schema: type: string - title: Response Version + title: Response Get security: *id001 /storage/v1/status: get: diff --git a/openapi/storage.transformed.openapi.yaml b/openapi/storage.transformed.openapi.yaml index 52b1804..9083b2a 100644 --- a/openapi/storage.transformed.openapi.yaml +++ b/openapi/storage.transformed.openapi.yaml @@ -4,7 +4,7 @@ info: description: | Manage storage buckets and subscriptions. - version: v0.4.1 + version: 0.4.2 paths: /storage/v1/bucket: get: @@ -920,7 +920,7 @@ paths: - About summary: Version description: Get the application version. - operationId: version_about + operationId: get_about responses: '200': description: Successful Response @@ -928,10 +928,10 @@ paths: application/json: schema: type: string - title: Response Version + title: Response Get security: - waylayApiKeySecret: [] - x-py-method: version + x-py-method: get x-consumes-multipart: false x-consumes-urlencoded: false x-consumes-json: false diff --git a/requirements.txt b/requirements.txt index 500bd25..c98d1d4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ pydantic ~= 2.6 typing-extensions ~= 4.9 -waylay-sdk ~= 0.0.4rc5 +waylay-sdk-core ~= 0.2.1 diff --git a/test/api/about_api_test.py b/test/api/about_api_test.py index ad73a8a..7276cc9 100644 --- a/test/api/about_api_test.py +++ b/test/api/about_api_test.py @@ -46,6 +46,45 @@ def test_registered(waylay_client: WaylayClient): assert isinstance(waylay_client.storage.about, AboutApi) +def _get_set_mock_response(httpx_mock: HTTPXMock, gateway_url: str): + mock_response = "''" + httpx_mock_kwargs = { + "method": "GET", + "url": re.compile(f"^{gateway_url}/storage/v1/(\\?.*)?"), + "content": json.dumps(mock_response, default=str), + "status_code": 200, + } + httpx_mock.add_response(**httpx_mock_kwargs) + + +@pytest.mark.asyncio +@pytest.mark.skipif(not MODELS_AVAILABLE, reason="Types not installed.") +async def test_get(service: StorageService, gateway_url: str, httpx_mock: HTTPXMock): + """Test case for get + Version + """ + # set path params + kwargs = {} + _get_set_mock_response(httpx_mock, gateway_url) + resp = await service.about.get(**kwargs) + check_type(resp, Union[str,]) + + +@pytest.mark.asyncio +@pytest.mark.skipif(MODELS_AVAILABLE, reason="Types installed.") +async def test_get_without_types( + service: StorageService, gateway_url: str, httpx_mock: HTTPXMock +): + """Test case for get with models not installed + Version + """ + # set path params + kwargs = {} + _get_set_mock_response(httpx_mock, gateway_url) + resp = await service.about.get(**kwargs) + check_type(resp, Model) + + def _status_set_mock_response(httpx_mock: HTTPXMock, gateway_url: str): mock_response = TenantStatusReportStub.create_json() httpx_mock_kwargs = { @@ -98,44 +137,3 @@ async def test_status_without_types( _status_set_mock_response(httpx_mock, gateway_url) resp = await service.about.status(**kwargs) check_type(resp, Model) - - -def _version_set_mock_response(httpx_mock: HTTPXMock, gateway_url: str): - mock_response = "''" - httpx_mock_kwargs = { - "method": "GET", - "url": re.compile(f"^{gateway_url}/storage/v1/(\\?.*)?"), - "content": json.dumps(mock_response, default=str), - "status_code": 200, - } - httpx_mock.add_response(**httpx_mock_kwargs) - - -@pytest.mark.asyncio -@pytest.mark.skipif(not MODELS_AVAILABLE, reason="Types not installed.") -async def test_version( - service: StorageService, gateway_url: str, httpx_mock: HTTPXMock -): - """Test case for version - Version - """ - # set path params - kwargs = {} - _version_set_mock_response(httpx_mock, gateway_url) - resp = await service.about.version(**kwargs) - check_type(resp, Union[str,]) - - -@pytest.mark.asyncio -@pytest.mark.skipif(MODELS_AVAILABLE, reason="Types installed.") -async def test_version_without_types( - service: StorageService, gateway_url: str, httpx_mock: HTTPXMock -): - """Test case for version with models not installed - Version - """ - # set path params - kwargs = {} - _version_set_mock_response(httpx_mock, gateway_url) - resp = await service.about.version(**kwargs) - check_type(resp, Model) diff --git a/test/conftest.py b/test/conftest.py index 4f5f39a..dd06552 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -1,5 +1,7 @@ """Automatic pytest fixtures.""" +import random + import httpx import pytest import starlette.requests as req @@ -8,6 +10,7 @@ from waylay.sdk.auth import NoCredentials from waylay.services.storage.service import StorageService +random.seed(10) GATEWAY_URL = "http://example.io" diff --git a/test/types/auth_stub.py b/test/types/auth_stub.py index b35f7b6..273637b 100644 --- a/test/types/auth_stub.py +++ b/test/types/auth_stub.py @@ -43,11 +43,16 @@ class AUTHStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return auth_faker.generate() + return auth_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "AUTH": """Create AUTH stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return AUTHAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF(AUTHAdapter.json_schema(), allow_none_optionals=1) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return AUTHAdapter.validate_python(json, context={"skip_validation": True}) diff --git a/test/types/authentication_config_stub.py b/test/types/authentication_config_stub.py index 088fb9b..9b4c416 100644 --- a/test/types/authentication_config_stub.py +++ b/test/types/authentication_config_stub.py @@ -62,11 +62,22 @@ class AuthenticationConfigStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return authentication_config_faker.generate() + return authentication_config_faker.generate( + use_defaults=True, use_examples=True + ) @classmethod def create_instance(cls) -> "AuthenticationConfig": """Create AuthenticationConfig stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return AuthenticationConfigAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + AuthenticationConfigAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return AuthenticationConfigAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/bucket_configuration_stub.py b/test/types/bucket_configuration_stub.py index ab874af..c608740 100644 --- a/test/types/bucket_configuration_stub.py +++ b/test/types/bucket_configuration_stub.py @@ -92,11 +92,20 @@ class BucketConfigurationStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return bucket_configuration_faker.generate() + return bucket_configuration_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "BucketConfiguration": """Create BucketConfiguration stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return BucketConfigurationAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + BucketConfigurationAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return BucketConfigurationAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/bucket_listing_stub.py b/test/types/bucket_listing_stub.py index d64c35a..ec0c8b3 100644 --- a/test/types/bucket_listing_stub.py +++ b/test/types/bucket_listing_stub.py @@ -59,11 +59,20 @@ class BucketListingStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return bucket_listing_faker.generate() + return bucket_listing_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "BucketListing": """Create BucketListing stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return BucketListingAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + BucketListingAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return BucketListingAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/bucket_object_listing_stub.py b/test/types/bucket_object_listing_stub.py index 3563f3f..d80696f 100644 --- a/test/types/bucket_object_listing_stub.py +++ b/test/types/bucket_object_listing_stub.py @@ -61,11 +61,22 @@ class BucketObjectListingStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return bucket_object_listing_faker.generate() + return bucket_object_listing_faker.generate( + use_defaults=True, use_examples=True + ) @classmethod def create_instance(cls) -> "BucketObjectListing": """Create BucketObjectListing stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return BucketObjectListingAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + BucketObjectListingAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return BucketObjectListingAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/bucket_object_stub.py b/test/types/bucket_object_stub.py index 7f32f01..2443827 100644 --- a/test/types/bucket_object_stub.py +++ b/test/types/bucket_object_stub.py @@ -93,11 +93,20 @@ class BucketObjectStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return bucket_object_faker.generate() + return bucket_object_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "BucketObject": """Create BucketObject stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return BucketObjectAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + BucketObjectAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return BucketObjectAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/bucket_stub.py b/test/types/bucket_stub.py index d284f5a..0271571 100644 --- a/test/types/bucket_stub.py +++ b/test/types/bucket_stub.py @@ -72,11 +72,16 @@ class BucketStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return bucket_faker.generate() + return bucket_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "Bucket": """Create Bucket stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return BucketAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF(BucketAdapter.json_schema(), allow_none_optionals=1) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return BucketAdapter.validate_python(json, context={"skip_validation": True}) diff --git a/test/types/bucketcreationstatus_stub.py b/test/types/bucketcreationstatus_stub.py index d0e74d2..3083ea7 100644 --- a/test/types/bucketcreationstatus_stub.py +++ b/test/types/bucketcreationstatus_stub.py @@ -45,11 +45,22 @@ class BUCKETCREATIONSTATUSStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return bucket_creation_status_faker.generate() + return bucket_creation_status_faker.generate( + use_defaults=True, use_examples=True + ) @classmethod def create_instance(cls) -> "BUCKETCREATIONSTATUS": """Create BUCKETCREATIONSTATUS stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return BUCKETCREATIONSTATUSAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + BUCKETCREATIONSTATUSAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return BUCKETCREATIONSTATUSAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/bucketpolicystatus_stub.py b/test/types/bucketpolicystatus_stub.py index ddf78d5..cdb82a1 100644 --- a/test/types/bucketpolicystatus_stub.py +++ b/test/types/bucketpolicystatus_stub.py @@ -45,11 +45,20 @@ class BUCKETPOLICYSTATUSStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return bucket_policy_status_faker.generate() + return bucket_policy_status_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "BUCKETPOLICYSTATUS": """Create BUCKETPOLICYSTATUS stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return BUCKETPOLICYSTATUSAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + BUCKETPOLICYSTATUSAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return BUCKETPOLICYSTATUSAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/channel_stub.py b/test/types/channel_stub.py index e832079..4964e2b 100644 --- a/test/types/channel_stub.py +++ b/test/types/channel_stub.py @@ -46,11 +46,16 @@ class ChannelStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return channel_faker.generate() + return channel_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "Channel": """Create Channel stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return ChannelAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF(ChannelAdapter.json_schema(), allow_none_optionals=1) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return ChannelAdapter.validate_python(json, context={"skip_validation": True}) diff --git a/test/types/channeltype_stub.py b/test/types/channeltype_stub.py index b4a063d..21b70a6 100644 --- a/test/types/channeltype_stub.py +++ b/test/types/channeltype_stub.py @@ -43,11 +43,18 @@ class CHANNELTYPEStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return channel_type_faker.generate() + return channel_type_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "CHANNELTYPE": """Create CHANNELTYPE stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return CHANNELTYPEAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF(CHANNELTYPEAdapter.json_schema(), allow_none_optionals=1) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return CHANNELTYPEAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/event_filter_stub.py b/test/types/event_filter_stub.py index 0c65910..0fcd62b 100644 --- a/test/types/event_filter_stub.py +++ b/test/types/event_filter_stub.py @@ -68,11 +68,18 @@ class EventFilterStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return event_filter_faker.generate() + return event_filter_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "EventFilter": """Create EventFilter stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return EventFilterAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF(EventFilterAdapter.json_schema(), allow_none_optionals=1) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return EventFilterAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/expiry_stub.py b/test/types/expiry_stub.py index 085b727..790ad0d 100644 --- a/test/types/expiry_stub.py +++ b/test/types/expiry_stub.py @@ -56,11 +56,16 @@ class ExpiryStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return expiry_faker.generate() + return expiry_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "Expiry": """Create Expiry stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return ExpiryAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF(ExpiryAdapter.json_schema(), allow_none_optionals=1) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return ExpiryAdapter.validate_python(json, context={"skip_validation": True}) diff --git a/test/types/hal_entity_stub.py b/test/types/hal_entity_stub.py index ed0d2a7..3b16bfe 100644 --- a/test/types/hal_entity_stub.py +++ b/test/types/hal_entity_stub.py @@ -51,11 +51,16 @@ class HALEntityStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return hal_entity_faker.generate() + return hal_entity_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "HALEntity": """Create HALEntity stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return HALEntityAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF(HALEntityAdapter.json_schema(), allow_none_optionals=1) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return HALEntityAdapter.validate_python(json, context={"skip_validation": True}) diff --git a/test/types/hal_link_stub.py b/test/types/hal_link_stub.py index 2e03e7f..f9c5621 100644 --- a/test/types/hal_link_stub.py +++ b/test/types/hal_link_stub.py @@ -57,11 +57,16 @@ class HALLinkStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return hal_link_faker.generate() + return hal_link_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "HALLink": """Create HALLink stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return HALLinkAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF(HALLinkAdapter.json_schema(), allow_none_optionals=1) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return HALLinkAdapter.validate_python(json, context={"skip_validation": True}) diff --git a/test/types/http_validation_error_stub.py b/test/types/http_validation_error_stub.py index 473a488..175888e 100644 --- a/test/types/http_validation_error_stub.py +++ b/test/types/http_validation_error_stub.py @@ -52,11 +52,22 @@ class HTTPValidationErrorStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return http_validation_error_faker.generate() + return http_validation_error_faker.generate( + use_defaults=True, use_examples=True + ) @classmethod def create_instance(cls) -> "HTTPValidationError": """Create HTTPValidationError stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return HTTPValidationErrorAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + HTTPValidationErrorAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return HTTPValidationErrorAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/httpmethod_stub.py b/test/types/httpmethod_stub.py index b710e35..2e4041d 100644 --- a/test/types/httpmethod_stub.py +++ b/test/types/httpmethod_stub.py @@ -43,11 +43,18 @@ class HTTPMETHODStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return http_method_faker.generate() + return http_method_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "HTTPMETHOD": """Create HTTPMETHOD stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return HTTPMETHODAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF(HTTPMETHODAdapter.json_schema(), allow_none_optionals=1) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return HTTPMETHODAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/links_stub.py b/test/types/links_stub.py index 9762dd0..5552aad 100644 --- a/test/types/links_stub.py +++ b/test/types/links_stub.py @@ -49,11 +49,16 @@ class LinksStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return links_faker.generate() + return links_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "Links": """Create Links stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return LinksAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF(LinksAdapter.json_schema(), allow_none_optionals=1) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return LinksAdapter.validate_python(json, context={"skip_validation": True}) diff --git a/test/types/location_inner_stub.py b/test/types/location_inner_stub.py index c44a418..2f1710d 100644 --- a/test/types/location_inner_stub.py +++ b/test/types/location_inner_stub.py @@ -46,11 +46,20 @@ class LocationInnerStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return location_inner_faker.generate() + return location_inner_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "LocationInner": """Create LocationInner stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return LocationInnerAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + LocationInnerAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return LocationInnerAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/notification_queue_status_report_stub.py b/test/types/notification_queue_status_report_stub.py index c8c8fb6..ea3b15f 100644 --- a/test/types/notification_queue_status_report_stub.py +++ b/test/types/notification_queue_status_report_stub.py @@ -67,11 +67,23 @@ class NotificationQueueStatusReportStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return notification_queue_status_report_faker.generate() + return notification_queue_status_report_faker.generate( + use_defaults=True, use_examples=True + ) @classmethod def create_instance(cls) -> "NotificationQueueStatusReport": """Create NotificationQueueStatusReport stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return NotificationQueueStatusReportAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + NotificationQueueStatusReportAdapter.json_schema(), + allow_none_optionals=1, + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return NotificationQueueStatusReportAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/notification_queue_status_stub.py b/test/types/notification_queue_status_stub.py index 205b64f..276c01c 100644 --- a/test/types/notification_queue_status_stub.py +++ b/test/types/notification_queue_status_stub.py @@ -72,11 +72,22 @@ class NotificationQueueStatusStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return notification_queue_status_faker.generate() + return notification_queue_status_faker.generate( + use_defaults=True, use_examples=True + ) @classmethod def create_instance(cls) -> "NotificationQueueStatus": """Create NotificationQueueStatus stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return NotificationQueueStatusAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + NotificationQueueStatusAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return NotificationQueueStatusAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/payload_config_stub.py b/test/types/payload_config_stub.py index 3f8188d..1ed7201 100644 --- a/test/types/payload_config_stub.py +++ b/test/types/payload_config_stub.py @@ -53,11 +53,20 @@ class PayloadConfigStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return payload_config_faker.generate() + return payload_config_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "PayloadConfig": """Create PayloadConfig stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return PayloadConfigAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + PayloadConfigAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return PayloadConfigAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/queuesetupstatus_stub.py b/test/types/queuesetupstatus_stub.py index e8c58d6..9c4e76d 100644 --- a/test/types/queuesetupstatus_stub.py +++ b/test/types/queuesetupstatus_stub.py @@ -44,11 +44,20 @@ class QUEUESETUPSTATUSStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return queue_setup_status_faker.generate() + return queue_setup_status_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "QUEUESETUPSTATUS": """Create QUEUESETUPSTATUS stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return QUEUESETUPSTATUSAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + QUEUESETUPSTATUSAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return QUEUESETUPSTATUSAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/response_list_stub.py b/test/types/response_list_stub.py index bd4b08a..6a019e0 100644 --- a/test/types/response_list_stub.py +++ b/test/types/response_list_stub.py @@ -48,11 +48,20 @@ class ResponseListStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return response_list_faker.generate() + return response_list_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "ResponseList": """Create ResponseList stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return ResponseListAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + ResponseListAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return ResponseListAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/sign_stub.py b/test/types/sign_stub.py index 8ddb353..a51d145 100644 --- a/test/types/sign_stub.py +++ b/test/types/sign_stub.py @@ -44,11 +44,16 @@ class SIGNStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return sign_faker.generate() + return sign_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "SIGN": """Create SIGN stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return SIGNAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF(SIGNAdapter.json_schema(), allow_none_optionals=1) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return SIGNAdapter.validate_python(json, context={"skip_validation": True}) diff --git a/test/types/store_stub.py b/test/types/store_stub.py index c8f15c1..ca78968 100644 --- a/test/types/store_stub.py +++ b/test/types/store_stub.py @@ -64,11 +64,16 @@ class StoreStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return store_faker.generate() + return store_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "Store": """Create Store stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return StoreAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF(StoreAdapter.json_schema(), allow_none_optionals=1) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return StoreAdapter.validate_python(json, context={"skip_validation": True}) diff --git a/test/types/storetype_stub.py b/test/types/storetype_stub.py index 8beb34c..4d21fc2 100644 --- a/test/types/storetype_stub.py +++ b/test/types/storetype_stub.py @@ -44,11 +44,16 @@ class STORETYPEStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return store_type_faker.generate() + return store_type_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "STORETYPE": """Create STORETYPE stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return STORETYPEAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF(STORETYPEAdapter.json_schema(), allow_none_optionals=1) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return STORETYPEAdapter.validate_python(json, context={"skip_validation": True}) diff --git a/test/types/subscription_config_stub.py b/test/types/subscription_config_stub.py index 62f58a8..271ac13 100644 --- a/test/types/subscription_config_stub.py +++ b/test/types/subscription_config_stub.py @@ -76,11 +76,20 @@ class SubscriptionConfigStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return subscription_config_faker.generate() + return subscription_config_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "SubscriptionConfig": """Create SubscriptionConfig stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return SubscriptionConfigAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + SubscriptionConfigAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return SubscriptionConfigAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/subscriptions_listing_stub.py b/test/types/subscriptions_listing_stub.py index 0dc89bb..9c4eeae 100644 --- a/test/types/subscriptions_listing_stub.py +++ b/test/types/subscriptions_listing_stub.py @@ -63,11 +63,22 @@ class SubscriptionsListingStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return subscriptions_listing_faker.generate() + return subscriptions_listing_faker.generate( + use_defaults=True, use_examples=True + ) @classmethod def create_instance(cls) -> "SubscriptionsListing": """Create SubscriptionsListing stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return SubscriptionsListingAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + SubscriptionsListingAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return SubscriptionsListingAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/subscriptions_stub.py b/test/types/subscriptions_stub.py index 6af15c9..25d5e39 100644 --- a/test/types/subscriptions_stub.py +++ b/test/types/subscriptions_stub.py @@ -69,11 +69,20 @@ class SubscriptionsStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return subscriptions_faker.generate() + return subscriptions_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "Subscriptions": """Create Subscriptions stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return SubscriptionsAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + SubscriptionsAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return SubscriptionsAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/system_channel_config_stub.py b/test/types/system_channel_config_stub.py index 4024ca8..f7abba8 100644 --- a/test/types/system_channel_config_stub.py +++ b/test/types/system_channel_config_stub.py @@ -62,11 +62,22 @@ class SystemChannelConfigStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return system_channel_config_faker.generate() + return system_channel_config_faker.generate( + use_defaults=True, use_examples=True + ) @classmethod def create_instance(cls) -> "SystemChannelConfig": """Create SystemChannelConfig stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return SystemChannelConfigAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + SystemChannelConfigAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return SystemChannelConfigAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/system_channel_config_type_stub.py b/test/types/system_channel_config_type_stub.py index 6daf217..fc33d24 100644 --- a/test/types/system_channel_config_type_stub.py +++ b/test/types/system_channel_config_type_stub.py @@ -48,11 +48,22 @@ class SystemChannelConfigTypeStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return system_channel_config_type_faker.generate() + return system_channel_config_type_faker.generate( + use_defaults=True, use_examples=True + ) @classmethod def create_instance(cls) -> "SystemChannelConfigType": """Create SystemChannelConfigType stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return SystemChannelConfigTypeAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + SystemChannelConfigTypeAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return SystemChannelConfigTypeAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/tenant_status_report_stub.py b/test/types/tenant_status_report_stub.py index 3ebea4a..0a2483a 100644 --- a/test/types/tenant_status_report_stub.py +++ b/test/types/tenant_status_report_stub.py @@ -78,11 +78,20 @@ class TenantStatusReportStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return tenant_status_report_faker.generate() + return tenant_status_report_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "TenantStatusReport": """Create TenantStatusReport stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return TenantStatusReportAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + TenantStatusReportAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return TenantStatusReportAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/validation_error_stub.py b/test/types/validation_error_stub.py index 673a671..a93dc57 100644 --- a/test/types/validation_error_stub.py +++ b/test/types/validation_error_stub.py @@ -60,11 +60,20 @@ class ValidationErrorStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return validation_error_faker.generate() + return validation_error_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "ValidationError": """Create ValidationError stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return ValidationErrorAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + ValidationErrorAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return ValidationErrorAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/venttype_stub.py b/test/types/venttype_stub.py index 2ff36ac..bb62729 100644 --- a/test/types/venttype_stub.py +++ b/test/types/venttype_stub.py @@ -43,11 +43,16 @@ class VENTTYPEStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return vent_type_faker.generate() + return vent_type_faker.generate(use_defaults=True, use_examples=True) @classmethod def create_instance(cls) -> "VENTTYPE": """Create VENTTYPE stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return VENTTYPEAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF(VENTTYPEAdapter.json_schema(), allow_none_optionals=1) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return VENTTYPEAdapter.validate_python(json, context={"skip_validation": True}) diff --git a/test/types/web_script_channel_config_stub.py b/test/types/web_script_channel_config_stub.py index d299368..3fc8c42 100644 --- a/test/types/web_script_channel_config_stub.py +++ b/test/types/web_script_channel_config_stub.py @@ -79,11 +79,22 @@ class WebScriptChannelConfigStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return web_script_channel_config_faker.generate() + return web_script_channel_config_faker.generate( + use_defaults=True, use_examples=True + ) @classmethod def create_instance(cls) -> "WebScriptChannelConfig": """Create WebScriptChannelConfig stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return WebScriptChannelConfigAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + WebScriptChannelConfigAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return WebScriptChannelConfigAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/test/types/web_script_channel_config_type_stub.py b/test/types/web_script_channel_config_type_stub.py index eb7e40e..1974d68 100644 --- a/test/types/web_script_channel_config_type_stub.py +++ b/test/types/web_script_channel_config_type_stub.py @@ -48,11 +48,22 @@ class WebScriptChannelConfigTypeStub: @classmethod def create_json(cls): """Create a dict stub instance.""" - return web_script_channel_config_type_faker.generate() + return web_script_channel_config_type_faker.generate( + use_defaults=True, use_examples=True + ) @classmethod def create_instance(cls) -> "WebScriptChannelConfigType": """Create WebScriptChannelConfigType stub instance.""" if not MODELS_AVAILABLE: raise ImportError("Models must be installed to create class stubs") - return WebScriptChannelConfigTypeAdapter.validate_python(cls.create_json()) + json = cls.create_json() + if not json: + # use backup example based on the pydantic model schema + backup_faker = JSF( + WebScriptChannelConfigTypeAdapter.json_schema(), allow_none_optionals=1 + ) + json = backup_faker.generate(use_defaults=True, use_examples=True) + return WebScriptChannelConfigTypeAdapter.validate_python( + json, context={"skip_validation": True} + ) diff --git a/waylay-sdk-storage-types/.openapi-generator/FILES b/waylay-sdk-storage-types/.openapi-generator/FILES index 762a3ab..a1f5aaf 100644 --- a/waylay-sdk-storage-types/.openapi-generator/FILES +++ b/waylay-sdk-storage-types/.openapi-generator/FILES @@ -1,5 +1,4 @@ LICENSE.txt -README.md pyproject.toml src/waylay/services/storage/models/__init__.py src/waylay/services/storage/models/auth.py diff --git a/waylay-sdk-storage-types/README.md b/waylay-sdk-storage-types/README.md index aff8e00..d4aea8c 100644 --- a/waylay-sdk-storage-types/README.md +++ b/waylay-sdk-storage-types/README.md @@ -4,7 +4,8 @@ Manage storage buckets and subscriptions. This Python package is automatically generated based on the -Waylay Storage OpenAPI specification (API version: v0.4.1) +Waylay Storage OpenAPI specification (API version: 0.4.2) +For more information, please visit [the openapi specification](https://docs.waylay.io/openapi/public/redocly/storage.html). It is considered an extension of the waylay-sdk-storage package, and it consists of the typed model classes for all path params, query params, body params and responses for each of the api methods in `waylay-sdk-storage`. @@ -12,21 +13,20 @@ It is considered an extension of the waylay-sdk-storage package, and it consists This package requires Python 3.9+. ## Installation -Typically this package is installed when installing the [waylay-sdk](https://github.com/waylayio/waylay-sdk-py) package to enable the service's functionality. +Typically this package is installed when installing the [waylay-sdk-core](https://pypi.org/project/waylay-sdk/) package to enable the service's functionality. When the service api methods are required, waylay-sdk-storage is included in: -- ```pip install waylay-sdk[storage]``` to install `waylay-sdk` along with only this service, or -- ```pip install waylay-sdk[services]``` to install `waylay-sdk` along with all services. +- ```pip install waylay-sdk-core[storage]``` to install `waylay-sdk-core` along with only this service, or +- ```pip install waylay-sdk-core[services]``` to install `waylay-sdk-core` along with all services. When the typed models are required, both waylay-sdk-storage and waylay-sdk-storage-types are included in: -- ```pip install waylay-sdk[storage,storage-types]``` to install `waylay-sdk` along with only this service including the typed models, or -- ```pip install waylay-sdk[services,services-types]``` to install `waylay-sdk` along with all services along with the typed models. +- ```pip install waylay-sdk-core[storage,storage-types]``` to install `waylay-sdk-core` along with only this service including the typed models, or +- ```pip install waylay-sdk-core[services,services-types]``` to install `waylay-sdk-core` along with all services along with the typed models. ## Usage - ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -34,15 +34,23 @@ from waylay.sdk.api.api_exceptions import ApiError waylay_client = WaylayClient.from_profile() # Note that the typed model classes for responses/parameters/... are only available when `waylay-sdk-storage-types` is installed +from waylay.services.storage.models.tenant_status_report import TenantStatusReport try: - # Version - # calls `GET /storage/v1/` - api_response = await waylay_client.storage.about.version( + # Status + # calls `GET /storage/v1/status` + api_response = await waylay_client.storage.about.status( + # query parameters: + query = { + 'include_buckets': True + 'include_queues': True + 'include_disk_usage': False + }, ) - print("The response of storage.about.version:\n") + print("The response of storage.about.status:\n") pprint(api_response) except ApiError as e: - print("Exception when calling storage.about.version: %s\n" % e) + print("Exception when calling storage.about.status: %s\n" % e) ``` +For more information, please visit the [Waylay API documentation](https://docs.waylay.io/#/api/?id=software-development-kits). diff --git a/waylay-sdk-storage-types/pyproject.toml b/waylay-sdk-storage-types/pyproject.toml index 1c45bec..a4e7d7c 100644 --- a/waylay-sdk-storage-types/pyproject.toml +++ b/waylay-sdk-storage-types/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "waylay-sdk-storage-types" -version = "0.4.1b1" +version = "0.4.2b20240423" description = "Waylay Storage Types " authors = [ { name = "Waylay", email = "info@waylay.io"} @@ -12,8 +12,8 @@ authors = [ keywords = ["Waylay Storage" , "Types"] requires-python = ">= 3.9" dependencies = [ - "waylay-sdk ~= 0.0.4rc5", - "waylay-sdk-storage == 0.4.1b1", + "waylay-sdk-core ~= 0.2.1", + "waylay-sdk-storage == 0.4.2b20240423", "pydantic ~= 2.6", "typing-extensions ~= 4.10", "eval-type-backport ~= 0.1.3; python_version < '3.10'", @@ -23,8 +23,9 @@ license={file = "LICENSE.txt"} [project.urls] Homepage = "https://www.waylay.io/" -Documentation = "https://docs.waylay.io/#/" +Documentation = "https://docs.waylay.io/#/api/?id=software-development-kits" Repository = "https://github.com/waylayio/waylay-sdk-storage-py.git" +"Openapi Specification" = "https://docs.waylay.io/openapi/public/redocly/storage.html" [project.optional-dependencies] dev = [ diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/__init__.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/__init__.py index b88d9b2..ee53918 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/__init__.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/__init__.py @@ -3,7 +3,7 @@ This code was generated from the OpenAPI documentation of 'Waylay Storage' -version: v0.4.1 +version: 0.4.2 Manage storage buckets and subscriptions. @@ -12,7 +12,7 @@ Do not edit the class manually. """ -__version__ = "0.4.1b1" +__version__ = "0.4.2b20240423" # import models into model package from .auth import AUTH diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/authentication_config.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/authentication_config.py index 52386f0..684374a 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/authentication_config.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/authentication_config.py @@ -28,8 +28,5 @@ class AuthenticationConfig(WaylayBaseModel): secret: StrictStr | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket.py index 36a3e9c..ba5975f 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket.py @@ -37,8 +37,5 @@ class Bucket(WaylayBaseModel): size: StrictInt | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_configuration.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_configuration.py index c246146..8b0e9dd 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_configuration.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_configuration.py @@ -42,8 +42,5 @@ class BucketConfiguration(WaylayBaseModel): error: StrictStr | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_listing.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_listing.py index c10c953..802c531 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_listing.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_listing.py @@ -30,8 +30,5 @@ class BucketListing(WaylayBaseModel): buckets: List[Bucket] model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_object.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_object.py index 3ba277b..b1ea60e 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_object.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_object.py @@ -43,8 +43,5 @@ class BucketObject(WaylayBaseModel): owner_name: StrictStr | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_object_listing.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_object_listing.py index 8347111..e2afb48 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_object_listing.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/bucket_object_listing.py @@ -30,8 +30,5 @@ class BucketObjectListing(WaylayBaseModel): objects: List[BucketObject] model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/event_filter.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/event_filter.py index e644d7c..7d84e79 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/event_filter.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/event_filter.py @@ -32,8 +32,5 @@ class EventFilter(WaylayBaseModel): queue: StrictStr | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/expiry.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/expiry.py index 2cd0b8f..f5d66d6 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/expiry.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/expiry.py @@ -26,8 +26,5 @@ class Expiry(WaylayBaseModel): days: StrictInt | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/hal_entity.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/hal_entity.py index e6bc22a..bddf455 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/hal_entity.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/hal_entity.py @@ -28,8 +28,5 @@ class HALEntity(WaylayBaseModel): links: Dict[str, Links] | None = Field(default=None, alias="_links") model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/hal_link.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/hal_link.py index 49520e7..58ce182 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/hal_link.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/hal_link.py @@ -28,8 +28,5 @@ class HALLink(WaylayBaseModel): form_data: Dict[str, Any] | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/http_validation_error.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/http_validation_error.py index 626469d..a655c8f 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/http_validation_error.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/http_validation_error.py @@ -27,8 +27,5 @@ class HTTPValidationError(WaylayBaseModel): detail: List[ValidationError] | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/notification_queue_status.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/notification_queue_status.py index 41b0568..6a883a5 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/notification_queue_status.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/notification_queue_status.py @@ -33,8 +33,5 @@ class NotificationQueueStatus(WaylayBaseModel): error: StrictStr | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/notification_queue_status_report.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/notification_queue_status_report.py index 1e0cc4b..9fb681b 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/notification_queue_status_report.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/notification_queue_status_report.py @@ -30,8 +30,5 @@ class NotificationQueueStatusReport(WaylayBaseModel): messages: List[Dict[str, Any]] | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/payload_config.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/payload_config.py index 623650d..5eb3992 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/payload_config.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/payload_config.py @@ -28,8 +28,5 @@ class PayloadConfig(WaylayBaseModel): reference: Any | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/store.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/store.py index 843d931..fe3bc8c 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/store.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/store.py @@ -33,8 +33,5 @@ class Store(WaylayBaseModel): url: StrictStr model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/subscription_config.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/subscription_config.py index 1c7af59..29fdf5d 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/subscription_config.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/subscription_config.py @@ -36,8 +36,5 @@ class SubscriptionConfig(WaylayBaseModel): filters: List[EventFilter] model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/subscriptions.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/subscriptions.py index b13312f..2a0eb3c 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/subscriptions.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/subscriptions.py @@ -33,8 +33,5 @@ class Subscriptions(WaylayBaseModel): warnings: List[Dict[str, Any]] | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/subscriptions_listing.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/subscriptions_listing.py index 5c4e26e..9321093 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/subscriptions_listing.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/subscriptions_listing.py @@ -30,8 +30,5 @@ class SubscriptionsListing(WaylayBaseModel): buckets: List[Bucket] model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/system_channel_config.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/system_channel_config.py index 6356916..b809abd 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/system_channel_config.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/system_channel_config.py @@ -33,8 +33,5 @@ class SystemChannelConfig(WaylayBaseModel): expiry: Expiry | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/tenant_status_report.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/tenant_status_report.py index 0740dfb..3b0486b 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/tenant_status_report.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/tenant_status_report.py @@ -39,8 +39,5 @@ class TenantStatusReport(WaylayBaseModel): queue_status: QUEUESETUPSTATUS | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/validation_error.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/validation_error.py index 1c27c20..60db3f3 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/validation_error.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/validation_error.py @@ -30,8 +30,5 @@ class ValidationError(WaylayBaseModel): type: StrictStr model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/models/web_script_channel_config.py b/waylay-sdk-storage-types/src/waylay/services/storage/models/web_script_channel_config.py index ff57748..9fb5213 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/models/web_script_channel_config.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/models/web_script_channel_config.py @@ -37,8 +37,5 @@ class WebScriptChannelConfig(WaylayBaseModel): method: HTTPMETHOD | None = None model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - extra="ignore", + populate_by_name=True, protected_namespaces=(), extra="ignore" ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/queries/__init__.py b/waylay-sdk-storage-types/src/waylay/services/storage/queries/__init__.py index e284958..4b12403 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/queries/__init__.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/queries/__init__.py @@ -3,7 +3,7 @@ This code was generated from the OpenAPI documentation of 'Waylay Storage' -version: v0.4.1 +version: 0.4.2 Manage storage buckets and subscriptions. diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/queries/about_api.py b/waylay-sdk-storage-types/src/waylay/services/storage/queries/about_api.py index 8571499..531c6d8 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/queries/about_api.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/queries/about_api.py @@ -18,6 +18,21 @@ from waylay.sdk.api._models import BaseModel as WaylayBaseModel +def _get_query_alias_for(field_name: str) -> str: + return field_name + + +class GetQuery(WaylayBaseModel): + """Model for `get` query parameters.""" + + model_config = ConfigDict( + protected_namespaces=(), + extra="allow", + alias_generator=_get_query_alias_for, + populate_by_name=True, + ) + + def _status_query_alias_for(field_name: str) -> str: if field_name == "store": return "store" @@ -39,25 +54,8 @@ class StatusQuery(WaylayBaseModel): include_disk_usage: StrictBool | None = None model_config = ConfigDict( - validate_assignment=True, protected_namespaces=(), extra="allow", alias_generator=_status_query_alias_for, populate_by_name=True, ) - - -def _version_query_alias_for(field_name: str) -> str: - return field_name - - -class VersionQuery(WaylayBaseModel): - """Model for `version` query parameters.""" - - model_config = ConfigDict( - validate_assignment=True, - protected_namespaces=(), - extra="allow", - alias_generator=_version_query_alias_for, - populate_by_name=True, - ) diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/queries/bucket_api.py b/waylay-sdk-storage-types/src/waylay/services/storage/queries/bucket_api.py index 7aaee45..1324ca8 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/queries/bucket_api.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/queries/bucket_api.py @@ -29,7 +29,6 @@ class GetQuery(WaylayBaseModel): store: StrictStr | None = None model_config = ConfigDict( - validate_assignment=True, protected_namespaces=(), extra="allow", alias_generator=_get_query_alias_for, @@ -49,7 +48,6 @@ class ListQuery(WaylayBaseModel): store: StrictStr | None = None model_config = ConfigDict( - validate_assignment=True, protected_namespaces=(), extra="allow", alias_generator=_list_query_alias_for, diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/queries/object_api.py b/waylay-sdk-storage-types/src/waylay/services/storage/queries/object_api.py index de83c42..fa7eb76 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/queries/object_api.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/queries/object_api.py @@ -37,7 +37,6 @@ class CopyOrMoveQuery(WaylayBaseModel): store: StrictStr | None = None model_config = ConfigDict( - validate_assignment=True, protected_namespaces=(), extra="allow", alias_generator=_copy_or_move_query_alias_for, @@ -60,7 +59,6 @@ class CreateFolderQuery(WaylayBaseModel): store: StrictStr | None = None model_config = ConfigDict( - validate_assignment=True, protected_namespaces=(), extra="allow", alias_generator=_create_folder_query_alias_for, @@ -122,7 +120,6 @@ class ListQuery(WaylayBaseModel): content_type: StrictStr | None = None model_config = ConfigDict( - validate_assignment=True, protected_namespaces=(), extra="allow", alias_generator=_list_query_alias_for, @@ -154,7 +151,6 @@ class RemoveQuery(WaylayBaseModel): store: StrictStr | None = None model_config = ConfigDict( - validate_assignment=True, protected_namespaces=(), extra="allow", alias_generator=_remove_query_alias_for, diff --git a/waylay-sdk-storage-types/src/waylay/services/storage/queries/subscription_api.py b/waylay-sdk-storage-types/src/waylay/services/storage/queries/subscription_api.py index 51406be..dbba54a 100644 --- a/waylay-sdk-storage-types/src/waylay/services/storage/queries/subscription_api.py +++ b/waylay-sdk-storage-types/src/waylay/services/storage/queries/subscription_api.py @@ -33,7 +33,6 @@ class CreateQuery(WaylayBaseModel): store: StrictStr | None = None model_config = ConfigDict( - validate_assignment=True, protected_namespaces=(), extra="allow", alias_generator=_create_query_alias_for, @@ -74,7 +73,6 @@ class DeleteByQuery(WaylayBaseModel): max_keys: StrictInt | None = None model_config = ConfigDict( - validate_assignment=True, protected_namespaces=(), extra="allow", alias_generator=_delete_by_query_alias_for, @@ -94,7 +92,6 @@ class GetQuery(WaylayBaseModel): store: StrictStr | None = None model_config = ConfigDict( - validate_assignment=True, protected_namespaces=(), extra="allow", alias_generator=_get_query_alias_for, @@ -132,7 +129,6 @@ class ListQuery(WaylayBaseModel): max_keys: StrictInt | None = None model_config = ConfigDict( - validate_assignment=True, protected_namespaces=(), extra="allow", alias_generator=_list_query_alias_for, @@ -173,7 +169,6 @@ class QueryQuery(WaylayBaseModel): max_keys: StrictInt | None = None model_config = ConfigDict( - validate_assignment=True, protected_namespaces=(), extra="allow", alias_generator=_query_query_alias_for, @@ -193,7 +188,6 @@ class RemoveQuery(WaylayBaseModel): store: StrictStr | None = None model_config = ConfigDict( - validate_assignment=True, protected_namespaces=(), extra="allow", alias_generator=_remove_query_alias_for, @@ -213,7 +207,6 @@ class ReplaceQuery(WaylayBaseModel): store: StrictStr | None = None model_config = ConfigDict( - validate_assignment=True, protected_namespaces=(), extra="allow", alias_generator=_replace_query_alias_for, diff --git a/waylay-sdk-storage/.openapi-generator/FILES b/waylay-sdk-storage/.openapi-generator/FILES index aeedf11..d3a12aa 100644 --- a/waylay-sdk-storage/.openapi-generator/FILES +++ b/waylay-sdk-storage/.openapi-generator/FILES @@ -1,5 +1,4 @@ LICENSE.txt -README.md pyproject.toml src/waylay/services/storage/api/__init__.py src/waylay/services/storage/api/about_api.py diff --git a/waylay-sdk-storage/README.md b/waylay-sdk-storage/README.md index 08cd399..141f4ac 100644 --- a/waylay-sdk-storage/README.md +++ b/waylay-sdk-storage/README.md @@ -4,30 +4,30 @@ Manage storage buckets and subscriptions. This Python package is automatically generated based on the -Waylay Storage OpenAPI specification (API version: v0.4.1) +Waylay Storage OpenAPI specification (API version: 0.4.2) +For more information, please visit [the openapi specification](https://docs.waylay.io/openapi/public/redocly/storage.html). -It consists of a plugin for the waylay-sdk package, and contains the Storage api methods. +It consists of a plugin for the waylay-sdk-core package, and contains the Storage api methods. Note that the typed model classes for all path params, query params, body params and responses for each of the api methods are contained in a separate package called waylay-sdk-storage-types. ## Requirements. This package requires Python 3.9+. ## Installation -Typically this package is installed when installing the [waylay-sdk](https://github.com/waylayio/waylay-sdk-py) package to enable the service's functionality. +Typically this package is installed when installing the [waylay-sdk-core](https://pypi.org/project/waylay-sdk/) package to enable the service's functionality. When the service api methods are required, waylay-sdk-storage is included in: -- ```pip install waylay-sdk[storage]``` to install `waylay-sdk` along with only this service, or -- ```pip install waylay-sdk[services]``` to install `waylay-sdk` along with all services. +- ```pip install waylay-sdk-core[storage]``` to install `waylay-sdk-core` along with only this service, or +- ```pip install waylay-sdk-core[services]``` to install `waylay-sdk-core` along with all services. When the typed models are required, both waylay-sdk-storage and waylay-sdk-storage-types are included in: -- ```pip install waylay-sdk[storage,storage-types]``` to install `waylay-sdk` along with only this service including the typed models, or -- ```pip install waylay-sdk[services,services-types]``` to install `waylay-sdk` along with all services along with the typed models. +- ```pip install waylay-sdk-core[storage,storage-types]``` to install `waylay-sdk-core` along with only this service including the typed models, or +- ```pip install waylay-sdk-core[services,services-types]``` to install `waylay-sdk-core` along with all services along with the typed models. ## Usage - ```python from pprint import pprint -# Import the waylay-client from the waylay-sdk package +# Import the waylay-client from the waylay-sdk-core package from waylay.sdk.client import WaylayClient from waylay.sdk.api.api_exceptions import ApiError @@ -35,15 +35,23 @@ from waylay.sdk.api.api_exceptions import ApiError waylay_client = WaylayClient.from_profile() # Note that the typed model classes for responses/parameters/... are only available when `waylay-sdk-storage-types` is installed +from waylay.services.storage.models.tenant_status_report import TenantStatusReport try: - # Version - # calls `GET /storage/v1/` - api_response = await waylay_client.storage.about.version( + # Status + # calls `GET /storage/v1/status` + api_response = await waylay_client.storage.about.status( + # query parameters: + query = { + 'include_buckets': True + 'include_queues': True + 'include_disk_usage': False + }, ) - print("The response of storage.about.version:\n") + print("The response of storage.about.status:\n") pprint(api_response) except ApiError as e: - print("Exception when calling storage.about.version: %s\n" % e) + print("Exception when calling storage.about.status: %s\n" % e) ``` +For more information, please visit the [Waylay API documentation](https://docs.waylay.io/#/api/?id=software-development-kits). \ No newline at end of file diff --git a/waylay-sdk-storage/pyproject.toml b/waylay-sdk-storage/pyproject.toml index 61bf7ad..b72ab4e 100644 --- a/waylay-sdk-storage/pyproject.toml +++ b/waylay-sdk-storage/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "waylay-sdk-storage" -version = "0.4.1b1" +version = "0.4.2b20240423" description = "Waylay Storage" authors = [ { name = "Waylay", email = "info@waylay.io"} @@ -12,7 +12,7 @@ authors = [ keywords = ["Waylay Storage"] requires-python = ">= 3.9" dependencies = [ - "waylay-sdk ~= 0.0.4rc5", + "waylay-sdk-core ~= 0.2.1", "pydantic ~= 2.6", "typing-extensions ~= 4.10", "eval-type-backport ~= 0.1.3; python_version < '3.10'", @@ -22,8 +22,9 @@ license={file = "LICENSE.txt"} [project.urls] Homepage = "https://www.waylay.io/" -Documentation = "https://docs.waylay.io/#/" +Documentation = "https://docs.waylay.io/#/api/?id=software-development-kits" Repository = "https://github.com/waylayio/waylay-sdk-storage-py.git" +"Openapi Specification" = "https://docs.waylay.io/openapi/public/redocly/storage.html" [project.optional-dependencies] dev = [ diff --git a/waylay-sdk-storage/src/waylay/services/storage/api/about_api.py b/waylay-sdk-storage/src/waylay/services/storage/api/about_api.py index 64a12dd..5aed7c0 100644 --- a/waylay-sdk-storage/src/waylay/services/storage/api/about_api.py +++ b/waylay-sdk-storage/src/waylay/services/storage/api/about_api.py @@ -33,25 +33,25 @@ if TYPE_CHECKING: from waylay.services.storage.models import HTTPValidationError, TenantStatusReport - from waylay.services.storage.queries.about_api import StatusQuery, VersionQuery + from waylay.services.storage.queries.about_api import GetQuery, StatusQuery try: from waylay.services.storage.models import HTTPValidationError, TenantStatusReport - from waylay.services.storage.queries.about_api import StatusQuery, VersionQuery + from waylay.services.storage.queries.about_api import GetQuery, StatusQuery MODELS_AVAILABLE = True except ImportError: MODELS_AVAILABLE = False if not TYPE_CHECKING: + GetQuery = dict + StatusQuery = dict TenantStatusReport = Model HTTPValidationError = Model - VersionQuery = dict - T = TypeVar("T") @@ -66,92 +66,91 @@ class AboutApi(WithApiClient): """ @overload - async def status( + async def get( self, *, - query: StatusQuery | QueryParamTypes | None = None, + query: GetQuery | QueryParamTypes | None = None, raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, - ) -> TenantStatusReport: ... + ) -> str: ... @overload - async def status( + async def get( self, *, - query: StatusQuery | QueryParamTypes | None = None, + query: GetQuery | QueryParamTypes | None = None, raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @overload - async def status( + async def get( self, *, - query: StatusQuery | QueryParamTypes | None = None, + query: GetQuery | QueryParamTypes | None = None, raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @overload - async def status( + async def get( self, *, - query: StatusQuery | QueryParamTypes | None = None, + query: GetQuery | QueryParamTypes | None = None, raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @overload - async def status( + async def get( self, *, - query: StatusQuery | QueryParamTypes | None = None, + query: GetQuery | QueryParamTypes | None = None, raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... - async def status( + async def get( self, *, - query: StatusQuery | QueryParamTypes | None = None, + query: GetQuery | QueryParamTypes | None = None, raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, - ) -> TenantStatusReport | T | Response | Model: - """Status. + ) -> str | T | Response | Model: + """Version. - Validate consistency of buckets and notification queues for this tenant. + Get the application version. :param query: URL Query parameters. - :type query: StatusQuery | QueryParamTypes, optional - :param query['store'] (dict)
query.store (Query) : - :type query['store']: str - :param query['include_buckets'] (dict)
query.include_buckets (Query) : - :type query['include_buckets']: bool - :param query['include_queues'] (dict)
query.include_queues (Query) : - :type query['include_queues']: bool - :param query['include_disk_usage'] (dict)
query.include_disk_usage (Query) : - :type query['include_disk_usage']: bool + :type query: GetQuery | QueryParamTypes, optional :param raw_response: If true, return the http Response object instead of returning an api model object, or throwing an ApiError. :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -170,10 +169,6 @@ async def status( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = {} @@ -181,25 +176,23 @@ async def status( body_args: Dict[str, Any] = {} # query parameters - if query is not None and should_validate: - query = TypeAdapter(StatusQuery).validate_python(query) + if query is not None and MODELS_AVAILABLE and validate_request: + query = TypeAdapter(GetQuery).validate_python(query) response_types_map: Dict[str, Any] = ( {"2XX": response_type} if response_type is not None else { - "200": TenantStatusReport if not select_path else Model, + "200": str if not select_path else Model, } ) - non_200_response_types_map: Dict[str, Any] = { - "422": HTTPValidationError, - } + non_200_response_types_map: Dict[str, Any] = {} response_types_map.update(non_200_response_types_map) ## peform request return await self.api_client.request( method="GET", - resource_path="/storage/v1/status", + resource_path="/storage/v1/", path_params=path_params, params=query, **body_args, @@ -211,84 +204,99 @@ async def status( ) @overload - async def version( + async def status( self, *, - query: VersionQuery | QueryParamTypes | None = None, + query: StatusQuery | QueryParamTypes | None = None, raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, - ) -> str: ... + ) -> TenantStatusReport: ... @overload - async def version( + async def status( self, *, - query: VersionQuery | QueryParamTypes | None = None, + query: StatusQuery | QueryParamTypes | None = None, raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @overload - async def version( + async def status( self, *, - query: VersionQuery | QueryParamTypes | None = None, + query: StatusQuery | QueryParamTypes | None = None, raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @overload - async def version( + async def status( self, *, - query: VersionQuery | QueryParamTypes | None = None, + query: StatusQuery | QueryParamTypes | None = None, raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @overload - async def version( + async def status( self, *, - query: VersionQuery | QueryParamTypes | None = None, + query: StatusQuery | QueryParamTypes | None = None, raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... - async def version( + async def status( self, *, - query: VersionQuery | QueryParamTypes | None = None, + query: StatusQuery | QueryParamTypes | None = None, raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, - ) -> str | T | Response | Model: - """Version. + ) -> TenantStatusReport | T | Response | Model: + """Status. - Get the application version. + Validate consistency of buckets and notification queues for this tenant. :param query: URL Query parameters. - :type query: VersionQuery | QueryParamTypes, optional + :type query: StatusQuery | QueryParamTypes, optional + :param query['store'] (dict)
query.store (Query) : + :type query['store']: str + :param query['include_buckets'] (dict)
query.include_buckets (Query) : + :type query['include_buckets']: bool + :param query['include_queues'] (dict)
query.include_queues (Query) : + :type query['include_queues']: bool + :param query['include_disk_usage'] (dict)
query.include_disk_usage (Query) : + :type query['include_disk_usage']: bool :param raw_response: If true, return the http Response object instead of returning an api model object, or throwing an ApiError. :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -307,10 +315,6 @@ async def version( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = {} @@ -318,23 +322,25 @@ async def version( body_args: Dict[str, Any] = {} # query parameters - if query is not None and should_validate: - query = TypeAdapter(VersionQuery).validate_python(query) + if query is not None and MODELS_AVAILABLE and validate_request: + query = TypeAdapter(StatusQuery).validate_python(query) response_types_map: Dict[str, Any] = ( {"2XX": response_type} if response_type is not None else { - "200": str if not select_path else Model, + "200": TenantStatusReport if not select_path else Model, } ) - non_200_response_types_map: Dict[str, Any] = {} + non_200_response_types_map: Dict[str, Any] = { + "422": HTTPValidationError, + } response_types_map.update(non_200_response_types_map) ## peform request return await self.api_client.request( method="GET", - resource_path="/storage/v1/", + resource_path="/storage/v1/status", path_params=path_params, params=query, **body_args, diff --git a/waylay-sdk-storage/src/waylay/services/storage/api/bucket_api.py b/waylay-sdk-storage/src/waylay/services/storage/api/bucket_api.py index 3cbdf5b..8aaf7ce 100644 --- a/waylay-sdk-storage/src/waylay/services/storage/api/bucket_api.py +++ b/waylay-sdk-storage/src/waylay/services/storage/api/bucket_api.py @@ -86,6 +86,7 @@ async def get( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Bucket: ... @@ -99,6 +100,7 @@ async def get( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -112,6 +114,7 @@ async def get( raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @@ -125,6 +128,7 @@ async def get( raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @@ -138,6 +142,7 @@ async def get( raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -150,6 +155,7 @@ async def get( raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Bucket | T | Response | Model: @@ -166,6 +172,7 @@ async def get( :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -184,10 +191,6 @@ async def get( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = { "bucket_name": str(bucket_name), @@ -197,7 +200,7 @@ async def get( body_args: Dict[str, Any] = {} # query parameters - if query is not None and should_validate: + if query is not None and MODELS_AVAILABLE and validate_request: query = TypeAdapter(GetQuery).validate_python(query) response_types_map: Dict[str, Any] = ( @@ -234,6 +237,7 @@ async def list( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> BucketListing: ... @@ -246,6 +250,7 @@ async def list( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -258,6 +263,7 @@ async def list( raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @@ -270,6 +276,7 @@ async def list( raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @@ -282,6 +289,7 @@ async def list( raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -293,6 +301,7 @@ async def list( raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> BucketListing | T | Response | Model: @@ -307,6 +316,7 @@ async def list( :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -325,10 +335,6 @@ async def list( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = {} @@ -336,7 +342,7 @@ async def list( body_args: Dict[str, Any] = {} # query parameters - if query is not None and should_validate: + if query is not None and MODELS_AVAILABLE and validate_request: query = TypeAdapter(ListQuery).validate_python(query) response_types_map: Dict[str, Any] = ( diff --git a/waylay-sdk-storage/src/waylay/services/storage/api/object_api.py b/waylay-sdk-storage/src/waylay/services/storage/api/object_api.py index 985c527..c797733 100644 --- a/waylay-sdk-storage/src/waylay/services/storage/api/object_api.py +++ b/waylay-sdk-storage/src/waylay/services/storage/api/object_api.py @@ -109,6 +109,7 @@ async def copy_or_move( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> HALEntity: ... @@ -123,6 +124,7 @@ async def copy_or_move( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -137,6 +139,7 @@ async def copy_or_move( raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @@ -151,6 +154,7 @@ async def copy_or_move( raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @@ -165,6 +169,7 @@ async def copy_or_move( raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -178,6 +183,7 @@ async def copy_or_move( raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> HALEntity | T | Response | Model: @@ -200,6 +206,7 @@ async def copy_or_move( :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -218,10 +225,6 @@ async def copy_or_move( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = { "bucket_name": str(bucket_name), @@ -232,7 +235,7 @@ async def copy_or_move( body_args: Dict[str, Any] = {} # query parameters - if query is not None and should_validate: + if query is not None and MODELS_AVAILABLE and validate_request: query = TypeAdapter(CopyOrMoveQuery).validate_python(query) response_types_map: Dict[str, Any] = ( @@ -271,6 +274,7 @@ async def create_folder( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> BucketObject: ... @@ -285,6 +289,7 @@ async def create_folder( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -299,6 +304,7 @@ async def create_folder( raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @@ -313,6 +319,7 @@ async def create_folder( raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @@ -327,6 +334,7 @@ async def create_folder( raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -340,6 +348,7 @@ async def create_folder( raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> BucketObject | T | Response | Model: @@ -360,6 +369,7 @@ async def create_folder( :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -378,10 +388,6 @@ async def create_folder( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = { "bucket_name": str(bucket_name), @@ -392,7 +398,7 @@ async def create_folder( body_args: Dict[str, Any] = {} # query parameters - if query is not None and should_validate: + if query is not None and MODELS_AVAILABLE and validate_request: query = TypeAdapter(CreateFolderQuery).validate_python(query) response_types_map: Dict[str, Any] = ( @@ -431,6 +437,7 @@ async def list( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> ResponseList: ... @@ -445,6 +452,7 @@ async def list( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -459,6 +467,7 @@ async def list( raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @@ -473,6 +482,7 @@ async def list( raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @@ -487,6 +497,7 @@ async def list( raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -500,6 +511,7 @@ async def list( raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> ResponseList | T | Response | Model: @@ -546,6 +558,7 @@ async def list( :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -564,10 +577,6 @@ async def list( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = { "bucket_name": str(bucket_name), @@ -578,7 +587,7 @@ async def list( body_args: Dict[str, Any] = {} # query parameters - if query is not None and should_validate: + if query is not None and MODELS_AVAILABLE and validate_request: query = TypeAdapter(ListQuery).validate_python(query) response_types_map: Dict[str, Any] = ( @@ -617,6 +626,7 @@ async def remove( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> HALEntity: ... @@ -631,6 +641,7 @@ async def remove( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -645,6 +656,7 @@ async def remove( raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @@ -659,6 +671,7 @@ async def remove( raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @@ -673,6 +686,7 @@ async def remove( raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -686,6 +700,7 @@ async def remove( raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> HALEntity | T | Response | Model: @@ -712,6 +727,7 @@ async def remove( :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -730,10 +746,6 @@ async def remove( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = { "bucket_name": str(bucket_name), @@ -744,7 +756,7 @@ async def remove( body_args: Dict[str, Any] = {} # query parameters - if query is not None and should_validate: + if query is not None and MODELS_AVAILABLE and validate_request: query = TypeAdapter(RemoveQuery).validate_python(query) response_types_map: Dict[str, Any] = ( diff --git a/waylay-sdk-storage/src/waylay/services/storage/api/subscription_api.py b/waylay-sdk-storage/src/waylay/services/storage/api/subscription_api.py index f35e539..086ad8b 100644 --- a/waylay-sdk-storage/src/waylay/services/storage/api/subscription_api.py +++ b/waylay-sdk-storage/src/waylay/services/storage/api/subscription_api.py @@ -136,6 +136,7 @@ async def create( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> SubscriptionConfig: ... @@ -150,6 +151,7 @@ async def create( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -164,6 +166,7 @@ async def create( raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @@ -178,6 +181,7 @@ async def create( raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @@ -192,6 +196,7 @@ async def create( raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -205,6 +210,7 @@ async def create( raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> SubscriptionConfig | T | Response | Model: @@ -223,6 +229,7 @@ async def create( :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -241,10 +248,6 @@ async def create( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = { "bucket_name": str(bucket_name), @@ -252,13 +255,13 @@ async def create( ## named body parameters body_args: Dict[str, Any] = {} - if json is not None and should_validate: + if json is not None and validate_request: body_adapter = TypeAdapter(SubscriptionConfig) json = body_adapter.validate_python(json) # type: ignore # https://github.com/pydantic/pydantic/discussions/7094 body_args["json"] = json # query parameters - if query is not None and should_validate: + if query is not None and MODELS_AVAILABLE and validate_request: query = TypeAdapter(CreateQuery).validate_python(query) response_types_map: Dict[str, Any] = ( @@ -296,6 +299,7 @@ async def delete_by( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> HALEntity: ... @@ -309,6 +313,7 @@ async def delete_by( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -322,6 +327,7 @@ async def delete_by( raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @@ -335,6 +341,7 @@ async def delete_by( raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @@ -348,6 +355,7 @@ async def delete_by( raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -360,6 +368,7 @@ async def delete_by( raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> HALEntity | T | Response | Model: @@ -390,6 +399,7 @@ async def delete_by( :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -408,10 +418,6 @@ async def delete_by( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = { "bucket_name": str(bucket_name), @@ -421,7 +427,7 @@ async def delete_by( body_args: Dict[str, Any] = {} # query parameters - if query is not None and should_validate: + if query is not None and MODELS_AVAILABLE and validate_request: query = TypeAdapter(DeleteByQuery).validate_python(query) response_types_map: Dict[str, Any] = ( @@ -460,6 +466,7 @@ async def get( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> SubscriptionConfig: ... @@ -474,6 +481,7 @@ async def get( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -488,6 +496,7 @@ async def get( raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @@ -502,6 +511,7 @@ async def get( raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @@ -516,6 +526,7 @@ async def get( raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -529,6 +540,7 @@ async def get( raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> SubscriptionConfig | T | Response | Model: @@ -547,6 +559,7 @@ async def get( :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -565,10 +578,6 @@ async def get( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = { "bucket_name": str(bucket_name), @@ -579,7 +588,7 @@ async def get( body_args: Dict[str, Any] = {} # query parameters - if query is not None and should_validate: + if query is not None and MODELS_AVAILABLE and validate_request: query = TypeAdapter(GetQuery).validate_python(query) response_types_map: Dict[str, Any] = ( @@ -616,6 +625,7 @@ async def list( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> SubscriptionsListing: ... @@ -628,6 +638,7 @@ async def list( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -640,6 +651,7 @@ async def list( raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @@ -652,6 +664,7 @@ async def list( raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @@ -664,6 +677,7 @@ async def list( raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -675,6 +689,7 @@ async def list( raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> SubscriptionsListing | T | Response | Model: @@ -701,6 +716,7 @@ async def list( :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -719,10 +735,6 @@ async def list( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = {} @@ -730,7 +742,7 @@ async def list( body_args: Dict[str, Any] = {} # query parameters - if query is not None and should_validate: + if query is not None and MODELS_AVAILABLE and validate_request: query = TypeAdapter(ListQuery).validate_python(query) response_types_map: Dict[str, Any] = ( @@ -768,6 +780,7 @@ async def query( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Subscriptions: ... @@ -781,6 +794,7 @@ async def query( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -794,6 +808,7 @@ async def query( raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @@ -807,6 +822,7 @@ async def query( raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @@ -820,6 +836,7 @@ async def query( raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -832,6 +849,7 @@ async def query( raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Subscriptions | T | Response | Model: @@ -862,6 +880,7 @@ async def query( :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -880,10 +899,6 @@ async def query( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = { "bucket_name": str(bucket_name), @@ -893,7 +908,7 @@ async def query( body_args: Dict[str, Any] = {} # query parameters - if query is not None and should_validate: + if query is not None and MODELS_AVAILABLE and validate_request: query = TypeAdapter(QueryQuery).validate_python(query) response_types_map: Dict[str, Any] = ( @@ -932,6 +947,7 @@ async def remove( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> HALEntity: ... @@ -946,6 +962,7 @@ async def remove( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -960,6 +977,7 @@ async def remove( raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @@ -974,6 +992,7 @@ async def remove( raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @@ -988,6 +1007,7 @@ async def remove( raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -1001,6 +1021,7 @@ async def remove( raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> HALEntity | T | Response | Model: @@ -1019,6 +1040,7 @@ async def remove( :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -1037,10 +1059,6 @@ async def remove( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = { "bucket_name": str(bucket_name), @@ -1051,7 +1069,7 @@ async def remove( body_args: Dict[str, Any] = {} # query parameters - if query is not None and should_validate: + if query is not None and MODELS_AVAILABLE and validate_request: query = TypeAdapter(RemoveQuery).validate_python(query) response_types_map: Dict[str, Any] = ( @@ -1091,6 +1109,7 @@ async def replace( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> SubscriptionConfig: ... @@ -1106,6 +1125,7 @@ async def replace( raw_response: Literal[False] = False, select_path: Literal[""] = "", response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -1121,6 +1141,7 @@ async def replace( raw_response: Literal[True], select_path: Literal["_not_used_"] = "_not_used_", response_type: Literal[None] = None, # not used + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Response: ... @@ -1136,6 +1157,7 @@ async def replace( raw_response: Literal[False] = False, select_path: str, response_type: Literal[None] = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> Model: ... @@ -1151,6 +1173,7 @@ async def replace( raw_response: Literal[False] = False, select_path: str, response_type: T, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> T: ... @@ -1165,6 +1188,7 @@ async def replace( raw_response: StrictBool = False, select_path: str = "", response_type: T | None = None, + validate_request: StrictBool = True, headers: HeaderTypes | None = None, **kwargs, ) -> SubscriptionConfig | T | Response | Model: @@ -1185,6 +1209,7 @@ async def replace( :param select_path: Denotes the json path applied to the response object before returning it. Set it to the empty string `""` to receive the full response object. :param response_type: If specified, the response is parsed into an instance of the specified type. + :param validate_request: If set to false, the request body and query parameters are NOT validated against the models in the service types package, even when available. :param headers: Header parameters for this request :type headers: dict, optional :param `**kwargs`: Additional parameters passed on to the http client. @@ -1203,10 +1228,6 @@ async def replace( object wraps both the http Response and any parsed data. """ - should_validate = ( - MODELS_AVAILABLE and self.api_client.config.client_side_validation - ) - # path parameters path_params: Dict[str, str] = { "bucket_name": str(bucket_name), @@ -1215,13 +1236,13 @@ async def replace( ## named body parameters body_args: Dict[str, Any] = {} - if json is not None and should_validate: + if json is not None and validate_request: body_adapter = TypeAdapter(SubscriptionConfig) json = body_adapter.validate_python(json) # type: ignore # https://github.com/pydantic/pydantic/discussions/7094 body_args["json"] = json # query parameters - if query is not None and should_validate: + if query is not None and MODELS_AVAILABLE and validate_request: query = TypeAdapter(ReplaceQuery).validate_python(query) response_types_map: Dict[str, Any] = ( diff --git a/waylay-sdk-storage/src/waylay/services/storage/service/__init__.py b/waylay-sdk-storage/src/waylay/services/storage/service/__init__.py index 3af4b94..c858060 100644 --- a/waylay-sdk-storage/src/waylay/services/storage/service/__init__.py +++ b/waylay-sdk-storage/src/waylay/services/storage/service/__init__.py @@ -3,7 +3,7 @@ This code was generated from the OpenAPI documentation of 'Waylay Storage' -version: v0.4.1 +version: 0.4.2 Manage storage buckets and subscriptions. @@ -12,7 +12,7 @@ Do not edit the class manually. """ -__version__ = "0.4.1b1" +__version__ = "0.4.2b20240423" from .service import StorageService