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.
Files changed (127) hide show
  1. {wiil_python-0.0.6 → wiil_python-0.0.9}/PKG-INFO +1 -1
  2. {wiil_python-0.0.6 → wiil_python-0.0.9}/pyproject.toml +136 -136
  3. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/request/paginated_result.py +1 -1
  4. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/__init__.py +2 -0
  5. wiil_python-0.0.9/wiil/resources/service_mgt/dynamic_agent_status.py +224 -0
  6. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/provisioning_configs.py +37 -133
  7. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/paginated_result.py +1 -1
  8. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil_python.egg-info/PKG-INFO +1 -1
  9. wiil_python-0.0.6/wiil/resources/service_mgt/dynamic_agent_status.py +0 -44
  10. {wiil_python-0.0.6 → wiil_python-0.0.9}/README.md +0 -0
  11. {wiil_python-0.0.6 → wiil_python-0.0.9}/setup.cfg +0 -0
  12. {wiil_python-0.0.6 → wiil_python-0.0.9}/setup.py +0 -0
  13. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/__init__.py +0 -0
  14. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/client/__init__.py +0 -0
  15. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/client/async_wiil_client.py +0 -0
  16. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/client/http_client.py +0 -0
  17. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/client/types.py +0 -0
  18. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/client/wiil_client.py +0 -0
  19. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/client/will_service.py +0 -0
  20. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/errors/__init__.py +0 -0
  21. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/errors/exceptions.py +0 -0
  22. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/__init__.py +0 -0
  23. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/account/__init__.py +0 -0
  24. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/account/organization.py +0 -0
  25. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/account/project.py +0 -0
  26. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/account/supported_business_verticals.py +0 -0
  27. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/assistant_setups/__init__.py +0 -0
  28. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/assistant_setups/assistant_setup_result.py +0 -0
  29. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/assistant_setups/base_assistant_setup.py +0 -0
  30. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/assistant_setups/phone_assistant_setup.py +0 -0
  31. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/assistant_setups/web_assistant_setup.py +0 -0
  32. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/base.py +0 -0
  33. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/__init__.py +0 -0
  34. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/appointment_additional_info.py +0 -0
  35. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/appointment_field_config.py +0 -0
  36. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/customer.py +0 -0
  37. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/menu_config.py +0 -0
  38. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/menu_order.py +0 -0
  39. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/order.py +0 -0
  40. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/product_config.py +0 -0
  41. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/product_order.py +0 -0
  42. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/property_config.py +0 -0
  43. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/property_inquiry.py +0 -0
  44. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/reservation.py +0 -0
  45. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/reservation_resource.py +0 -0
  46. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/service_appointment.py +0 -0
  47. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/service_config.py +0 -0
  48. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/business_mgt/service_person.py +0 -0
  49. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/conversation/__init__.py +0 -0
  50. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/conversation/conversation_config.py +0 -0
  51. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/conversation/conversation_message.py +0 -0
  52. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/conversation/translation_config.py +0 -0
  53. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/conversation/translation_conversation.py +0 -0
  54. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/request/__init__.py +0 -0
  55. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/request/paginated_query.py +0 -0
  56. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/__init__.py +0 -0
  57. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/agent_config.py +0 -0
  58. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/call_transfer_config.py +0 -0
  59. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/deployment_config.py +0 -0
  60. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/dynamic_setup/__init__.py +0 -0
  61. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/dynamic_setup/base_agent_setup.py +0 -0
  62. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/dynamic_setup/phone_agent_setup.py +0 -0
  63. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/dynamic_setup/web_agent_setup.py +0 -0
  64. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/instruction_config.py +0 -0
  65. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/interaction_channels.py +0 -0
  66. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/knowledge.py +0 -0
  67. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/phone_config.py +0 -0
  68. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/phone_number.py +0 -0
  69. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/provisioning_config.py +0 -0
  70. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/support_llm.py +0 -0
  71. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/service_mgt/voice_language.py +0 -0
  72. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/__init__.py +0 -0
  73. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/account_definitions.py +0 -0
  74. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/business_definitions.py +0 -0
  75. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/conversation_definitions.py +0 -0
  76. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/dynamic_fields/__init__.py +0 -0
  77. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/dynamic_fields/field_definition.py +0 -0
  78. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/dynamic_fields/field_types.py +0 -0
  79. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/knowledge_definitions.py +0 -0
  80. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/models/type_definitions/service_config_definitions.py +0 -0
  81. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/py.typed +0 -0
  82. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/__init__.py +0 -0
  83. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/account/__init__.py +0 -0
  84. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/account/organizations.py +0 -0
  85. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/account/projects.py +0 -0
  86. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/__init__.py +0 -0
  87. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/business_services.py +0 -0
  88. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/customers.py +0 -0
  89. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/menu_orders.py +0 -0
  90. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/menus.py +0 -0
  91. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/product_orders.py +0 -0
  92. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/products.py +0 -0
  93. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/property_config.py +0 -0
  94. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/property_inquiry.py +0 -0
  95. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/reservation_resources.py +0 -0
  96. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/reservations.py +0 -0
  97. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/business_mgt/service_appointments.py +0 -0
  98. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/agent_configs.py +0 -0
  99. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/conversation_configs.py +0 -0
  100. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/deployment_channels.py +0 -0
  101. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/deployment_configs.py +0 -0
  102. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/dynamic_phone_agent.py +0 -0
  103. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/dynamic_web_agent.py +0 -0
  104. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/instruction_configs.py +0 -0
  105. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/knowledge_sources.py +0 -0
  106. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/phone_configs.py +0 -0
  107. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/support_models.py +0 -0
  108. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/telephony_provider.py +0 -0
  109. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/resources/service_mgt/translation_sessions.py +0 -0
  110. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/services/__init__.py +0 -0
  111. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/services/ott/__init__.py +0 -0
  112. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/services/ott/models.py +0 -0
  113. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/services/ott/service.py +0 -0
  114. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/services/translation/__init__.py +0 -0
  115. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/services/translation/models.py +0 -0
  116. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/services/translation/service.py +0 -0
  117. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/__init__.py +0 -0
  118. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/account_types.py +0 -0
  119. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/business_types.py +0 -0
  120. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/conversation_types.py +0 -0
  121. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/knowledge_types.py +0 -0
  122. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/paginated_quest.py +0 -0
  123. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil/types/service_types.py +0 -0
  124. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil_python.egg-info/SOURCES.txt +0 -0
  125. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil_python.egg-info/dependency_links.txt +0 -0
  126. {wiil_python-0.0.6 → wiil_python-0.0.9}/wiil_python.egg-info/requires.txt +0 -0
  127. {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.6
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.6"
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 = "py38"
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 = "3.8"
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
- gt=0,
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']