From e50757fc62a18037adf5c4703ed5b325674b0b18 Mon Sep 17 00:00:00 2001 From: Maxim Podosochnyy <podosochnyy@perx.ru> Date: Wed, 16 Apr 2025 17:28:36 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=92=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20f?= =?UTF-8?q?etch=5Fall=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0=20PerxisDataP?= =?UTF-8?q?rovider=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D1=8B=20fields,=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81=20=D0=B8=D0=B4=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B8=D1=84=D0=B8=D0=BA=D0=B0=D1=82=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=B8=20=D0=BF=D1=80=D0=BE=D1=81=D1=82=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D1=81=D1=82=D0=B2=D0=B0=20=D0=B8=20=D0=BE=D0=BA=D1=80=D1=83?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B2=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=D0=B0=D1=85=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0?= =?UTF-8?q?=20PerxisDataProvider?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- perxis/provider.py | 193 +++++++++++++++++++++++++++++++-------------- 1 file changed, 133 insertions(+), 60 deletions(-) diff --git a/perxis/provider.py b/perxis/provider.py index 89ef792..f0e8743 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, -- GitLab From 73d47237ad55f190165b494ad613dc316f7f52c0 Mon Sep 17 00:00:00 2001 From: Maxim Podosochnyy <podosochnyy@perx.ru> Date: Wed, 16 Apr 2025 17:31:27 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=20=D1=80=D0=B0?= =?UTF-8?q?=D1=81=D1=88=D0=B8=D1=80=D0=B5=D0=BD=D0=B8=D1=8F=20'=D0=9C?= =?UTF-8?q?=D0=B0=D1=80=D0=BA=D0=B5=D1=82=D0=B8=D0=BD=D0=B3=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 2fb87ab..0895d21 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', -- GitLab