wiil-python 0.0.6__tar.gz → 0.0.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {wiil_python-0.0.6 → wiil_python-0.0.9}/PKG-INFO +1 -1
- {wiil_python-0.0.6 → wiil_python-0.0.9}/pyproject.toml +136 -136
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/request/paginated_result.py +1 -1
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/__init__.py +2 -0
- wiil_python-0.0.9/wiil/resources/service_mgt/dynamic_agent_status.py +224 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/provisioning_configs.py +37 -133
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/paginated_result.py +1 -1
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil_python.egg-info/PKG-INFO +1 -1
- wiil_python-0.0.6/wiil/resources/service_mgt/dynamic_agent_status.py +0 -44
- {wiil_python-0.0.6 → wiil_python-0.0.9}/README.md +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/setup.cfg +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/setup.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/client/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/client/async_wiil_client.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/client/http_client.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/client/types.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/client/wiil_client.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/client/will_service.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/errors/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/errors/exceptions.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/account/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/account/organization.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/account/project.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/account/supported_business_verticals.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/assistant_setups/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/assistant_setups/assistant_setup_result.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/assistant_setups/base_assistant_setup.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/assistant_setups/phone_assistant_setup.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/assistant_setups/web_assistant_setup.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/base.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/appointment_additional_info.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/appointment_field_config.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/customer.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/menu_config.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/menu_order.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/order.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/product_config.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/product_order.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/property_config.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/property_inquiry.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/reservation.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/reservation_resource.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/service_appointment.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/service_config.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/service_person.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/conversation/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/conversation/conversation_config.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/conversation/conversation_message.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/conversation/translation_config.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/conversation/translation_conversation.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/request/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/request/paginated_query.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/agent_config.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/call_transfer_config.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/deployment_config.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/dynamic_setup/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/dynamic_setup/base_agent_setup.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/dynamic_setup/phone_agent_setup.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/dynamic_setup/web_agent_setup.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/instruction_config.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/interaction_channels.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/knowledge.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/phone_config.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/phone_number.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/provisioning_config.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/support_llm.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/voice_language.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/account_definitions.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/business_definitions.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/conversation_definitions.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/dynamic_fields/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/dynamic_fields/field_definition.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/dynamic_fields/field_types.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/knowledge_definitions.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/service_config_definitions.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/py.typed +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/account/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/account/organizations.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/account/projects.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/business_services.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/customers.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/menu_orders.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/menus.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/product_orders.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/products.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/property_config.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/property_inquiry.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/reservation_resources.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/reservations.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/service_appointments.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/agent_configs.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/conversation_configs.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/deployment_channels.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/deployment_configs.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/dynamic_phone_agent.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/dynamic_web_agent.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/instruction_configs.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/knowledge_sources.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/phone_configs.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/support_models.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/telephony_provider.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/translation_sessions.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/services/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/services/ott/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/services/ott/models.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/services/ott/service.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/services/translation/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/services/translation/models.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/services/translation/service.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/__init__.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/account_types.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/business_types.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/conversation_types.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/knowledge_types.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/paginated_quest.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/service_types.py +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil_python.egg-info/SOURCES.txt +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil_python.egg-info/dependency_links.txt +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil_python.egg-info/requires.txt +0 -0
- {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil_python.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wiil-python
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.9
|
|
4
4
|
Summary: Official Python SDK for WIIL Platform - AI-powered conversational services for intelligent customer interactions, voice processing, real-time translation, and business management
|
|
5
5
|
Author-email: WIIL <dev-support@wiil.io>
|
|
6
6
|
License: MIT
|
|
@@ -1,136 +1,136 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
requires = ["setuptools>=68.0", "wheel"]
|
|
3
|
-
build-backend = "setuptools.build_meta"
|
|
4
|
-
|
|
5
|
-
[project]
|
|
6
|
-
name = "wiil-python"
|
|
7
|
-
version = "0.0.
|
|
8
|
-
description = "Official Python SDK for WIIL Platform - AI-powered conversational services for intelligent customer interactions, voice processing, real-time translation, and business management"
|
|
9
|
-
readme = "README.md"
|
|
10
|
-
requires-python = ">=3.8"
|
|
11
|
-
license = {text = "MIT"}
|
|
12
|
-
authors = [
|
|
13
|
-
{name = "WIIL", email = "dev-support@wiil.io"}
|
|
14
|
-
]
|
|
15
|
-
keywords = [
|
|
16
|
-
"wiil",
|
|
17
|
-
"wiil-platform",
|
|
18
|
-
"wiil-sdk",
|
|
19
|
-
"ai",
|
|
20
|
-
"artificial-intelligence",
|
|
21
|
-
"conversational-ai",
|
|
22
|
-
"chatbot",
|
|
23
|
-
"voice-ai",
|
|
24
|
-
"speech-to-text",
|
|
25
|
-
"text-to-speech",
|
|
26
|
-
"stt",
|
|
27
|
-
"tts",
|
|
28
|
-
"translation",
|
|
29
|
-
"real-time-translation",
|
|
30
|
-
"voice-translation",
|
|
31
|
-
"business-automation",
|
|
32
|
-
"appointment-booking",
|
|
33
|
-
"reservation-system",
|
|
34
|
-
"order-management",
|
|
35
|
-
"customer-service",
|
|
36
|
-
"telephony",
|
|
37
|
-
"voice-calls",
|
|
38
|
-
"agent-deployment",
|
|
39
|
-
"python",
|
|
40
|
-
"sdk"
|
|
41
|
-
]
|
|
42
|
-
classifiers = [
|
|
43
|
-
"Development Status :: 3 - Alpha",
|
|
44
|
-
"Intended Audience :: Developers",
|
|
45
|
-
"License :: OSI Approved :: MIT License",
|
|
46
|
-
"Programming Language :: Python :: 3",
|
|
47
|
-
"Programming Language :: Python :: 3.8",
|
|
48
|
-
"Programming Language :: Python :: 3.9",
|
|
49
|
-
"Programming Language :: Python :: 3.10",
|
|
50
|
-
"Programming Language :: Python :: 3.11",
|
|
51
|
-
"Programming Language :: Python :: 3.12",
|
|
52
|
-
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
53
|
-
"Typing :: Typed",
|
|
54
|
-
]
|
|
55
|
-
dependencies = [
|
|
56
|
-
"requests>=2.31.0",
|
|
57
|
-
"pydantic>=2.0.0,<3.0.0",
|
|
58
|
-
"email-validator>=2.0.0",
|
|
59
|
-
"typing-extensions>=4.5.0; python_version < '3.11'",
|
|
60
|
-
]
|
|
61
|
-
|
|
62
|
-
[project.optional-dependencies]
|
|
63
|
-
dev = [
|
|
64
|
-
"pytest>=7.0.0",
|
|
65
|
-
"pytest-asyncio>=0.21.0",
|
|
66
|
-
"pytest-cov>=4.0.0",
|
|
67
|
-
"httpx>=0.28.0",
|
|
68
|
-
"responses>=0.25.0",
|
|
69
|
-
"black>=23.0.0",
|
|
70
|
-
"ruff>=0.1.0",
|
|
71
|
-
"mypy>=1.0.0",
|
|
72
|
-
"respx>=0.20.0",
|
|
73
|
-
]
|
|
74
|
-
|
|
75
|
-
[project.urls]
|
|
76
|
-
Homepage = "https://console.wiil.io"
|
|
77
|
-
Documentation = "https://docs.wiil.io"
|
|
78
|
-
Repository = "https://github.com/wiil-io/wiil-python"
|
|
79
|
-
Issues = "https://github.com/wiil-io/wiil-python/issues"
|
|
80
|
-
|
|
81
|
-
[tool.setuptools]
|
|
82
|
-
packages = { find = { include = ["wiil", "wiil.*"] } }
|
|
83
|
-
|
|
84
|
-
[tool.setuptools.package-data]
|
|
85
|
-
wiil = ["py.typed"]
|
|
86
|
-
|
|
87
|
-
[tool.black]
|
|
88
|
-
line-length = 100
|
|
89
|
-
target-version = ["py38", "py39", "py310", "py311", "py312"]
|
|
90
|
-
|
|
91
|
-
[tool.ruff]
|
|
92
|
-
line-length = 100
|
|
93
|
-
target-version = "
|
|
94
|
-
select = [
|
|
95
|
-
"E", # pycodestyle errors
|
|
96
|
-
"W", # pycodestyle warnings
|
|
97
|
-
"F", # pyflakes
|
|
98
|
-
"I", # isort
|
|
99
|
-
"B", # flake8-bugbear
|
|
100
|
-
"C4", # flake8-comprehensions
|
|
101
|
-
"UP", # pyupgrade
|
|
102
|
-
]
|
|
103
|
-
ignore = [
|
|
104
|
-
"E501", # line too long (handled by black)
|
|
105
|
-
"B008", # do not perform function calls in argument defaults
|
|
106
|
-
]
|
|
107
|
-
|
|
108
|
-
[tool.ruff.per-file-ignores]
|
|
109
|
-
"__init__.py" = ["F401"]
|
|
110
|
-
|
|
111
|
-
[tool.mypy]
|
|
112
|
-
python_version = "
|
|
113
|
-
strict = true
|
|
114
|
-
warn_return_any = true
|
|
115
|
-
warn_unused_configs = true
|
|
116
|
-
disallow_untyped_defs = true
|
|
117
|
-
disallow_any_unimported = false
|
|
118
|
-
no_implicit_optional = true
|
|
119
|
-
warn_redundant_casts = true
|
|
120
|
-
warn_unused_ignores = true
|
|
121
|
-
warn_no_return = true
|
|
122
|
-
check_untyped_defs = true
|
|
123
|
-
strict_equality = true
|
|
124
|
-
|
|
125
|
-
[tool.pytest.ini_options]
|
|
126
|
-
testpaths = ["tests"]
|
|
127
|
-
python_files = ["test_*.py"]
|
|
128
|
-
python_classes = ["Test*"]
|
|
129
|
-
python_functions = ["test_*"]
|
|
130
|
-
asyncio_mode = "auto"
|
|
131
|
-
addopts = [
|
|
132
|
-
"--strict-markers",
|
|
133
|
-
"--cov=wiil",
|
|
134
|
-
"--cov-report=term-missing",
|
|
135
|
-
"--cov-report=html",
|
|
136
|
-
]
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "wiil-python"
|
|
7
|
+
version = "0.0.9"
|
|
8
|
+
description = "Official Python SDK for WIIL Platform - AI-powered conversational services for intelligent customer interactions, voice processing, real-time translation, and business management"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.8"
|
|
11
|
+
license = {text = "MIT"}
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "WIIL", email = "dev-support@wiil.io"}
|
|
14
|
+
]
|
|
15
|
+
keywords = [
|
|
16
|
+
"wiil",
|
|
17
|
+
"wiil-platform",
|
|
18
|
+
"wiil-sdk",
|
|
19
|
+
"ai",
|
|
20
|
+
"artificial-intelligence",
|
|
21
|
+
"conversational-ai",
|
|
22
|
+
"chatbot",
|
|
23
|
+
"voice-ai",
|
|
24
|
+
"speech-to-text",
|
|
25
|
+
"text-to-speech",
|
|
26
|
+
"stt",
|
|
27
|
+
"tts",
|
|
28
|
+
"translation",
|
|
29
|
+
"real-time-translation",
|
|
30
|
+
"voice-translation",
|
|
31
|
+
"business-automation",
|
|
32
|
+
"appointment-booking",
|
|
33
|
+
"reservation-system",
|
|
34
|
+
"order-management",
|
|
35
|
+
"customer-service",
|
|
36
|
+
"telephony",
|
|
37
|
+
"voice-calls",
|
|
38
|
+
"agent-deployment",
|
|
39
|
+
"python",
|
|
40
|
+
"sdk"
|
|
41
|
+
]
|
|
42
|
+
classifiers = [
|
|
43
|
+
"Development Status :: 3 - Alpha",
|
|
44
|
+
"Intended Audience :: Developers",
|
|
45
|
+
"License :: OSI Approved :: MIT License",
|
|
46
|
+
"Programming Language :: Python :: 3",
|
|
47
|
+
"Programming Language :: Python :: 3.8",
|
|
48
|
+
"Programming Language :: Python :: 3.9",
|
|
49
|
+
"Programming Language :: Python :: 3.10",
|
|
50
|
+
"Programming Language :: Python :: 3.11",
|
|
51
|
+
"Programming Language :: Python :: 3.12",
|
|
52
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
53
|
+
"Typing :: Typed",
|
|
54
|
+
]
|
|
55
|
+
dependencies = [
|
|
56
|
+
"requests>=2.31.0",
|
|
57
|
+
"pydantic>=2.0.0,<3.0.0",
|
|
58
|
+
"email-validator>=2.0.0",
|
|
59
|
+
"typing-extensions>=4.5.0; python_version < '3.11'",
|
|
60
|
+
]
|
|
61
|
+
|
|
62
|
+
[project.optional-dependencies]
|
|
63
|
+
dev = [
|
|
64
|
+
"pytest>=7.0.0",
|
|
65
|
+
"pytest-asyncio>=0.21.0",
|
|
66
|
+
"pytest-cov>=4.0.0",
|
|
67
|
+
"httpx>=0.28.0",
|
|
68
|
+
"responses>=0.25.0",
|
|
69
|
+
"black>=23.0.0",
|
|
70
|
+
"ruff>=0.1.0",
|
|
71
|
+
"mypy>=1.0.0",
|
|
72
|
+
"respx>=0.20.0",
|
|
73
|
+
]
|
|
74
|
+
|
|
75
|
+
[project.urls]
|
|
76
|
+
Homepage = "https://console.wiil.io"
|
|
77
|
+
Documentation = "https://docs.wiil.io"
|
|
78
|
+
Repository = "https://github.com/wiil-io/wiil-python"
|
|
79
|
+
Issues = "https://github.com/wiil-io/wiil-python/issues"
|
|
80
|
+
|
|
81
|
+
[tool.setuptools]
|
|
82
|
+
packages = { find = { include = ["wiil", "wiil.*"] } }
|
|
83
|
+
|
|
84
|
+
[tool.setuptools.package-data]
|
|
85
|
+
wiil = ["py.typed"]
|
|
86
|
+
|
|
87
|
+
[tool.black]
|
|
88
|
+
line-length = 100
|
|
89
|
+
target-version = ["py38", "py39", "py310", "py311", "py312"]
|
|
90
|
+
|
|
91
|
+
[tool.ruff]
|
|
92
|
+
line-length = 100
|
|
93
|
+
target-version = "0.0.9"
|
|
94
|
+
select = [
|
|
95
|
+
"E", # pycodestyle errors
|
|
96
|
+
"W", # pycodestyle warnings
|
|
97
|
+
"F", # pyflakes
|
|
98
|
+
"I", # isort
|
|
99
|
+
"B", # flake8-bugbear
|
|
100
|
+
"C4", # flake8-comprehensions
|
|
101
|
+
"UP", # pyupgrade
|
|
102
|
+
]
|
|
103
|
+
ignore = [
|
|
104
|
+
"E501", # line too long (handled by black)
|
|
105
|
+
"B008", # do not perform function calls in argument defaults
|
|
106
|
+
]
|
|
107
|
+
|
|
108
|
+
[tool.ruff.per-file-ignores]
|
|
109
|
+
"__init__.py" = ["F401"]
|
|
110
|
+
|
|
111
|
+
[tool.mypy]
|
|
112
|
+
python_version = "0.0.9"
|
|
113
|
+
strict = true
|
|
114
|
+
warn_return_any = true
|
|
115
|
+
warn_unused_configs = true
|
|
116
|
+
disallow_untyped_defs = true
|
|
117
|
+
disallow_any_unimported = false
|
|
118
|
+
no_implicit_optional = true
|
|
119
|
+
warn_redundant_casts = true
|
|
120
|
+
warn_unused_ignores = true
|
|
121
|
+
warn_no_return = true
|
|
122
|
+
check_untyped_defs = true
|
|
123
|
+
strict_equality = true
|
|
124
|
+
|
|
125
|
+
[tool.pytest.ini_options]
|
|
126
|
+
testpaths = ["tests"]
|
|
127
|
+
python_files = ["test_*.py"]
|
|
128
|
+
python_classes = ["Test*"]
|
|
129
|
+
python_functions = ["test_*"]
|
|
130
|
+
asyncio_mode = "auto"
|
|
131
|
+
addopts = [
|
|
132
|
+
"--strict-markers",
|
|
133
|
+
"--cov=wiil",
|
|
134
|
+
"--cov-report=term-missing",
|
|
135
|
+
"--cov-report=html",
|
|
136
|
+
]
|
|
@@ -32,7 +32,7 @@ class PaginationMeta(BaseModel):
|
|
|
32
32
|
page: int = Field(..., gt=0, description="Current page number (1-based indexing)")
|
|
33
33
|
page_size: int = Field(
|
|
34
34
|
...,
|
|
35
|
-
|
|
35
|
+
ge=0,
|
|
36
36
|
le=1000,
|
|
37
37
|
description="Number of items per page - limited to 1000 for performance",
|
|
38
38
|
alias="pageSize"
|
|
@@ -21,6 +21,7 @@ from wiil.resources.service_mgt.support_models import SupportModelsResource
|
|
|
21
21
|
from wiil.resources.service_mgt.telephony_provider import TelephonyProviderResource
|
|
22
22
|
from wiil.resources.service_mgt.dynamic_agent_status import (
|
|
23
23
|
DynamicAgentStatusResource,
|
|
24
|
+
PollOptions,
|
|
24
25
|
PollTimeoutError,
|
|
25
26
|
)
|
|
26
27
|
from wiil.resources.service_mgt.dynamic_web_agent import (
|
|
@@ -45,6 +46,7 @@ __all__ = [
|
|
|
45
46
|
'SupportModelsResource',
|
|
46
47
|
'TelephonyProviderResource',
|
|
47
48
|
'DynamicAgentStatusResource',
|
|
49
|
+
'PollOptions',
|
|
48
50
|
'PollTimeoutError',
|
|
49
51
|
'DynamicWebAgentResource',
|
|
50
52
|
'WebAgentCreateOptions',
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"""Dynamic Agent Status resource for polling agent setup progress.
|
|
2
|
+
|
|
3
|
+
This module provides functionality for checking and polling the status of
|
|
4
|
+
dynamic agent setup operations. Supports both phone and web agent configurations.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import time
|
|
8
|
+
from dataclasses import dataclass
|
|
9
|
+
from typing import Callable, Optional, Union
|
|
10
|
+
|
|
11
|
+
from wiil.client.http_client import HttpClient
|
|
12
|
+
from wiil.models.service_mgt.dynamic_setup import (
|
|
13
|
+
DynamicAgentProcessingState,
|
|
14
|
+
DynamicAgentSetupResult,
|
|
15
|
+
)
|
|
16
|
+
from wiil.models.service_mgt.dynamic_setup.phone_agent_setup import (
|
|
17
|
+
DynamicPhoneAgentSetupResult,
|
|
18
|
+
)
|
|
19
|
+
from wiil.models.service_mgt.dynamic_setup.web_agent_setup import (
|
|
20
|
+
DynamicWebAgentSetupResult,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@dataclass
|
|
25
|
+
class PollOptions:
|
|
26
|
+
"""Options for configuring long-polling behavior.
|
|
27
|
+
|
|
28
|
+
Attributes:
|
|
29
|
+
interval: Polling interval in milliseconds. Defaults to 5000.
|
|
30
|
+
timeout: Maximum wait time in milliseconds before timing out. Defaults to 120000.
|
|
31
|
+
on_progress: Callback invoked on each poll with current state.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
interval: int = 5000
|
|
35
|
+
timeout: int = 120000
|
|
36
|
+
on_progress: Optional[Callable[[DynamicAgentProcessingState], None]] = None
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class PollTimeoutError(Exception):
|
|
40
|
+
"""Error thrown when polling times out before completion.
|
|
41
|
+
|
|
42
|
+
Attributes:
|
|
43
|
+
last_state: The last known processing state before timeout.
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
def __init__(self, message: str, last_state: DynamicAgentProcessingState):
|
|
47
|
+
super().__init__(message)
|
|
48
|
+
self.last_state = last_state
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class DynamicAgentStatusResource:
|
|
52
|
+
"""Resource class for polling dynamic agent setup status.
|
|
53
|
+
|
|
54
|
+
Provides methods for checking and polling the status of dynamic agent setup
|
|
55
|
+
operations. Supports both phone and web agent configurations. Use this resource
|
|
56
|
+
to track long-running setup operations and wait for completion.
|
|
57
|
+
|
|
58
|
+
Example:
|
|
59
|
+
```python
|
|
60
|
+
from wiil import WiilClient
|
|
61
|
+
from wiil.models.service_mgt import BusinessSupportServices
|
|
62
|
+
|
|
63
|
+
client = WiilClient(api_key='your-api-key')
|
|
64
|
+
|
|
65
|
+
# Create a dynamic agent (returns immediately)
|
|
66
|
+
result = client.dynamic_phone_agent.create(
|
|
67
|
+
DynamicPhoneAgentSetup(
|
|
68
|
+
assistant_name='Support Agent',
|
|
69
|
+
capabilities=[BusinessSupportServices.APPOINTMENT_MANAGEMENT],
|
|
70
|
+
)
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
# Poll until setup completes
|
|
74
|
+
def on_progress(state):
|
|
75
|
+
print(f'{state.progress_percentage}% - {state.message}')
|
|
76
|
+
|
|
77
|
+
final = client.dynamic_agent_status.poll(
|
|
78
|
+
result.id,
|
|
79
|
+
PollOptions(
|
|
80
|
+
interval=2000,
|
|
81
|
+
timeout=60000,
|
|
82
|
+
on_progress=on_progress,
|
|
83
|
+
)
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
if final.success:
|
|
87
|
+
print('Agent ready:', final.agent_configuration_id)
|
|
88
|
+
```
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
def __init__(self, http: HttpClient):
|
|
92
|
+
"""Creates a new DynamicAgentStatusResource instance.
|
|
93
|
+
|
|
94
|
+
Args:
|
|
95
|
+
http: HTTP client for API communication
|
|
96
|
+
"""
|
|
97
|
+
self._http = http
|
|
98
|
+
self._base_path = '/dynamic-setup'
|
|
99
|
+
|
|
100
|
+
def get(
|
|
101
|
+
self, id: str
|
|
102
|
+
) -> Union[DynamicAgentSetupResult, DynamicWebAgentSetupResult, DynamicPhoneAgentSetupResult]:
|
|
103
|
+
"""Retrieves the current status of a dynamic agent setup operation.
|
|
104
|
+
|
|
105
|
+
Args:
|
|
106
|
+
id: Dynamic agent setup ID
|
|
107
|
+
|
|
108
|
+
Returns:
|
|
109
|
+
The setup result (base, web, or phone agent type)
|
|
110
|
+
|
|
111
|
+
Raises:
|
|
112
|
+
WiilAPIError: When the setup ID is not found or API returns an error
|
|
113
|
+
WiilNetworkError: When network communication fails
|
|
114
|
+
|
|
115
|
+
Example:
|
|
116
|
+
```python
|
|
117
|
+
status = client.dynamic_agent_status.get('setup_123')
|
|
118
|
+
print('Status:', status.processing_state.status)
|
|
119
|
+
print('Progress:', status.processing_state.progress_percentage)
|
|
120
|
+
|
|
121
|
+
# Access web agent specific properties
|
|
122
|
+
if hasattr(status, 'integration_snippets') and status.integration_snippets:
|
|
123
|
+
print('Snippets:', status.integration_snippets)
|
|
124
|
+
|
|
125
|
+
# Access phone agent specific properties
|
|
126
|
+
if hasattr(status, 'phone_number') and status.phone_number:
|
|
127
|
+
print('Phone:', status.phone_number)
|
|
128
|
+
```
|
|
129
|
+
"""
|
|
130
|
+
return self._http.get(
|
|
131
|
+
f'{self._base_path}/{id}',
|
|
132
|
+
response_model=DynamicAgentSetupResult
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
def poll(
|
|
136
|
+
self,
|
|
137
|
+
id: str,
|
|
138
|
+
options: Optional[PollOptions] = None
|
|
139
|
+
) -> Union[DynamicAgentSetupResult, DynamicWebAgentSetupResult, DynamicPhoneAgentSetupResult]:
|
|
140
|
+
"""Polls the status of a dynamic agent setup until completion or failure.
|
|
141
|
+
|
|
142
|
+
Args:
|
|
143
|
+
id: Dynamic agent setup ID
|
|
144
|
+
options: Polling configuration options
|
|
145
|
+
|
|
146
|
+
Returns:
|
|
147
|
+
The final setup result (base, web, or phone agent type)
|
|
148
|
+
|
|
149
|
+
Raises:
|
|
150
|
+
PollTimeoutError: When polling times out before completion
|
|
151
|
+
WiilAPIError: When the setup ID is not found or API returns an error
|
|
152
|
+
WiilNetworkError: When network communication fails
|
|
153
|
+
|
|
154
|
+
Remarks:
|
|
155
|
+
This method will continuously poll the API until the processing state
|
|
156
|
+
reaches 'completed' or 'failed'. If the timeout is reached before
|
|
157
|
+
completion, a PollTimeoutError is thrown containing the last known state.
|
|
158
|
+
|
|
159
|
+
Example:
|
|
160
|
+
```python
|
|
161
|
+
from wiil.resources.service_mgt import PollOptions, PollTimeoutError
|
|
162
|
+
|
|
163
|
+
try:
|
|
164
|
+
def on_progress(state):
|
|
165
|
+
print(f'Progress: {state.progress_percentage}%')
|
|
166
|
+
|
|
167
|
+
result = client.dynamic_agent_status.poll(
|
|
168
|
+
'setup_123',
|
|
169
|
+
PollOptions(
|
|
170
|
+
interval=5000,
|
|
171
|
+
timeout=120000,
|
|
172
|
+
on_progress=on_progress,
|
|
173
|
+
)
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
if result.success:
|
|
177
|
+
print('Agent ID:', result.agent_configuration_id)
|
|
178
|
+
|
|
179
|
+
# Web agent: access integration snippets
|
|
180
|
+
if hasattr(result, 'integration_snippets') and result.integration_snippets:
|
|
181
|
+
print('Snippets:', result.integration_snippets)
|
|
182
|
+
|
|
183
|
+
# Phone agent: access phone number
|
|
184
|
+
if hasattr(result, 'phone_number') and result.phone_number:
|
|
185
|
+
print('Phone:', result.phone_number)
|
|
186
|
+
|
|
187
|
+
except PollTimeoutError as e:
|
|
188
|
+
print(f'Polling timed out at: {e.last_state.progress_percentage}%')
|
|
189
|
+
```
|
|
190
|
+
"""
|
|
191
|
+
opts = options or PollOptions()
|
|
192
|
+
interval = opts.interval
|
|
193
|
+
timeout = opts.timeout
|
|
194
|
+
on_progress = opts.on_progress
|
|
195
|
+
|
|
196
|
+
start_time = time.time() * 1000 # Convert to milliseconds
|
|
197
|
+
last_state: Optional[DynamicAgentProcessingState] = None
|
|
198
|
+
|
|
199
|
+
while True:
|
|
200
|
+
result = self.get(id)
|
|
201
|
+
last_state = result.processing_state
|
|
202
|
+
|
|
203
|
+
# Invoke progress callback if provided
|
|
204
|
+
if on_progress:
|
|
205
|
+
on_progress(result.processing_state)
|
|
206
|
+
|
|
207
|
+
# Check for terminal states
|
|
208
|
+
if result.processing_state.status in ('completed', 'failed'):
|
|
209
|
+
return result
|
|
210
|
+
|
|
211
|
+
# Check for timeout
|
|
212
|
+
elapsed = (time.time() * 1000) - start_time
|
|
213
|
+
if elapsed >= timeout:
|
|
214
|
+
raise PollTimeoutError(
|
|
215
|
+
f'Polling timed out after {timeout}ms. '
|
|
216
|
+
f'Last status: {last_state.status} at {last_state.progress_percentage}%',
|
|
217
|
+
last_state
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
# Wait before next poll
|
|
221
|
+
time.sleep(interval / 1000) # Convert to seconds
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
__all__ = ['DynamicAgentStatusResource', 'PollOptions', 'PollTimeoutError']
|