pygeai 0.1.51b3__py3-none-any.whl → 0.6.0b15__py3-none-any.whl

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.

Potentially problematic release.


This version of pygeai might be problematic. Click here for more details.

Files changed (648) hide show
  1. pygeai/__init__.py +9 -1
  2. pygeai/_docs/Makefile +20 -0
  3. pygeai/_docs/make.bat +35 -0
  4. pygeai/_docs/source/conf.py +117 -0
  5. pygeai/_docs/source/content/ai_lab/cli.rst +747 -0
  6. pygeai/_docs/source/content/ai_lab/models.rst +1734 -0
  7. pygeai/_docs/source/content/ai_lab/runner.rst +253 -0
  8. pygeai/_docs/source/content/ai_lab/spec.rst +431 -0
  9. pygeai/_docs/source/content/ai_lab/usage.rst +1011 -0
  10. pygeai/_docs/source/content/ai_lab.rst +102 -0
  11. pygeai/_docs/source/content/analytics.rst +598 -0
  12. pygeai/_docs/source/content/api_reference/admin.rst +161 -0
  13. pygeai/_docs/source/content/api_reference/assistant.rst +326 -0
  14. pygeai/_docs/source/content/api_reference/auth.rst +379 -0
  15. pygeai/_docs/source/content/api_reference/chat.rst +754 -0
  16. pygeai/_docs/source/content/api_reference/embeddings.rst +154 -0
  17. pygeai/_docs/source/content/api_reference/evaluation.rst +590 -0
  18. pygeai/_docs/source/content/api_reference/feedback.rst +237 -0
  19. pygeai/_docs/source/content/api_reference/files.rst +592 -0
  20. pygeai/_docs/source/content/api_reference/gam.rst +401 -0
  21. pygeai/_docs/source/content/api_reference/health.rst +58 -0
  22. pygeai/_docs/source/content/api_reference/project.rst +738 -0
  23. pygeai/_docs/source/content/api_reference/proxy.rst +318 -0
  24. pygeai/_docs/source/content/api_reference/rag.rst +710 -0
  25. pygeai/_docs/source/content/api_reference/rerank.rst +94 -0
  26. pygeai/_docs/source/content/api_reference/secrets.rst +495 -0
  27. pygeai/_docs/source/content/api_reference/usage_limits.rst +390 -0
  28. pygeai/_docs/source/content/api_reference.rst +58 -0
  29. pygeai/_docs/source/content/authentication.rst +295 -0
  30. pygeai/_docs/source/content/chat_gui.rst +121 -0
  31. pygeai/_docs/source/content/cli.rst +203 -0
  32. pygeai/_docs/source/content/debugger.rst +651 -0
  33. pygeai/_docs/source/content/intro.rst +67 -0
  34. pygeai/_docs/source/content/migration.rst +929 -0
  35. pygeai/_docs/source/content/modules.rst +7 -0
  36. pygeai/_docs/source/content/quickstart.rst +143 -0
  37. pygeai/_docs/source/content/samples.rst +394 -0
  38. pygeai/_docs/source/index.rst +75 -0
  39. pygeai/_docs/source/modules.rst +7 -0
  40. pygeai/_docs/source/pygeai.admin.rst +29 -0
  41. pygeai/_docs/source/pygeai.analytics.rst +53 -0
  42. pygeai/_docs/source/pygeai.assistant.data.rst +21 -0
  43. pygeai/_docs/source/pygeai.assistant.data_analyst.rst +29 -0
  44. pygeai/_docs/source/pygeai.assistant.rag.rst +53 -0
  45. pygeai/_docs/source/pygeai.assistant.rst +55 -0
  46. pygeai/_docs/source/pygeai.auth.rst +29 -0
  47. pygeai/_docs/source/pygeai.chat.rst +69 -0
  48. pygeai/_docs/source/pygeai.cli.commands.flows.rst +10 -0
  49. pygeai/_docs/source/pygeai.cli.commands.lab.rst +53 -0
  50. pygeai/_docs/source/pygeai.cli.commands.rst +222 -0
  51. pygeai/_docs/source/pygeai.cli.rst +62 -0
  52. pygeai/_docs/source/pygeai.cli.texts.rst +21 -0
  53. pygeai/_docs/source/pygeai.core.base.rst +53 -0
  54. pygeai/_docs/source/pygeai.core.common.rst +37 -0
  55. pygeai/_docs/source/pygeai.core.embeddings.rst +61 -0
  56. pygeai/_docs/source/pygeai.core.feedback.rst +37 -0
  57. pygeai/_docs/source/pygeai.core.files.rst +61 -0
  58. pygeai/_docs/source/pygeai.core.llm.rst +29 -0
  59. pygeai/_docs/source/pygeai.core.plugins.rst +37 -0
  60. pygeai/_docs/source/pygeai.core.rerank.rst +53 -0
  61. pygeai/_docs/source/pygeai.core.rst +63 -0
  62. pygeai/_docs/source/pygeai.core.secrets.rst +29 -0
  63. pygeai/_docs/source/pygeai.core.services.llm.rst +29 -0
  64. pygeai/_docs/source/pygeai.core.services.rst +37 -0
  65. pygeai/_docs/source/pygeai.core.utils.rst +37 -0
  66. pygeai/_docs/source/pygeai.dbg.rst +21 -0
  67. pygeai/_docs/source/pygeai.evaluation.dataset.rst +29 -0
  68. pygeai/_docs/source/pygeai.evaluation.plan.rst +29 -0
  69. pygeai/_docs/source/pygeai.evaluation.result.rst +29 -0
  70. pygeai/_docs/source/pygeai.evaluation.rst +31 -0
  71. pygeai/_docs/source/pygeai.flows.rst +29 -0
  72. pygeai/_docs/source/pygeai.gam.rst +29 -0
  73. pygeai/_docs/source/pygeai.health.rst +29 -0
  74. pygeai/_docs/source/pygeai.lab.agents.rst +37 -0
  75. pygeai/_docs/source/pygeai.lab.processes.rst +37 -0
  76. pygeai/_docs/source/pygeai.lab.rst +65 -0
  77. pygeai/_docs/source/pygeai.lab.spec.rst +29 -0
  78. pygeai/_docs/source/pygeai.lab.strategies.rst +37 -0
  79. pygeai/_docs/source/pygeai.lab.tools.rst +37 -0
  80. pygeai/_docs/source/pygeai.man.man1.rst +10 -0
  81. pygeai/_docs/source/pygeai.man.rst +18 -0
  82. pygeai/_docs/source/pygeai.migration.rst +29 -0
  83. pygeai/_docs/source/pygeai.organization.limits.rst +45 -0
  84. pygeai/_docs/source/pygeai.organization.rst +61 -0
  85. pygeai/_docs/source/pygeai.proxy.rst +53 -0
  86. pygeai/_docs/source/pygeai.rst +35 -0
  87. pygeai/_docs/source/pygeai.tests.admin.rst +21 -0
  88. pygeai/_docs/source/pygeai.tests.analytics.rst +45 -0
  89. pygeai/_docs/source/pygeai.tests.assistants.rag.rst +37 -0
  90. pygeai/_docs/source/pygeai.tests.assistants.rst +45 -0
  91. pygeai/_docs/source/pygeai.tests.auth.rst +29 -0
  92. pygeai/_docs/source/pygeai.tests.chat.rst +45 -0
  93. pygeai/_docs/source/pygeai.tests.cli.commands.lab.rst +37 -0
  94. pygeai/_docs/source/pygeai.tests.cli.commands.rst +165 -0
  95. pygeai/_docs/source/pygeai.tests.cli.docker.rst +10 -0
  96. pygeai/_docs/source/pygeai.tests.cli.rst +46 -0
  97. pygeai/_docs/source/pygeai.tests.core.base.data.rst +29 -0
  98. pygeai/_docs/source/pygeai.tests.core.base.rst +45 -0
  99. pygeai/_docs/source/pygeai.tests.core.common.data.rst +10 -0
  100. pygeai/_docs/source/pygeai.tests.core.common.rst +37 -0
  101. pygeai/_docs/source/pygeai.tests.core.embeddings.rst +37 -0
  102. pygeai/_docs/source/pygeai.tests.core.feedback.rst +21 -0
  103. pygeai/_docs/source/pygeai.tests.core.files.rst +53 -0
  104. pygeai/_docs/source/pygeai.tests.core.llm.rst +21 -0
  105. pygeai/_docs/source/pygeai.tests.core.plugins.rst +21 -0
  106. pygeai/_docs/source/pygeai.tests.core.rerank.rst +37 -0
  107. pygeai/_docs/source/pygeai.tests.core.rst +39 -0
  108. pygeai/_docs/source/pygeai.tests.core.secrets.rst +21 -0
  109. pygeai/_docs/source/pygeai.tests.core.services.rst +21 -0
  110. pygeai/_docs/source/pygeai.tests.core.utils.rst +21 -0
  111. pygeai/_docs/source/pygeai.tests.dbg.rst +21 -0
  112. pygeai/_docs/source/pygeai.tests.evaluation.dataset.rst +21 -0
  113. pygeai/_docs/source/pygeai.tests.evaluation.plan.rst +21 -0
  114. pygeai/_docs/source/pygeai.tests.evaluation.result.rst +21 -0
  115. pygeai/_docs/source/pygeai.tests.evaluation.rst +20 -0
  116. pygeai/_docs/source/pygeai.tests.gam.rst +21 -0
  117. pygeai/_docs/source/pygeai.tests.health.rst +21 -0
  118. pygeai/_docs/source/pygeai.tests.integration.assistants.rag.rst +21 -0
  119. pygeai/_docs/source/pygeai.tests.integration.assistants.rst +18 -0
  120. pygeai/_docs/source/pygeai.tests.integration.chat.rst +21 -0
  121. pygeai/_docs/source/pygeai.tests.integration.lab.agents.rst +69 -0
  122. pygeai/_docs/source/pygeai.tests.integration.lab.processes.rst +77 -0
  123. pygeai/_docs/source/pygeai.tests.integration.lab.reasoning_strategies.rst +37 -0
  124. pygeai/_docs/source/pygeai.tests.integration.lab.rst +21 -0
  125. pygeai/_docs/source/pygeai.tests.integration.lab.tools.rst +77 -0
  126. pygeai/_docs/source/pygeai.tests.integration.rst +20 -0
  127. pygeai/_docs/source/pygeai.tests.lab.agents.rst +29 -0
  128. pygeai/_docs/source/pygeai.tests.lab.processes.rst +29 -0
  129. pygeai/_docs/source/pygeai.tests.lab.rst +49 -0
  130. pygeai/_docs/source/pygeai.tests.lab.spec.rst +29 -0
  131. pygeai/_docs/source/pygeai.tests.lab.strategies.rst +29 -0
  132. pygeai/_docs/source/pygeai.tests.lab.tools.rst +29 -0
  133. pygeai/_docs/source/pygeai.tests.migration.rst +29 -0
  134. pygeai/_docs/source/pygeai.tests.organization.limits.rst +29 -0
  135. pygeai/_docs/source/pygeai.tests.organization.rst +53 -0
  136. pygeai/_docs/source/pygeai.tests.proxy.rst +61 -0
  137. pygeai/_docs/source/pygeai.tests.rst +33 -0
  138. pygeai/admin/clients.py +14 -11
  139. pygeai/admin/endpoints.py +2 -2
  140. pygeai/analytics/clients.py +505 -0
  141. pygeai/analytics/endpoints.py +35 -0
  142. pygeai/analytics/managers.py +606 -0
  143. pygeai/analytics/mappers.py +207 -0
  144. pygeai/analytics/responses.py +240 -0
  145. pygeai/assistant/clients.py +18 -45
  146. pygeai/assistant/data/clients.py +1 -0
  147. pygeai/assistant/data_analyst/clients.py +8 -12
  148. pygeai/assistant/managers.py +195 -157
  149. pygeai/assistant/mappers.py +4 -2
  150. pygeai/assistant/rag/clients.py +27 -67
  151. pygeai/assistant/rag/mappers.py +12 -6
  152. pygeai/assistant/rag/models.py +301 -159
  153. pygeai/auth/__init__.py +0 -0
  154. pygeai/auth/clients.py +129 -0
  155. pygeai/auth/endpoints.py +6 -0
  156. pygeai/chat/clients.py +308 -37
  157. pygeai/chat/endpoints.py +3 -0
  158. pygeai/chat/iris.py +2 -8
  159. pygeai/chat/managers.py +9 -6
  160. pygeai/chat/session.py +38 -0
  161. pygeai/chat/settings.py +6 -0
  162. pygeai/chat/ui.py +678 -0
  163. pygeai/cli/__init__.py +0 -1
  164. pygeai/cli/commands/admin.py +7 -10
  165. pygeai/cli/commands/analytics.py +533 -0
  166. pygeai/cli/commands/assistant.py +9 -9
  167. pygeai/cli/commands/auth.py +299 -0
  168. pygeai/cli/commands/base.py +71 -9
  169. pygeai/cli/commands/chat.py +676 -19
  170. pygeai/cli/commands/common.py +28 -24
  171. pygeai/cli/commands/configuration.py +66 -13
  172. pygeai/cli/commands/docs.py +105 -0
  173. pygeai/cli/commands/embeddings.py +58 -11
  174. pygeai/cli/commands/evaluation.py +38 -38
  175. pygeai/cli/commands/feedback.py +3 -4
  176. pygeai/cli/commands/files.py +7 -8
  177. pygeai/cli/commands/gam.py +85 -10
  178. pygeai/cli/commands/lab/ai_lab.py +340 -484
  179. pygeai/cli/commands/lab/options.py +8 -0
  180. pygeai/cli/commands/lab/spec.py +273 -0
  181. pygeai/cli/commands/lab/utils.py +13 -0
  182. pygeai/cli/commands/llm.py +6 -7
  183. pygeai/cli/commands/migrate.py +1064 -436
  184. pygeai/cli/commands/organization.py +516 -11
  185. pygeai/cli/commands/rag.py +13 -14
  186. pygeai/cli/commands/rerank.py +3 -5
  187. pygeai/cli/commands/secrets.py +8 -9
  188. pygeai/cli/commands/usage_limits.py +18 -20
  189. pygeai/cli/commands/validators.py +144 -1
  190. pygeai/cli/commands/version.py +4 -5
  191. pygeai/cli/error_handler.py +151 -0
  192. pygeai/cli/geai.py +170 -31
  193. pygeai/cli/geai_proxy.py +86 -25
  194. pygeai/cli/install_man.py +93 -22
  195. pygeai/cli/parsers.py +75 -25
  196. pygeai/cli/texts/help.py +265 -28
  197. pygeai/core/base/clients.py +53 -12
  198. pygeai/core/base/mappers.py +11 -2
  199. pygeai/core/base/session.py +95 -11
  200. pygeai/core/common/config.py +78 -14
  201. pygeai/core/common/exceptions.py +96 -6
  202. pygeai/core/embeddings/__init__.py +19 -0
  203. pygeai/core/embeddings/clients.py +23 -5
  204. pygeai/core/embeddings/managers.py +9 -4
  205. pygeai/core/embeddings/mappers.py +16 -2
  206. pygeai/core/embeddings/responses.py +9 -2
  207. pygeai/core/feedback/clients.py +8 -3
  208. pygeai/core/files/clients.py +23 -24
  209. pygeai/core/files/managers.py +121 -30
  210. pygeai/core/files/responses.py +4 -3
  211. pygeai/core/handlers.py +10 -1
  212. pygeai/core/llm/clients.py +22 -29
  213. pygeai/core/models.py +127 -11
  214. pygeai/core/plugins/clients.py +6 -6
  215. pygeai/core/rerank/clients.py +9 -3
  216. pygeai/core/rerank/managers.py +22 -5
  217. pygeai/core/secrets/clients.py +16 -37
  218. pygeai/core/services/response.py +18 -0
  219. pygeai/core/services/rest.py +159 -49
  220. pygeai/core/utils/__init__.py +0 -0
  221. pygeai/core/utils/console.py +83 -0
  222. pygeai/core/utils/parsers.py +32 -0
  223. pygeai/core/utils/validators.py +10 -0
  224. pygeai/dbg/__init__.py +3 -0
  225. pygeai/dbg/debugger.py +854 -14
  226. pygeai/evaluation/clients.py +7 -4
  227. pygeai/evaluation/dataset/clients.py +46 -44
  228. pygeai/evaluation/plan/clients.py +28 -26
  229. pygeai/evaluation/result/clients.py +38 -5
  230. pygeai/gam/clients.py +50 -28
  231. pygeai/gam/endpoints.py +2 -1
  232. pygeai/health/__init__.py +0 -0
  233. pygeai/health/clients.py +24 -0
  234. pygeai/health/endpoints.py +1 -0
  235. pygeai/lab/__init__.py +0 -90
  236. pygeai/lab/agents/clients.py +203 -162
  237. pygeai/lab/agents/endpoints.py +4 -0
  238. pygeai/lab/agents/mappers.py +57 -7
  239. pygeai/lab/clients.py +24 -0
  240. pygeai/lab/constants.py +3 -0
  241. pygeai/lab/managers.py +571 -541
  242. pygeai/lab/models.py +108 -19
  243. pygeai/lab/processes/clients.py +332 -340
  244. pygeai/lab/processes/mappers.py +3 -3
  245. pygeai/lab/runners.py +90 -0
  246. pygeai/lab/spec/__init__.py +0 -0
  247. pygeai/lab/spec/loader.py +24 -0
  248. pygeai/lab/spec/parsers.py +39 -0
  249. pygeai/lab/strategies/clients.py +67 -63
  250. pygeai/lab/strategies/mappers.py +1 -1
  251. pygeai/lab/tools/clients.py +85 -118
  252. pygeai/lab/tools/endpoints.py +4 -0
  253. pygeai/lab/tools/mappers.py +5 -5
  254. pygeai/man/man1/geai-proxy.1 +116 -0
  255. pygeai/man/man1/geai.1 +2580 -66
  256. pygeai/migration/__init__.py +33 -0
  257. pygeai/migration/strategies.py +468 -146
  258. pygeai/migration/tools.py +170 -3
  259. pygeai/organization/clients.py +245 -50
  260. pygeai/organization/endpoints.py +17 -8
  261. pygeai/organization/limits/clients.py +34 -32
  262. pygeai/organization/limits/managers.py +108 -49
  263. pygeai/organization/managers.py +347 -53
  264. pygeai/organization/mappers.py +102 -2
  265. pygeai/organization/responses.py +58 -1
  266. pygeai/proxy/clients.py +6 -3
  267. pygeai/proxy/config.py +14 -1
  268. pygeai/proxy/managers.py +61 -33
  269. pygeai/proxy/servers.py +196 -51
  270. pygeai/proxy/tool.py +33 -16
  271. pygeai/tests/admin/__init__.py +0 -0
  272. pygeai/tests/admin/test_clients.py +148 -0
  273. pygeai/tests/analytics/__init__.py +0 -0
  274. pygeai/tests/analytics/test_clients.py +86 -0
  275. pygeai/tests/analytics/test_managers.py +94 -0
  276. pygeai/tests/analytics/test_mappers.py +84 -0
  277. pygeai/tests/analytics/test_responses.py +73 -0
  278. pygeai/tests/assistants/rag/test_clients.py +346 -0
  279. pygeai/tests/assistants/rag/test_models.py +292 -0
  280. pygeai/tests/assistants/test_clients.py +176 -82
  281. pygeai/tests/assistants/test_managers.py +191 -57
  282. pygeai/tests/auth/__init__.py +0 -0
  283. pygeai/tests/auth/test_clients.py +289 -0
  284. pygeai/tests/auth/test_oauth.py +172 -0
  285. pygeai/tests/auth/test_session_logging.py +150 -0
  286. pygeai/tests/chat/__init__.py +0 -0
  287. pygeai/tests/chat/test_clients.py +393 -0
  288. pygeai/tests/chat/test_iris.py +38 -0
  289. pygeai/tests/chat/test_session.py +62 -0
  290. pygeai/tests/chat/test_ui.py +224 -0
  291. pygeai/tests/cli/commands/__init__.py +0 -0
  292. pygeai/tests/cli/commands/lab/__init__.py +0 -0
  293. pygeai/tests/cli/commands/lab/test_ai_lab.py +786 -0
  294. pygeai/tests/cli/commands/lab/test_common.py +208 -0
  295. pygeai/tests/cli/commands/lab/test_spec.py +246 -0
  296. pygeai/tests/cli/commands/test_assistant.py +202 -0
  297. pygeai/tests/cli/commands/test_chat.py +130 -0
  298. pygeai/tests/cli/commands/test_common.py +350 -0
  299. pygeai/tests/cli/commands/test_embeddings.py +132 -0
  300. pygeai/tests/cli/commands/test_evaluation.py +656 -0
  301. pygeai/tests/cli/commands/test_feedback.py +65 -0
  302. pygeai/tests/cli/commands/test_files.py +161 -0
  303. pygeai/tests/cli/commands/test_gam.py +201 -0
  304. pygeai/tests/cli/commands/test_llm.py +114 -0
  305. pygeai/tests/cli/commands/test_migrate.py +176 -0
  306. pygeai/tests/cli/commands/test_organization.py +276 -0
  307. pygeai/tests/cli/commands/test_rag.py +266 -0
  308. pygeai/tests/cli/commands/test_rerank.py +110 -0
  309. pygeai/tests/cli/commands/test_secrets.py +171 -0
  310. pygeai/tests/cli/commands/test_show_help.py +41 -0
  311. pygeai/tests/cli/commands/test_usage_limits.py +412 -0
  312. pygeai/tests/cli/commands/test_validators.py +160 -0
  313. pygeai/tests/cli/commands/test_version.py +81 -0
  314. pygeai/tests/cli/docker/__init__.py +0 -0
  315. pygeai/tests/cli/test_credentials_flag.py +316 -0
  316. pygeai/tests/cli/test_error_handler.py +225 -0
  317. pygeai/tests/cli/test_geai_driver.py +154 -0
  318. pygeai/tests/cli/test_parsers.py +5 -5
  319. pygeai/tests/core/base/data/models.py +7 -0
  320. pygeai/tests/core/base/test_mappers.py +43 -11
  321. pygeai/tests/core/base/test_models.py +3 -1
  322. pygeai/tests/core/base/test_responses.py +53 -0
  323. pygeai/tests/core/common/__init__.py +0 -0
  324. pygeai/tests/core/common/data/__init__.py +0 -0
  325. pygeai/tests/core/common/test_config.py +186 -0
  326. pygeai/tests/core/common/test_decorators.py +69 -0
  327. pygeai/tests/core/embeddings/__init__.py +0 -0
  328. pygeai/tests/core/embeddings/test_clients.py +225 -0
  329. pygeai/tests/core/embeddings/test_managers.py +171 -0
  330. pygeai/tests/core/embeddings/test_mappers.py +142 -0
  331. pygeai/tests/core/feedback/__init__.py +0 -0
  332. pygeai/tests/core/feedback/test_clients.py +64 -0
  333. pygeai/tests/core/files/test_clients.py +128 -0
  334. pygeai/tests/core/files/test_managers.py +124 -78
  335. pygeai/tests/core/files/test_mappers.py +137 -0
  336. pygeai/tests/core/files/test_models.py +103 -0
  337. pygeai/tests/core/files/test_responses.py +122 -0
  338. pygeai/tests/core/llm/__init__.py +0 -0
  339. pygeai/tests/core/llm/test_clients.py +142 -0
  340. pygeai/tests/core/plugins/__init__.py +0 -0
  341. pygeai/tests/core/plugins/test_clients.py +66 -0
  342. pygeai/tests/core/rerank/test_clients.py +76 -0
  343. pygeai/tests/core/rerank/test_managers.py +61 -39
  344. pygeai/tests/core/secrets/__init__.py +0 -0
  345. pygeai/tests/core/secrets/test_clients.py +264 -0
  346. pygeai/tests/core/services/__init__.py +0 -0
  347. pygeai/tests/core/services/test_rest.py +273 -0
  348. pygeai/tests/core/test_handlers.py +66 -0
  349. pygeai/tests/core/utils/__init__.py +0 -0
  350. pygeai/tests/core/utils/test_console.py +80 -0
  351. pygeai/tests/dbg/__init__.py +0 -0
  352. pygeai/tests/dbg/test_debugger.py +591 -0
  353. pygeai/tests/evaluation/__init__.py +0 -0
  354. pygeai/tests/evaluation/dataset/__init__.py +0 -0
  355. pygeai/tests/evaluation/dataset/test_clients.py +265 -0
  356. pygeai/tests/evaluation/plan/__init__.py +0 -0
  357. pygeai/tests/evaluation/plan/test_clients.py +195 -0
  358. pygeai/tests/evaluation/result/__init__.py +0 -0
  359. pygeai/tests/evaluation/result/test_clients.py +66 -0
  360. pygeai/tests/gam/__init__.py +0 -0
  361. pygeai/tests/gam/test_clients.py +195 -0
  362. pygeai/tests/health/__init__.py +0 -0
  363. pygeai/tests/health/test_clients.py +41 -0
  364. pygeai/tests/integration/__init__.py +0 -0
  365. pygeai/tests/integration/assistants/__init__.py +0 -0
  366. pygeai/tests/integration/assistants/rag/__init__.py +0 -0
  367. pygeai/tests/integration/assistants/rag/test_create_rag.py +91 -0
  368. pygeai/tests/integration/chat/__init__.py +0 -0
  369. pygeai/tests/integration/chat/test_generate_image.py +158 -0
  370. pygeai/tests/integration/lab/__init__.py +0 -0
  371. pygeai/tests/integration/lab/agents/__init__.py +0 -0
  372. pygeai/tests/integration/lab/agents/test_agents_list.py +106 -0
  373. pygeai/tests/integration/lab/agents/test_create_agent.py +319 -0
  374. pygeai/tests/integration/lab/agents/test_create_sharing_link.py +70 -0
  375. pygeai/tests/integration/lab/agents/test_delete_agent.py +75 -0
  376. pygeai/tests/integration/lab/agents/test_get_agent.py +94 -0
  377. pygeai/tests/integration/lab/agents/test_publish_agent_revision.py +127 -0
  378. pygeai/tests/integration/lab/agents/test_update_agent.py +250 -0
  379. pygeai/tests/integration/lab/processes/__init__.py +0 -0
  380. pygeai/tests/integration/lab/processes/test_create_process.py +345 -0
  381. pygeai/tests/integration/lab/processes/test_create_task.py +211 -0
  382. pygeai/tests/integration/lab/processes/test_delete_process.py +111 -0
  383. pygeai/tests/integration/lab/processes/test_get_process.py +201 -0
  384. pygeai/tests/integration/lab/processes/test_list_process_instances.py +91 -0
  385. pygeai/tests/integration/lab/processes/test_list_processes.py +138 -0
  386. pygeai/tests/integration/lab/processes/test_publish_process_revision.py +232 -0
  387. pygeai/tests/integration/lab/processes/test_update_process.py +289 -0
  388. pygeai/tests/integration/lab/reasoning_strategies/__init__.py +0 -0
  389. pygeai/tests/integration/lab/reasoning_strategies/test_get_reasoning_strategy.py +70 -0
  390. pygeai/tests/integration/lab/reasoning_strategies/test_list_reasoning_strategies.py +93 -0
  391. pygeai/tests/integration/lab/reasoning_strategies/test_update_reasoning_strategy.py +149 -0
  392. pygeai/tests/integration/lab/tools/__init__.py +0 -0
  393. pygeai/tests/integration/lab/tools/test_create_tool.py +288 -0
  394. pygeai/tests/integration/lab/tools/test_delete_tool.py +87 -0
  395. pygeai/tests/integration/lab/tools/test_get_parameter.py +98 -0
  396. pygeai/tests/integration/lab/tools/test_get_tool.py +91 -0
  397. pygeai/tests/integration/lab/tools/test_list_tools.py +106 -0
  398. pygeai/tests/integration/lab/tools/test_publish_tool_revision.py +119 -0
  399. pygeai/tests/integration/lab/tools/test_set_parameter.py +114 -0
  400. pygeai/tests/integration/lab/tools/test_update_tool.py +267 -0
  401. pygeai/tests/lab/agents/__init__.py +0 -0
  402. pygeai/tests/lab/agents/test_clients.py +481 -0
  403. pygeai/tests/lab/agents/test_mappers.py +440 -0
  404. pygeai/tests/lab/processes/__init__.py +0 -0
  405. pygeai/tests/lab/processes/test_clients.py +1416 -0
  406. pygeai/tests/lab/processes/test_mappers.py +1092 -0
  407. pygeai/tests/lab/spec/__init__.py +0 -0
  408. pygeai/tests/lab/spec/test_loader.py +59 -0
  409. pygeai/tests/lab/spec/test_parsers.py +182 -0
  410. pygeai/tests/lab/strategies/__init__.py +0 -0
  411. pygeai/tests/lab/strategies/test_clients.py +241 -0
  412. pygeai/tests/lab/strategies/test_mappers.py +132 -0
  413. pygeai/tests/lab/test_managers.py +553 -0
  414. pygeai/tests/lab/test_models.py +500 -3
  415. pygeai/tests/lab/tools/__init__.py +0 -0
  416. pygeai/tests/lab/tools/test_clients.py +521 -0
  417. pygeai/tests/lab/tools/test_mappers.py +198 -0
  418. pygeai/tests/migration/__init__.py +0 -0
  419. pygeai/tests/migration/test_strategies.py +405 -0
  420. pygeai/tests/migration/test_tools.py +159 -0
  421. pygeai/tests/organization/limits/test_clients.py +567 -0
  422. pygeai/tests/organization/limits/test_managers.py +298 -56
  423. pygeai/tests/organization/test_clients.py +600 -30
  424. pygeai/tests/organization/test_managers.py +424 -0
  425. pygeai/tests/organization/test_mappers.py +153 -0
  426. pygeai/tests/organization/test_responses.py +137 -0
  427. pygeai/tests/proxy/__init__.py +1 -0
  428. pygeai/tests/proxy/test_clients.py +397 -0
  429. pygeai/tests/proxy/test_config.py +171 -0
  430. pygeai/tests/proxy/test_integration.py +305 -0
  431. pygeai/tests/proxy/test_managers.py +312 -0
  432. pygeai/tests/proxy/test_servers.py +387 -0
  433. pygeai/tests/proxy/test_tool.py +176 -0
  434. pygeai/tests/snippets/analytics/__init__.py +0 -0
  435. pygeai/tests/snippets/analytics/get_agent_usage_per_user.py +16 -0
  436. pygeai/tests/snippets/analytics/get_agents_created_and_modified.py +11 -0
  437. pygeai/tests/snippets/analytics/get_average_cost_per_request.py +10 -0
  438. pygeai/tests/snippets/analytics/get_overall_error_rate.py +10 -0
  439. pygeai/tests/snippets/analytics/get_top_10_agents_by_requests.py +12 -0
  440. pygeai/tests/snippets/analytics/get_total_active_users.py +10 -0
  441. pygeai/tests/snippets/analytics/get_total_cost.py +10 -0
  442. pygeai/tests/snippets/analytics/get_total_requests_per_day.py +12 -0
  443. pygeai/tests/snippets/analytics/get_total_tokens.py +12 -0
  444. pygeai/tests/snippets/auth/__init__.py +0 -0
  445. pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -0
  446. pygeai/tests/snippets/chat/get_response.py +15 -0
  447. pygeai/tests/snippets/chat/get_response_complete_example.py +67 -0
  448. pygeai/tests/snippets/chat/get_response_streaming.py +20 -0
  449. pygeai/tests/snippets/chat/get_response_with_files.py +16 -0
  450. pygeai/tests/snippets/chat/get_response_with_instructions.py +19 -0
  451. pygeai/tests/snippets/chat/get_response_with_metadata.py +24 -0
  452. pygeai/tests/snippets/chat/get_response_with_parallel_tools.py +58 -0
  453. pygeai/tests/snippets/chat/get_response_with_reasoning.py +21 -0
  454. pygeai/tests/snippets/chat/get_response_with_store.py +38 -0
  455. pygeai/tests/snippets/chat/get_response_with_tools.py +36 -0
  456. pygeai/tests/snippets/chat/get_response_with_truncation.py +24 -0
  457. pygeai/tests/snippets/dbg/__init__.py +0 -0
  458. pygeai/tests/snippets/dbg/basic_debugging.py +32 -0
  459. pygeai/tests/snippets/dbg/breakpoint_management.py +48 -0
  460. pygeai/tests/snippets/dbg/file_debugging.py +72 -0
  461. pygeai/tests/snippets/dbg/module_debugging.py +61 -0
  462. pygeai/tests/snippets/dbg/stack_navigation.py +45 -0
  463. pygeai/tests/snippets/dbg/stepping_example.py +40 -0
  464. pygeai/tests/snippets/embeddings/cache_example.py +31 -0
  465. pygeai/tests/snippets/embeddings/cohere_example.py +41 -0
  466. pygeai/tests/snippets/embeddings/openai_base64_example.py +27 -0
  467. pygeai/tests/snippets/embeddings/openai_example.py +30 -0
  468. pygeai/tests/snippets/embeddings/similarity_example.py +42 -0
  469. pygeai/tests/snippets/evaluation/dataset/__init__.py +0 -0
  470. pygeai/tests/snippets/evaluation/dataset/complete_workflow_example.py +195 -0
  471. pygeai/tests/snippets/evaluation/dataset/create_dataset.py +26 -0
  472. pygeai/tests/snippets/evaluation/dataset/create_dataset_from_file.py +11 -0
  473. pygeai/tests/snippets/evaluation/dataset/create_dataset_row.py +17 -0
  474. pygeai/tests/snippets/evaluation/dataset/create_expected_source.py +18 -0
  475. pygeai/tests/snippets/evaluation/dataset/create_filter_variable.py +19 -0
  476. pygeai/tests/snippets/evaluation/dataset/delete_dataset.py +9 -0
  477. pygeai/tests/snippets/evaluation/dataset/delete_dataset_row.py +10 -0
  478. pygeai/tests/snippets/evaluation/dataset/delete_expected_source.py +15 -0
  479. pygeai/tests/snippets/evaluation/dataset/delete_filter_variable.py +15 -0
  480. pygeai/tests/snippets/evaluation/dataset/get_dataset.py +9 -0
  481. pygeai/tests/snippets/evaluation/dataset/get_dataset_row.py +10 -0
  482. pygeai/tests/snippets/evaluation/dataset/get_expected_source.py +15 -0
  483. pygeai/tests/snippets/evaluation/dataset/get_filter_variable.py +15 -0
  484. pygeai/tests/snippets/evaluation/dataset/list_dataset_rows.py +9 -0
  485. pygeai/tests/snippets/evaluation/dataset/list_datasets.py +6 -0
  486. pygeai/tests/snippets/evaluation/dataset/list_expected_sources.py +10 -0
  487. pygeai/tests/snippets/evaluation/dataset/list_filter_variables.py +10 -0
  488. pygeai/tests/snippets/evaluation/dataset/update_dataset.py +15 -0
  489. pygeai/tests/snippets/evaluation/dataset/update_dataset_row.py +20 -0
  490. pygeai/tests/snippets/evaluation/dataset/update_expected_source.py +18 -0
  491. pygeai/tests/snippets/evaluation/dataset/update_filter_variable.py +19 -0
  492. pygeai/tests/snippets/evaluation/dataset/upload_dataset_rows_file.py +10 -0
  493. pygeai/tests/snippets/evaluation/plan/__init__.py +0 -0
  494. pygeai/tests/snippets/evaluation/plan/add_plan_system_metric.py +13 -0
  495. pygeai/tests/snippets/evaluation/plan/complete_workflow_example.py +136 -0
  496. pygeai/tests/snippets/evaluation/plan/create_evaluation_plan.py +24 -0
  497. pygeai/tests/snippets/evaluation/plan/create_rag_evaluation_plan.py +22 -0
  498. pygeai/tests/snippets/evaluation/plan/delete_evaluation_plan.py +9 -0
  499. pygeai/tests/snippets/evaluation/plan/delete_plan_system_metric.py +13 -0
  500. pygeai/tests/snippets/evaluation/plan/execute_evaluation_plan.py +11 -0
  501. pygeai/tests/snippets/evaluation/plan/get_evaluation_plan.py +9 -0
  502. pygeai/tests/snippets/evaluation/plan/get_plan_system_metric.py +13 -0
  503. pygeai/tests/snippets/evaluation/plan/get_system_metric.py +9 -0
  504. pygeai/tests/snippets/evaluation/plan/list_evaluation_plans.py +7 -0
  505. pygeai/tests/snippets/evaluation/plan/list_plan_system_metrics.py +9 -0
  506. pygeai/tests/snippets/evaluation/plan/list_system_metrics.py +7 -0
  507. pygeai/tests/snippets/evaluation/plan/update_evaluation_plan.py +22 -0
  508. pygeai/tests/snippets/evaluation/plan/update_plan_system_metric.py +14 -0
  509. pygeai/tests/snippets/evaluation/result/__init__.py +0 -0
  510. pygeai/tests/snippets/evaluation/result/complete_workflow_example.py +150 -0
  511. pygeai/tests/snippets/evaluation/result/get_evaluation_result.py +26 -0
  512. pygeai/tests/snippets/evaluation/result/list_evaluation_results.py +17 -0
  513. pygeai/tests/snippets/files/delete_file.py +1 -4
  514. pygeai/tests/snippets/files/get_file_content.py +2 -4
  515. pygeai/tests/snippets/files/get_file_data.py +1 -4
  516. pygeai/tests/snippets/files/get_file_list.py +1 -6
  517. pygeai/tests/snippets/files/upload_file.py +1 -5
  518. pygeai/tests/snippets/gam/gam_access_token.py +87 -0
  519. pygeai/tests/snippets/lab/agentic_flow_example_1.py +25 -23
  520. pygeai/tests/snippets/lab/agentic_flow_example_4.py +23 -23
  521. pygeai/tests/snippets/lab/agents/create_agent.py +5 -8
  522. pygeai/tests/snippets/lab/agents/create_agent_2.py +1 -5
  523. pygeai/tests/snippets/lab/agents/create_agent_edge_case.py +48 -0
  524. pygeai/tests/snippets/lab/agents/create_agent_with_permissions.py +39 -0
  525. pygeai/tests/snippets/lab/agents/create_agent_with_properties.py +46 -0
  526. pygeai/tests/snippets/lab/agents/create_agent_without_instructions.py +48 -0
  527. pygeai/tests/snippets/lab/agents/delete_agent.py +1 -5
  528. pygeai/tests/snippets/lab/agents/get_agent.py +2 -11
  529. pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +62 -0
  530. pygeai/tests/snippets/lab/agents/get_sharing_link.py +2 -7
  531. pygeai/tests/snippets/lab/agents/list_agents.py +4 -7
  532. pygeai/tests/snippets/lab/agents/publish_agent_revision.py +2 -6
  533. pygeai/tests/snippets/lab/agents/update_agent.py +1 -5
  534. pygeai/tests/snippets/lab/agents/update_agent_properties.py +50 -0
  535. pygeai/tests/snippets/lab/assistant_to_agent.py +191 -0
  536. pygeai/tests/snippets/lab/crud_ui.py +462 -0
  537. pygeai/tests/snippets/lab/processes/create_process.py +3 -5
  538. pygeai/tests/snippets/lab/processes/create_task.py +3 -5
  539. pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +10 -19
  540. pygeai/tests/snippets/lab/processes/kbs/create_kb.py +2 -5
  541. pygeai/tests/snippets/lab/processes/kbs/get_kb.py +10 -16
  542. pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +13 -20
  543. pygeai/tests/snippets/lab/processes/kbs/try_all.py +5 -7
  544. pygeai/tests/snippets/lab/processes/list_processes.py +5 -7
  545. pygeai/tests/snippets/lab/runner_1.py +1 -1
  546. pygeai/tests/snippets/lab/samples/summarize_files.py +3 -3
  547. pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +2 -5
  548. pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +2 -5
  549. pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +3 -6
  550. pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +2 -5
  551. pygeai/tests/snippets/lab/tools/create_tool.py +4 -10
  552. pygeai/tests/snippets/lab/tools/create_tool_edge_case.py +50 -0
  553. pygeai/tests/snippets/lab/tools/delete_tool.py +2 -6
  554. pygeai/tests/snippets/lab/tools/get_parameter.py +5 -7
  555. pygeai/tests/snippets/lab/tools/get_tool.py +5 -7
  556. pygeai/tests/snippets/lab/tools/list_tools.py +3 -7
  557. pygeai/tests/snippets/lab/tools/publish_tool_revision.py +3 -5
  558. pygeai/tests/snippets/lab/tools/set_parameters.py +4 -9
  559. pygeai/tests/snippets/lab/tools/update_tool.py +4 -8
  560. pygeai/tests/snippets/lab/use_cases/__init__.py +0 -0
  561. pygeai/tests/snippets/lab/use_cases/create_cli_expert.py +1640 -0
  562. pygeai/tests/snippets/lab/use_cases/create_lab_expert.py +4541 -0
  563. pygeai/tests/snippets/lab/use_cases/create_tool_headless_web_browser.py +133 -0
  564. pygeai/tests/snippets/lab/use_cases/create_web_designer.py +189 -0
  565. pygeai/tests/snippets/lab/use_cases/create_web_reader.py +185 -0
  566. pygeai/tests/snippets/lab/{file_summarizer_example.py → use_cases/file_summarizer_example.py} +3 -3
  567. pygeai/tests/snippets/lab/{file_summarizer_example_2.py → use_cases/file_summarizer_example_2.py} +12 -12
  568. pygeai/tests/snippets/lab/use_cases/update_cli_expert.py +1773 -0
  569. pygeai/tests/snippets/lab/use_cases/update_lab_expert.py +4541 -0
  570. pygeai/tests/snippets/lab/use_cases/update_web_designer.py +188 -0
  571. pygeai/tests/snippets/lab/use_cases/update_web_reader.py +195 -0
  572. pygeai/tests/snippets/lab/use_cases/update_web_reader_with_tool.py +210 -0
  573. pygeai/tests/snippets/migrate/__init__.py +45 -0
  574. pygeai/tests/snippets/migrate/agent_migration.py +110 -0
  575. pygeai/tests/snippets/migrate/assistant_migration.py +64 -0
  576. pygeai/tests/snippets/migrate/orchestrator_examples.py +179 -0
  577. pygeai/tests/snippets/migrate/process_migration.py +64 -0
  578. pygeai/tests/snippets/migrate/project_migration.py +42 -0
  579. pygeai/tests/snippets/migrate/tool_migration.py +64 -0
  580. pygeai/tests/snippets/organization/add_project_member.py +10 -0
  581. pygeai/tests/snippets/organization/add_project_member_batch.py +44 -0
  582. pygeai/tests/snippets/organization/create_project.py +2 -2
  583. pygeai/tests/snippets/organization/get_memberships.py +12 -0
  584. pygeai/tests/snippets/organization/get_organization_members.py +6 -0
  585. pygeai/tests/snippets/organization/get_project_members.py +6 -0
  586. pygeai/tests/snippets/organization/get_project_memberships.py +12 -0
  587. pygeai/tests/snippets/organization/get_project_roles.py +6 -0
  588. pygeai/vendor/a2a/__init__.py +1 -0
  589. pygeai/vendor/a2a/auth/__init__.py +0 -0
  590. pygeai/vendor/a2a/auth/user.py +31 -0
  591. pygeai/vendor/a2a/client/__init__.py +19 -0
  592. pygeai/vendor/a2a/client/client.py +425 -0
  593. pygeai/vendor/a2a/client/errors.py +33 -0
  594. pygeai/vendor/a2a/client/helpers.py +22 -0
  595. pygeai/vendor/a2a/py.typed +0 -0
  596. pygeai/vendor/a2a/server/__init__.py +1 -0
  597. pygeai/vendor/a2a/server/agent_execution/__init__.py +18 -0
  598. pygeai/vendor/a2a/server/agent_execution/agent_executor.py +44 -0
  599. pygeai/vendor/a2a/server/agent_execution/context.py +155 -0
  600. pygeai/vendor/a2a/server/agent_execution/request_context_builder.py +20 -0
  601. pygeai/vendor/a2a/server/agent_execution/simple_request_context_builder.py +77 -0
  602. pygeai/vendor/a2a/server/apps/__init__.py +16 -0
  603. pygeai/vendor/a2a/server/apps/jsonrpc/__init__.py +16 -0
  604. pygeai/vendor/a2a/server/apps/jsonrpc/fastapi_app.py +88 -0
  605. pygeai/vendor/a2a/server/apps/jsonrpc/jsonrpc_app.py +426 -0
  606. pygeai/vendor/a2a/server/apps/jsonrpc/starlette_app.py +123 -0
  607. pygeai/vendor/a2a/server/context.py +23 -0
  608. pygeai/vendor/a2a/server/events/__init__.py +21 -0
  609. pygeai/vendor/a2a/server/events/event_consumer.py +149 -0
  610. pygeai/vendor/a2a/server/events/event_queue.py +156 -0
  611. pygeai/vendor/a2a/server/events/in_memory_queue_manager.py +85 -0
  612. pygeai/vendor/a2a/server/events/queue_manager.py +35 -0
  613. pygeai/vendor/a2a/server/request_handlers/__init__.py +20 -0
  614. pygeai/vendor/a2a/server/request_handlers/default_request_handler.py +435 -0
  615. pygeai/vendor/a2a/server/request_handlers/jsonrpc_handler.py +327 -0
  616. pygeai/vendor/a2a/server/request_handlers/request_handler.py +161 -0
  617. pygeai/vendor/a2a/server/request_handlers/response_helpers.py +133 -0
  618. pygeai/vendor/a2a/server/tasks/__init__.py +20 -0
  619. pygeai/vendor/a2a/server/tasks/inmemory_push_notifier.py +62 -0
  620. pygeai/vendor/a2a/server/tasks/inmemory_task_store.py +51 -0
  621. pygeai/vendor/a2a/server/tasks/push_notifier.py +25 -0
  622. pygeai/vendor/a2a/server/tasks/result_aggregator.py +151 -0
  623. pygeai/vendor/a2a/server/tasks/task_manager.py +253 -0
  624. pygeai/vendor/a2a/server/tasks/task_store.py +22 -0
  625. pygeai/vendor/a2a/server/tasks/task_updater.py +155 -0
  626. pygeai/vendor/a2a/types.py +1624 -0
  627. pygeai/vendor/a2a/utils/__init__.py +40 -0
  628. pygeai/vendor/a2a/utils/artifact.py +72 -0
  629. pygeai/vendor/a2a/utils/errors.py +69 -0
  630. pygeai/vendor/a2a/utils/helpers.py +176 -0
  631. pygeai/vendor/a2a/utils/message.py +83 -0
  632. pygeai/vendor/a2a/utils/task.py +57 -0
  633. pygeai/vendor/a2a/utils/telemetry.py +299 -0
  634. pygeai-0.6.0b15.dist-info/METADATA +205 -0
  635. pygeai-0.6.0b15.dist-info/RECORD +799 -0
  636. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/WHEEL +1 -1
  637. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/entry_points.txt +2 -1
  638. {pygeai-0.1.51b3.dist-info → pygeai-0.6.0b15.dist-info}/licenses/LICENSE +13 -1
  639. pygeai-0.6.0b15.dist-info/top_level.txt +1 -0
  640. docs/geai-proxy/README.md +0 -145
  641. docs/source/conf.py +0 -45
  642. pygeai/tests/core/test_managers.py +0 -233
  643. pygeai-0.1.51b3.dist-info/METADATA +0 -130
  644. pygeai-0.1.51b3.dist-info/RECORD +0 -324
  645. pygeai-0.1.51b3.dist-info/top_level.txt +0 -3
  646. scripts/bump_beta_version.py +0 -56
  647. {scripts → pygeai/analytics}/__init__.py +0 -0
  648. /pygeai/tests/snippets/lab/{c_code_fixer_agent_flow.py → use_cases/c_code_fixer_agent_flow.py} +0 -0
