From 5435c3134934f03f3742aa31724e31e4ed8d7ed5 Mon Sep 17 00:00:00 2001 From: Suren Khorenyan Date: Wed, 24 Feb 2021 23:15:34 +0300 Subject: [PATCH 1/5] Rename README-pypa.md to README-PyPI.md --- README-pypa.md => README-PyPI.md | 0 setup.py | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename README-pypa.md => README-PyPI.md (100%) diff --git a/README-pypa.md b/README-PyPI.md similarity index 100% rename from README-pypa.md rename to README-PyPI.md diff --git a/setup.py b/setup.py index 7ad3e60..4f863c0 100644 --- a/setup.py +++ b/setup.py @@ -21,12 +21,12 @@ def get_description(): """ - Read full description from 'README-pypa.md' + Read full description from 'README-PyPI.md' :return: description :rtype: str """ - with open('README-pypa.md', 'r', encoding='utf-8') as f: + with open('README-PyPI.md', 'r', encoding='utf-8') as f: return f.read() From 869a483cb191b9f740d9e3e5756d7d9a3dd91fa6 Mon Sep 17 00:00:00 2001 From: Suren Khorenyan Date: Wed, 24 Feb 2021 23:28:59 +0300 Subject: [PATCH 2/5] Fix: handle unexpected kwargs to the AliceRequest itself --- aioalice/types/alice_request.py | 3 ++- tests/_dataset.py | 43 ++++++++++++++++++++++++++++++++- tests/test_types.py | 8 +++++- 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/aioalice/types/alice_request.py b/aioalice/types/alice_request.py index ad4de78..2c4e07d 100644 --- a/aioalice/types/alice_request.py +++ b/aioalice/types/alice_request.py @@ -2,9 +2,10 @@ from aiohttp.web import Request as WebRequest from . import AliceObject, Meta, Session, \ Card, Request, Response, AliceResponse -from ..utils import ensure_cls +from ..utils import ensure_cls, safe_kwargs +@safe_kwargs @attrs class AliceRequest(AliceObject): """AliceRequest is a request from Alice API""" diff --git a/tests/_dataset.py b/tests/_dataset.py index c898152..bfee080 100644 --- a/tests/_dataset.py +++ b/tests/_dataset.py @@ -162,7 +162,6 @@ CARD_TITLE = 'Заголовок' CARD_DESCR = 'Описание' - EXPECTED_CARD_BIG_IMAGE_JSON = { "type": "BigImage", "image_id": IMAGE_ID, @@ -405,3 +404,45 @@ }, 'version': '1.0', } + +REQUEST_W_EXTRA_KW_NEW = { + 'meta': { + 'client_id': 'MailRu-VC/1.0', + 'locale': 'ru_RU', + 'timezone': 'Europe/Moscow', + 'interfaces': { + 'screen': {}, + }, + '_city_ru': 'Москва', + }, + 'request': { + 'command': '', + 'original_utterance': 'Включи навык абракадабра', + 'type': 'SimpleUtterance', + 'nlu': { + 'tokens': ['включи', + 'навык', + 'абракадабра'], + 'entities': [], + } + }, + 'session': { + 'session_id': 'a6dcdc42-92b8-4076-9bae-fced146bb1b2', + 'user_id': 'f67490185d2080870a55490310dcd14007ddad00eb330dd4e3356a8bac77d13f', + 'skill_id': 'efe83b82-c63e-4035-afa4-80ebed0973c8', + 'new': True, + 'message_id': 0, + 'user': { + 'user_id': 'bfe750f47d3548c13d46fa35a461dcdb49c5ab340e6f62097a77b2e023c7a4af', + }, + 'application': { + 'application_id': 'f67490185d2080870a55490310dcd14007ddad00eb330dd4e3356a8bac77d13f', + 'application_type': 'mobile', + }, + }, + 'state': { + 'session': {}, + 'user': {}, + }, + 'version': '1.0', +} diff --git a/tests/test_types.py b/tests/test_types.py index 9c3bb53..6d71421 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -19,7 +19,8 @@ EXPECTED_ALICE_RESPONSE_ITEMS_LIST_WITH_BUTTON, \ DATA_FROM_STATION, REQUEST_WITH_NLU, ENTITY_TOKEN, \ ENTITY_VALUE, ENTITY, ENTITY_INTEGER, NLU, \ - PING_REQUEST_1, REQUEST_NEW_INTERFACES, REQUEST_WITH_EXTRA_KWARGS + PING_REQUEST_1, REQUEST_NEW_INTERFACES, REQUEST_WITH_EXTRA_KWARGS, \ + REQUEST_W_EXTRA_KW_NEW TestAliceRequest = partial(types.AliceRequest, None) # original_request: https://github.com/surik00/aioalice/pull/2/ @@ -351,3 +352,8 @@ def test_model_inits_ok_with_extra_kwargs(self): self._test_alice_request(alice_request, REQUEST_WITH_EXTRA_KWARGS) assert alice_request.session._raw_kwargs['deploy_tokens'] is REQUEST_WITH_EXTRA_KWARGS['session']['deploy_tokens'] assert alice_request.meta._raw_kwargs['_city_ru'] is REQUEST_WITH_EXTRA_KWARGS['meta']['_city_ru'] + + def test_model_inits_ok_with_extra_root_kwargs(self): + alice_request: types.AliceRequest = TestAliceRequest(**REQUEST_W_EXTRA_KW_NEW) + self._test_alice_request(alice_request, REQUEST_W_EXTRA_KW_NEW) + assert alice_request._raw_kwargs['state'] is REQUEST_W_EXTRA_KW_NEW['state'] From 7e37842b7df55cf2dc8209450b644e96a33650f3 Mon Sep 17 00:00:00 2001 From: Suren Khorenyan Date: Wed, 24 Feb 2021 23:37:53 +0300 Subject: [PATCH 3/5] huge imports refactoring: no more relative imports --- aioalice/__init__.py | 4 +- aioalice/dispatcher/__init__.py | 33 +++++++-------- aioalice/dispatcher/api.py | 4 +- aioalice/dispatcher/filters.py | 2 +- aioalice/dispatcher/handler.py | 2 +- aioalice/dispatcher/webhook.py | 6 ++- aioalice/types/__init__.py | 42 +++++++++---------- aioalice/types/alice_request.py | 14 +++++-- aioalice/types/alice_response.py | 4 +- aioalice/types/button.py | 3 +- aioalice/types/card.py | 6 +-- aioalice/types/card_footer.py | 4 +- aioalice/types/card_header.py | 3 +- aioalice/types/entity.py | 6 +-- aioalice/types/entity_tokens.py | 3 +- aioalice/types/entity_value.py | 3 +- aioalice/types/image.py | 4 +- aioalice/types/interfaces.py | 3 +- aioalice/types/markup.py | 4 +- aioalice/types/media_button.py | 3 +- aioalice/types/meta.py | 4 +- .../types/natural_language_understanding.py | 4 +- aioalice/types/quota.py | 3 +- aioalice/types/request.py | 6 +-- aioalice/types/response.py | 4 +- aioalice/types/session.py | 3 +- aioalice/types/uploaded_image.py | 3 +- aioalice/utils/__init__.py | 10 ++--- aioalice/utils/safe_kwargs.py | 2 +- 29 files changed, 104 insertions(+), 88 deletions(-) diff --git a/aioalice/__init__.py b/aioalice/__init__.py index eb9f971..86a2875 100644 --- a/aioalice/__init__.py +++ b/aioalice/__init__.py @@ -1,7 +1,7 @@ import asyncio -from .dispatcher import Dispatcher -from .dispatcher.webhook import get_new_configured_app, configure_app +from aioalice.dispatcher import Dispatcher +from aioalice.dispatcher.webhook import get_new_configured_app, configure_app try: import uvloop diff --git a/aioalice/dispatcher/__init__.py b/aioalice/dispatcher/__init__.py index 80ac582..96f9b9f 100644 --- a/aioalice/dispatcher/__init__.py +++ b/aioalice/dispatcher/__init__.py @@ -1,21 +1,18 @@ import aiohttp import asyncio -# import logging -from . import api -from .handler import Handler, SkipHandler -from .storage import DisabledStorage, MemoryStorage, DEFAULT_STATE -from .filters import generate_default_filters, ExceptionsFilter -from ..utils import json, exceptions - -from ..types import UploadedImage, Quota -# log = logging.getLogger(__name__) +from aioalice.dispatcher import api +from aioalice.dispatcher.handler import Handler, SkipHandler +from aioalice.dispatcher.storage import DisabledStorage, MemoryStorage, DEFAULT_STATE +from aioalice.dispatcher.filters import generate_default_filters, ExceptionsFilter +from aioalice.utils import json, exceptions +from aioalice.types import UploadedImage, Quota class Dispatcher: def __init__(self, loop=None, storage=None, *, skill_id=None, oauth_token=None): - # TODO: inculde default handler for 'test' commands + # TODO: include default handler for 'test' commands # TODO: create default handler for exceptions handler self.loop = loop or asyncio.get_event_loop() self.storage = storage or DisabledStorage() @@ -165,7 +162,7 @@ def _check_auth(self, skill_id, oauth_token): return skill_id, oauth_token async def get_images(self, skill_id=None, oauth_token=None): - ''' + """ Get uploaded images :param skill_id: Provide if was not set at the Dispatcher init @@ -174,7 +171,7 @@ async def get_images(self, skill_id=None, oauth_token=None): :type oauth_token: :obj:`str` :return: list of UploadedImage instances - ''' + """ skill_id, oauth_token = self._check_auth(skill_id, oauth_token) result = await api.request( self.session, oauth_token, skill_id, @@ -185,7 +182,7 @@ async def get_images(self, skill_id=None, oauth_token=None): return [UploadedImage(**dct) for dct in result['images']] async def upload_image(self, image_url_or_bytes, skill_id=None, oauth_token=None): - ''' + """ Upload image by either url or bytes :param image_url_or_bytes: Image URL or bytes @@ -196,7 +193,7 @@ async def upload_image(self, image_url_or_bytes, skill_id=None, oauth_token=None :type oauth_token: :obj:`str` :return: UploadedImage - ''' + """ skill_id, oauth_token = self._check_auth(skill_id, oauth_token) json = None file = None @@ -213,14 +210,14 @@ async def upload_image(self, image_url_or_bytes, skill_id=None, oauth_token=None return UploadedImage(**result['image']) async def get_images_quota(self, oauth_token=None): - ''' + """ Get images storage quota :param oauth_token: Provide if was not set at the Dispatcher init :type oauth_token: :obj:`str` :return: Quota - ''' + """ oauth_token = oauth_token or self.oauth_token if oauth_token is None: raise exceptions.AuthRequired('Please provide oauth_token') @@ -234,7 +231,7 @@ async def get_images_quota(self, oauth_token=None): return Quota(**result['images']['quota']) async def delete_image(self, image_id, skill_id=None, oauth_token=None): - ''' + """ Delete image by id :param image_id: Image id to be deleted @@ -245,7 +242,7 @@ async def delete_image(self, image_id, skill_id=None, oauth_token=None): :type oauth_token: :obj:`str` :return: True if result is ok - ''' + """ skill_id, oauth_token = self._check_auth(skill_id, oauth_token) url = api.Methods.api_url(skill_id, api.Methods.IMAGES) + image_id result = await api.request( diff --git a/aioalice/dispatcher/api.py b/aioalice/dispatcher/api.py index 5dff84a..a701f9b 100644 --- a/aioalice/dispatcher/api.py +++ b/aioalice/dispatcher/api.py @@ -2,8 +2,8 @@ import logging from http import HTTPStatus -from ..utils import json, exceptions -from ..utils.helper import Helper, HelperMode, Item +from aioalice.utils import json, exceptions +from aioalice.utils.helper import Helper, HelperMode, Item BASE_URL = 'https://dialogs.yandex.net/api/v1/' API_URL = BASE_URL + 'skills/{skill_id}/{method}/' diff --git a/aioalice/dispatcher/filters.py b/aioalice/dispatcher/filters.py index fa17850..e745551 100644 --- a/aioalice/dispatcher/filters.py +++ b/aioalice/dispatcher/filters.py @@ -2,7 +2,7 @@ import inspect import logging -from ..utils.helper import Helper, HelperMode, Item +from aioalice.utils.helper import Helper, HelperMode, Item log = logging.getLogger(__name__) diff --git a/aioalice/dispatcher/handler.py b/aioalice/dispatcher/handler.py index 1b03b23..3028538 100644 --- a/aioalice/dispatcher/handler.py +++ b/aioalice/dispatcher/handler.py @@ -1,4 +1,4 @@ -from .filters import check_filters +from aioalice.dispatcher.filters import check_filters class SkipHandler(BaseException): diff --git a/aioalice/dispatcher/webhook.py b/aioalice/dispatcher/webhook.py index 5b8677b..019dd2a 100644 --- a/aioalice/dispatcher/webhook.py +++ b/aioalice/dispatcher/webhook.py @@ -1,9 +1,11 @@ import asyncio import logging import functools + from aiohttp import web -from ..utils import json, generate_json_payload -from ..types import AliceRequest, AliceResponse, Response + +from aioalice.utils import json, generate_json_payload +from aioalice.types import AliceRequest, AliceResponse, Response log = logging.getLogger(__name__) diff --git a/aioalice/types/__init__.py b/aioalice/types/__init__.py index 8123d44..e3aae13 100644 --- a/aioalice/types/__init__.py +++ b/aioalice/types/__init__.py @@ -1,24 +1,24 @@ -from .base import AliceObject -from .interfaces import Interfaces -from .meta import Meta -from .markup import Markup -from .entity_tokens import EntityTokens -from .entity_value import EntityValue -from .entity import Entity, EntityType -from .natural_language_understanding import NaturalLanguageUnderstanding -from .request import Request, RequestType -from .session import BaseSession, Session +from aioalice.types.base import AliceObject +from aioalice.types.interfaces import Interfaces +from aioalice.types.meta import Meta +from aioalice.types.markup import Markup +from aioalice.types.entity_tokens import EntityTokens +from aioalice.types.entity_value import EntityValue +from aioalice.types.entity import Entity, EntityType +from aioalice.types.natural_language_understanding import NaturalLanguageUnderstanding +from aioalice.types.request import Request, RequestType +from aioalice.types.session import BaseSession, Session -from .quota import Quota -from .uploaded_image import UploadedImage -from .media_button import MediaButton -from .image import Image -from .card_header import CardHeader -from .card_footer import CardFooter -from .card import Card, CardType +from aioalice.types.quota import Quota +from aioalice.types.uploaded_image import UploadedImage +from aioalice.types.media_button import MediaButton +from aioalice.types.image import Image +from aioalice.types.card_header import CardHeader +from aioalice.types.card_footer import CardFooter +from aioalice.types.card import Card, CardType -from .button import Button -from .response import Response +from aioalice.types.button import Button +from aioalice.types.response import Response -from .alice_response import AliceResponse -from .alice_request import AliceRequest +from aioalice.types.alice_response import AliceResponse +from aioalice.types.alice_request import AliceRequest diff --git a/aioalice/types/alice_request.py b/aioalice/types/alice_request.py index 2c4e07d..455d8c7 100644 --- a/aioalice/types/alice_request.py +++ b/aioalice/types/alice_request.py @@ -1,8 +1,16 @@ from attr import attrs, attrib from aiohttp.web import Request as WebRequest -from . import AliceObject, Meta, Session, \ - Card, Request, Response, AliceResponse -from ..utils import ensure_cls, safe_kwargs + +from aioalice.types import ( + AliceObject, + Meta, + Session, + Card, + Request, + Response, + AliceResponse, +) +from aioalice.utils import ensure_cls, safe_kwargs @safe_kwargs diff --git a/aioalice/types/alice_response.py b/aioalice/types/alice_response.py index e8bb1a4..dddaf8a 100644 --- a/aioalice/types/alice_response.py +++ b/aioalice/types/alice_response.py @@ -1,7 +1,7 @@ from attr import attrs, attrib -from . import AliceObject, BaseSession, Response -from ..utils import ensure_cls +from aioalice.types import AliceObject, BaseSession, Response +from aioalice.utils import ensure_cls @attrs diff --git a/aioalice/types/button.py b/aioalice/types/button.py index dd56b01..4c89604 100644 --- a/aioalice/types/button.py +++ b/aioalice/types/button.py @@ -1,5 +1,6 @@ from attr import attrs, attrib -from . import AliceObject + +from aioalice.types import AliceObject @attrs diff --git a/aioalice/types/card.py b/aioalice/types/card.py index 854a0aa..acf25c9 100644 --- a/aioalice/types/card.py +++ b/aioalice/types/card.py @@ -1,8 +1,8 @@ from attr import attrs, attrib -from . import AliceObject, MediaButton, Image, CardHeader, CardFooter -from ..utils import ensure_cls -from ..utils.helper import Helper, HelperMode, Item +from aioalice.types import AliceObject, MediaButton, Image, CardHeader, CardFooter +from aioalice.utils import ensure_cls +from aioalice.utils.helper import Helper, HelperMode, Item @attrs diff --git a/aioalice/types/card_footer.py b/aioalice/types/card_footer.py index bd65ddb..03f98c0 100644 --- a/aioalice/types/card_footer.py +++ b/aioalice/types/card_footer.py @@ -1,7 +1,7 @@ from attr import attrs, attrib -from . import AliceObject, MediaButton -from ..utils import ensure_cls +from aioalice.types import AliceObject, MediaButton +from aioalice.utils import ensure_cls @attrs diff --git a/aioalice/types/card_header.py b/aioalice/types/card_header.py index 4c927d2..33e28c1 100644 --- a/aioalice/types/card_header.py +++ b/aioalice/types/card_header.py @@ -1,5 +1,6 @@ from attr import attrs, attrib -from . import AliceObject + +from aioalice.types import AliceObject @attrs diff --git a/aioalice/types/entity.py b/aioalice/types/entity.py index f589dc8..eece355 100644 --- a/aioalice/types/entity.py +++ b/aioalice/types/entity.py @@ -1,9 +1,9 @@ import logging from attr import attrs, attrib -from . import AliceObject, EntityTokens, EntityValue -from ..utils import ensure_cls -from ..utils.helper import Helper, HelperMode, Item +from aioalice.types import AliceObject, EntityTokens, EntityValue +from aioalice.utils import ensure_cls +from aioalice.utils.helper import Helper, HelperMode, Item log = logging.getLogger(__name__) diff --git a/aioalice/types/entity_tokens.py b/aioalice/types/entity_tokens.py index edf9184..cf1df68 100644 --- a/aioalice/types/entity_tokens.py +++ b/aioalice/types/entity_tokens.py @@ -1,5 +1,6 @@ from attr import attrs, attrib -from . import AliceObject + +from aioalice.types import AliceObject @attrs diff --git a/aioalice/types/entity_value.py b/aioalice/types/entity_value.py index 1509ef5..65aeb08 100644 --- a/aioalice/types/entity_value.py +++ b/aioalice/types/entity_value.py @@ -1,5 +1,6 @@ from attr import attrs, attrib -from . import AliceObject + +from aioalice.types import AliceObject @attrs diff --git a/aioalice/types/image.py b/aioalice/types/image.py index c0e5b7f..3026428 100644 --- a/aioalice/types/image.py +++ b/aioalice/types/image.py @@ -1,7 +1,7 @@ from attr import attrs, attrib -from . import AliceObject, MediaButton -from ..utils import ensure_cls +from aioalice.types import AliceObject, MediaButton +from aioalice.utils import ensure_cls @attrs diff --git a/aioalice/types/interfaces.py b/aioalice/types/interfaces.py index 3dcda64..b2250da 100644 --- a/aioalice/types/interfaces.py +++ b/aioalice/types/interfaces.py @@ -1,5 +1,6 @@ from attr import attrs, attrib -from . import AliceObject + +from aioalice.types import AliceObject @attrs diff --git a/aioalice/types/markup.py b/aioalice/types/markup.py index 3deb0ca..5009956 100644 --- a/aioalice/types/markup.py +++ b/aioalice/types/markup.py @@ -1,7 +1,7 @@ from attr import attrs, attrib -from . import AliceObject -from ..utils import safe_kwargs +from aioalice.types import AliceObject +from aioalice.utils import safe_kwargs @safe_kwargs diff --git a/aioalice/types/media_button.py b/aioalice/types/media_button.py index 412162b..e2d5209 100644 --- a/aioalice/types/media_button.py +++ b/aioalice/types/media_button.py @@ -1,5 +1,6 @@ from attr import attrs, attrib -from . import AliceObject + +from aioalice.types import AliceObject @attrs diff --git a/aioalice/types/meta.py b/aioalice/types/meta.py index a32dfff..a9e39bd 100644 --- a/aioalice/types/meta.py +++ b/aioalice/types/meta.py @@ -1,7 +1,7 @@ from attr import attrs, attrib -from . import AliceObject, Interfaces -from ..utils import ensure_cls +from aioalice.types import AliceObject, Interfaces +from aioalice.utils import ensure_cls @attrs diff --git a/aioalice/types/natural_language_understanding.py b/aioalice/types/natural_language_understanding.py index e917628..b219778 100644 --- a/aioalice/types/natural_language_understanding.py +++ b/aioalice/types/natural_language_understanding.py @@ -4,8 +4,8 @@ from attr import attrs, attrib -from . import AliceObject, Entity -from ..utils import ensure_cls +from aioalice.types import AliceObject, Entity +from aioalice.utils import ensure_cls @attrs diff --git a/aioalice/types/quota.py b/aioalice/types/quota.py index adbc0db..4f31def 100644 --- a/aioalice/types/quota.py +++ b/aioalice/types/quota.py @@ -1,5 +1,6 @@ from attr import attrs, attrib -from . import AliceObject + +from aioalice.types import AliceObject @attrs diff --git a/aioalice/types/request.py b/aioalice/types/request.py index 02d461c..6982e33 100644 --- a/aioalice/types/request.py +++ b/aioalice/types/request.py @@ -1,8 +1,8 @@ from attr import attrs, attrib -from . import AliceObject, Markup, NaturalLanguageUnderstanding -from ..utils import ensure_cls -from ..utils.helper import Helper, HelperMode, Item +from aioalice.types import AliceObject, Markup, NaturalLanguageUnderstanding +from aioalice.utils import ensure_cls +from aioalice.utils.helper import Helper, HelperMode, Item @attrs diff --git a/aioalice/types/response.py b/aioalice/types/response.py index f91849a..d51ccbc 100644 --- a/aioalice/types/response.py +++ b/aioalice/types/response.py @@ -1,7 +1,7 @@ from attr import attrs, attrib -from . import AliceObject, Card, Button -from ..utils import ensure_cls +from aioalice.types import AliceObject, Card, Button +from aioalice.utils import ensure_cls @attrs diff --git a/aioalice/types/session.py b/aioalice/types/session.py index 7462a7b..3bb9030 100644 --- a/aioalice/types/session.py +++ b/aioalice/types/session.py @@ -1,5 +1,6 @@ from attr import attrs, attrib -from . import AliceObject + +from aioalice.types import AliceObject @attrs diff --git a/aioalice/types/uploaded_image.py b/aioalice/types/uploaded_image.py index 0bbac28..f402369 100644 --- a/aioalice/types/uploaded_image.py +++ b/aioalice/types/uploaded_image.py @@ -1,5 +1,6 @@ from attr import attrs, attrib -from . import AliceObject + +from aioalice.types import AliceObject @attrs diff --git a/aioalice/utils/__init__.py b/aioalice/utils/__init__.py index aff4943..fa1b307 100644 --- a/aioalice/utils/__init__.py +++ b/aioalice/utils/__init__.py @@ -1,11 +1,11 @@ -from . import exceptions -from .json import json -from .payload import generate_json_payload -from .safe_kwargs import safe_kwargs +from aioalice.utils import exceptions +from aioalice.utils.json import json +from aioalice.utils.payload import generate_json_payload +from aioalice.utils.safe_kwargs import safe_kwargs def ensure_cls(klass): - from ..types.base import AliceObject + from aioalice.types.base import AliceObject safe_cls = safe_kwargs(klass) if issubclass(klass, AliceObject) else klass def converter(val): diff --git a/aioalice/utils/safe_kwargs.py b/aioalice/utils/safe_kwargs.py index b491f22..2ebe671 100644 --- a/aioalice/utils/safe_kwargs.py +++ b/aioalice/utils/safe_kwargs.py @@ -7,7 +7,7 @@ def safe_kwargs(func_or_class): - from ..types.base import AliceObject + from aioalice.types.base import AliceObject spec = getfullargspec(func_or_class) all_args = spec.args From d2d73d20e3363977434761321c44bddab2f497e3 Mon Sep 17 00:00:00 2001 From: Suren Khorenyan Date: Wed, 24 Feb 2021 23:41:45 +0300 Subject: [PATCH 4/5] add another test example --- tests/_dataset.py | 96 ++++++++++++++++++++++++++++++++++++++++++--- tests/test_types.py | 6 ++- 2 files changed, 96 insertions(+), 6 deletions(-) diff --git a/tests/_dataset.py b/tests/_dataset.py index bfee080..acca05a 100644 --- a/tests/_dataset.py +++ b/tests/_dataset.py @@ -1,6 +1,5 @@ from copy import deepcopy - META = { "locale": "ru-RU", "timezone": "Europe/Moscow", @@ -170,7 +169,6 @@ "button": deepcopy(MEDIA_BUTTON), } - EXPECTED_CARD_ITEMS_LIST_JSON = { "type": "ItemsList", "header": {"text": CARD_HEADER_TEXT}, @@ -178,7 +176,6 @@ "footer": deepcopy(FOOTER), } - EXPECTED_ALICE_RESPONSE_BIG_IMAGE_WITH_BUTTON = { "response": { "text": RESPONSE_TEXT, @@ -201,7 +198,6 @@ "version": "1.0" } - DATA_FROM_STATION = { 'meta': { 'client_id': 'ru.yandex.quasar.services/1.0 (Yandex Station; android 6.0.1)', @@ -374,7 +370,6 @@ 'version': '1.0' } - REQUEST_WITH_EXTRA_KWARGS = { 'meta': { 'client_id': 'JS/1.0', @@ -446,3 +441,94 @@ }, 'version': '1.0', } + +YANDEX_ALICE_REQUEST_EXAMPLE = { + "meta": { + "locale": "ru-RU", + "timezone": "Europe/Moscow", + "client_id": "ru.yandex.searchplugin/5.80 (Samsung Galaxy; Android 4.4)", + "interfaces": { + "screen": {}, + "account_linking": {} + } + }, + "request": { + "command": "закажи пиццу на улицу льва толстого 16 на завтра", + "original_utterance": "закажи пиццу на улицу льва толстого, 16 на завтра", + "type": "SimpleUtterance", + "markup": { + "dangerous_context": True + }, + "payload": {}, + "nlu": { + "tokens": [ + "закажи", + "пиццу", + "на", + "льва", + "толстого", + "16", + "на", + "завтра" + ], + "entities": [ + { + "tokens": { + "start": 2, + "end": 6 + }, + "type": "YANDEX.GEO", + "value": { + "house_number": "16", + "street": "льва толстого" + } + }, + { + "tokens": { + "start": 3, + "end": 5 + }, + "type": "YANDEX.FIO", + "value": { + "first_name": "лев", + "last_name": "толстой" + } + }, + { + "tokens": { + "start": 5, + "end": 6 + }, + "type": "YANDEX.NUMBER", + "value": 16 + }, + { + "tokens": { + "start": 6, + "end": 8 + }, + "type": "YANDEX.DATETIME", + "value": { + "day": 1, + "day_is_relative": True + } + } + ] + } + }, + "session": { + "message_id": 0, + "session_id": "2eac4854-fce721f3-b845abba-20d60", + "skill_id": "3ad36498-f5rd-4079-a14b-788652932056", + "user_id": "47C73714B580ED2469056E71081159529FFC676A4E5B059D629A819E857DC2F8", + "user": { + "user_id": "6C91DA5198D1758C6A9F63A7C5CDDF09359F683B13A18A151FBF4C8B092BB0C2", + "access_token": "AgAAAAAB4vpbAAApoR1oaCd5yR6eiXSHqOGT8dT" + }, + "application": { + "application_id": "47C73714B580ED2469056E71081159529FFC676A4E5B059D629A819E857DC2F8" + }, + "new": True + }, + "version": "1.0" +} \ No newline at end of file diff --git a/tests/test_types.py b/tests/test_types.py index 6d71421..6383cee 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -20,7 +20,7 @@ DATA_FROM_STATION, REQUEST_WITH_NLU, ENTITY_TOKEN, \ ENTITY_VALUE, ENTITY, ENTITY_INTEGER, NLU, \ PING_REQUEST_1, REQUEST_NEW_INTERFACES, REQUEST_WITH_EXTRA_KWARGS, \ - REQUEST_W_EXTRA_KW_NEW + REQUEST_W_EXTRA_KW_NEW, YANDEX_ALICE_REQUEST_EXAMPLE TestAliceRequest = partial(types.AliceRequest, None) # original_request: https://github.com/surik00/aioalice/pull/2/ @@ -357,3 +357,7 @@ def test_model_inits_ok_with_extra_root_kwargs(self): alice_request: types.AliceRequest = TestAliceRequest(**REQUEST_W_EXTRA_KW_NEW) self._test_alice_request(alice_request, REQUEST_W_EXTRA_KW_NEW) assert alice_request._raw_kwargs['state'] is REQUEST_W_EXTRA_KW_NEW['state'] + + def test_request_demo_example(self): + alice_request = TestAliceRequest(**YANDEX_ALICE_REQUEST_EXAMPLE) + self._test_alice_request(alice_request, YANDEX_ALICE_REQUEST_EXAMPLE) From 86ab1d3250c98de5b02381cab89efa43ce6c3c22 Mon Sep 17 00:00:00 2001 From: Suren Khorenyan Date: Wed, 24 Feb 2021 23:43:32 +0300 Subject: [PATCH 5/5] Upgrade version to 1.4.0 --- aioalice/__init__.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/aioalice/__init__.py b/aioalice/__init__.py index 86a2875..7c281c0 100644 --- a/aioalice/__init__.py +++ b/aioalice/__init__.py @@ -11,4 +11,4 @@ asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) -__version__ = '1.3.0' +__version__ = '1.4.0' diff --git a/setup.py b/setup.py index 4f863c0..e7d0c28 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ if sys.version_info < MINIMAL_PY_VERSION: raise RuntimeError('aioAlice works only with Python {}+'.format('.'.join(map(str, MINIMAL_PY_VERSION)))) -__version__ = '1.3.0' +__version__ = '1.4.0' def get_description():