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
@@ -2,15 +2,18 @@ from pygeai.core.base.clients import BaseClient
2
2
  from pygeai.core.base.session import Session
3
3
  from pygeai.core.common.exceptions import MissingRequirementException
4
4
  from pygeai.core.services.rest import ApiService
5
+ from pygeai.core.utils.validators import validate_status_code
5
6
 
6
7
 
7
8
  class EvaluationClient(BaseClient):
8
9
 
9
- def __init__(self, api_key: str = None, base_url: str = None, alias: str = "default", eval_url: str = None):
10
- super().__init__(api_key, base_url, alias)
11
- eval_url = self.session.eval_url if not eval_url else None
10
+ def __init__(self, api_key: str = None, base_url: str = None, alias: str = None, eval_url: str = None, *,
11
+ access_token: str = None, project_id: str = None):
12
+ super().__init__(api_key, base_url, alias, access_token=access_token, project_id=project_id)
13
+ eval_url = self.session.eval_url if not eval_url else eval_url
12
14
  if not eval_url:
13
15
  raise MissingRequirementException("EVAL URL must be defined in order to use the Evaluation module.")
14
16
 
15
17
  self.session.eval_url = eval_url
16
- self.api_service = ApiService(base_url=self.session.eval_url, token=self.session.api_key)
18
+ token = self.session.access_token if self.session.access_token else self.session.api_key
19
+ self.api_service = ApiService(base_url=self.session.eval_url, token=token, project_id=self.session.project_id)
@@ -9,6 +9,8 @@ from pygeai.evaluation.dataset.endpoints import (
9
9
  CREATE_FILTER_VARIABLE, LIST_FILTER_VARIABLES, GET_FILTER_VARIABLE, UPDATE_FILTER_VARIABLE, DELETE_FILTER_VARIABLE,
10
10
  UPLOAD_DATASET_ROWS_FILE
11
11
  )
12
+ from pygeai.core.utils.validators import validate_status_code
13
+ from pygeai.core.utils.parsers import parse_json_response
12
14
 
13
15
 
14
16
  class EvaluationDatasetClient(EvaluationClient):
@@ -22,8 +24,8 @@ class EvaluationDatasetClient(EvaluationClient):
22
24
  response = self.api_service.get(
23
25
  endpoint=LIST_DATASETS
24
26
  )
25
- result = response.json()
26
- return result
27
+ validate_status_code(response)
28
+ return parse_json_response(response, "dataset operation")
27
29
 
28
30
  def create_dataset(
29
31
  self,
@@ -56,8 +58,8 @@ class EvaluationDatasetClient(EvaluationClient):
56
58
  endpoint=CREATE_DATASET,
57
59
  data=data
58
60
  )
59
- result = response.json()
60
- return result
61
+ validate_status_code(response)
62
+ return parse_json_response(response, "dataset operation")
61
63
 
62
64
  def create_dataset_from_file(self, file_path: str) -> dict:
63
65
  """
@@ -82,8 +84,8 @@ class EvaluationDatasetClient(EvaluationClient):
82
84
  headers=headers,
83
85
  file=file
84
86
  )
85
- result = response.json()
86
- return result
87
+ validate_status_code(response)
88
+ return parse_json_response(response, "upload dataset file")
87
89
  finally:
88
90
  if file:
89
91
  file.close()
@@ -100,8 +102,8 @@ class EvaluationDatasetClient(EvaluationClient):
100
102
  response = self.api_service.get(
101
103
  endpoint=endpoint
102
104
  )
103
- result = response.json()
104
- return result
105
+ validate_status_code(response)
106
+ return parse_json_response(response, "dataset operation")
105
107
 
106
108
  def update_dataset(
107
109
  self,
@@ -141,8 +143,8 @@ class EvaluationDatasetClient(EvaluationClient):
141
143
  endpoint=endpoint,
142
144
  data=data
143
145
  )
144
- result = response.json()
145
- return result
146
+ validate_status_code(response)
147
+ return parse_json_response(response, "dataset operation")
146
148
 
147
149
  def delete_dataset(self, dataset_id: str) -> dict:
148
150
  """
