From b0b18b4b608c2a5a3f4755dbede6b898f6133d42 Mon Sep 17 00:00:00 2001 From: Simon Moreno <30335873+simorenoh@users.noreply.github.com> Date: Wed, 30 Mar 2022 12:21:44 -0400 Subject: [PATCH] [Cosmos] remove double signatures on container methods (#23727) * initial commit * Client Constructor (#20310) * Removed some stuff * Looking at constructors * Updated request * Added client close * working client creation Co-authored-by: simorenoh * read database database read works, but ignored exception is returned: Fatal error on SSL transport NoneType has no attribute 'send' (_loop._proactor.send) RuntimeError: Event loop is closed Unclosed connector/ connection * Update simon_testfile.py * with coroutine Added methods needed to use async with when initializing client, but logs output "Exception ignored... Runtime Error: Event loop is closed" * Update simon_testfile.py * small changes * async with returns no exceptions * async read container * async item read * cleaning up * create item/ database methods * item delete working * docs replace functionality missing upsert and other resources * upsert functionality missing read_all_items and both query methods for container class * missing query methods * CRUD for udf, sproc, triggers * initial query logic + container methods * missing some execution logic and tests * oops * fully working queries * small fix to query_items() also fixed README and added examples_async * Update _cosmos_client_connection_async.py * Update _cosmos_client_connection.py * documentation update * updated MIT dates and get_user_client() description * Update CHANGELOG.md * Delete simon_testfile.py * leftover retry utility * Update README.md * docs and removed six package * changes based on comments still missing discussion resolution on SSL verification and tests for async functionality under test module (apart from samples which are basically end to end tests) * small change in type hints * updated readme * fixes based on conversations * added missing type comments * update changelog for ci pipeline * added typehints, moved params into keywords, added decorators, made _connection_policy private * changes based on sync with central sdk * remove is_system_key from scripts (only used in execute_sproc) is_system_key verifies that an empty partition key is properly dealt with if ['partitionKey']['systemKey'] exists in the container options - however, we do not allow containers to be created with empty partition key values in the python sdk, so the functionality is needless * Revert "remove is_system_key from scripts (only used in execute_sproc)" Reverting last commit, will find way to init is_system_key for now * async script proxy using composition * pylint * capitalized constants * Apply suggestions from code review Clarifying comments for README Co-authored-by: Gahl Levy <75269480+gahl-levy@users.noreply.github.com> * closing python code snippet * last doc updates * Update sdk/cosmos/azure-cosmos/CHANGELOG.md Co-authored-by: Simon Moreno <30335873+simorenoh@users.noreply.github.com> * version update * cosmos updates for release * fix connection string comma * Update CHANGELOG.md * fixing extra await keyword in sample * Update CHANGELOG.md * Update CHANGELOG.md * removed double signatures Co-authored-by: annatisch Co-authored-by: Gahl Levy <75269480+gahl-levy@users.noreply.github.com> Co-authored-by: Travis Prescott --- .../azure/cosmos/aio/container.py | 36 +++++++------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/sdk/cosmos/azure-cosmos/azure/cosmos/aio/container.py b/sdk/cosmos/azure-cosmos/azure/cosmos/aio/container.py index c263ea1dfdc4..f66fc278de60 100644 --- a/sdk/cosmos/azure-cosmos/azure/cosmos/aio/container.py +++ b/sdk/cosmos/azure-cosmos/azure/cosmos/aio/container.py @@ -117,8 +117,7 @@ async def read( populate_partition_key_range_statistics=None, # type: Optional[bool] populate_quota_info=None, # type: Optional[bool] **kwargs # type: Any - ): - # type: (...) -> Dict[str, Any] + ) -> Dict[str, Any]: """Read the container properties. :param populate_partition_key_range_statistics: Enable returning partition key @@ -154,8 +153,7 @@ async def create_item( self, body, # type: Dict[str, Any] **kwargs # type: Any - ): - # type: (...) -> Dict[str, Any] + ) -> Dict[str, Any]: """Create an item in the container. To update or replace an existing item, use the @@ -203,8 +201,7 @@ async def read_item( item, # type: Union[str, Dict[str, Any]] partition_key, # type: Any **kwargs # type: Any - ): - # type: (...) -> Dict[str, Any] + ) -> Dict[str, Any]: """Get the item identified by `item`. :param item: The ID (name) or dict representing item to retrieve. @@ -251,8 +248,7 @@ def read_all_items( self, max_item_count=None, # type: Optional[int] **kwargs # type: Any - ): - # type: (...) -> AsyncItemPaged[Dict[str, Any]] + ) -> AsyncItemPaged[Dict[str, Any]]: """List all the items in the container. :param max_item_count: Max number of items to be returned in the enumeration operation. @@ -296,8 +292,7 @@ def query_items( enable_scan_in_query=None, # type: Optional[bool] populate_query_metrics=None, # type: Optional[bool] **kwargs # type: Any - ): - # type: (...) -> AsyncItemPaged[Dict[str, Any]] + ) -> AsyncItemPaged[Dict[str, Any]]: """Return all results matching the given `query`. You can use any value for the container name in the FROM clause, but @@ -384,8 +379,7 @@ def query_items_change_feed( continuation=None, # type: Optional[str] max_item_count=None, # type: Optional[int] **kwargs # type: Any - ): - # type: (...) -> AsyncItemPaged[Dict[str, Any]] + ) -> AsyncItemPaged[Dict[str, Any]]: """Get a sorted list of items that were changed, in the order in which they were modified. :param partition_key_range_id: ChangeFeed requests can be executed against specific partition key ranges. @@ -430,8 +424,7 @@ async def upsert_item( pre_trigger_include=None, # type: Optional[str] post_trigger_include=None, # type: Optional[str] **kwargs # type: Any - ): - # type: (...) -> Dict[str, Any] + ) -> Dict[str, Any]: """Insert or update the specified item. If the item already exists in the container, it is replaced. If the item @@ -476,8 +469,7 @@ async def replace_item( pre_trigger_include=None, # type: Optional[str] post_trigger_include=None, # type: Optional[str] **kwargs # type: Any - ): - # type: (...) -> Dict[str, Any] + ) -> Dict[str, Any]: """Replaces the specified item if it exists in the container. If the item does not already exist in the container, an exception is raised. @@ -521,8 +513,7 @@ async def delete_item( pre_trigger_include=None, # type: Optional[str] post_trigger_include=None, # type: Optional[str] **kwargs # type: Any - ): - # type: (...) -> None + ) -> None: """Delete the specified item from the container. If the item does not already exist in the container, an exception is raised. @@ -651,8 +642,7 @@ def query_conflicts( partition_key=None, # type: Optional[Any] max_item_count=None, # type: Optional[int] **kwargs # type: Any - ): - # type: (...) -> AsyncItemPaged[Dict[str, Any]] + ) -> AsyncItemPaged[Dict[str, Any]]: """Return all conflicts matching a given `query`. :param query: The Azure Cosmos DB SQL query to execute. @@ -689,8 +679,7 @@ async def read_conflict( conflict, # type: Union[str, Dict[str, Any]] partition_key, # type: Any **kwargs # type: Any - ): - # type: (Union[str, Dict[str, Any]], Any, Any) -> Dict[str, Any] + ) -> Dict[str, Any]: """Get the conflict identified by `conflict`. :param conflict: The ID (name) or dict representing the conflict to retrieve. @@ -718,8 +707,7 @@ async def delete_conflict( conflict, # type: Union[str, Dict[str, Any]] partition_key, # type: Any **kwargs # type: Any - ): - # type: (Union[str, Dict[str, Any]], Any, Any) -> None + ) -> None: """Delete a specified conflict from the container. If the conflict does not already exist in the container, an exception is raised.