%global _empty_manifest_terminate_build 0 Name: python-dff Version: 0.4.1 Release: 1 Summary: The Dialog Flow Framework (DFF) allows you to write conversational services. License: Apache Software License URL: https://github.com/deeppavlov/dialog_flow_framework Source0: https://mirrors.nju.edu.cn/pypi/web/packages/67/fa/cea1867b0eee11054d44eaa2dd733061f92af82699c1934e04d8eaa3d731/dff-0.4.1.tar.gz BuildArch: noarch Requires: python3-pydantic Requires: python3-nest-asyncio Requires: python3-typing-extensions Requires: python3-pydantic Requires: python3-nest-asyncio Requires: python3-typing-extensions Requires: python3-bump2version Requires: python3-build Requires: python3-twine Requires: python3-pytelegrambotapi Requires: python3-motor Requires: python3-pydata-sphinx-theme Requires: python3-sphinx-favicon Requires: python3-cryptography Requires: python3-sqlalchemy[asyncio] Requires: python3-sqlalchemy[asyncio] Requires: python3-telethon Requires: python3-sphinxcontrib-katex Requires: python3-pytest Requires: python3-pytest-asyncio Requires: python3-mypy Requires: python3-pytest-cov Requires: python3-sphinxcontrib-httpdomain Requires: python3-uvicorn Requires: python3-ydb Requires: python3-idna Requires: python3-anyio Requires: python3-requests Requires: python3-websockets Requires: python3-build Requires: python3-typing-extensions Requires: python3-nest-asyncio Requires: python3-jupytext Requires: python3-h11 Requires: python3-aiofiles Requires: python3-nbsphinx Requires: python3-flake8 Requires: python3-pydantic Requires: python3-aiosqlite Requires: python3-black Requires: python3-sphinxcontrib-apidoc Requires: python3-starlette Requires: python3-jupyter Requires: python3-sphinx-gallery Requires: python3-sphinx-autodoc-typehints Requires: python3-six Requires: python3-flask[async] Requires: python3-sphinx Requires: python3-psutil Requires: python3-aioredis Requires: python3-sphinx-copybutton Requires: python3-asyncpg Requires: python3-isort Requires: python3-asyncmy Requires: python3-click Requires: python3-twine Requires: python3-fastapi Requires: python3-sniffio Requires: python3-bump2version Requires: python3-sphinxcontrib-apidoc Requires: python3-sphinx-copybutton Requires: python3-requests Requires: python3-sphinxcontrib-httpdomain Requires: python3-pydata-sphinx-theme Requires: python3-jupyter Requires: python3-sphinx-favicon Requires: python3-jupytext Requires: python3-sphinxcontrib-katex Requires: python3-nbsphinx Requires: python3-sphinx-gallery Requires: python3-sphinx-autodoc-typehints Requires: python3-sphinx Requires: python3-pytelegrambotapi Requires: python3-asyncpg Requires: python3-motor Requires: python3-asyncmy Requires: python3-typing-extensions Requires: python3-nest-asyncio Requires: python3-sqlalchemy[asyncio] Requires: python3-sqlalchemy[asyncio] Requires: python3-cryptography Requires: python3-aiofiles Requires: python3-six Requires: python3-pydantic Requires: python3-aiosqlite Requires: python3-aioredis Requires: python3-ydb Requires: python3-aiofiles Requires: python3-motor Requires: python3-cryptography Requires: python3-sqlalchemy[asyncio] Requires: python3-asyncmy Requires: python3-aiofiles Requires: python3-asyncpg Requires: python3-sqlalchemy[asyncio] Requires: python3-aioredis Requires: python3-aiosqlite Requires: python3-sqlalchemy[asyncio] Requires: python3-sqlalchemy[asyncio] Requires: python3-pytelegrambotapi Requires: python3-pytelegrambotapi Requires: python3-motor Requires: python3-sqlalchemy[asyncio] Requires: python3-sqlalchemy[asyncio] Requires: python3-cryptography Requires: python3-telethon Requires: python3-pytest Requires: python3-pytest-asyncio Requires: python3-pytest-cov Requires: python3-ydb Requires: python3-uvicorn Requires: python3-idna Requires: python3-anyio Requires: python3-requests Requires: python3-websockets Requires: python3-typing-extensions Requires: python3-nest-asyncio Requires: python3-h11 Requires: python3-aiofiles Requires: python3-flake8 Requires: python3-pydantic Requires: python3-aiosqlite Requires: python3-black Requires: python3-starlette Requires: python3-six Requires: python3-flask[async] Requires: python3-psutil Requires: python3-aioredis Requires: python3-asyncpg Requires: python3-isort Requires: python3-asyncmy Requires: python3-click Requires: python3-fastapi Requires: python3-sniffio Requires: python3-telethon Requires: python3-pytest Requires: python3-pytest-asyncio Requires: python3-pytest-cov Requires: python3-uvicorn Requires: python3-idna Requires: python3-anyio Requires: python3-requests Requires: python3-websockets Requires: python3-h11 Requires: python3-flake8 Requires: python3-black Requires: python3-starlette Requires: python3-flask[async] Requires: python3-psutil Requires: python3-isort Requires: python3-click Requires: python3-fastapi Requires: python3-sniffio Requires: python3-pytelegrambotapi Requires: python3-motor Requires: python3-sqlalchemy[asyncio] Requires: python3-sqlalchemy[asyncio] Requires: python3-cryptography Requires: python3-telethon Requires: python3-pytest Requires: python3-pytest-asyncio Requires: python3-pytest-cov Requires: python3-ydb Requires: python3-uvicorn Requires: python3-idna Requires: python3-anyio Requires: python3-requests Requires: python3-websockets Requires: python3-typing-extensions Requires: python3-nest-asyncio Requires: python3-h11 Requires: python3-aiofiles Requires: python3-flake8 Requires: python3-pydantic Requires: python3-aiosqlite Requires: python3-black Requires: python3-starlette Requires: python3-six Requires: python3-flask[async] Requires: python3-psutil Requires: python3-aioredis Requires: python3-asyncpg Requires: python3-isort Requires: python3-asyncmy Requires: python3-click Requires: python3-fastapi Requires: python3-sniffio Requires: python3-ydb Requires: python3-six %description # Dialog Flow Framework The Dialog Flow Framework (DFF) allows you to write conversational services. The service is written by defining a special dialog graph that describes the behavior of the dialog service. The dialog graph contains the dialog script. DFF offers a specialized language (DSL) for quickly writing dialog graphs. You can use it in services such as writing skills for Amazon Alexa, etc., chatbots for social networks, website call centers, etc. [![Documentation Status](https://github.com/deeppavlov/dialog_flow_framework/workflows/build_and_publish_docs/badge.svg)](https://deeppavlov.github.io/dialog_flow_framework) [![Codestyle](https://github.com/deeppavlov/dialog_flow_framework/workflows/codestyle/badge.svg)](https://github.com/deeppavlov/dialog_flow_framework/actions/workflows/codestyle.yml) [![Tests](https://github.com/deeppavlov/dialog_flow_framework/workflows/test_coverage/badge.svg)](https://github.com/deeppavlov/dialog_flow_framework/actions/workflows/test_coverage.yml) [![License Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/deeppavlov/dialog_flow_framework/blob/master/LICENSE) ![Python 3.7, 3.8, 3.9](https://img.shields.io/badge/python-3.7%20%7C%203.8%20%7C%203.9-green.svg) [![PyPI](https://img.shields.io/pypi/v/dff)](https://pypi.org/project/dff/) [![Downloads](https://pepy.tech/badge/dff)](https://pepy.tech/project/dff) # Quick Start ## Installation DFF can be installed via pip: ```bash pip install dff ``` The above command will set the minimum dependencies to start working with DFF. The installation process allows the user to choose from different packages based on their dependencies, which are: ```bash pip install dff[core] # minimal dependencies (by default) pip install dff[json] # dependencies for using JSON pip install dff[pickle] # dependencies for using Pickle pip install dff[redis] # dependencies for using Redis pip install dff[mongodb] # dependencies for using MongoDB pip install dff[mysql] # dependencies for using MySQL pip install dff[postgresql] # dependencies for using PostgreSQL pip install dff[sqlite] # dependencies for using SQLite pip install dff[ydb] # dependencies for using Yandex Database pip install dff[telegram] # dependencies for using Telegram pip install dff[full] # full dependencies including all options above pip install dff[tests] # dependencies for running tests pip install dff[test_full] # full dependencies for running all tests (all options above) pip install dff[tutorials] # dependencies for running tutorials (all options above) pip install dff[devel] # dependencies for development pip install dff[doc] # dependencies for documentation pip install dff[devel_full] # full dependencies for development (all options above) ``` For example, if you are going to use one of the database backends, you can specify the corresponding requirements yourself. Multiple dependencies can be installed at once, e.g. ```bash pip install dff[postgresql, mysql] ``` ## Basic example ```python from dff.script import GLOBAL, TRANSITIONS, RESPONSE, Context, Message from dff.pipeline import Pipeline import dff.script.conditions.std_conditions as cnd from typing import Tuple # create a dialog script script = { GLOBAL: { TRANSITIONS: { ("flow", "node_hi"): cnd.exact_match(Message(text="Hi")), ("flow", "node_ok"): cnd.true() } }, "flow": { "node_hi": {RESPONSE: Message(text="Hi!!!")}, "node_ok": {RESPONSE: Message(text="Okey")}, }, } # init pipeline pipeline = Pipeline.from_script(script, start_label=("flow", "node_hi")) # handler requests def turn_handler(in_request: Message, pipeline: Pipeline) -> Tuple[Message, Context]: # Pass the next request of user into pipeline and it returns updated context with actor response ctx = pipeline(in_request, 0) # Get last actor response from the context out_response = ctx.last_response # The next condition branching needs for testing return out_response, ctx while True: in_request = input("type your answer: ") out_response, ctx = turn_handler(Message(text=in_request), pipeline) print(out_response.text) ``` When you run this code, you get similar output: ``` type your answer: hi Okey type your answer: Hi Hi!!! type your answer: ok Okey type your answer: ok Okey ``` To get more advanced examples, take a look at [tutorials](https://github.com/deeppavlov/dialog_flow_framework/tree/dev/tutorials) on GitHub. # Context Storages ## Description Context Storages allow you to save and retrieve user dialogue states (in the form of a `Context` object) using various database backends. The following backends are currently supported: * [JSON](https://www.json.org/json-en.html) * [pickle](https://docs.python.org/3/library/pickle.html) * [shelve](https://docs.python.org/3/library/shelve.html) * [SQLite](https://www.sqlite.org/index.html) * [PostgreSQL](https://www.postgresql.org/) * [MySQL](https://www.mysql.com/) * [MongoDB](https://www.mongodb.com/) * [Redis](https://redis.io/) * [Yandex DataBase](https://ydb.tech/) Aside from this, we offer some interfaces for saving data to your local file system. These are not meant to be used in production, but can be helpful for prototyping your application. ## Basic example ```python from dff.script import Context from dff.pipeline import Pipeline from dff.context_storages import SQLContextStorage from .script import some_df_script db = SQLContextStorage("postgresql+asyncpg://user:password@host:port/dbname") pipeline = Pipeline.from_script(some_df_script, start_label=("root", "start"), fallback_label=("root", "fallback")) def handle_request(request): user_id = request.args["user_id"] new_context = pipeline(request, user_id) return new_context.last_response ``` To get more advanced examples, take a look at [tutorials](https://github.com/deeppavlov/dialog_flow_framework/tree/dev/tutorials/context_storages) on GitHub. # Contributing to the Dialog Flow Framework Please refer to [CONTRIBUTING.md](https://github.com/deeppavlov/dialog_flow_framework/blob/dev/CONTRIBUTING.md). %package -n python3-dff Summary: The Dialog Flow Framework (DFF) allows you to write conversational services. Provides: python-dff BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-dff # Dialog Flow Framework The Dialog Flow Framework (DFF) allows you to write conversational services. The service is written by defining a special dialog graph that describes the behavior of the dialog service. The dialog graph contains the dialog script. DFF offers a specialized language (DSL) for quickly writing dialog graphs. You can use it in services such as writing skills for Amazon Alexa, etc., chatbots for social networks, website call centers, etc. [![Documentation Status](https://github.com/deeppavlov/dialog_flow_framework/workflows/build_and_publish_docs/badge.svg)](https://deeppavlov.github.io/dialog_flow_framework) [![Codestyle](https://github.com/deeppavlov/dialog_flow_framework/workflows/codestyle/badge.svg)](https://github.com/deeppavlov/dialog_flow_framework/actions/workflows/codestyle.yml) [![Tests](https://github.com/deeppavlov/dialog_flow_framework/workflows/test_coverage/badge.svg)](https://github.com/deeppavlov/dialog_flow_framework/actions/workflows/test_coverage.yml) [![License Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/deeppavlov/dialog_flow_framework/blob/master/LICENSE) ![Python 3.7, 3.8, 3.9](https://img.shields.io/badge/python-3.7%20%7C%203.8%20%7C%203.9-green.svg) [![PyPI](https://img.shields.io/pypi/v/dff)](https://pypi.org/project/dff/) [![Downloads](https://pepy.tech/badge/dff)](https://pepy.tech/project/dff) # Quick Start ## Installation DFF can be installed via pip: ```bash pip install dff ``` The above command will set the minimum dependencies to start working with DFF. The installation process allows the user to choose from different packages based on their dependencies, which are: ```bash pip install dff[core] # minimal dependencies (by default) pip install dff[json] # dependencies for using JSON pip install dff[pickle] # dependencies for using Pickle pip install dff[redis] # dependencies for using Redis pip install dff[mongodb] # dependencies for using MongoDB pip install dff[mysql] # dependencies for using MySQL pip install dff[postgresql] # dependencies for using PostgreSQL pip install dff[sqlite] # dependencies for using SQLite pip install dff[ydb] # dependencies for using Yandex Database pip install dff[telegram] # dependencies for using Telegram pip install dff[full] # full dependencies including all options above pip install dff[tests] # dependencies for running tests pip install dff[test_full] # full dependencies for running all tests (all options above) pip install dff[tutorials] # dependencies for running tutorials (all options above) pip install dff[devel] # dependencies for development pip install dff[doc] # dependencies for documentation pip install dff[devel_full] # full dependencies for development (all options above) ``` For example, if you are going to use one of the database backends, you can specify the corresponding requirements yourself. Multiple dependencies can be installed at once, e.g. ```bash pip install dff[postgresql, mysql] ``` ## Basic example ```python from dff.script import GLOBAL, TRANSITIONS, RESPONSE, Context, Message from dff.pipeline import Pipeline import dff.script.conditions.std_conditions as cnd from typing import Tuple # create a dialog script script = { GLOBAL: { TRANSITIONS: { ("flow", "node_hi"): cnd.exact_match(Message(text="Hi")), ("flow", "node_ok"): cnd.true() } }, "flow": { "node_hi": {RESPONSE: Message(text="Hi!!!")}, "node_ok": {RESPONSE: Message(text="Okey")}, }, } # init pipeline pipeline = Pipeline.from_script(script, start_label=("flow", "node_hi")) # handler requests def turn_handler(in_request: Message, pipeline: Pipeline) -> Tuple[Message, Context]: # Pass the next request of user into pipeline and it returns updated context with actor response ctx = pipeline(in_request, 0) # Get last actor response from the context out_response = ctx.last_response # The next condition branching needs for testing return out_response, ctx while True: in_request = input("type your answer: ") out_response, ctx = turn_handler(Message(text=in_request), pipeline) print(out_response.text) ``` When you run this code, you get similar output: ``` type your answer: hi Okey type your answer: Hi Hi!!! type your answer: ok Okey type your answer: ok Okey ``` To get more advanced examples, take a look at [tutorials](https://github.com/deeppavlov/dialog_flow_framework/tree/dev/tutorials) on GitHub. # Context Storages ## Description Context Storages allow you to save and retrieve user dialogue states (in the form of a `Context` object) using various database backends. The following backends are currently supported: * [JSON](https://www.json.org/json-en.html) * [pickle](https://docs.python.org/3/library/pickle.html) * [shelve](https://docs.python.org/3/library/shelve.html) * [SQLite](https://www.sqlite.org/index.html) * [PostgreSQL](https://www.postgresql.org/) * [MySQL](https://www.mysql.com/) * [MongoDB](https://www.mongodb.com/) * [Redis](https://redis.io/) * [Yandex DataBase](https://ydb.tech/) Aside from this, we offer some interfaces for saving data to your local file system. These are not meant to be used in production, but can be helpful for prototyping your application. ## Basic example ```python from dff.script import Context from dff.pipeline import Pipeline from dff.context_storages import SQLContextStorage from .script import some_df_script db = SQLContextStorage("postgresql+asyncpg://user:password@host:port/dbname") pipeline = Pipeline.from_script(some_df_script, start_label=("root", "start"), fallback_label=("root", "fallback")) def handle_request(request): user_id = request.args["user_id"] new_context = pipeline(request, user_id) return new_context.last_response ``` To get more advanced examples, take a look at [tutorials](https://github.com/deeppavlov/dialog_flow_framework/tree/dev/tutorials/context_storages) on GitHub. # Contributing to the Dialog Flow Framework Please refer to [CONTRIBUTING.md](https://github.com/deeppavlov/dialog_flow_framework/blob/dev/CONTRIBUTING.md). %package help Summary: Development documents and examples for dff Provides: python3-dff-doc %description help # Dialog Flow Framework The Dialog Flow Framework (DFF) allows you to write conversational services. The service is written by defining a special dialog graph that describes the behavior of the dialog service. The dialog graph contains the dialog script. DFF offers a specialized language (DSL) for quickly writing dialog graphs. You can use it in services such as writing skills for Amazon Alexa, etc., chatbots for social networks, website call centers, etc. [![Documentation Status](https://github.com/deeppavlov/dialog_flow_framework/workflows/build_and_publish_docs/badge.svg)](https://deeppavlov.github.io/dialog_flow_framework) [![Codestyle](https://github.com/deeppavlov/dialog_flow_framework/workflows/codestyle/badge.svg)](https://github.com/deeppavlov/dialog_flow_framework/actions/workflows/codestyle.yml) [![Tests](https://github.com/deeppavlov/dialog_flow_framework/workflows/test_coverage/badge.svg)](https://github.com/deeppavlov/dialog_flow_framework/actions/workflows/test_coverage.yml) [![License Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/deeppavlov/dialog_flow_framework/blob/master/LICENSE) ![Python 3.7, 3.8, 3.9](https://img.shields.io/badge/python-3.7%20%7C%203.8%20%7C%203.9-green.svg) [![PyPI](https://img.shields.io/pypi/v/dff)](https://pypi.org/project/dff/) [![Downloads](https://pepy.tech/badge/dff)](https://pepy.tech/project/dff) # Quick Start ## Installation DFF can be installed via pip: ```bash pip install dff ``` The above command will set the minimum dependencies to start working with DFF. The installation process allows the user to choose from different packages based on their dependencies, which are: ```bash pip install dff[core] # minimal dependencies (by default) pip install dff[json] # dependencies for using JSON pip install dff[pickle] # dependencies for using Pickle pip install dff[redis] # dependencies for using Redis pip install dff[mongodb] # dependencies for using MongoDB pip install dff[mysql] # dependencies for using MySQL pip install dff[postgresql] # dependencies for using PostgreSQL pip install dff[sqlite] # dependencies for using SQLite pip install dff[ydb] # dependencies for using Yandex Database pip install dff[telegram] # dependencies for using Telegram pip install dff[full] # full dependencies including all options above pip install dff[tests] # dependencies for running tests pip install dff[test_full] # full dependencies for running all tests (all options above) pip install dff[tutorials] # dependencies for running tutorials (all options above) pip install dff[devel] # dependencies for development pip install dff[doc] # dependencies for documentation pip install dff[devel_full] # full dependencies for development (all options above) ``` For example, if you are going to use one of the database backends, you can specify the corresponding requirements yourself. Multiple dependencies can be installed at once, e.g. ```bash pip install dff[postgresql, mysql] ``` ## Basic example ```python from dff.script import GLOBAL, TRANSITIONS, RESPONSE, Context, Message from dff.pipeline import Pipeline import dff.script.conditions.std_conditions as cnd from typing import Tuple # create a dialog script script = { GLOBAL: { TRANSITIONS: { ("flow", "node_hi"): cnd.exact_match(Message(text="Hi")), ("flow", "node_ok"): cnd.true() } }, "flow": { "node_hi": {RESPONSE: Message(text="Hi!!!")}, "node_ok": {RESPONSE: Message(text="Okey")}, }, } # init pipeline pipeline = Pipeline.from_script(script, start_label=("flow", "node_hi")) # handler requests def turn_handler(in_request: Message, pipeline: Pipeline) -> Tuple[Message, Context]: # Pass the next request of user into pipeline and it returns updated context with actor response ctx = pipeline(in_request, 0) # Get last actor response from the context out_response = ctx.last_response # The next condition branching needs for testing return out_response, ctx while True: in_request = input("type your answer: ") out_response, ctx = turn_handler(Message(text=in_request), pipeline) print(out_response.text) ``` When you run this code, you get similar output: ``` type your answer: hi Okey type your answer: Hi Hi!!! type your answer: ok Okey type your answer: ok Okey ``` To get more advanced examples, take a look at [tutorials](https://github.com/deeppavlov/dialog_flow_framework/tree/dev/tutorials) on GitHub. # Context Storages ## Description Context Storages allow you to save and retrieve user dialogue states (in the form of a `Context` object) using various database backends. The following backends are currently supported: * [JSON](https://www.json.org/json-en.html) * [pickle](https://docs.python.org/3/library/pickle.html) * [shelve](https://docs.python.org/3/library/shelve.html) * [SQLite](https://www.sqlite.org/index.html) * [PostgreSQL](https://www.postgresql.org/) * [MySQL](https://www.mysql.com/) * [MongoDB](https://www.mongodb.com/) * [Redis](https://redis.io/) * [Yandex DataBase](https://ydb.tech/) Aside from this, we offer some interfaces for saving data to your local file system. These are not meant to be used in production, but can be helpful for prototyping your application. ## Basic example ```python from dff.script import Context from dff.pipeline import Pipeline from dff.context_storages import SQLContextStorage from .script import some_df_script db = SQLContextStorage("postgresql+asyncpg://user:password@host:port/dbname") pipeline = Pipeline.from_script(some_df_script, start_label=("root", "start"), fallback_label=("root", "fallback")) def handle_request(request): user_id = request.args["user_id"] new_context = pipeline(request, user_id) return new_context.last_response ``` To get more advanced examples, take a look at [tutorials](https://github.com/deeppavlov/dialog_flow_framework/tree/dev/tutorials/context_storages) on GitHub. # Contributing to the Dialog Flow Framework Please refer to [CONTRIBUTING.md](https://github.com/deeppavlov/dialog_flow_framework/blob/dev/CONTRIBUTING.md). %prep %autosetup -n dff-0.4.1 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-dff -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Mon May 15 2023 Python_Bot - 0.4.1-1 - Package Spec generated