@@ -0,0 +1,606 @@
1
+ from pygeai import logger
2
+ from pygeai.core.handlers import ErrorHandler
3
+ from pygeai.core.common.exceptions import APIError
4
+ from pygeai.analytics.clients import AnalyticsClient
5
+ from pygeai.analytics.mappers import AnalyticsResponseMapper
6
+ from pygeai.analytics.responses import (
7
+ AgentsCreatedAndModifiedResponse, AgentsCreatedAndModifiedPerDayResponse,
8
+ FlowsCreatedAndModifiedResponse, FlowsCreatedAndModifiedPerDayResponse,
9
+ ProcessesCreatedAndModifiedResponse, AgentUsagePerUserResponse,
10
+ AverageCostPerRequestResponse, AverageCostPerUserResponse, AverageCostPerUserPerDateResponse,
11
+ AverageRequestTimeResponse, AverageRequestsPerDayResponse, AverageRequestsPerUserResponse,
12
+ AverageRequestsPerUserPerDateResponse, AverageTokensPerRequestResponse,
13
+ AverageUsersPerAgentResponse, AverageUsersPerProjectResponse, NumberOfTokensResponse,
14
+ NumberOfTokensPerAgentResponse, NumberOfTokensPerDayResponse, OverallErrorRateResponse,
15
+ Top10AgentsByRequestsResponse, Top10AgentsByTokensResponse, Top10UsersByCostResponse,
16
+ Top10UsersByRequestsResponse, TotalActiveAgentsResponse, TotalActiveProjectsResponse,
17
+ TotalActiveUsersResponse, TotalCostResponse, TotalCostPerDayResponse,
18
+ TotalRequestTimeResponse, TotalRequestsResponse, TotalRequestsPerDayResponse,
19
+ TotalRequestsWithErrorResponse, TotalTokensResponse
20
+ )
21
+
22
+
23
+ class AnalyticsManager:
24
+
25
+ def __init__(self, api_key: str = None, base_url: str = None, alias: str = None):
26
+ self.__analytics_client = AnalyticsClient(api_key=api_key, base_url=base_url, alias=alias)
27
+
28
+ def get_agents_created_and_modified(
29
+ self,
30
+ start_date: str,
31
+ end_date: str
32
+ ) -> AgentsCreatedAndModifiedResponse:
33
+ response_data = self.__analytics_client.get_agents_created_and_modified(
34
+ start_date=start_date,
35
+ end_date=end_date
36
+ )
37
+ if ErrorHandler.has_errors(response_data):
38
+ error = ErrorHandler.extract_error(response_data)
39
+ logger.error(f"Error received while retrieving agents created and modified: {error}")
40
+ raise APIError(f"Error received while retrieving agents created and modified: {error}")
41
+
42
+ result = AnalyticsResponseMapper.map_to_agents_created_and_modified_response(response_data)
43
+ return result
44
+
45
+ def get_agents_created_and_modified_per_day(
46
+ self,
47
+ start_date: str,
48
+ end_date: str
49
+ ) -> AgentsCreatedAndModifiedPerDayResponse:
50
+ response_data = self.__analytics_client.get_agents_created_and_modified_per_day(
51
+ start_date=start_date,
52
+ end_date=end_date
53
+ )
54
+ if ErrorHandler.has_errors(response_data):
55
+ error = ErrorHandler.extract_error(response_data)
56
+ logger.error(f"Error received while retrieving agents created and modified per day: {error}")
57
+ raise APIError(f"Error received while retrieving agents created and modified per day: {error}")
58
+
59
+ result = AnalyticsResponseMapper.map_to_agents_created_and_modified_per_day_response(response_data)
60
+ return result
61
+
62
+ def get_flows_created_and_modified(
63
+ self,
64
+ start_date: str,
65
+ end_date: str
66
+ ) -> FlowsCreatedAndModifiedResponse:
67
+ response_data = self.__analytics_client.get_flows_created_and_modified(
68
+ start_date=start_date,
69
+ end_date=end_date
70
+ )
71
+ if ErrorHandler.has_errors(response_data):
72
+ error = ErrorHandler.extract_error(response_data)
73
+ logger.error(f"Error received while retrieving flows created and modified: {error}")
74
+ raise APIError(f"Error received while retrieving flows created and modified: {error}")
75
+
76
+ result = AnalyticsResponseMapper.map_to_flows_created_and_modified_response(response_data)
77
+ return result
78
+
79
+ def get_flows_created_and_modified_per_day(
80
+ self,
81
+ start_date: str,
82
+ end_date: str
83
+ ) -> FlowsCreatedAndModifiedPerDayResponse:
84
+ response_data = self.__analytics_client.get_flows_created_and_modified_per_day(
85
+ start_date=start_date,
86
+ end_date=end_date
87
+ )
88
+ if ErrorHandler.has_errors(response_data):
89
+ error = ErrorHandler.extract_error(response_data)
90
+ logger.error(f"Error received while retrieving flows created and modified per day: {error}")
91
+ raise APIError(f"Error received while retrieving flows created and modified per day: {error}")
92
+
93
+ result = AnalyticsResponseMapper.map_to_flows_created_and_modified_per_day_response(response_data)
94
+ return result
95
+
96
+ def get_processes_created_and_modified(
97
+ self,
98
+ start_date: str,
99
+ end_date: str
100
+ ) -> ProcessesCreatedAndModifiedResponse:
101
+ response_data = self.__analytics_client.get_processes_created_and_modified(
102
+ start_date=start_date,
103
+ end_date=end_date
104
+ )
105
+ if ErrorHandler.has_errors(response_data):
106
+ error = ErrorHandler.extract_error(response_data)
107
+ logger.error(f"Error received while retrieving processes created and modified: {error}")
108
+ raise APIError(f"Error received while retrieving processes created and modified: {error}")
109
+
110
+ result = AnalyticsResponseMapper.map_to_processes_created_and_modified_response(response_data)
111
+ return result
112
+
113
+ def get_agent_usage_per_user(
114
+ self,
115
+ start_date: str,
116
+ end_date: str
117
+ ) -> AgentUsagePerUserResponse:
118
+ response_data = self.__analytics_client.get_agent_usage_per_user(
119
+ start_date=start_date,
120
+ end_date=end_date
121
+ )
122
+ if ErrorHandler.has_errors(response_data):
123
+ error = ErrorHandler.extract_error(response_data)
124
+ logger.error(f"Error received while retrieving agent usage per user: {error}")
125
+ raise APIError(f"Error received while retrieving agent usage per user: {error}")
126
+
127
+ result = AnalyticsResponseMapper.map_to_agent_usage_per_user_response(response_data)
128
+ return result
129
+
130
+ def get_average_cost_per_request(
131
+ self,
132
+ start_date: str,
133
+ end_date: str
134
+ ) -> AverageCostPerRequestResponse:
135
+ response_data = self.__analytics_client.get_average_cost_per_request(
136
+ start_date=start_date,
137
+ end_date=end_date
138
+ )
139
+ if ErrorHandler.has_errors(response_data):
140
+ error = ErrorHandler.extract_error(response_data)
141
+ logger.error(f"Error received while retrieving average cost per request: {error}")
142
+ raise APIError(f"Error received while retrieving average cost per request: {error}")
143
+
144
+ result = AnalyticsResponseMapper.map_to_average_cost_per_request_response(response_data)
145
+ return result
146
+
147
+ def get_average_cost_per_user(
148
+ self,
149
+ start_date: str,
150
+ end_date: str
151
+ ) -> AverageCostPerUserResponse:
152
+ response_data = self.__analytics_client.get_average_cost_per_user(
153
+ start_date=start_date,
154
+ end_date=end_date
155
+ )
156
+ if ErrorHandler.has_errors(response_data):
157
+ error = ErrorHandler.extract_error(response_data)
158
+ logger.error(f"Error received while retrieving average cost per user: {error}")
159
+ raise APIError(f"Error received while retrieving average cost per user: {error}")
160
+
161
+ result = AnalyticsResponseMapper.map_to_average_cost_per_user_response(response_data)
162
+ return result
163
+
164
+ def get_average_cost_per_user_per_date(
165
+ self,
166
+ start_date: str,
167
+ end_date: str
168
+ ) -> AverageCostPerUserPerDateResponse:
169
+ response_data = self.__analytics_client.get_average_cost_per_user_per_date(
170
+ start_date=start_date,
171
+ end_date=end_date
172
+ )
173
+ if ErrorHandler.has_errors(response_data):
174
+ error = ErrorHandler.extract_error(response_data)
175
+ logger.error(f"Error received while retrieving average cost per user per date: {error}")
176
+ raise APIError(f"Error received while retrieving average cost per user per date: {error}")
177
+
178
+ result = AnalyticsResponseMapper.map_to_average_cost_per_user_per_date_response(response_data)
179
+ return result
180
+
181
+ def get_average_request_time(
182
+ self,
183
+ start_date: str,
184
+ end_date: str
185
+ ) -> AverageRequestTimeResponse:
186
+ response_data = self.__analytics_client.get_average_request_time(
187
+ start_date=start_date,
188
+ end_date=end_date
189
+ )
190
+ if ErrorHandler.has_errors(response_data):
191
+ error = ErrorHandler.extract_error(response_data)
192
+ logger.error(f"Error received while retrieving average request time: {error}")
193
+ raise APIError(f"Error received while retrieving average request time: {error}")
194
+
195
+ result = AnalyticsResponseMapper.map_to_average_request_time_response(response_data)
196
+ return result
197
+
198
+ def get_average_requests_per_day(
199
+ self,
200
+ start_date: str,
201
+ end_date: str
202
+ ) -> AverageRequestsPerDayResponse:
203
+ response_data = self.__analytics_client.get_average_requests_per_day(
204
+ start_date=start_date,
205
+ end_date=end_date
206
+ )
207
+ if ErrorHandler.has_errors(response_data):
208
+ error = ErrorHandler.extract_error(response_data)
209
+ logger.error(f"Error received while retrieving average requests per day: {error}")
210
+ raise APIError(f"Error received while retrieving average requests per day: {error}")
211
+
212
+ result = AnalyticsResponseMapper.map_to_average_requests_per_day_response(response_data)
213
+ return result
214
+
215
+ def get_average_requests_per_user(
216
+ self,
217
+ start_date: str,
218
+ end_date: str
219
+ ) -> AverageRequestsPerUserResponse:
220
+ response_data = self.__analytics_client.get_average_requests_per_user(
221
+ start_date=start_date,
222
+ end_date=end_date
223
+ )
224
+ if ErrorHandler.has_errors(response_data):
225
+ error = ErrorHandler.extract_error(response_data)
226
+ logger.error(f"Error received while retrieving average requests per user: {error}")
227
+ raise APIError(f"Error received while retrieving average requests per user: {error}")
228
+
229
+ result = AnalyticsResponseMapper.map_to_average_requests_per_user_response(response_data)
230
+ return result
231
+
232
+ def get_average_requests_per_user_per_date(
233
+ self,
234
+ start_date: str,
235
+ end_date: str
236
+ ) -> AverageRequestsPerUserPerDateResponse:
237
+ response_data = self.__analytics_client.get_average_requests_per_user_per_date(
238
+ start_date=start_date,
239
+ end_date=end_date
240
+ )
241
+ if ErrorHandler.has_errors(response_data):
242
+ error = ErrorHandler.extract_error(response_data)
243
+ logger.error(f"Error received while retrieving average requests per user per date: {error}")
244
+ raise APIError(f"Error received while retrieving average requests per user per date: {error}")
245
+
246
+ result = AnalyticsResponseMapper.map_to_average_requests_per_user_per_date_response(response_data)
247
+ return result
248
+
249
+ def get_average_tokens_per_request(
250
+ self,
251
+ start_date: str,
252
+ end_date: str
253
+ ) -> AverageTokensPerRequestResponse:
254
+ response_data = self.__analytics_client.get_average_tokens_per_request(
255
+ start_date=start_date,
256
+ end_date=end_date
257
+ )
258
+ if ErrorHandler.has_errors(response_data):
259
+ error = ErrorHandler.extract_error(response_data)
260
+ logger.error(f"Error received while retrieving average tokens per request: {error}")
261
+ raise APIError(f"Error received while retrieving average tokens per request: {error}")
262
+
263
+ result = AnalyticsResponseMapper.map_to_average_tokens_per_request_response(response_data)
264
+ return result
265
+
266
+ def get_average_users_per_agent(
267
+ self,
268
+ start_date: str,
269
+ end_date: str
270
+ ) -> AverageUsersPerAgentResponse:
271
+ response_data = self.__analytics_client.get_average_users_per_agent(
272
+ start_date=start_date,
273
+ end_date=end_date
274
+ )
275
+ if ErrorHandler.has_errors(response_data):
276
+ error = ErrorHandler.extract_error(response_data)
277
+ logger.error(f"Error received while retrieving average users per agent: {error}")
278
+ raise APIError(f"Error received while retrieving average users per agent: {error}")
279
+
280
+ result = AnalyticsResponseMapper.map_to_average_users_per_agent_response(response_data)
281
+ return result
282
+
283
+ def get_average_users_per_project(
284
+ self,
285
+ start_date: str,
286
+ end_date: str
287
+ ) -> AverageUsersPerProjectResponse:
288
+ response_data = self.__analytics_client.get_average_users_per_project(
289
+ start_date=start_date,
290
+ end_date=end_date
291
+ )
292
+ if ErrorHandler.has_errors(response_data):
293
+ error = ErrorHandler.extract_error(response_data)
294
+ logger.error(f"Error received while retrieving average users per project: {error}")
295
+ raise APIError(f"Error received while retrieving average users per project: {error}")
296
+
297
+ result = AnalyticsResponseMapper.map_to_average_users_per_project_response(response_data)
298
+ return result
299
+
300
+ def get_number_of_tokens(
301
+ self,
302
+ start_date: str,
303
+ end_date: str
304
+ ) -> NumberOfTokensResponse:
305
+ response_data = self.__analytics_client.get_number_of_tokens(
306
+ start_date=start_date,
307
+ end_date=end_date
308
+ )
309
+ if ErrorHandler.has_errors(response_data):
310
+ error = ErrorHandler.extract_error(response_data)
311
+ logger.error(f"Error received while retrieving number of tokens: {error}")
312
+ raise APIError(f"Error received while retrieving number of tokens: {error}")
313
+
314
+ result = AnalyticsResponseMapper.map_to_number_of_tokens_response(response_data)
315
+ return result
316
+
317
+ def get_number_of_tokens_per_agent(
318
+ self,
319
+ start_date: str,
320
+ end_date: str
321
+ ) -> NumberOfTokensPerAgentResponse:
322
+ response_data = self.__analytics_client.get_number_of_tokens_per_agent(
323
+ start_date=start_date,
324
+ end_date=end_date
325
+ )
326
+ if ErrorHandler.has_errors(response_data):
327
+ error = ErrorHandler.extract_error(response_data)
328
+ logger.error(f"Error received while retrieving number of tokens per agent: {error}")
329
+ raise APIError(f"Error received while retrieving number of tokens per agent: {error}")
330
+
331
+ result = AnalyticsResponseMapper.map_to_number_of_tokens_per_agent_response(response_data)
332
+ return result
333
+
334
+ def get_number_of_tokens_per_day(
335
+ self,
336
+ start_date: str,
337
+ end_date: str
338
+ ) -> NumberOfTokensPerDayResponse:
339
+ response_data = self.__analytics_client.get_number_of_tokens_per_day(
340
+ start_date=start_date,
341
+ end_date=end_date
342
+ )
343
+ if ErrorHandler.has_errors(response_data):
344
+ error = ErrorHandler.extract_error(response_data)
345
+ logger.error(f"Error received while retrieving number of tokens per day: {error}")
346
+ raise APIError(f"Error received while retrieving number of tokens per day: {error}")
347
+
348
+ result = AnalyticsResponseMapper.map_to_number_of_tokens_per_day_response(response_data)
349
+ return result
350
+
351
+ def get_overall_error_rate(
352
+ self,
353
+ start_date: str,
354
+ end_date: str
355
+ ) -> OverallErrorRateResponse:
356
+ response_data = self.__analytics_client.get_overall_error_rate(
357
+ start_date=start_date,
358
+ end_date=end_date
359
+ )
360
+ if ErrorHandler.has_errors(response_data):
361
+ error = ErrorHandler.extract_error(response_data)
362
+ logger.error(f"Error received while retrieving overall error rate: {error}")
363
+ raise APIError(f"Error received while retrieving overall error rate: {error}")
364
+
365
+ result = AnalyticsResponseMapper.map_to_overall_error_rate_response(response_data)
366
+ return result
367
+
368
+ def get_top_10_agents_by_requests(
369
+ self,
370
+ start_date: str,
371
+ end_date: str
372
+ ) -> Top10AgentsByRequestsResponse:
373
+ response_data = self.__analytics_client.get_top_10_agents_by_requests(
374
+ start_date=start_date,
375
+ end_date=end_date
376
+ )
377
+ if ErrorHandler.has_errors(response_data):
378
+ error = ErrorHandler.extract_error(response_data)
379
+ logger.error(f"Error received while retrieving top 10 agents by requests: {error}")
380
+ raise APIError(f"Error received while retrieving top 10 agents by requests: {error}")
381
+
382
+ result = AnalyticsResponseMapper.map_to_top_10_agents_by_requests_response(response_data)
383
+ return result
384
+
385
+ def get_top_10_agents_by_tokens(
386
+ self,
387
+ start_date: str,
388
+ end_date: str
389
+ ) -> Top10AgentsByTokensResponse:
390
+ response_data = self.__analytics_client.get_top_10_agents_by_tokens(
391
+ start_date=start_date,
392
+ end_date=end_date
393
+ )
394
+ if ErrorHandler.has_errors(response_data):
395
+ error = ErrorHandler.extract_error(response_data)
396
+ logger.error(f"Error received while retrieving top 10 agents by tokens: {error}")
397
+ raise APIError(f"Error received while retrieving top 10 agents by tokens: {error}")
398
+
399
+ result = AnalyticsResponseMapper.map_to_top_10_agents_by_tokens_response(response_data)
400
+ return result
401
+
402
+ def get_top_10_users_by_cost(
403
+ self,
404
+ start_date: str,
405
+ end_date: str
406
+ ) -> Top10UsersByCostResponse:
407
+ response_data = self.__analytics_client.get_top_10_users_by_cost(
408
+ start_date=start_date,
409
+ end_date=end_date
410
+ )
411
+ if ErrorHandler.has_errors(response_data):
412
+ error = ErrorHandler.extract_error(response_data)
413
+ logger.error(f"Error received while retrieving top 10 users by cost: {error}")
414
+ raise APIError(f"Error received while retrieving top 10 users by cost: {error}")
415
+
416
+ result = AnalyticsResponseMapper.map_to_top_10_users_by_cost_response(response_data)
417
+ return result
418
+
419
+ def get_top_10_users_by_requests(
420
+ self,
421
+ start_date: str,
422
+ end_date: str
423
+ ) -> Top10UsersByRequestsResponse:
424
+ response_data = self.__analytics_client.get_top_10_users_by_requests(
425
+ start_date=start_date,
426
+ end_date=end_date
427
+ )
428
+ if ErrorHandler.has_errors(response_data):
429
+ error = ErrorHandler.extract_error(response_data)
430
+ logger.error(f"Error received while retrieving top 10 users by requests: {error}")
431
+ raise APIError(f"Error received while retrieving top 10 users by requests: {error}")
432
+
433
+ result = AnalyticsResponseMapper.map_to_top_10_users_by_requests_response(response_data)
434
+ return result
435
+
436
+ def get_total_active_agents(
437
+ self,
438
+ start_date: str,
439
+ end_date: str
440
+ ) -> TotalActiveAgentsResponse:
441
+ response_data = self.__analytics_client.get_total_active_agents(
442
+ start_date=start_date,
443
+ end_date=end_date
444
+ )
445
+ if ErrorHandler.has_errors(response_data):
446
+ error = ErrorHandler.extract_error(response_data)
447
+ logger.error(f"Error received while retrieving total active agents: {error}")
448
+ raise APIError(f"Error received while retrieving total active agents: {error}")
449
+
450
+ result = AnalyticsResponseMapper.map_to_total_active_agents_response(response_data)
451
+ return result
452
+
453
+ def get_total_active_projects(
454
+ self,
455
+ start_date: str,
456
+ end_date: str
457
+ ) -> TotalActiveProjectsResponse:
458
+ response_data = self.__analytics_client.get_total_active_projects(
459
+ start_date=start_date,
460
+ end_date=end_date
461
+ )
462
+ if ErrorHandler.has_errors(response_data):
463
+ error = ErrorHandler.extract_error(response_data)
464
+ logger.error(f"Error received while retrieving total active projects: {error}")
465
+ raise APIError(f"Error received while retrieving total active projects: {error}")
466
+
467
+ result = AnalyticsResponseMapper.map_to_total_active_projects_response(response_data)
468
+ return result
469
+
470
+ def get_total_active_users(
471
+ self,
472
+ start_date: str,
473
+ end_date: str
474
+ ) -> TotalActiveUsersResponse:
475
+ response_data = self.__analytics_client.get_total_active_users(
476
+ start_date=start_date,
477
+ end_date=end_date
478
+ )
479
+ if ErrorHandler.has_errors(response_data):
480
+ error = ErrorHandler.extract_error(response_data)
481
+ logger.error(f"Error received while retrieving total active users: {error}")
482
+ raise APIError(f"Error received while retrieving total active users: {error}")
483
+
484
+ result = AnalyticsResponseMapper.map_to_total_active_users_response(response_data)
485
+ return result
486
+
487
+ def get_total_cost(
488
+ self,
489
+ start_date: str,
490
+ end_date: str
491
+ ) -> TotalCostResponse:
492
+ response_data = self.__analytics_client.get_total_cost(
493
+ start_date=start_date,
494
+ end_date=end_date
495
+ )
496
+ if ErrorHandler.has_errors(response_data):
497
+ error = ErrorHandler.extract_error(response_data)
498
+ logger.error(f"Error received while retrieving total cost: {error}")
499
+ raise APIError(f"Error received while retrieving total cost: {error}")
500
+
501
+ result = AnalyticsResponseMapper.map_to_total_cost_response(response_data)
502
+ return result
503
+
504
+ def get_total_cost_per_day(
505
+ self,
506
+ start_date: str,
507
+ end_date: str
508
+ ) -> TotalCostPerDayResponse:
509
+ response_data = self.__analytics_client.get_total_cost_per_day(
510
+ start_date=start_date,
511
+ end_date=end_date
512
+ )
513
+ if ErrorHandler.has_errors(response_data):
514
+ error = ErrorHandler.extract_error(response_data)
515
+ logger.error(f"Error received while retrieving total cost per day: {error}")
516
+ raise APIError(f"Error received while retrieving total cost per day: {error}")
517
+
518
+ result = AnalyticsResponseMapper.map_to_total_cost_per_day_response(response_data)
519
+ return result
520
+
521
+ def get_total_request_time(
522
+ self,
523
+ start_date: str,
524
+ end_date: str
525
+ ) -> TotalRequestTimeResponse:
526
+ response_data = self.__analytics_client.get_total_request_time(
527
+ start_date=start_date,
528
+ end_date=end_date
529
+ )
530
+ if ErrorHandler.has_errors(response_data):
531
+ error = ErrorHandler.extract_error(response_data)
532
+ logger.error(f"Error received while retrieving total request time: {error}")
533
+ raise APIError(f"Error received while retrieving total request time: {error}")
534
+
535
+ result = AnalyticsResponseMapper.map_to_total_request_time_response(response_data)
536
+ return result
537
+
538
+ def get_total_requests(
539
+ self,
540
+ start_date: str,
541
+ end_date: str
542
+ ) -> TotalRequestsResponse:
543
+ response_data = self.__analytics_client.get_total_requests(
544
+ start_date=start_date,
545
+ end_date=end_date
546
+ )
547
+ if ErrorHandler.has_errors(response_data):
548
+ error = ErrorHandler.extract_error(response_data)
549
+ logger.error(f"Error received while retrieving total requests: {error}")
550
+ raise APIError(f"Error received while retrieving total requests: {error}")
551
+
552
+ result = AnalyticsResponseMapper.map_to_total_requests_response(response_data)
553
+ return result
554
+
555
+ def get_total_requests_per_day(
556
+ self,
557
+ start_date: str,
558
+ end_date: str,
559
+ agent_name: str = None
560
+ ) -> TotalRequestsPerDayResponse:
561
+ response_data = self.__analytics_client.get_total_requests_per_day(
562
+ start_date=start_date,
563
+ end_date=end_date,
564
+ agent_name=agent_name
565
+ )
566
+ if ErrorHandler.has_errors(response_data):
567
+ error = ErrorHandler.extract_error(response_data)
568
+ logger.error(f"Error received while retrieving total requests per day: {error}")
569
+ raise APIError(f"Error received while retrieving total requests per day: {error}")
570
+
571
+ result = AnalyticsResponseMapper.map_to_total_requests_per_day_response(response_data)
572
+ return result
573
+
574
+ def get_total_requests_with_error(
575
+ self,
576
+ start_date: str,
577
+ end_date: str
578
+ ) -> TotalRequestsWithErrorResponse:
579
+ response_data = self.__analytics_client.get_total_requests_with_error(
580
+ start_date=start_date,
581
+ end_date=end_date
582
+ )
583
+ if ErrorHandler.has_errors(response_data):
584
+ error = ErrorHandler.extract_error(response_data)
585
+ logger.error(f"Error received while retrieving total requests with error: {error}")
586
+ raise APIError(f"Error received while retrieving total requests with error: {error}")
587
+
588
+ result = AnalyticsResponseMapper.map_to_total_requests_with_error_response(response_data)
589
+ return result
590
+
591
+ def get_total_tokens(
592
+ self,
593
+ start_date: str,
594
+ end_date: str
595
+ ) -> TotalTokensResponse:
596
+ response_data = self.__analytics_client.get_total_tokens(
597
+ start_date=start_date,
598
+ end_date=end_date
599
+ )
600
+ if ErrorHandler.has_errors(response_data):
601
+ error = ErrorHandler.extract_error(response_data)
602
+ logger.error(f"Error received while retrieving total tokens: {error}")
603
+ raise APIError(f"Error received while retrieving total tokens: {error}")
604
+
605
+ result = AnalyticsResponseMapper.map_to_total_tokens_response(response_data)
606
+ return result