@@ -156,8 +158,8 @@ class EvaluationDatasetClient(EvaluationClient):
156
158
  response = self.api_service.delete(
157
159
  endpoint=endpoint
158
160
  )
159
- result = response.json()
160
- return result
161
+ validate_status_code(response)
162
+ return parse_json_response(response, "dataset operation")
161
163
 
162
164
  def create_dataset_row(self, dataset_id: str, row: dict) -> dict:
163
165
  """
@@ -173,8 +175,8 @@ class EvaluationDatasetClient(EvaluationClient):
173
175
  endpoint=endpoint,
174
176
  data=row
175
177
  )
176
- result = response.json()
177
- return result
178
+ validate_status_code(response)
179
+ return parse_json_response(response, "dataset operation")
178
180
 
179
181
  def list_dataset_rows(self, dataset_id: str) -> dict:
180
182
  """
@@ -188,8 +190,8 @@ class EvaluationDatasetClient(EvaluationClient):
188
190
  response = self.api_service.get(
189
191
  endpoint=endpoint
190
192
  )
191
- result = response.json()
192
- return result
193
+ validate_status_code(response)
194
+ return parse_json_response(response, "dataset operation")
193
195
 
194
196
  def get_dataset_row(self, dataset_id: str, dataset_row_id: str) -> dict:
195
197
  """
@@ -204,8 +206,8 @@ class EvaluationDatasetClient(EvaluationClient):
204
206
  response = self.api_service.get(
205
207
  endpoint=endpoint
206
208
  )
207
- result = response.json()
208
- return result
209
+ validate_status_code(response)
210
+ return parse_json_response(response, "dataset operation")
209
211
 
210
212
  def update_dataset_row(self, dataset_id: str, dataset_row_id: str, row: dict) -> dict:
211
213
  """
@@ -222,8 +224,8 @@ class EvaluationDatasetClient(EvaluationClient):
222
224
  endpoint=endpoint,
223
225
  data=row
224
226
  )
225
- result = response.json()
226
- return result
227
+ validate_status_code(response)
228
+ return parse_json_response(response, "dataset operation")
227
229
 
228
230
  def delete_dataset_row(self, dataset_id: str, dataset_row_id: str) -> dict:
229
231
  """
@@ -238,8 +240,8 @@ class EvaluationDatasetClient(EvaluationClient):
238
240
  response = self.api_service.delete(
239
241
  endpoint=endpoint
240
242
  )
241
- result = response.json()
242
- return result
243
+ validate_status_code(response)
244
+ return parse_json_response(response, "dataset operation")
243
245
 
244
246
  def create_expected_source(
245
247
  self,
@@ -270,8 +272,8 @@ class EvaluationDatasetClient(EvaluationClient):
270
272
  endpoint=endpoint,
271
273
  data=data
272
274
  )
273
- result = response.json()
274
- return result
275
+ validate_status_code(response)
276
+ return parse_json_response(response, "dataset operation")
275
277
 
276
278
  def list_expected_sources(self, dataset_id: str, dataset_row_id: str) -> dict:
277
279
  """
@@ -286,8 +288,8 @@ class EvaluationDatasetClient(EvaluationClient):
286
288
  response = self.api_service.get(
287
289
  endpoint=endpoint
288
290
  )
289
- result = response.json()
290
- return result
291
+ validate_status_code(response)
292
+ return parse_json_response(response, "dataset operation")
291
293
 
292
294
  def get_expected_source(self, dataset_id: str, dataset_row_id: str, expected_source_id: str) -> dict:
293
295
  """
@@ -303,8 +305,8 @@ class EvaluationDatasetClient(EvaluationClient):
303
305
  response = self.api_service.get(
304
306
  endpoint=endpoint
305
307
  )
306
- result = response.json()
307
- return result
308
+ validate_status_code(response)
309
+ return parse_json_response(response, "dataset operation")
308
310
 
309
311
  def update_expected_source(
310
312
  self,
@@ -337,8 +339,8 @@ class EvaluationDatasetClient(EvaluationClient):
337
339
  endpoint=endpoint,
338
340
  data=data
339
341
  )
340
- result = response.json()
341
- return result
342
+ validate_status_code(response)
343
+ return parse_json_response(response, "dataset operation")
342
344
 
343
345
  def delete_expected_source(self, dataset_id: str, dataset_row_id: str, expected_source_id: str) -> dict:
344
346
  """
