diff options
Diffstat (limited to 'python-dff.spec')
-rw-r--r-- | python-dff.spec | 729 |
1 files changed, 729 insertions, 0 deletions
diff --git a/python-dff.spec b/python-dff.spec new file mode 100644 index 0000000..626b6cf --- /dev/null +++ b/python-dff.spec @@ -0,0 +1,729 @@ +%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. + +[](https://deeppavlov.github.io/dialog_flow_framework) +[](https://github.com/deeppavlov/dialog_flow_framework/actions/workflows/codestyle.yml) +[](https://github.com/deeppavlov/dialog_flow_framework/actions/workflows/test_coverage.yml) +[](https://github.com/deeppavlov/dialog_flow_framework/blob/master/LICENSE) + +[](https://pypi.org/project/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. + +[](https://deeppavlov.github.io/dialog_flow_framework) +[](https://github.com/deeppavlov/dialog_flow_framework/actions/workflows/codestyle.yml) +[](https://github.com/deeppavlov/dialog_flow_framework/actions/workflows/test_coverage.yml) +[](https://github.com/deeppavlov/dialog_flow_framework/blob/master/LICENSE) + +[](https://pypi.org/project/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. + +[](https://deeppavlov.github.io/dialog_flow_framework) +[](https://github.com/deeppavlov/dialog_flow_framework/actions/workflows/codestyle.yml) +[](https://github.com/deeppavlov/dialog_flow_framework/actions/workflows/test_coverage.yml) +[](https://github.com/deeppavlov/dialog_flow_framework/blob/master/LICENSE) + +[](https://pypi.org/project/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 <Python_Bot@openeuler.org> - 0.4.1-1 +- Package Spec generated |