diff --git a/perxis/provider.py b/perxis/provider.py index 89ef7929470e154da2b01db77fae82ae40e7cfa7..f0e8743d31cad6513419d4f76416b7b7b8a1e0cd 100644 --- a/perxis/provider.py +++ b/perxis/provider.py @@ -15,6 +15,9 @@ - `Provider` работает только СЃ конкретным. """ +import inspect +import warnings + from google.protobuf.struct_pb2 import Struct from google.protobuf.empty_pb2 import Empty from perxis.common import common_pb2 @@ -925,6 +928,23 @@ class PerxisDataProvider: items=items_pb2_grpc.ItemsStub(self.channel.channel), ) + @classmethod + def __warn_about_space_and_env_id(cls, method_name: str): + """ + Метод для отображения предупреждения Рѕ deprecated аргументах space_id Рё env_id + + Arguments: + method_name (str): Название метода + """ + warnings.warn( + ( + f"РџСЂРё вызове метода {method_name} " + f"класса {cls.__name__} были указаны параметры space_id или " + "env_id. РћРЅРё являются устаревшими Рё РІ дальнейшем Р±СѓРґСѓС‚ удалены" + ), + DeprecationWarning + ) + async def get(self, item_id: str, collection_id: str) -> items_pb2.GetResponse: """Получение записи РїРѕ идентификатору. @@ -1155,6 +1175,7 @@ class PerxisDataProvider: self, collection_id: str, filters: list[str] | str = None, + fields: list[str] | None = None, sort_by: list[str] | str = None, page_size: int | None = DEFAULT_PAGE_SIZE, ) -> items_pb2.FindResponse: @@ -1163,6 +1184,7 @@ class PerxisDataProvider: Arguments: collection_id (str): Рдентификатор коллекции для РїРѕРёСЃРєР°. filters (list[str] | None): Фильтры для РїРѕРёСЃРєР° записей. + fields (list[str] | None): Поля, которые необходимо вернуть. sort_by (list[str] | None): Поля для сортировки результатов. page_size (int | None): Размер страницы. Returns: @@ -1173,6 +1195,7 @@ class PerxisDataProvider: space_id=self.space_id, env_id=self.env_id, filters=filters, + fields=fields, sort_by=sort_by, page_size=page_size, ) @@ -1197,8 +1220,8 @@ class PerxisDataProvider: self, item_id: str, collection_id: str, - space_id: str, - env_id: str, + space_id: str | None = None, + env_id: str | None = None, update_attrs: bool = False, erase: bool = True, **kwargs, @@ -1208,19 +1231,24 @@ class PerxisDataProvider: Arguments: item_id (str): Рдентификатор записи для удаления. collection_id (str): Рдентификатор коллекции. - space_id (str): Рдентификатор пространства. - env_id (str): Рдентификатор окружения. + space_id (str | None): Рдентификатор пространства. DEPRECATED + env_id (str | None): Рдентификатор окружения. DEPRECATED update_attrs (bool): Обновить системные поля `created_by`, `created_at`, `created_rev_at`, `updated_by`, `updated_at`. erase (bool): Полностью удалить запись. Returns: Empty: Пустой ответ РїСЂРё успешном удалении. """ + if any((space_id, env_id)): + self.__warn_about_space_and_env_id( + method_name=inspect.currentframe().f_code.co_name, + ) + message = await self.items_wrapper.delete( item_id=item_id, collection_id=collection_id, - space_id=space_id, - env_id=env_id, + space_id=space_id or self.space_id, + env_id=env_id or self.env_id, update_attrs=update_attrs, erase=erase, **kwargs, @@ -1231,8 +1259,8 @@ class PerxisDataProvider: self, item_id: str, collection_id: str, - space_id: str, - env_id: str, + space_id: str | None = None, + env_id: str | None = None, update_attrs: bool = False, **kwargs, ) -> Empty: @@ -1241,18 +1269,23 @@ class PerxisDataProvider: Arguments: item_id (str): Рдентификатор записи для восстановления. collection_id (str): Рдентификатор коллекции. - space_id (str): Рдентификатор пространства. - env_id (str): Рдентификатор окружения. + space_id (str | None): Рдентификатор пространства. DEPRECATED + env_id (str | None): Рдентификатор окружения. DEPRECATED update_attrs (bool): Обновить системные поля `created_by`, `created_at`, `created_rev_at`, `updated_by`, `updated_at`. Returns: Empty: Пустой ответ РїСЂРё успешном восстановлении. """ + if any((space_id, env_id)): + self.__warn_about_space_and_env_id( + method_name=inspect.currentframe().f_code.co_name, + ) + message = await self.items_wrapper.undelete( item_id=item_id, collection_id=collection_id, - space_id=space_id, - env_id=env_id, + space_id=space_id or self.space_id, + env_id=env_id or self.env_id, update_attrs=update_attrs, **kwargs, ) @@ -1262,8 +1295,8 @@ class PerxisDataProvider: self, item_id: str, collection_id: str, - space_id: str, - env_id: str, + space_id: str | None = None, + env_id: str | None = None, locale_id: str | None = None, ) -> items_pb2.GetPublishedResponse: """Получает опубликованные записи. @@ -1271,18 +1304,23 @@ class PerxisDataProvider: Arguments: item_id (str): Рдентификатор записи. collection_id (str): Рдентификатор коллекции. - space_id (str): Рдентификатор пространства. - env_id (str): Рдентификатор окружения. + space_id (str | None): Рдентификатор пространства. DEPRECATED + env_id (str | None): Рдентификатор окружения. DEPRECATED locale_id (str | None): Рдентификатор языка перевода который будет использоваться. Если РЅРµ указан, то возвращаются данные для языка РїРѕ умолчанию. Returns: items_pb2.GetPublishedResponse: Ответ СЃ опубликованными данными. """ + if any((space_id, env_id)): + self.__warn_about_space_and_env_id( + method_name=inspect.currentframe().f_code.co_name, + ) + message = await self.items_wrapper.get_published( item_id=item_id, collection_id=collection_id, - space_id=space_id, - env_id=env_id, + space_id=space_id or self.space_id, + env_id=env_id or self.env_id, locale_id=locale_id, ) return message @@ -1290,8 +1328,8 @@ class PerxisDataProvider: async def aggregate( self, collection_id: str, - space_id: str, - env_id: str, + space_id: str | None = None, + env_id: str | None = None, aggregate_options: dict[str, str] | None = None, filters: list[str] | None = None, ) -> items_pb2.AggregateResponse: @@ -1299,17 +1337,22 @@ class PerxisDataProvider: Arguments: collection_id (str): Рдентификатор коллекции. - space_id (str): Рдентификатор пространства. - env_id (str): Рдентификатор окружения. + space_id (str | None): Рдентификатор пространства. DEPRECATED + env_id (str | None): Рдентификатор окружения. DEPRECATED aggregate_options (dict[str, str] | None): Опции агрегации. filters (list[str] | None): Фильтры для агрегации. Returns: items_pb2.AggregateResponse: Ответ СЃ результатами агрегации. """ + if any((space_id, env_id)): + self.__warn_about_space_and_env_id( + method_name=inspect.currentframe().f_code.co_name, + ) + message = await self.items_wrapper.aggregate( collection_id=collection_id, - space_id=space_id, - env_id=env_id, + space_id=space_id or self.space_id, + env_id=env_id or self.env_id, aggregate_options=aggregate_options, filters=filters, ) @@ -1318,8 +1361,8 @@ class PerxisDataProvider: async def aggregate_published( self, collection_id: str, - space_id: str, - env_id: str, + space_id: str | None = None, + env_id: str | None = None, aggregate_options: dict[str, str] | None = None, filters: list[str] | None = None, ) -> items_pb2.AggregatePublishedResponse: @@ -1327,17 +1370,22 @@ class PerxisDataProvider: Arguments: collection_id (str): Рдентификатор коллекции. - space_id (str): Рдентификатор пространства. - env_id (str): Рдентификатор окружения. + space_id (str | None): Рдентификатор пространства. DEPRECATED + env_id (str | None): Рдентификатор окружения. DEPRECATED aggregate_options (dict[str, str] | None): Опции агрегации. filters (list[str] | None): Фильтры для агрегации. Returns: items_pb2.AggregatePublishedResponse: Ответ СЃ результатами агрегации опубликованных данных. """ + if any((space_id, env_id)): + self.__warn_about_space_and_env_id( + method_name=inspect.currentframe().f_code.co_name, + ) + message = await self.items_wrapper.aggregate_published( collection_id=collection_id, - space_id=space_id, - env_id=env_id, + space_id=space_id or self.space_id, + env_id=env_id or self.env_id, aggregate_options=aggregate_options, filters=filters, ) @@ -1348,8 +1396,8 @@ class PerxisDataProvider: item_id: str, revision_id: str, collection_id: str, - space_id: str, - env_id: str, + space_id: str | None = None, + env_id: str | None = None, ) -> items_pb2.GetRevisionResponse: """Получает ревизию записи. @@ -1357,17 +1405,22 @@ class PerxisDataProvider: item_id (str): Рдентификатор записи. revision_id (str): Рдентификатор ревизии. collection_id (str): Рдентификатор коллекции. - space_id (str): Рдентификатор пространства. - env_id (str): Рдентификатор окружения. + space_id (str | None): Рдентификатор пространства. DEPRECATED + env_id (str | None): Рдентификатор окружения. DEPRECATED Returns: items_pb2.GetRevisionResponse: Ответ СЃ данными ревизии. """ + if any((space_id, env_id)): + self.__warn_about_space_and_env_id( + method_name=inspect.currentframe().f_code.co_name, + ) + message = await self.items_wrapper.get_revision( item_id=item_id, revision_id=revision_id, collection_id=collection_id, - space_id=space_id, - env_id=env_id, + space_id=space_id or self.space_id, + env_id=env_id or self.env_id, ) return message @@ -1375,8 +1428,8 @@ class PerxisDataProvider: self, item_id: str, collection_id: str, - space_id: str, - env_id: str, + space_id: str | None = None, + env_id: str | None = None, sort_by: list[str] | None = None, fields: list[str] | None = None, exclude_fields: bool = False, @@ -1388,8 +1441,8 @@ class PerxisDataProvider: Arguments: item_id (str): Рдентификатор записи. collection_id (str): Рдентификатор коллекции. - space_id (str): Рдентификатор пространства. - env_id (str): Рдентификатор окружения. + space_id (str | None): Рдентификатор пространства. DEPRECATED + env_id (str | None): Рдентификатор окружения. DEPRECATED sort_by (list[str] | None): Поля для сортировки. fields (list[str] | None): Поля, которые необходимо вернуть. exclude_fields (bool): Рсключить указанные поля РёР· результата. @@ -1398,11 +1451,16 @@ class PerxisDataProvider: Returns: items_pb2.ListRevisionsResponse: Ответ СЃ данными ревизий. """ + if any((space_id, env_id)): + self.__warn_about_space_and_env_id( + method_name=inspect.currentframe().f_code.co_name, + ) + message = await self.items_wrapper.list_revisions( item_id=item_id, collection_id=collection_id, - space_id=space_id, - env_id=env_id, + space_id=space_id or self.space_id, + env_id=env_id or self.env_id, sort_by=sort_by, fields=fields, exclude_fields=exclude_fields, @@ -1415,24 +1473,29 @@ class PerxisDataProvider: self, item_id: str, collection_id: str, - space_id: str, - env_id: str, + space_id: str | None = None, + env_id: str | None = None, ) -> Empty: """Архивирует запись. Arguments: item_id (str): Рдентификатор записи. collection_id (str): Рдентификатор коллекции. - space_id (str): Рдентификатор пространства. - env_id (str): Рдентификатор окружения. + space_id (str | None): Рдентификатор пространства. DEPRECATED + env_id (str | None): Рдентификатор окружения. DEPRECATED Returns: Empty: Пустой ответ РїСЂРё успешной архивации. """ + if any((space_id, env_id)): + self.__warn_about_space_and_env_id( + method_name=inspect.currentframe().f_code.co_name, + ) + message = await self.items_wrapper.archive( item_id=item_id, collection_id=collection_id, - space_id=space_id, - env_id=env_id, + space_id=space_id or self.space_id, + env_id=env_id or self.env_id, ) return message @@ -1440,32 +1503,37 @@ class PerxisDataProvider: self, item_id: str, collection_id: str, - space_id: str, - env_id: str, + space_id: str | None = None, + env_id: str | None = None, ) -> Empty: """Восстанавливает запись РёР· архива. Arguments: item_id (str): Рдентификатор записи. collection_id (str): Рдентификатор коллекции. - space_id (str): Рдентификатор пространства. - env_id (str): Рдентификатор окружения. + space_id (str | None): Рдентификатор пространства. DEPRECATED + env_id (str | None): Рдентификатор окружения. DEPRECATED Returns: Empty: Пустой ответ РїСЂРё успешном восстановлении. """ + if any((space_id, env_id)): + self.__warn_about_space_and_env_id( + method_name=inspect.currentframe().f_code.co_name, + ) + message = await self.items_wrapper.archive( item_id=item_id, collection_id=collection_id, - space_id=space_id, - env_id=env_id, + space_id=space_id or self.space_id, + env_id=env_id or self.env_id, ) return message async def find_archived( self, collection_id: str, - space_id: str, - env_id: str, + space_id: str | None = None, + env_id: str | None = None, filters: list[str] | None = None, sort_by: list[str] | None = None, fields: list[str] | None = None, @@ -1477,8 +1545,8 @@ class PerxisDataProvider: Arguments: collection_id (str): Рдентификатор коллекции. - space_id (str): Рдентификатор пространства. - env_id (str): Рдентификатор окружения. + space_id (str | None): Рдентификатор пространства. DEPRECATED + env_id (str | None): Рдентификатор окружения. DEPRECATED filters (list[str] | None): Фильтры для РїРѕРёСЃРєР° архивированных записей. sort_by (list[str] | None): Поля для сортировки результатов. fields (list[str] | None): Поля, которые необходимо вернуть. @@ -1489,10 +1557,15 @@ class PerxisDataProvider: Returns: items_pb2.FindArchivedResponse: Ответ СЃ найденными архивированными записями. """ + if any((space_id, env_id)): + self.__warn_about_space_and_env_id( + method_name=inspect.currentframe().f_code.co_name, + ) + message = await self.items_wrapper.find_archived( collection_id=collection_id, - space_id=space_id, - env_id=env_id, + space_id=space_id or self.space_id, + env_id=env_id or self.env_id, filters=filters, sort_by=sort_by, fields=fields, diff --git a/setup.py b/setup.py index 2fb87abce6dcdc999169ff3de916c98a1157bc9c..0895d21efb5693545b1ce9843af43e45c02c962a 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ def load_requirements(): setup( name='perxis', - version='1.10.0', + version='1.10.1', description='Perxis python client', long_description=long_description, long_description_content_type='text/markdown',