@@ -354,8 +356,8 @@ class EvaluationDatasetClient(EvaluationClient):
354
356
  response = self.api_service.delete(
355
357
  endpoint=endpoint
356
358
  )
357
- result = response.json()
358
- return result
359
+ validate_status_code(response)
360
+ return parse_json_response(response, "dataset operation")
359
361
 
360
362
  def create_filter_variable(
361
363
  self,
@@ -389,8 +391,8 @@ class EvaluationDatasetClient(EvaluationClient):
389
391
  endpoint=endpoint,
390
392
  data=data
391
393
  )
392
- result = response.json()
393
- return result
394
+ validate_status_code(response)
395
+ return parse_json_response(response, "dataset operation")
394
396
 
395
397
  def list_filter_variables(self, dataset_id: str, dataset_row_id: str) -> dict:
396
398
  """
@@ -405,8 +407,8 @@ class EvaluationDatasetClient(EvaluationClient):
405
407
  response = self.api_service.get(
406
408
  endpoint=endpoint
407
409
  )
408
- result = response.json()
409
- return result
410
+ validate_status_code(response)
411
+ return parse_json_response(response, "dataset operation")
410
412
 
411
413
  def get_filter_variable(self, dataset_id: str, dataset_row_id: str, filter_variable_id: str) -> dict:
412
414
  """
@@ -422,8 +424,8 @@ class EvaluationDatasetClient(EvaluationClient):
422
424
  response = self.api_service.get(
423
425
  endpoint=endpoint
424
426
  )
425
- result = response.json()
426
- return result
427
+ validate_status_code(response)
428
+ return parse_json_response(response, "dataset operation")
427
429
 
428
430
  def update_filter_variable(
429
431
  self,
@@ -459,8 +461,8 @@ class EvaluationDatasetClient(EvaluationClient):
459
461
  endpoint=endpoint,
460
462
  data=data
461
463
  )
462
- result = response.json()
463
- return result
464
+ validate_status_code(response)
465
+ return parse_json_response(response, "dataset operation")
464
466
 
465
467
  def delete_filter_variable(self, dataset_id: str, dataset_row_id: str, filter_variable_id: str) -> dict:
466
468
  """
@@ -476,8 +478,8 @@ class EvaluationDatasetClient(EvaluationClient):
476
478
  response = self.api_service.delete(
477
479
  endpoint=endpoint
478
480
  )
479
- result = response.json()
480
- return result
481
+ validate_status_code(response)
482
+ return parse_json_response(response, "dataset operation")
481
483
 
482
484
  def upload_dataset_rows_file(self, dataset_id: str, file_path: str) -> dict:
483
485
  """
@@ -504,8 +506,8 @@ class EvaluationDatasetClient(EvaluationClient):
504
506
  headers=headers,
505
507
  file=file
506
508
  )
507
- result = response.json()
508
- return result
509
+ validate_status_code(response)
510
+ return parse_json_response(response, "upload dataset rows file")
509
511
  finally:
510
512
  if file:
511
513
  file.close()
@@ -5,6 +5,8 @@ from pygeai.evaluation.plan.endpoints import LIST_EVALUATION_PLANS, CREATE_EVALU
5
5
  UPDATE_EVALUATION_PLAN, DELETE_EVALUATION_PLAN, LIST_EVALUATION_PLAN_SYSTEM_METRICS, \
6
6
  ADD_EVALUATION_PLAN_SYSTEM_METRIC, GET_EVALUATION_PLAN_SYSTEM_METRIC, UPDATE_EVALUATION_PLAN_SYSTEM_METRIC, \
