digital-assistant-context


Namedigital-assistant-context JSON
Version 0.0.4 PyPI version JSON
download
home_page
SummaryManaging context as a set of variables for executing a digital assistant script
upload_time2023-11-26 15:09:11
maintainer
docs_urlNone
authorAleksandr Belov
requires_python
license
keywords digital assistant
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Контекст

В ходе взаимодействия цифрового помощника с пользователем
исполнение [сценария](https://github.com/asbelon/digital-assistant-script) в каждом моменте находится на 
определенном акте. Нахождение исполнения сценария на определенном акте называется состоянием исполнения сценария. 
Состояние исполнения сценария хранит исполнитель сценария для каждого отдельного пользователя. Состояние 
определяется текущим актом и контекстом. Под контекстом понимается совокупность значений переменных сценария.

## Использование библиотеки

Назначение библиотеки переводить структуру переменных из нотации сценария цифрового помощника в нотацию языка python 
для манипуляции контекстом при исполнении сценария. 

### Работа с контекстом

#### Инициализация контекста

Инициализация контекста, например, из файла. Используется для восстановления состояния исполнения сценария. 

```python
import json
from digitalassistantcontext.context import Context

with open('./context.json', encoding='utf-8') as f:
    context = Context(json.load(f))
```

#### Изменение контекста

С помощью метода set объекта класса Context. Используется, например, при изменении контекста сценария.

```python
from digitalassistantcontext.context import Context

vars_list = [{'name': 'Услуги[0][Имя]', 'value': 'Консультация'},
            {'name': 'Услуги[0][Стоимость]', 'value': '500 р'}]
context = Context()
for v in vars_list:
    context.set(v.get("name"), v.get("value"))
```

#### Наследование контекста

Область видимости переменных ограничена последовательностью и ее дочерними последовательностями первого уровня. При 
создании объекта класса Context в параметре parent_ctx можно передать контекст родительской последовательности

```python
import json

from digitalassistantcontext.context import Context

try:
    with open('./parent_context.json', encoding='utf-8') as f:
        parent_context = Context(json.load(f))
except FileNotFoundError as e:
    print(e)

try:
    with open('./context.json', encoding='utf-8') as f:
        context = Context(json.load(f), parent_ctx=parent_context)
except FileNotFoundError as e:
    print(e)

v = context.get('Услуги[1]')
print(v)
```

#### Сохранение состояния

Текущее состояние исполнения сценария в виде списка переменных в формате сценария можно преобразовать функцией 
parse_var_to_list и сохранить

```python
import json
from pprint import pprint

from digitalassistantcontext.context import parse_var_to_list, Context, DICT_VAR_LIST_TYPE

try:
    with open('./context.json', encoding='utf-8') as f:
        context = Context(json.load(f))
except FileNotFoundError as e:
    print(e)

try:
    vars_list = parse_var_to_list(context.variables, list_type=DICT_VAR_LIST_TYPE)
    with open('./variable.json', 'w', encoding='utf-8') as outfile:
        json.dump(vars_list, outfile, ensure_ascii=False, indent=4)

    context_reload = Context()
    pprint(vars_list)
    for v in vars_list:
        context_reload.set(v, vars_list[v])
    with open('./context_reload.json', 'w', encoding='utf-8') as file:
        json.dump(context_reload.variables, file, ensure_ascii=False, indent=4)
except NameError as e:
    print(e)
```

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "digital-assistant-context",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "digital assistant",
    "author": "Aleksandr Belov",
    "author_email": "a.belov@asbelon.ru",
    "download_url": "https://files.pythonhosted.org/packages/53/ae/d8642b2421ebbb17b4fcaf5da01631b0be0bb3453a24a3fc94813390d751/digital-assistant-context-0.0.4.tar.gz",
    "platform": null,
    "description": "# \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\r\n\r\n\u0412 \u0445\u043e\u0434\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a\u0430 \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c\r\n\u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 [\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f](https://github.com/asbelon/digital-assistant-script) \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \r\n\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0430\u043a\u0442\u0435. \u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0430\u043a\u0442\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f. \r\n\u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u0445\u0440\u0430\u043d\u0438\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0421\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \r\n\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0430\u043a\u0442\u043e\u043c \u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c. \u041f\u043e\u0434 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f.\r\n\r\n## \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\r\n\r\n\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u0437 \u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a\u0430 \u0432 \u043d\u043e\u0442\u0430\u0446\u0438\u044e \u044f\u0437\u044b\u043a\u0430 python \r\n\u0434\u043b\u044f \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f. \r\n\r\n### \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043e\u043c\r\n\r\n#### \u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\r\n\r\n\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437 \u0444\u0430\u0439\u043b\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f. \r\n\r\n```python\r\nimport json\r\nfrom digitalassistantcontext.context import Context\r\n\r\nwith open('./context.json', encoding='utf-8') as f:\r\n    context = Context(json.load(f))\r\n```\r\n\r\n#### \u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\r\n\r\n\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 set \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 Context. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f.\r\n\r\n```python\r\nfrom digitalassistantcontext.context import Context\r\n\r\nvars_list = [{'name': '\u0423\u0441\u043b\u0443\u0433\u0438[0][\u0418\u043c\u044f]', 'value': '\u041a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u0446\u0438\u044f'},\r\n            {'name': '\u0423\u0441\u043b\u0443\u0433\u0438[0][\u0421\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c]', 'value': '500 \u0440'}]\r\ncontext = Context()\r\nfor v in vars_list:\r\n    context.set(v.get(\"name\"), v.get(\"value\"))\r\n```\r\n\r\n#### \u041d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430\r\n\r\n\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0435\u0435 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u043c\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u041f\u0440\u0438 \r\n\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 Context \u0432 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0435 parent_ctx \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438\r\n\r\n```python\r\nimport json\r\n\r\nfrom digitalassistantcontext.context import Context\r\n\r\ntry:\r\n    with open('./parent_context.json', encoding='utf-8') as f:\r\n        parent_context = Context(json.load(f))\r\nexcept FileNotFoundError as e:\r\n    print(e)\r\n\r\ntry:\r\n    with open('./context.json', encoding='utf-8') as f:\r\n        context = Context(json.load(f), parent_ctx=parent_context)\r\nexcept FileNotFoundError as e:\r\n    print(e)\r\n\r\nv = context.get('\u0423\u0441\u043b\u0443\u0433\u0438[1]')\r\nprint(v)\r\n```\r\n\r\n#### \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f\r\n\r\n\u0422\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 \r\nparse_var_to_list \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c\r\n\r\n```python\r\nimport json\r\nfrom pprint import pprint\r\n\r\nfrom digitalassistantcontext.context import parse_var_to_list, Context, DICT_VAR_LIST_TYPE\r\n\r\ntry:\r\n    with open('./context.json', encoding='utf-8') as f:\r\n        context = Context(json.load(f))\r\nexcept FileNotFoundError as e:\r\n    print(e)\r\n\r\ntry:\r\n    vars_list = parse_var_to_list(context.variables, list_type=DICT_VAR_LIST_TYPE)\r\n    with open('./variable.json', 'w', encoding='utf-8') as outfile:\r\n        json.dump(vars_list, outfile, ensure_ascii=False, indent=4)\r\n\r\n    context_reload = Context()\r\n    pprint(vars_list)\r\n    for v in vars_list:\r\n        context_reload.set(v, vars_list[v])\r\n    with open('./context_reload.json', 'w', encoding='utf-8') as file:\r\n        json.dump(context_reload.variables, file, ensure_ascii=False, indent=4)\r\nexcept NameError as e:\r\n    print(e)\r\n```\r\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Managing context as a set of variables for executing a digital assistant script",
    "version": "0.0.4",
    "project_urls": null,
    "split_keywords": [
        "digital",
        "assistant"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3de5c478c105955330e9316ca21605e2fb965867ab4ba8f13e9aa81998d505c6",
                "md5": "d6055179aa6be45af261d0cc4ca7861e",
                "sha256": "5284b6743fbe0b537d383d3fa8dd9681c594bbe9aaa02297be6ff4c47a30794f"
            },
            "downloads": -1,
            "filename": "digital_assistant_context-0.0.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "d6055179aa6be45af261d0cc4ca7861e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 5158,
            "upload_time": "2023-11-26T15:09:10",
            "upload_time_iso_8601": "2023-11-26T15:09:10.415829Z",
            "url": "https://files.pythonhosted.org/packages/3d/e5/c478c105955330e9316ca21605e2fb965867ab4ba8f13e9aa81998d505c6/digital_assistant_context-0.0.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "53aed8642b2421ebbb17b4fcaf5da01631b0be0bb3453a24a3fc94813390d751",
                "md5": "c4c4af4825c09a4cc48c8c777d38c962",
                "sha256": "b07a7940578022e5b8301e5fd22ad8ae642dcfcfb869a30e7885304b3a0ed62f"
            },
            "downloads": -1,
            "filename": "digital-assistant-context-0.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "c4c4af4825c09a4cc48c8c777d38c962",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 4586,
            "upload_time": "2023-11-26T15:09:11",
            "upload_time_iso_8601": "2023-11-26T15:09:11.700981Z",
            "url": "https://files.pythonhosted.org/packages/53/ae/d8642b2421ebbb17b4fcaf5da01631b0be0bb3453a24a3fc94813390d751/digital-assistant-context-0.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-11-26 15:09:11",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "digital-assistant-context"
}
        
Elapsed time: 0.14797s