7
7
  DELETE_EVALUATION_PLAN_SYSTEM_METRIC, LIST_SYSTEM_METRICS, GET_SYSTEM_METRIC, EXECUTE_EVALUATION_PLAN
8
+ from pygeai.core.utils.validators import validate_status_code
9
+ from pygeai.core.utils.parsers import parse_json_response
8
10
 
9
11
 
10
12
  class EvaluationPlanClient(EvaluationClient):
@@ -18,8 +20,8 @@ class EvaluationPlanClient(EvaluationClient):
18
20
  response = self.api_service.get(
19
21
  endpoint=LIST_EVALUATION_PLANS
20
22
  )
21
- result = json.loads(response.content)
22
- return result
23
+ validate_status_code(response)
24
+ return parse_json_response(response, "evaluation plan operation")
23
25
 
24
26
  def create_evaluation_plan(
25
27
  self,
@@ -68,8 +70,8 @@ class EvaluationPlanClient(EvaluationClient):
68
70
  endpoint=CREATE_EVALUATION_PLAN,
69
71
  data=data
70
72
  )
71
- result = json.loads(response.content)
72
- return result
73
+ validate_status_code(response)
74
+ return parse_json_response(response, "evaluation plan operation")
73
75
 
74
76
  def get_evaluation_plan(self, evaluation_plan_id: str) -> dict:
75
77
  """
@@ -83,8 +85,8 @@ class EvaluationPlanClient(EvaluationClient):
83
85
  response = self.api_service.get(
84
86
  endpoint=endpoint
85
87
  )
86
- result = json.loads(response.content)
87
- return result
88
+ validate_status_code(response)
89
+ return parse_json_response(response, "evaluation plan operation")
88
90
 
89
91
  def update_evaluation_plan(
90
92
  self,
@@ -139,8 +141,8 @@ class EvaluationPlanClient(EvaluationClient):
139
141
  endpoint=endpoint,
140
142
  data=data
141
143
  )
142
- result = json.loads(response.content)
143
- return result
144
+ validate_status_code(response)
145
+ return parse_json_response(response, "evaluation plan operation")
144
146
 
145
147
  def delete_evaluation_plan(self, evaluation_plan_id: str) -> dict:
146
148
  """
@@ -154,8 +156,8 @@ class EvaluationPlanClient(EvaluationClient):
154
156
  response = self.api_service.delete(
155
157
  endpoint=endpoint
156
158
  )
157
- result = json.loads(response.content)
158
- return result
159
+ validate_status_code(response)
160
+ return parse_json_response(response, "evaluation plan operation")
159
161
 
160
162
  def list_evaluation_plan_system_metrics(self, evaluation_plan_id: str) -> dict:
161
163
  """
@@ -169,8 +171,8 @@ class EvaluationPlanClient(EvaluationClient):
169
171
  response = self.api_service.get(
170
172
  endpoint=endpoint
171
173
  )
172
- result = json.loads(response.content)
173
- return result
174
+ validate_status_code(response)
175
+ return parse_json_response(response, "evaluation plan operation")
174
176
 
175
177
  def add_evaluation_plan_system_metric(
176
178
  self,
@@ -196,8 +198,8 @@ class EvaluationPlanClient(EvaluationClient):
196
198
  endpoint=endpoint,
197
199
  data=data
198
200
  )
199
- result = json.loads(response.content)
200
- return result
201
+ validate_status_code(response)
202
+ return parse_json_response(response, "evaluation plan operation")
201
203
 
202
204
  def get_evaluation_plan_system_metric(self, evaluation_plan_id: str, system_metric_id: str) -> dict:
203
205
  """
@@ -212,8 +214,8 @@ class EvaluationPlanClient(EvaluationClient):
212
214
  response = self.api_service.get(
213
215
  endpoint=endpoint
214
216
  )
215
- result = json.loads(response.content)
216
- return result
217
+ validate_status_code(response)
218
+ return parse_json_response(response, "evaluation plan operation")
217
219
 
218
220
  def update_evaluation_plan_system_metric(
219
221
  self,
@@ -238,8 +240,8 @@ class EvaluationPlanClient(EvaluationClient):
238
240
  endpoint=endpoint,
239
241
  data=data
240
242
  )
241
- result = json.loads(response.content)
242
- return result
243
+ validate_status_code(response)
244
+ return parse_json_response(response, "evaluation plan operation")
243
245
 
244
246
  def delete_evaluation_plan_system_metric(self, evaluation_plan_id: str, system_metric_id: str) -> dict:
245
247
  """
@@ -254,8 +256,8 @@ class EvaluationPlanClient(EvaluationClient):
254
256
  response = self.api_service.delete(
255
257
  endpoint=endpoint
256
258
  )
257
- result = json.loads(response.content)
258
- return result
259
+ validate_status_code(response)
260
+ return parse_json_response(response, "evaluation plan operation")
259
261
 
260
262
  def list_system_metrics(self) -> dict:
261
263
  """
@@ -266,8 +268,8 @@ class EvaluationPlanClient(EvaluationClient):
266
268
  response = self.api_service.get(
267
269
  endpoint=LIST_SYSTEM_METRICS
268
270
  )
269
- result = json.loads(response.content)
270
- return result
271
+ validate_status_code(response)
272
+ return parse_json_response(response, "evaluation plan operation")
271
273
 
272
274
  def get_system_metric(self, system_metric_id: str) -> dict:
273
275
  """
@@ -281,8 +283,8 @@ class EvaluationPlanClient(EvaluationClient):
281
283
  response = self.api_service.get(
282
284
  endpoint=endpoint
283
285
  )
284
- result = json.loads(response.content)
285
- return result
286
+ validate_status_code(response)
287
+ return parse_json_response(response, "evaluation plan operation")
286
288
 
287
289
  def execute_evaluation_plan(self, evaluation_plan_id: str) -> dict:
288
290
  """
@@ -296,5 +298,5 @@ class EvaluationPlanClient(EvaluationClient):
296
298
  response = self.api_service.post(
297
299
  endpoint=endpoint,
298
300
  )
299
- result = json.loads(response.content)
300
- return result
301
+ validate_status_code(response)
302
+ return parse_json_response(response, "evaluation plan operation")
@@ -2,9 +2,27 @@ import json
2
2
 
3
3
  from pygeai.evaluation.clients import EvaluationClient
4
4
  from pygeai.evaluation.result.endpoints import LIST_EVALUATION_RESULTS, GET_EVALUATION_RESULT
5
+ from pygeai.core.utils.validators import validate_status_code
6
+ from pygeai.core.utils.parsers import parse_json_response
5
7
 
6
8
 
7
9
  class EvaluationResultClient(EvaluationClient):
10
+ """
11
+ Client for interacting with the Evaluation Result API.
12
+
13
+ This API is read-only and retrieves results from executed evaluation plans.
14
+
15
+ .. warning::
16
+ The API documentation at https://docs.globant.ai/en/wiki?856,Evaluation+Result+API
17
+ contains several typos in field names. The actual API responses use these typo'd names:
18
+
19
+ - evaluationResultAssitantRevision (missing 's' in Assistant)
20
+ - evaluationResultChunckCount (should be Chunk, not Chunck)
21
+ - evaluationResultChunckSize (should be Chunk, not Chunck)
22
+ - evaluationResultaMaxTokens (lowercase 'a' should be uppercase 'M', no 'a')
23
+
24
+ Our implementation returns these fields as-is from the API.
25
+ """
8
26
 
9
27
  def list_evaluation_results(self, evaluation_plan_id: str) -> dict:
10
28
  """
@@ -13,13 +31,20 @@ class EvaluationResultClient(EvaluationClient):
13
31
  :param evaluation_plan_id: str - The ID of the evaluation plan.
14
32
 
15
33
  :return: dict - API response containing a list of evaluation results.
34
+
35
+ .. note::
36
+ Response contains evaluation result objects with fields including:
37
+ dataSetId, evaluationPlanId, evaluationResultId, evaluationResultStatus,
38
+ evaluationResultCost, evaluationResultDuration, and others.
39
+
40
+ See class documentation for field name typos in the API.
16
41
  """
17
42
  endpoint = LIST_EVALUATION_RESULTS.format(evaluationPlanId=evaluation_plan_id)
18
43
  response = self.api_service.get(
19
44
  endpoint=endpoint
20
45
  )
21
- result = json.loads(response.content)
22
- return result
46
+ validate_status_code(response)
47
+ return parse_json_response(response, "evaluation plan operation")
23
48
 
24
49
  def get_evaluation_result(self, evaluation_result_id: str) -> dict:
25
50
  """
@@ -27,11 +52,19 @@ class EvaluationResultClient(EvaluationClient):
27
52
 
28
53
  :param evaluation_result_id: str - The ID of the evaluation result.
29
54
 
30
- :return: dict - The evaluation result metadata as a dictionary.
55
+ :return: dict - The evaluation result metadata as a dictionary, including row-level data.
56
+
57
+ .. note::
58
+ Response includes all fields from list_evaluation_results plus a 'rows' array
59
+ containing detailed row-level evaluation data with fields like:
60
+ dataSetRowId, evaluationResultRowStatus, evaluationResultRowOutput,
61
+ evaluationResultRowCost, etc.
62
+
63
+ See class documentation for field name typos in the API.
31
64
  """
32
65
  endpoint = GET_EVALUATION_RESULT.format(evaluationResultId=evaluation_result_id)
33
66
  response = self.api_service.get(
34
67
  endpoint=endpoint
35
68
  )
36
- result = json.loads(response.content)
37
- return result
69
+ validate_status_code(response)
70
+ return parse_json_response(response, "evaluation plan operation")
pygeai/gam/clients.py CHANGED
@@ -1,13 +1,51 @@
1
- from json import JSONDecodeError
2
1
 
2
+ from pygeai import logger
3
3
  from pygeai.core.base.clients import BaseClient
4
- from pygeai.core.common.exceptions import MissingRequirementException
5
- from pygeai.core.services.rest import ApiService
6
- from pygeai.gam.endpoints import GET_ACCESS_TOKEN_V2, GET_USER_INFO_V2
4
+ from pygeai.core.common.exceptions import MissingRequirementException, InvalidAPIResponseException
5
+ from pygeai.core.utils.validators import validate_status_code
6
+ from pygeai.core.utils.parsers import parse_json_response
7
+ from pygeai.gam.endpoints import GET_ACCESS_TOKEN_V2, GET_USER_INFO_V2, IDP_SIGNIN_V1
7
8
 
8
9
 
9
10
  class GAMClient(BaseClient):
10
11
 
12
+ def generate_signing_url(
13
+ self,
14
+ client_id: str = None,
15
+ redirect_uri: str = None,
16
+ scope: str = "gam_user_data",
17
+ state: str = None,
18
+ response_type: str = "code"
19
+ ):
20
+ """
21
+ Generates the URL for the GAM OAuth 2.0 signin endpoint to initiate user authentication.
22
+ This method does not perform the signin itself but provides the URL for redirection in a browser-based flow.
23
+
24
+ :param client_id: str - Client ID of the application. Required.
25
+ :param redirect_uri: str - Callback URL configured in the application. Required.
26
+ :param scope: str - Scope of the user account to access (e.g., "gam_user_data").
27
+ Defaults to "gam_user_data".
28
+ :param state: str - Random string to store the status before the request. Required.
29
+ :param response_type: str - Response type for the signin request. Defaults to "code".
30
+ :return: str - The URL to redirect to for user authentication in a browser.
31
+ :raises MissingRequirementException: If required parameters are missing.
32
+ """
33
+ if not all([client_id, redirect_uri, state]):
34
+ raise MissingRequirementException("client_id, redirect_uri, and state are required.")
35
+
36
+ params = {
37
+ "response_type": response_type,
38
+ "client_id": client_id,
39
+ "redirect_uri": redirect_uri,
40
+ "state": state
41
+ }
42
+ if scope:
43
+ params["scope"] = scope
44
+
45
+ endpoint = f"{self.api_service.base_url}{IDP_SIGNIN_V1}"
46
+ redirect_url = f"{endpoint}?{'&'.join(f'{k}={v}' for k, v in params.items())}"
47
+ return redirect_url
48
+
11
49
  def get_access_token(
12
50
  self,
13
51
  client_id: str = None,
@@ -67,12 +105,8 @@ class GAMClient(BaseClient):
67
105
  headers=headers,
68
106
  form=True
69
107
  )
70
- try:
71
- result = response.json()
72
- except JSONDecodeError as e:
73
- result = response.text
74
-
75
- return result
108
+ validate_status_code(response)
109
+ return parse_json_response(response, "get access token")
76
110
 
77
111
  def get_user_info(
78
112
  self,
@@ -93,12 +127,8 @@ class GAMClient(BaseClient):
93
127
  endpoint=GET_USER_INFO_V2,
94
128
  headers=headers
95
129
  )
96
- try:
97
- result = response.json()
98
- except JSONDecodeError as e:
99
- result = response.text
100
-
101
- return result
130
+ validate_status_code(response)
131
+ return parse_json_response(response, "get user info")
102
132
 
103
133
  def refresh_access_token(
104
134
  self,
@@ -136,21 +166,13 @@ class GAMClient(BaseClient):
136
166
  headers=headers,
137
167
  form=True
138
168
  )
139
- try:
140
- result = response.json()
141
- except JSONDecodeError as e:
142
- result = response.text
143
-
144
- return result
169
+ validate_status_code(response)
170
+ return parse_json_response(response, "refresh access token")
145
171
 
146
172
  def get_authentication_types(self):
147
173
  response = self.api_service.get(
148
174
  endpoint=GET_ACCESS_TOKEN_V2,
149
175
  params={},
150
176
  )
151
- try:
152
- result = response.json()
153
- except JSONDecodeError as e:
154
- result = response.text
155
-
156
- return result
177
+ validate_status_code(response)
178
+ return parse_json_response(response, "get authentication types")
pygeai/gam/endpoints.py CHANGED
@@ -1,3 +1,4 @@
1
1
  GET_ACCESS_TOKEN_V2 = "oauth/gam/v2.0/access_token" # POST -> Sends the user credentials to get a new Token
2
2
  GET_USER_INFO_V2 = "oauth/gam/v2.0/userinfo" # GET -> Send the access_token obtained in the previous request and get the user info depending on the scopes you have indicated.
3
- GET_AUTHENTICATION_TYPES_V1 = "v1/gam/authentication-types" # GET -> Get authentication types
3
+ GET_AUTHENTICATION_TYPES_V1 = "v1/gam/authentication-types" # GET -> Get authentication types
4
+ IDP_SIGNIN_V1 = "/oauth/gam/signin" # NO METHOD -> Just generates URL for authentication in browser
File without changes
@@ -0,0 +1,24 @@
1
+
2
+ from pygeai import logger
3
+ from pygeai.core.base.clients import BaseClient
4
+ from pygeai.core.common.exceptions import InvalidAPIResponseException
5
+ from pygeai.core.utils.validators import validate_status_code
6
+ from pygeai.core.utils.parsers import parse_json_response
7
+ from pygeai.health.endpoints import STATUS_CHECK_V1
8
+
9
+
10
+ class HealthClient(BaseClient):
11
+
12
+ def check_api_status(self) -> dict:
13
+ """
14
+ Checks the status of the API.
15
+
16
+ :return: dict - The API response as a JSON object containing details about the API status.
17
+ If the response cannot be parsed as JSON, returns the raw response text.
18
+ """
19
+ endpoint = STATUS_CHECK_V1
20
+ response = self.api_service.get(
21
+ endpoint=endpoint
22
+ )
23
+ validate_status_code(response)
24
+ return parse_json_response(response, "check API status")
@@ -0,0 +1 @@
1
+ STATUS_CHECK_V1 = "/v1/system/status" # GET -> Health Check SAIA APIs