pygeai 0.1.6__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.
- pygeai/__init__.py +11 -2
- pygeai/_docs/Makefile +20 -0
- pygeai/_docs/make.bat +35 -0
- pygeai/_docs/source/conf.py +117 -0
- pygeai/_docs/source/content/ai_lab/cli.rst +747 -0
- pygeai/_docs/source/content/ai_lab/models.rst +1734 -0
- pygeai/_docs/source/content/ai_lab/runner.rst +253 -0
- pygeai/_docs/source/content/ai_lab/spec.rst +431 -0
- pygeai/_docs/source/content/ai_lab/usage.rst +1011 -0
- pygeai/_docs/source/content/ai_lab.rst +102 -0
- pygeai/_docs/source/content/analytics.rst +598 -0
- pygeai/_docs/source/content/api_reference/admin.rst +161 -0
- pygeai/_docs/source/content/api_reference/assistant.rst +326 -0
- pygeai/_docs/source/content/api_reference/auth.rst +379 -0
- pygeai/_docs/source/content/api_reference/chat.rst +754 -0
- pygeai/_docs/source/content/api_reference/embeddings.rst +154 -0
- pygeai/_docs/source/content/api_reference/evaluation.rst +590 -0
- pygeai/_docs/source/content/api_reference/feedback.rst +237 -0
- pygeai/_docs/source/content/api_reference/files.rst +592 -0
- pygeai/_docs/source/content/api_reference/gam.rst +401 -0
- pygeai/_docs/source/content/api_reference/health.rst +58 -0
- pygeai/_docs/source/content/api_reference/project.rst +738 -0
- pygeai/_docs/source/content/api_reference/proxy.rst +318 -0
- pygeai/_docs/source/content/api_reference/rag.rst +710 -0
- pygeai/_docs/source/content/api_reference/rerank.rst +94 -0
- pygeai/_docs/source/content/api_reference/secrets.rst +495 -0
- pygeai/_docs/source/content/api_reference/usage_limits.rst +390 -0
- pygeai/_docs/source/content/api_reference.rst +58 -0
- pygeai/_docs/source/content/authentication.rst +295 -0
- pygeai/_docs/source/content/chat_gui.rst +121 -0
- pygeai/_docs/source/content/cli.rst +203 -0
- pygeai/_docs/source/content/debugger.rst +651 -0
- pygeai/_docs/source/content/intro.rst +67 -0
- pygeai/_docs/source/content/migration.rst +929 -0
- pygeai/_docs/source/content/modules.rst +7 -0
- pygeai/_docs/source/content/quickstart.rst +143 -0
- pygeai/_docs/source/content/samples.rst +394 -0
- pygeai/_docs/source/index.rst +75 -0
- pygeai/_docs/source/modules.rst +7 -0
- pygeai/_docs/source/pygeai.admin.rst +29 -0
- pygeai/_docs/source/pygeai.analytics.rst +53 -0
- pygeai/_docs/source/pygeai.assistant.data.rst +21 -0
- pygeai/_docs/source/pygeai.assistant.data_analyst.rst +29 -0
- pygeai/_docs/source/pygeai.assistant.rag.rst +53 -0
- pygeai/_docs/source/pygeai.assistant.rst +55 -0
- pygeai/_docs/source/pygeai.auth.rst +29 -0
- pygeai/_docs/source/pygeai.chat.rst +69 -0
- pygeai/_docs/source/pygeai.cli.commands.flows.rst +10 -0
- pygeai/_docs/source/pygeai.cli.commands.lab.rst +53 -0
- pygeai/_docs/source/pygeai.cli.commands.rst +222 -0
- pygeai/_docs/source/pygeai.cli.rst +62 -0
- pygeai/_docs/source/pygeai.cli.texts.rst +21 -0
- pygeai/_docs/source/pygeai.core.base.rst +53 -0
- pygeai/_docs/source/pygeai.core.common.rst +37 -0
- pygeai/_docs/source/pygeai.core.embeddings.rst +61 -0
- pygeai/_docs/source/pygeai.core.feedback.rst +37 -0
- pygeai/_docs/source/pygeai.core.files.rst +61 -0
- pygeai/_docs/source/pygeai.core.llm.rst +29 -0
- pygeai/_docs/source/pygeai.core.plugins.rst +37 -0
- pygeai/_docs/source/pygeai.core.rerank.rst +53 -0
- pygeai/_docs/source/pygeai.core.rst +63 -0
- pygeai/_docs/source/pygeai.core.secrets.rst +29 -0
- pygeai/_docs/source/pygeai.core.services.llm.rst +29 -0
- pygeai/_docs/source/pygeai.core.services.rst +37 -0
- pygeai/_docs/source/pygeai.core.utils.rst +37 -0
- pygeai/_docs/source/pygeai.dbg.rst +21 -0
- pygeai/_docs/source/pygeai.evaluation.dataset.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.plan.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.result.rst +29 -0
- pygeai/_docs/source/pygeai.evaluation.rst +31 -0
- pygeai/_docs/source/pygeai.flows.rst +29 -0
- pygeai/_docs/source/pygeai.gam.rst +29 -0
- pygeai/_docs/source/pygeai.health.rst +29 -0
- pygeai/_docs/source/pygeai.lab.agents.rst +37 -0
- pygeai/_docs/source/pygeai.lab.processes.rst +37 -0
- pygeai/_docs/source/pygeai.lab.rst +65 -0
- pygeai/_docs/source/pygeai.lab.spec.rst +29 -0
- pygeai/_docs/source/pygeai.lab.strategies.rst +37 -0
- pygeai/_docs/source/pygeai.lab.tools.rst +37 -0
- pygeai/_docs/source/pygeai.man.man1.rst +10 -0
- pygeai/_docs/source/pygeai.man.rst +18 -0
- pygeai/_docs/source/pygeai.migration.rst +29 -0
- pygeai/_docs/source/pygeai.organization.limits.rst +45 -0
- pygeai/_docs/source/pygeai.organization.rst +61 -0
- pygeai/_docs/source/pygeai.proxy.rst +53 -0
- pygeai/_docs/source/pygeai.rst +35 -0
- pygeai/_docs/source/pygeai.tests.admin.rst +21 -0
- pygeai/_docs/source/pygeai.tests.analytics.rst +45 -0
- pygeai/_docs/source/pygeai.tests.assistants.rag.rst +37 -0
- pygeai/_docs/source/pygeai.tests.assistants.rst +45 -0
- pygeai/_docs/source/pygeai.tests.auth.rst +29 -0
- pygeai/_docs/source/pygeai.tests.chat.rst +45 -0
- pygeai/_docs/source/pygeai.tests.cli.commands.lab.rst +37 -0
- pygeai/_docs/source/pygeai.tests.cli.commands.rst +165 -0
- pygeai/_docs/source/pygeai.tests.cli.docker.rst +10 -0
- pygeai/_docs/source/pygeai.tests.cli.rst +46 -0
- pygeai/_docs/source/pygeai.tests.core.base.data.rst +29 -0
- pygeai/_docs/source/pygeai.tests.core.base.rst +45 -0
- pygeai/_docs/source/pygeai.tests.core.common.data.rst +10 -0
- pygeai/_docs/source/pygeai.tests.core.common.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.embeddings.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.feedback.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.files.rst +53 -0
- pygeai/_docs/source/pygeai.tests.core.llm.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.plugins.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.rerank.rst +37 -0
- pygeai/_docs/source/pygeai.tests.core.rst +39 -0
- pygeai/_docs/source/pygeai.tests.core.secrets.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.services.rst +21 -0
- pygeai/_docs/source/pygeai.tests.core.utils.rst +21 -0
- pygeai/_docs/source/pygeai.tests.dbg.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.dataset.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.plan.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.result.rst +21 -0
- pygeai/_docs/source/pygeai.tests.evaluation.rst +20 -0
- pygeai/_docs/source/pygeai.tests.gam.rst +21 -0
- pygeai/_docs/source/pygeai.tests.health.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.assistants.rag.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.assistants.rst +18 -0
- pygeai/_docs/source/pygeai.tests.integration.chat.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.agents.rst +69 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.processes.rst +77 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.reasoning_strategies.rst +37 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.rst +21 -0
- pygeai/_docs/source/pygeai.tests.integration.lab.tools.rst +77 -0
- pygeai/_docs/source/pygeai.tests.integration.rst +20 -0
- pygeai/_docs/source/pygeai.tests.lab.agents.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.processes.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.rst +49 -0
- pygeai/_docs/source/pygeai.tests.lab.spec.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.strategies.rst +29 -0
- pygeai/_docs/source/pygeai.tests.lab.tools.rst +29 -0
- pygeai/_docs/source/pygeai.tests.migration.rst +29 -0
- pygeai/_docs/source/pygeai.tests.organization.limits.rst +29 -0
- pygeai/_docs/source/pygeai.tests.organization.rst +53 -0
- pygeai/_docs/source/pygeai.tests.proxy.rst +61 -0
- pygeai/_docs/source/pygeai.tests.rst +33 -0
- pygeai/admin/clients.py +14 -11
- pygeai/admin/endpoints.py +2 -2
- pygeai/analytics/clients.py +505 -0
- pygeai/analytics/endpoints.py +35 -0
- pygeai/analytics/managers.py +606 -0
- pygeai/analytics/mappers.py +207 -0
- pygeai/analytics/responses.py +240 -0
- pygeai/assistant/clients.py +48 -57
- pygeai/assistant/data/__init__.py +0 -0
- pygeai/assistant/data/clients.py +15 -0
- pygeai/assistant/data_analyst/__init__.py +0 -0
- pygeai/assistant/data_analyst/clients.py +75 -0
- pygeai/assistant/data_analyst/endpoints.py +2 -0
- pygeai/assistant/endpoints.py +0 -2
- pygeai/assistant/managers.py +738 -0
- pygeai/assistant/mappers.py +153 -0
- pygeai/assistant/rag/clients.py +132 -21
- pygeai/assistant/rag/mappers.py +228 -0
- pygeai/assistant/rag/models.py +396 -0
- pygeai/assistant/rag/responses.py +10 -0
- pygeai/auth/__init__.py +0 -0
- pygeai/auth/clients.py +129 -0
- pygeai/auth/endpoints.py +6 -0
- pygeai/chat/clients.py +406 -31
- pygeai/chat/endpoints.py +3 -0
- pygeai/chat/iris.py +17 -0
- pygeai/chat/managers.py +64 -0
- pygeai/chat/session.py +38 -0
- pygeai/chat/settings.py +6 -0
- pygeai/chat/ui.py +678 -0
- pygeai/cli/__init__.py +0 -1
- pygeai/cli/commands/admin.py +9 -12
- pygeai/cli/commands/analytics.py +533 -0
- pygeai/cli/commands/assistant.py +11 -11
- pygeai/cli/commands/auth.py +299 -0
- pygeai/cli/commands/base.py +201 -7
- pygeai/cli/commands/chat.py +875 -14
- pygeai/cli/commands/common.py +30 -26
- pygeai/cli/commands/configuration.py +84 -9
- pygeai/cli/commands/docs.py +105 -0
- pygeai/cli/commands/embeddings.py +187 -0
- pygeai/cli/commands/evaluation.py +2069 -0
- pygeai/cli/commands/feedback.py +93 -0
- pygeai/cli/commands/files.py +312 -0
- pygeai/cli/commands/flows/__init__.py +0 -0
- pygeai/cli/commands/gam.py +349 -0
- pygeai/cli/commands/lab/__init__.py +0 -0
- pygeai/cli/commands/lab/ai_lab.py +4110 -0
- pygeai/cli/commands/lab/common.py +135 -0
- pygeai/cli/commands/lab/options.py +8 -0
- pygeai/cli/commands/lab/spec.py +273 -0
- pygeai/cli/commands/lab/utils.py +13 -0
- pygeai/cli/commands/llm.py +164 -0
- pygeai/cli/commands/migrate.py +1198 -0
- pygeai/cli/commands/options.py +86 -0
- pygeai/cli/commands/organization.py +560 -98
- pygeai/cli/commands/rag.py +306 -10
- pygeai/cli/commands/rerank.py +108 -0
- pygeai/cli/commands/secrets.py +357 -0
- pygeai/cli/commands/usage_limits.py +583 -0
- pygeai/cli/commands/validators.py +209 -0
- pygeai/cli/commands/version.py +44 -0
- pygeai/cli/error_handler.py +151 -0
- pygeai/cli/geai.py +171 -30
- pygeai/cli/geai_proxy.py +318 -0
- pygeai/cli/install_man.py +107 -0
- pygeai/cli/parsers.py +78 -25
- pygeai/cli/texts/help.py +712 -55
- pygeai/core/__init__.py +9 -1
- pygeai/core/base/clients.py +61 -10
- pygeai/core/base/mappers.py +208 -30
- pygeai/core/base/models.py +8 -308
- pygeai/core/base/responses.py +18 -1
- pygeai/core/base/session.py +110 -17
- pygeai/core/common/config.py +98 -16
- pygeai/core/common/decorators.py +44 -0
- pygeai/core/common/exceptions.py +104 -4
- pygeai/core/embeddings/__init__.py +19 -0
- pygeai/core/embeddings/clients.py +93 -0
- pygeai/core/embeddings/endpoints.py +1 -0
- pygeai/core/embeddings/managers.py +62 -0
- pygeai/core/embeddings/mappers.py +52 -0
- pygeai/core/embeddings/models.py +14 -0
- pygeai/core/embeddings/responses.py +31 -0
- pygeai/core/feedback/__init__.py +0 -0
- pygeai/core/feedback/clients.py +50 -0
- pygeai/core/feedback/endpoints.py +1 -0
- pygeai/core/feedback/models.py +10 -0
- pygeai/core/files/__init__.py +0 -0
- pygeai/core/files/clients.py +156 -0
- pygeai/core/files/endpoints.py +5 -0
- pygeai/core/files/managers.py +224 -0
- pygeai/core/files/mappers.py +44 -0
- pygeai/core/files/models.py +24 -0
- pygeai/core/files/responses.py +19 -0
- pygeai/core/handlers.py +32 -0
- pygeai/core/llm/__init__.py +0 -0
- pygeai/core/llm/clients.py +53 -0
- pygeai/core/llm/endpoints.py +4 -0
- pygeai/core/models.py +799 -0
- pygeai/core/plugins/__init__.py +0 -0
- pygeai/core/plugins/clients.py +32 -0
- pygeai/core/plugins/endpoints.py +1 -0
- pygeai/core/plugins/models.py +86 -0
- pygeai/core/rerank/__init__.py +0 -0
- pygeai/core/rerank/clients.py +35 -0
- pygeai/core/rerank/endpoints.py +1 -0
- pygeai/core/rerank/managers.py +47 -0
- pygeai/core/rerank/mappers.py +23 -0
- pygeai/core/rerank/models.py +27 -0
- pygeai/core/responses.py +104 -0
- pygeai/core/secrets/__init__.py +0 -0
- pygeai/core/secrets/clients.py +212 -0
- pygeai/core/secrets/endpoints.py +7 -0
- pygeai/core/services/llm/__init__.py +0 -0
- pygeai/core/services/llm/model.py +186 -0
- pygeai/core/services/llm/providers.py +15 -0
- pygeai/core/services/response.py +18 -0
- pygeai/core/services/rest.py +311 -89
- pygeai/core/utils/__init__.py +0 -0
- pygeai/core/utils/console.py +83 -0
- pygeai/core/utils/parsers.py +32 -0
- pygeai/core/utils/validators.py +10 -0
- pygeai/dbg/__init__.py +3 -0
- pygeai/dbg/debugger.py +870 -0
- pygeai/evaluation/__init__.py +0 -0
- pygeai/evaluation/clients.py +19 -0
- pygeai/evaluation/dataset/__init__.py +0 -0
- pygeai/evaluation/dataset/clients.py +514 -0
- pygeai/evaluation/dataset/endpoints.py +26 -0
- pygeai/evaluation/plan/__init__.py +0 -0
- pygeai/evaluation/plan/clients.py +302 -0
- pygeai/evaluation/plan/endpoints.py +16 -0
- pygeai/evaluation/result/__init__.py +0 -0
- pygeai/evaluation/result/clients.py +70 -0
- pygeai/evaluation/result/endpoints.py +2 -0
- pygeai/flows/__init__.py +0 -0
- pygeai/flows/endpoints.py +362 -0
- pygeai/flows/models.py +1304 -0
- pygeai/gam/__init__.py +0 -0
- pygeai/gam/clients.py +178 -0
- pygeai/gam/endpoints.py +4 -0
- pygeai/health/__init__.py +0 -0
- pygeai/health/clients.py +24 -0
- pygeai/health/endpoints.py +1 -0
- pygeai/lab/__init__.py +0 -0
- pygeai/lab/agents/__init__.py +0 -0
- pygeai/lab/agents/clients.py +426 -0
- pygeai/lab/agents/endpoints.py +12 -0
- pygeai/lab/agents/mappers.py +319 -0
- pygeai/lab/clients.py +24 -0
- pygeai/lab/constants.py +3 -0
- pygeai/lab/managers.py +1558 -0
- pygeai/lab/models.py +1719 -0
- pygeai/lab/processes/__init__.py +0 -0
- pygeai/lab/processes/clients.py +1051 -0
- pygeai/lab/processes/endpoints.py +26 -0
- pygeai/lab/processes/mappers.py +395 -0
- pygeai/lab/runners.py +90 -0
- pygeai/lab/spec/__init__.py +0 -0
- pygeai/lab/spec/loader.py +24 -0
- pygeai/lab/spec/parsers.py +39 -0
- pygeai/lab/strategies/__init__.py +0 -0
- pygeai/lab/strategies/clients.py +212 -0
- pygeai/lab/strategies/endpoints.py +5 -0
- pygeai/lab/strategies/mappers.py +58 -0
- pygeai/lab/tools/__init__.py +0 -0
- pygeai/lab/tools/clients.py +465 -0
- pygeai/lab/tools/endpoints.py +13 -0
- pygeai/lab/tools/mappers.py +131 -0
- pygeai/man/__init__.py +1 -0
- pygeai/man/man1/__init__.py +1 -0
- pygeai/man/man1/geai-proxy.1 +246 -0
- pygeai/man/man1/geai.1 +2615 -0
- pygeai/migration/__init__.py +33 -0
- pygeai/migration/strategies.py +603 -0
- pygeai/migration/tools.py +180 -0
- pygeai/organization/clients.py +246 -18
- pygeai/organization/endpoints.py +17 -8
- pygeai/organization/limits/__init__.py +0 -0
- pygeai/organization/limits/clients.py +281 -0
- pygeai/organization/limits/endpoints.py +15 -0
- pygeai/organization/limits/managers.py +331 -0
- pygeai/organization/limits/mappers.py +21 -0
- pygeai/organization/managers.py +537 -0
- pygeai/organization/mappers.py +111 -46
- pygeai/organization/responses.py +61 -11
- pygeai/proxy/__init__.py +0 -0
- pygeai/proxy/clients.py +216 -0
- pygeai/proxy/config.py +128 -0
- pygeai/proxy/managers.py +232 -0
- pygeai/proxy/servers.py +304 -0
- pygeai/proxy/tool.py +69 -0
- pygeai/tests/admin/__init__.py +0 -0
- pygeai/tests/admin/test_clients.py +148 -0
- pygeai/tests/analytics/__init__.py +0 -0
- pygeai/tests/analytics/test_clients.py +86 -0
- pygeai/tests/analytics/test_managers.py +94 -0
- pygeai/tests/analytics/test_mappers.py +84 -0
- pygeai/tests/analytics/test_responses.py +73 -0
- pygeai/tests/assistants/rag/__init__.py +0 -0
- pygeai/tests/assistants/rag/test_clients.py +346 -0
- pygeai/tests/assistants/rag/test_mappers.py +189 -0
- pygeai/tests/assistants/rag/test_models.py +292 -0
- pygeai/tests/assistants/test_clients.py +176 -80
- pygeai/tests/assistants/test_managers.py +198 -0
- pygeai/tests/assistants/test_mappers.py +111 -0
- pygeai/tests/auth/__init__.py +0 -0
- pygeai/tests/auth/test_clients.py +289 -0
- pygeai/tests/auth/test_oauth.py +172 -0
- pygeai/tests/auth/test_session_logging.py +150 -0
- pygeai/tests/chat/__init__.py +0 -0
- pygeai/tests/chat/test_clients.py +393 -0
- pygeai/tests/chat/test_iris.py +38 -0
- pygeai/tests/chat/test_session.py +62 -0
- pygeai/tests/chat/test_ui.py +224 -0
- pygeai/tests/cli/__init__.py +0 -0
- pygeai/tests/cli/commands/__init__.py +0 -0
- pygeai/tests/cli/commands/lab/__init__.py +0 -0
- pygeai/tests/cli/commands/lab/test_ai_lab.py +786 -0
- pygeai/tests/cli/commands/lab/test_common.py +208 -0
- pygeai/tests/cli/commands/lab/test_spec.py +246 -0
- pygeai/tests/cli/commands/test_assistant.py +202 -0
- pygeai/tests/cli/commands/test_chat.py +130 -0
- pygeai/tests/cli/commands/test_common.py +350 -0
- pygeai/tests/cli/commands/test_embeddings.py +132 -0
- pygeai/tests/cli/commands/test_evaluation.py +656 -0
- pygeai/tests/cli/commands/test_feedback.py +65 -0
- pygeai/tests/cli/commands/test_files.py +161 -0
- pygeai/tests/cli/commands/test_gam.py +201 -0
- pygeai/tests/cli/commands/test_llm.py +114 -0
- pygeai/tests/cli/commands/test_migrate.py +176 -0
- pygeai/tests/cli/commands/test_organization.py +276 -0
- pygeai/tests/cli/commands/test_rag.py +266 -0
- pygeai/tests/cli/commands/test_rerank.py +110 -0
- pygeai/tests/cli/commands/test_secrets.py +171 -0
- pygeai/tests/cli/commands/test_show_help.py +41 -0
- pygeai/tests/cli/commands/test_usage_limits.py +412 -0
- pygeai/tests/cli/commands/test_validators.py +160 -0
- pygeai/tests/cli/commands/test_version.py +81 -0
- pygeai/tests/cli/docker/__init__.py +0 -0
- pygeai/tests/cli/test_credentials_flag.py +316 -0
- pygeai/tests/cli/test_error_handler.py +225 -0
- pygeai/tests/cli/test_geai_driver.py +154 -0
- pygeai/tests/cli/test_parsers.py +154 -0
- pygeai/tests/core/base/__init__.py +0 -0
- pygeai/tests/core/base/data/__init__.py +0 -0
- pygeai/tests/core/base/data/mappers.py +117 -0
- pygeai/tests/core/base/data/models.py +312 -0
- pygeai/tests/core/base/test_mappers.py +569 -0
- pygeai/tests/core/base/test_models.py +261 -0
- pygeai/tests/core/base/test_responses.py +53 -0
- pygeai/tests/core/common/__init__.py +0 -0
- pygeai/tests/core/common/data/__init__.py +0 -0
- pygeai/tests/core/common/test_config.py +186 -0
- pygeai/tests/core/common/test_decorators.py +69 -0
- pygeai/tests/core/embeddings/__init__.py +0 -0
- pygeai/tests/core/embeddings/test_clients.py +225 -0
- pygeai/tests/core/embeddings/test_managers.py +171 -0
- pygeai/tests/core/embeddings/test_mappers.py +142 -0
- pygeai/tests/core/feedback/__init__.py +0 -0
- pygeai/tests/core/feedback/test_clients.py +64 -0
- pygeai/tests/core/files/__init__.py +0 -0
- pygeai/tests/core/files/test_clients.py +128 -0
- pygeai/tests/core/files/test_managers.py +219 -0
- pygeai/tests/core/files/test_mappers.py +137 -0
- pygeai/tests/core/files/test_models.py +103 -0
- pygeai/tests/core/files/test_responses.py +122 -0
- pygeai/tests/core/llm/__init__.py +0 -0
- pygeai/tests/core/llm/test_clients.py +142 -0
- pygeai/tests/core/plugins/__init__.py +0 -0
- pygeai/tests/core/plugins/test_clients.py +66 -0
- pygeai/tests/core/rerank/__init__.py +0 -0
- pygeai/tests/core/rerank/test_clients.py +76 -0
- pygeai/tests/core/rerank/test_managers.py +99 -0
- pygeai/tests/core/rerank/test_mappers.py +54 -0
- pygeai/tests/core/secrets/__init__.py +0 -0
- pygeai/tests/core/secrets/test_clients.py +264 -0
- pygeai/tests/core/services/__init__.py +0 -0
- pygeai/tests/core/services/test_rest.py +273 -0
- pygeai/tests/core/test_handlers.py +66 -0
- pygeai/tests/core/utils/__init__.py +0 -0
- pygeai/tests/core/utils/test_console.py +80 -0
- pygeai/tests/dbg/__init__.py +0 -0
- pygeai/tests/dbg/test_debugger.py +591 -0
- pygeai/tests/evaluation/__init__.py +0 -0
- pygeai/tests/evaluation/dataset/__init__.py +0 -0
- pygeai/tests/evaluation/dataset/test_clients.py +265 -0
- pygeai/tests/evaluation/plan/__init__.py +0 -0
- pygeai/tests/evaluation/plan/test_clients.py +195 -0
- pygeai/tests/evaluation/result/__init__.py +0 -0
- pygeai/tests/evaluation/result/test_clients.py +66 -0
- pygeai/tests/gam/__init__.py +0 -0
- pygeai/tests/gam/test_clients.py +195 -0
- pygeai/tests/health/__init__.py +0 -0
- pygeai/tests/health/test_clients.py +41 -0
- pygeai/tests/integration/__init__.py +0 -0
- pygeai/tests/integration/assistants/__init__.py +0 -0
- pygeai/tests/integration/assistants/rag/__init__.py +0 -0
- pygeai/tests/integration/assistants/rag/test_create_rag.py +91 -0
- pygeai/tests/integration/chat/__init__.py +0 -0
- pygeai/tests/integration/chat/test_generate_image.py +158 -0
- pygeai/tests/integration/lab/__init__.py +0 -0
- pygeai/tests/integration/lab/agents/__init__.py +0 -0
- pygeai/tests/integration/lab/agents/test_agents_list.py +106 -0
- pygeai/tests/integration/lab/agents/test_create_agent.py +319 -0
- pygeai/tests/integration/lab/agents/test_create_sharing_link.py +70 -0
- pygeai/tests/integration/lab/agents/test_delete_agent.py +75 -0
- pygeai/tests/integration/lab/agents/test_get_agent.py +94 -0
- pygeai/tests/integration/lab/agents/test_publish_agent_revision.py +127 -0
- pygeai/tests/integration/lab/agents/test_update_agent.py +250 -0
- pygeai/tests/integration/lab/processes/__init__.py +0 -0
- pygeai/tests/integration/lab/processes/test_create_process.py +345 -0
- pygeai/tests/integration/lab/processes/test_create_task.py +211 -0
- pygeai/tests/integration/lab/processes/test_delete_process.py +111 -0
- pygeai/tests/integration/lab/processes/test_get_process.py +201 -0
- pygeai/tests/integration/lab/processes/test_list_process_instances.py +91 -0
- pygeai/tests/integration/lab/processes/test_list_processes.py +138 -0
- pygeai/tests/integration/lab/processes/test_publish_process_revision.py +232 -0
- pygeai/tests/integration/lab/processes/test_update_process.py +289 -0
- pygeai/tests/integration/lab/reasoning_strategies/__init__.py +0 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_get_reasoning_strategy.py +70 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_list_reasoning_strategies.py +93 -0
- pygeai/tests/integration/lab/reasoning_strategies/test_update_reasoning_strategy.py +149 -0
- pygeai/tests/integration/lab/tools/__init__.py +0 -0
- pygeai/tests/integration/lab/tools/test_create_tool.py +288 -0
- pygeai/tests/integration/lab/tools/test_delete_tool.py +87 -0
- pygeai/tests/integration/lab/tools/test_get_parameter.py +98 -0
- pygeai/tests/integration/lab/tools/test_get_tool.py +91 -0
- pygeai/tests/integration/lab/tools/test_list_tools.py +106 -0
- pygeai/tests/integration/lab/tools/test_publish_tool_revision.py +119 -0
- pygeai/tests/integration/lab/tools/test_set_parameter.py +114 -0
- pygeai/tests/integration/lab/tools/test_update_tool.py +267 -0
- pygeai/tests/lab/__init__.py +0 -0
- pygeai/tests/lab/agents/__init__.py +0 -0
- pygeai/tests/lab/agents/test_clients.py +481 -0
- pygeai/tests/lab/agents/test_mappers.py +440 -0
- pygeai/tests/lab/processes/__init__.py +0 -0
- pygeai/tests/lab/processes/test_clients.py +1416 -0
- pygeai/tests/lab/processes/test_mappers.py +1092 -0
- pygeai/tests/lab/spec/__init__.py +0 -0
- pygeai/tests/lab/spec/test_loader.py +59 -0
- pygeai/tests/lab/spec/test_parsers.py +182 -0
- pygeai/tests/lab/strategies/__init__.py +0 -0
- pygeai/tests/lab/strategies/test_clients.py +241 -0
- pygeai/tests/lab/strategies/test_mappers.py +132 -0
- pygeai/tests/lab/test_managers.py +553 -0
- pygeai/tests/lab/test_mappers.py +245 -0
- pygeai/tests/lab/test_models.py +1154 -0
- pygeai/tests/lab/tools/__init__.py +0 -0
- pygeai/tests/lab/tools/test_clients.py +521 -0
- pygeai/tests/lab/tools/test_mappers.py +198 -0
- pygeai/tests/migration/__init__.py +0 -0
- pygeai/tests/migration/test_strategies.py +405 -0
- pygeai/tests/migration/test_tools.py +159 -0
- pygeai/tests/organization/limits/__init__.py +0 -0
- pygeai/tests/organization/limits/test_clients.py +567 -0
- pygeai/tests/organization/limits/test_managers.py +402 -0
- pygeai/tests/organization/test_clients.py +615 -64
- pygeai/tests/organization/test_managers.py +424 -0
- pygeai/tests/organization/test_mappers.py +153 -0
- pygeai/tests/organization/test_responses.py +137 -0
- pygeai/tests/proxy/__init__.py +1 -0
- pygeai/tests/proxy/test_clients.py +397 -0
- pygeai/tests/proxy/test_config.py +171 -0
- pygeai/tests/proxy/test_integration.py +305 -0
- pygeai/tests/proxy/test_managers.py +312 -0
- pygeai/tests/proxy/test_servers.py +387 -0
- pygeai/tests/proxy/test_tool.py +176 -0
- pygeai/tests/snippets/__init__.py +0 -0
- pygeai/tests/snippets/analytics/__init__.py +0 -0
- pygeai/tests/snippets/analytics/get_agent_usage_per_user.py +16 -0
- pygeai/tests/snippets/analytics/get_agents_created_and_modified.py +11 -0
- pygeai/tests/snippets/analytics/get_average_cost_per_request.py +10 -0
- pygeai/tests/snippets/analytics/get_overall_error_rate.py +10 -0
- pygeai/tests/snippets/analytics/get_top_10_agents_by_requests.py +12 -0
- pygeai/tests/snippets/analytics/get_total_active_users.py +10 -0
- pygeai/tests/snippets/analytics/get_total_cost.py +10 -0
- pygeai/tests/snippets/analytics/get_total_requests_per_day.py +12 -0
- pygeai/tests/snippets/analytics/get_total_tokens.py +12 -0
- pygeai/tests/snippets/assistants/__init__.py +0 -0
- pygeai/tests/snippets/assistants/create_chat_assistant.py +54 -0
- pygeai/tests/snippets/assistants/create_text_assistant.py +51 -0
- pygeai/tests/snippets/assistants/data_analyst/__init__.py +0 -0
- pygeai/tests/snippets/assistants/data_analyst/extend_and_check.py +100 -0
- pygeai/tests/snippets/assistants/data_analyst/extend_dataset.py +9 -0
- pygeai/tests/snippets/assistants/data_analyst/get_status.py +9 -0
- pygeai/tests/snippets/assistants/file_summarizer_assistant.py +149 -0
- pygeai/tests/snippets/assistants/get_assistant_data.py +8 -0
- pygeai/tests/snippets/assistants/get_assistant_list.py +7 -0
- pygeai/tests/snippets/assistants/rag/__init__.py +0 -0
- pygeai/tests/snippets/assistants/rag/create_rag_assistant.py +65 -0
- pygeai/tests/snippets/assistants/rag/delete_al_documents.py +7 -0
- pygeai/tests/snippets/assistants/rag/delete_document.py +10 -0
- pygeai/tests/snippets/assistants/rag/delete_rag_assistant.py +8 -0
- pygeai/tests/snippets/assistants/rag/get_document.py +10 -0
- pygeai/tests/snippets/assistants/rag/get_documents.py +7 -0
- pygeai/tests/snippets/assistants/rag/get_rag_assistant_data.py +8 -0
- pygeai/tests/snippets/assistants/rag/update_rag_assistant.py +48 -0
- pygeai/tests/snippets/assistants/rag/upload_document.py +19 -0
- pygeai/tests/snippets/assistants/send_feedback.py +14 -0
- pygeai/tests/snippets/assistants/update_chat_assistant.py +63 -0
- pygeai/tests/snippets/auth/__init__.py +0 -0
- pygeai/tests/snippets/chat/__init__.py +0 -0
- pygeai/tests/snippets/chat/cancel_request.py +7 -0
- pygeai/tests/snippets/chat/chat_completion.py +28 -0
- pygeai/tests/snippets/chat/chat_completion_1.py +40 -0
- pygeai/tests/snippets/chat/chat_completion_2.py +60 -0
- pygeai/tests/snippets/chat/chat_completion_3.py +27 -0
- pygeai/tests/snippets/chat/chat_completion_4.py +67 -0
- pygeai/tests/snippets/chat/chat_completion_streaming.py +63 -0
- pygeai/tests/snippets/chat/chat_completion_with_reasoning_effort.py +18 -0
- pygeai/tests/snippets/chat/get_request_status.py +7 -0
- pygeai/tests/snippets/chat/get_response.py +15 -0
- pygeai/tests/snippets/chat/get_response_complete_example.py +67 -0
- pygeai/tests/snippets/chat/get_response_streaming.py +20 -0
- pygeai/tests/snippets/chat/get_response_with_files.py +16 -0
- pygeai/tests/snippets/chat/get_response_with_instructions.py +19 -0
- pygeai/tests/snippets/chat/get_response_with_metadata.py +24 -0
- pygeai/tests/snippets/chat/get_response_with_parallel_tools.py +58 -0
- pygeai/tests/snippets/chat/get_response_with_reasoning.py +21 -0
- pygeai/tests/snippets/chat/get_response_with_store.py +38 -0
- pygeai/tests/snippets/chat/get_response_with_tools.py +36 -0
- pygeai/tests/snippets/chat/get_response_with_truncation.py +24 -0
- pygeai/tests/snippets/chat/send_chat_request.py +33 -0
- pygeai/tests/snippets/dbg/__init__.py +0 -0
- pygeai/tests/snippets/dbg/basic_debugging.py +32 -0
- pygeai/tests/snippets/dbg/breakpoint_management.py +48 -0
- pygeai/tests/snippets/dbg/file_debugging.py +72 -0
- pygeai/tests/snippets/dbg/module_debugging.py +61 -0
- pygeai/tests/snippets/dbg/stack_navigation.py +45 -0
- pygeai/tests/snippets/dbg/stepping_example.py +40 -0
- pygeai/tests/snippets/embeddings/__init__.py +0 -0
- pygeai/tests/snippets/embeddings/cache_example.py +31 -0
- pygeai/tests/snippets/embeddings/cohere_example.py +41 -0
- pygeai/tests/snippets/embeddings/generate_embeddings.py +26 -0
- pygeai/tests/snippets/embeddings/openai_base64_example.py +27 -0
- pygeai/tests/snippets/embeddings/openai_example.py +30 -0
- pygeai/tests/snippets/embeddings/similarity_example.py +42 -0
- pygeai/tests/snippets/evaluation/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/dataset/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/dataset/complete_workflow_example.py +195 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset.py +26 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset_from_file.py +11 -0
- pygeai/tests/snippets/evaluation/dataset/create_dataset_row.py +17 -0
- pygeai/tests/snippets/evaluation/dataset/create_expected_source.py +18 -0
- pygeai/tests/snippets/evaluation/dataset/create_filter_variable.py +19 -0
- pygeai/tests/snippets/evaluation/dataset/delete_dataset.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/delete_dataset_row.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/delete_expected_source.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/delete_filter_variable.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/get_dataset.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/get_dataset_row.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/get_expected_source.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/get_filter_variable.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/list_dataset_rows.py +9 -0
- pygeai/tests/snippets/evaluation/dataset/list_datasets.py +6 -0
- pygeai/tests/snippets/evaluation/dataset/list_expected_sources.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/list_filter_variables.py +10 -0
- pygeai/tests/snippets/evaluation/dataset/update_dataset.py +15 -0
- pygeai/tests/snippets/evaluation/dataset/update_dataset_row.py +20 -0
- pygeai/tests/snippets/evaluation/dataset/update_expected_source.py +18 -0
- pygeai/tests/snippets/evaluation/dataset/update_filter_variable.py +19 -0
- pygeai/tests/snippets/evaluation/dataset/upload_dataset_rows_file.py +10 -0
- pygeai/tests/snippets/evaluation/plan/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/plan/add_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/complete_workflow_example.py +136 -0
- pygeai/tests/snippets/evaluation/plan/create_evaluation_plan.py +24 -0
- pygeai/tests/snippets/evaluation/plan/create_rag_evaluation_plan.py +22 -0
- pygeai/tests/snippets/evaluation/plan/delete_evaluation_plan.py +9 -0
- pygeai/tests/snippets/evaluation/plan/delete_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/execute_evaluation_plan.py +11 -0
- pygeai/tests/snippets/evaluation/plan/get_evaluation_plan.py +9 -0
- pygeai/tests/snippets/evaluation/plan/get_plan_system_metric.py +13 -0
- pygeai/tests/snippets/evaluation/plan/get_system_metric.py +9 -0
- pygeai/tests/snippets/evaluation/plan/list_evaluation_plans.py +7 -0
- pygeai/tests/snippets/evaluation/plan/list_plan_system_metrics.py +9 -0
- pygeai/tests/snippets/evaluation/plan/list_system_metrics.py +7 -0
- pygeai/tests/snippets/evaluation/plan/update_evaluation_plan.py +22 -0
- pygeai/tests/snippets/evaluation/plan/update_plan_system_metric.py +14 -0
- pygeai/tests/snippets/evaluation/result/__init__.py +0 -0
- pygeai/tests/snippets/evaluation/result/complete_workflow_example.py +150 -0
- pygeai/tests/snippets/evaluation/result/get_evaluation_result.py +26 -0
- pygeai/tests/snippets/evaluation/result/list_evaluation_results.py +17 -0
- pygeai/tests/snippets/files/__init__.py +0 -0
- pygeai/tests/snippets/files/delete_file.py +9 -0
- pygeai/tests/snippets/files/get_file_content.py +10 -0
- pygeai/tests/snippets/files/get_file_data.py +9 -0
- pygeai/tests/snippets/files/get_file_list.py +6 -0
- pygeai/tests/snippets/files/upload_file.py +13 -0
- pygeai/tests/snippets/gam/__init__.py +0 -0
- pygeai/tests/snippets/gam/gam_access_token.py +87 -0
- pygeai/tests/snippets/lab/__init__.py +0 -0
- pygeai/tests/snippets/lab/agentic_flow_example_1.py +326 -0
- pygeai/tests/snippets/lab/agentic_flow_example_2.py +206 -0
- pygeai/tests/snippets/lab/agentic_flow_example_3.py +486 -0
- pygeai/tests/snippets/lab/agentic_flow_example_4.py +446 -0
- pygeai/tests/snippets/lab/agents/__init__.py +0 -0
- pygeai/tests/snippets/lab/agents/create_agent.py +48 -0
- pygeai/tests/snippets/lab/agents/create_agent_2.py +48 -0
- pygeai/tests/snippets/lab/agents/create_agent_edge_case.py +48 -0
- pygeai/tests/snippets/lab/agents/create_agent_with_permissions.py +39 -0
- pygeai/tests/snippets/lab/agents/create_agent_with_properties.py +46 -0
- pygeai/tests/snippets/lab/agents/create_agent_without_instructions.py +48 -0
- pygeai/tests/snippets/lab/agents/delete_agent.py +12 -0
- pygeai/tests/snippets/lab/agents/get_agent.py +24 -0
- pygeai/tests/snippets/lab/agents/get_agent_with_new_fields.py +62 -0
- pygeai/tests/snippets/lab/agents/get_sharing_link.py +13 -0
- pygeai/tests/snippets/lab/agents/list_agents.py +18 -0
- pygeai/tests/snippets/lab/agents/publish_agent_revision.py +12 -0
- pygeai/tests/snippets/lab/agents/update_agent.py +50 -0
- pygeai/tests/snippets/lab/agents/update_agent_properties.py +50 -0
- pygeai/tests/snippets/lab/assistant_to_agent.py +191 -0
- pygeai/tests/snippets/lab/crud_ui.py +462 -0
- pygeai/tests/snippets/lab/processes/__init__.py +0 -0
- pygeai/tests/snippets/lab/processes/create_process.py +24 -0
- pygeai/tests/snippets/lab/processes/create_task.py +8 -0
- pygeai/tests/snippets/lab/processes/jobs/__init__.py +0 -0
- pygeai/tests/snippets/lab/processes/jobs/list_jobs.py +21 -0
- pygeai/tests/snippets/lab/processes/kbs/__init__.py +0 -0
- pygeai/tests/snippets/lab/processes/kbs/create_kb.py +18 -0
- pygeai/tests/snippets/lab/processes/kbs/get_kb.py +26 -0
- pygeai/tests/snippets/lab/processes/kbs/list_kbs.py +30 -0
- pygeai/tests/snippets/lab/processes/kbs/try_all.py +73 -0
- pygeai/tests/snippets/lab/processes/list_processes.py +10 -0
- pygeai/tests/snippets/lab/runner_1.py +212 -0
- pygeai/tests/snippets/lab/samples/__init__.py +0 -0
- pygeai/tests/snippets/lab/samples/summarize_files.py +162 -0
- pygeai/tests/snippets/lab/strategies/__init__.py +0 -0
- pygeai/tests/snippets/lab/strategies/create_reasoning_strategy.py +22 -0
- pygeai/tests/snippets/lab/strategies/get_reasoning_strategy.py +10 -0
- pygeai/tests/snippets/lab/strategies/list_reasoning_strategies.py +16 -0
- pygeai/tests/snippets/lab/strategies/update_reasoning_strategy.py +26 -0
- pygeai/tests/snippets/lab/tools/__init__.py +0 -0
- pygeai/tests/snippets/lab/tools/create_tool.py +48 -0
- pygeai/tests/snippets/lab/tools/create_tool_edge_case.py +50 -0
- pygeai/tests/snippets/lab/tools/delete_tool.py +21 -0
- pygeai/tests/snippets/lab/tools/get_parameter.py +21 -0
- pygeai/tests/snippets/lab/tools/get_tool.py +22 -0
- pygeai/tests/snippets/lab/tools/list_tools.py +23 -0
- pygeai/tests/snippets/lab/tools/publish_tool_revision.py +13 -0
- pygeai/tests/snippets/lab/tools/set_parameters.py +33 -0
- pygeai/tests/snippets/lab/tools/update_tool.py +52 -0
- pygeai/tests/snippets/lab/use_cases/__init__.py +0 -0
- pygeai/tests/snippets/lab/use_cases/c_code_fixer_agent_flow.py +238 -0
- pygeai/tests/snippets/lab/use_cases/create_cli_expert.py +1640 -0
- pygeai/tests/snippets/lab/use_cases/create_lab_expert.py +4541 -0
- pygeai/tests/snippets/lab/use_cases/create_tool_headless_web_browser.py +133 -0
- pygeai/tests/snippets/lab/use_cases/create_web_designer.py +189 -0
- pygeai/tests/snippets/lab/use_cases/create_web_reader.py +185 -0
- pygeai/tests/snippets/lab/use_cases/file_summarizer_example.py +157 -0
- pygeai/tests/snippets/lab/use_cases/file_summarizer_example_2.py +157 -0
- pygeai/tests/snippets/lab/use_cases/update_cli_expert.py +1773 -0
- pygeai/tests/snippets/lab/use_cases/update_lab_expert.py +4541 -0
- pygeai/tests/snippets/lab/use_cases/update_web_designer.py +188 -0
- pygeai/tests/snippets/lab/use_cases/update_web_reader.py +195 -0
- pygeai/tests/snippets/lab/use_cases/update_web_reader_with_tool.py +210 -0
- pygeai/tests/snippets/migrate/__init__.py +45 -0
- pygeai/tests/snippets/migrate/agent_migration.py +110 -0
- pygeai/tests/snippets/migrate/assistant_migration.py +64 -0
- pygeai/tests/snippets/migrate/orchestrator_examples.py +179 -0
- pygeai/tests/snippets/migrate/process_migration.py +64 -0
- pygeai/tests/snippets/migrate/project_migration.py +42 -0
- pygeai/tests/snippets/migrate/tool_migration.py +64 -0
- pygeai/tests/snippets/organization/__init__.py +0 -0
- pygeai/tests/snippets/organization/add_project_member.py +10 -0
- pygeai/tests/snippets/organization/add_project_member_batch.py +44 -0
- pygeai/tests/snippets/organization/create_project.py +23 -0
- pygeai/tests/snippets/organization/delete_project.py +7 -0
- pygeai/tests/snippets/organization/export_request_data.py +7 -0
- pygeai/tests/snippets/organization/get_memberships.py +12 -0
- pygeai/tests/snippets/organization/get_organization_members.py +6 -0
- pygeai/tests/snippets/organization/get_project_data.py +7 -0
- pygeai/tests/snippets/organization/get_project_list.py +8 -0
- pygeai/tests/snippets/organization/get_project_members.py +6 -0
- pygeai/tests/snippets/organization/get_project_memberships.py +12 -0
- pygeai/tests/snippets/organization/get_project_roles.py +6 -0
- pygeai/tests/snippets/organization/get_project_tokens.py +7 -0
- pygeai/tests/snippets/organization/update_project.py +14 -0
- pygeai/tests/snippets/rerank/__init__.py +0 -0
- pygeai/tests/snippets/rerank/rerank_chunks.py +19 -0
- pygeai/tests/snippets/secrets/__init__.py +0 -0
- pygeai/tests/snippets/usage_limit/__init__.py +0 -0
- pygeai/tests/snippets/usage_limit/delete_usage_limit.py +16 -0
- pygeai/tests/snippets/usage_limit/get_all_usage_limit_from_organization.py +12 -0
- pygeai/tests/snippets/usage_limit/get_usage_limit_from_organization.py +11 -0
- pygeai/tests/snippets/usage_limit/get_usage_limit_from_project.py +13 -0
- pygeai/tests/snippets/usage_limit/set_usage_limit_organization.py +22 -0
- pygeai/tests/snippets/usage_limit/set_usage_limit_project.py +23 -0
- pygeai/tests/snippets/usage_limit/update_usage_limit_organization.py +23 -0
- pygeai/tests/snippets/usage_limit/update_usage_limit_project.py +24 -0
- pygeai/vendor/a2a/__init__.py +1 -0
- pygeai/vendor/a2a/auth/__init__.py +0 -0
- pygeai/vendor/a2a/auth/user.py +31 -0
- pygeai/vendor/a2a/client/__init__.py +19 -0
- pygeai/vendor/a2a/client/client.py +425 -0
- pygeai/vendor/a2a/client/errors.py +33 -0
- pygeai/vendor/a2a/client/helpers.py +22 -0
- pygeai/vendor/a2a/py.typed +0 -0
- pygeai/vendor/a2a/server/__init__.py +1 -0
- pygeai/vendor/a2a/server/agent_execution/__init__.py +18 -0
- pygeai/vendor/a2a/server/agent_execution/agent_executor.py +44 -0
- pygeai/vendor/a2a/server/agent_execution/context.py +155 -0
- pygeai/vendor/a2a/server/agent_execution/request_context_builder.py +20 -0
- pygeai/vendor/a2a/server/agent_execution/simple_request_context_builder.py +77 -0
- pygeai/vendor/a2a/server/apps/__init__.py +16 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/__init__.py +16 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/fastapi_app.py +88 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/jsonrpc_app.py +426 -0
- pygeai/vendor/a2a/server/apps/jsonrpc/starlette_app.py +123 -0
- pygeai/vendor/a2a/server/context.py +23 -0
- pygeai/vendor/a2a/server/events/__init__.py +21 -0
- pygeai/vendor/a2a/server/events/event_consumer.py +149 -0
- pygeai/vendor/a2a/server/events/event_queue.py +156 -0
- pygeai/vendor/a2a/server/events/in_memory_queue_manager.py +85 -0
- pygeai/vendor/a2a/server/events/queue_manager.py +35 -0
- pygeai/vendor/a2a/server/request_handlers/__init__.py +20 -0
- pygeai/vendor/a2a/server/request_handlers/default_request_handler.py +435 -0
- pygeai/vendor/a2a/server/request_handlers/jsonrpc_handler.py +327 -0
- pygeai/vendor/a2a/server/request_handlers/request_handler.py +161 -0
- pygeai/vendor/a2a/server/request_handlers/response_helpers.py +133 -0
- pygeai/vendor/a2a/server/tasks/__init__.py +20 -0
- pygeai/vendor/a2a/server/tasks/inmemory_push_notifier.py +62 -0
- pygeai/vendor/a2a/server/tasks/inmemory_task_store.py +51 -0
- pygeai/vendor/a2a/server/tasks/push_notifier.py +25 -0
- pygeai/vendor/a2a/server/tasks/result_aggregator.py +151 -0
- pygeai/vendor/a2a/server/tasks/task_manager.py +253 -0
- pygeai/vendor/a2a/server/tasks/task_store.py +22 -0
- pygeai/vendor/a2a/server/tasks/task_updater.py +155 -0
- pygeai/vendor/a2a/types.py +1624 -0
- pygeai/vendor/a2a/utils/__init__.py +40 -0
- pygeai/vendor/a2a/utils/artifact.py +72 -0
- pygeai/vendor/a2a/utils/errors.py +69 -0
- pygeai/vendor/a2a/utils/helpers.py +176 -0
- pygeai/vendor/a2a/utils/message.py +83 -0
- pygeai/vendor/a2a/utils/task.py +57 -0
- pygeai/vendor/a2a/utils/telemetry.py +299 -0
- pygeai-0.6.0b15.dist-info/METADATA +205 -0
- pygeai-0.6.0b15.dist-info/RECORD +799 -0
- {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info}/WHEEL +1 -1
- pygeai-0.6.0b15.dist-info/entry_points.txt +5 -0
- {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info/licenses}/LICENSE +13 -1
- {pygeai-0.1.6.dist-info → pygeai-0.6.0b15.dist-info}/top_level.txt +0 -1
- docs/source/conf.py +0 -45
- pygeai/core/clients.py +0 -240
- pygeai/tests/core/test_clients.py +0 -49
- pygeai-0.1.6.dist-info/METADATA +0 -92
- pygeai-0.1.6.dist-info/RECORD +0 -65
- pygeai-0.1.6.dist-info/SOURCES.sync-conflict-20241223-145950-3QD4F42.txt +0 -41
- pygeai-0.1.6.dist-info/entry_points.txt +0 -2
- /pygeai/{agent → analytics}/__init__.py +0 -0
|
File without changes
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from pygeai.core.base.clients import BaseClient
|
|
2
|
+
from pygeai.core.base.session import Session
|
|
3
|
+
from pygeai.core.common.exceptions import MissingRequirementException
|
|
4
|
+
from pygeai.core.services.rest import ApiService
|
|
5
|
+
from pygeai.core.utils.validators import validate_status_code
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class EvaluationClient(BaseClient):
|
|
9
|
+
|
|
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
|
|
14
|
+
if not eval_url:
|
|
15
|
+
raise MissingRequirementException("EVAL URL must be defined in order to use the Evaluation module.")
|
|
16
|
+
|
|
17
|
+
self.session.eval_url = eval_url
|
|
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)
|
|
File without changes
|
|
@@ -0,0 +1,514 @@
|
|
|
1
|
+
import json
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
|
|
4
|
+
from pygeai.evaluation.clients import EvaluationClient
|
|
5
|
+
from pygeai.evaluation.dataset.endpoints import (
|
|
6
|
+
LIST_DATASETS, CREATE_DATASET, UPLOAD_DATASET_FILE, GET_DATASET, UPDATE_DATASET, DELETE_DATASET,
|
|
7
|
+
CREATE_DATASET_ROW, LIST_DATASET_ROWS, GET_DATASET_ROW, UPDATE_DATASET_ROW, DELETE_DATASET_ROW,
|
|
8
|
+
CREATE_EXPECTED_SOURCE, LIST_EXPECTED_SOURCES, GET_EXPECTED_SOURCE, UPDATE_EXPECTED_SOURCE, DELETE_EXPECTED_SOURCE,
|
|
9
|
+
CREATE_FILTER_VARIABLE, LIST_FILTER_VARIABLES, GET_FILTER_VARIABLE, UPDATE_FILTER_VARIABLE, DELETE_FILTER_VARIABLE,
|
|
10
|
+
UPLOAD_DATASET_ROWS_FILE
|
|
11
|
+
)
|
|
12
|
+
from pygeai.core.utils.validators import validate_status_code
|
|
13
|
+
from pygeai.core.utils.parsers import parse_json_response
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class EvaluationDatasetClient(EvaluationClient):
|
|
17
|
+
|
|
18
|
+
def list_datasets(self) -> dict:
|
|
19
|
+
"""
|
|
20
|
+
Lists all datasets.
|
|
21
|
+
|
|
22
|
+
:return: dict - API response containing a list of datasets.
|
|
23
|
+
"""
|
|
24
|
+
response = self.api_service.get(
|
|
25
|
+
endpoint=LIST_DATASETS
|
|
26
|
+
)
|
|
27
|
+
validate_status_code(response)
|
|
28
|
+
return parse_json_response(response, "dataset operation")
|
|
29
|
+
|
|
30
|
+
def create_dataset(
|
|
31
|
+
self,
|
|
32
|
+
dataset_name: str,
|
|
33
|
+
dataset_description: str,
|
|
34
|
+
dataset_type: str,
|
|
35
|
+
dataset_active: bool = True,
|
|
36
|
+
rows: list = None,
|
|
37
|
+
) -> dict:
|
|
38
|
+
"""
|
|
39
|
+
Creates a new dataset with the specified details.
|
|
40
|
+
|
|
41
|
+
:param dataset_name: The name of the dataset.
|
|
42
|
+
:param dataset_description: A description of the dataset.
|
|
43
|
+
:param dataset_type: The type of the dataset.
|
|
44
|
+
:param dataset_active: Whether the dataset is active (default: True).
|
|
45
|
+
:param rows: A list of dataset rows (optional).
|
|
46
|
+
|
|
47
|
+
:return: The API response containing the created dataset details.
|
|
48
|
+
"""
|
|
49
|
+
data = {
|
|
50
|
+
"dataSetName": dataset_name,
|
|
51
|
+
"dataSetDescription": dataset_description,
|
|
52
|
+
"dataSetType": dataset_type,
|
|
53
|
+
"dataSetActive": dataset_active,
|
|
54
|
+
"rows": rows
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
response = self.api_service.post(
|
|
58
|
+
endpoint=CREATE_DATASET,
|
|
59
|
+
data=data
|
|
60
|
+
)
|
|
61
|
+
validate_status_code(response)
|
|
62
|
+
return parse_json_response(response, "dataset operation")
|
|
63
|
+
|
|
64
|
+
def create_dataset_from_file(self, file_path: str) -> dict:
|
|
65
|
+
"""
|
|
66
|
+
Creates a new dataset from a JSON file.
|
|
67
|
+
|
|
68
|
+
:param file_path: str - JSON File with data for the dataset upload.
|
|
69
|
+
|
|
70
|
+
:return: dict - API response with the file upload result.
|
|
71
|
+
"""
|
|
72
|
+
file_path = Path(file_path)
|
|
73
|
+
if not file_path.is_file():
|
|
74
|
+
raise FileNotFoundError(f"File not found: {file_path}")
|
|
75
|
+
|
|
76
|
+
headers = {
|
|
77
|
+
"Content-Type": "application/json",
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
file = file_path.open("rb")
|
|
81
|
+
try:
|
|
82
|
+
response = self.api_service.post_file_binary(
|
|
83
|
+
endpoint=UPLOAD_DATASET_FILE,
|
|
84
|
+
headers=headers,
|
|
85
|
+
file=file
|
|
86
|
+
)
|
|
87
|
+
validate_status_code(response)
|
|
88
|
+
return parse_json_response(response, "upload dataset file")
|
|
89
|
+
finally:
|
|
90
|
+
if file:
|
|
91
|
+
file.close()
|
|
92
|
+
|
|
93
|
+
def get_dataset(self, dataset_id: str) -> dict:
|
|
94
|
+
"""
|
|
95
|
+
Retrieves a specific dataset.
|
|
96
|
+
|
|
97
|
+
:param dataset_id: str - UUID representing the dataset to retrieve.
|
|
98
|
+
|
|
99
|
+
:return: dict - The dataset metadata.
|
|
100
|
+
"""
|
|
101
|
+
endpoint = GET_DATASET.format(dataSetId=dataset_id)
|
|
102
|
+
response = self.api_service.get(
|
|
103
|
+
endpoint=endpoint
|
|
104
|
+
)
|
|
105
|
+
validate_status_code(response)
|
|
106
|
+
return parse_json_response(response, "dataset operation")
|
|
107
|
+
|
|
108
|
+
def update_dataset(
|
|
109
|
+
self,
|
|
110
|
+
dataset_id: str,
|
|
111
|
+
dataset_name: str,
|
|
112
|
+
dataset_description: str,
|
|
113
|
+
dataset_type: str,
|
|
114
|
+
dataset_active: bool = True,
|
|
115
|
+
rows: list = None,
|
|
116
|
+
) -> dict:
|
|
117
|
+
"""
|
|
118
|
+
Updates an existing dataset with the provided details.
|
|
119
|
+
|
|
120
|
+
:param dataset_id: The unique identifier of the dataset to update.
|
|
121
|
+
:param dataset_name: The new name of the dataset.
|
|
122
|
+
:param dataset_description: A description of the dataset.
|
|
123
|
+
:param dataset_type: The type of the dataset.
|
|
124
|
+
:param dataset_active: Whether the dataset is active (default: True).
|
|
125
|
+
:param rows: A list of dataset rows to update (optional).
|
|
126
|
+
|
|
127
|
+
:return: The API response containing the updated dataset details.
|
|
128
|
+
"""
|
|
129
|
+
data = dict()
|
|
130
|
+
if dataset_name is not None:
|
|
131
|
+
data["dataSetName"] = dataset_name
|
|
132
|
+
if dataset_description is not None:
|
|
133
|
+
data["dataSetDescription"] = dataset_description
|
|
134
|
+
if dataset_type is not None:
|
|
135
|
+
data["dataSetType"] = dataset_type
|
|
136
|
+
if dataset_active is not None:
|
|
137
|
+
data["dataSetActive"] = dataset_active
|
|
138
|
+
if rows is not None and any(rows):
|
|
139
|
+
data["rows"] = rows
|
|
140
|
+
|
|
141
|
+
endpoint = UPDATE_DATASET.format(dataSetId=dataset_id)
|
|
142
|
+
response = self.api_service.put(
|
|
143
|
+
endpoint=endpoint,
|
|
144
|
+
data=data
|
|
145
|
+
)
|
|
146
|
+
validate_status_code(response)
|
|
147
|
+
return parse_json_response(response, "dataset operation")
|
|
148
|
+
|
|
149
|
+
def delete_dataset(self, dataset_id: str) -> dict:
|
|
150
|
+
"""
|
|
151
|
+
Deletes a dataset.
|
|
152
|
+
|
|
153
|
+
:param dataset_id: str - The ID of the dataset.
|
|
154
|
+
|
|
155
|
+
:return: dict - Response indicating the success or failure of the deletion.
|
|
156
|
+
"""
|
|
157
|
+
endpoint = DELETE_DATASET.format(dataSetId=dataset_id)
|
|
158
|
+
response = self.api_service.delete(
|
|
159
|
+
endpoint=endpoint
|
|
160
|
+
)
|
|
161
|
+
validate_status_code(response)
|
|
162
|
+
return parse_json_response(response, "dataset operation")
|
|
163
|
+
|
|
164
|
+
def create_dataset_row(self, dataset_id: str, row: dict) -> dict:
|
|
165
|
+
"""
|
|
166
|
+
Creates a new row in a dataset.
|
|
167
|
+
|
|
168
|
+
:param dataset_id: str - The ID of the dataset.
|
|
169
|
+
:param row: dict - Row data for the new dataset.
|
|
170
|
+
|
|
171
|
+
:return: dict - API response with the created dataset row.
|
|
172
|
+
"""
|
|
173
|
+
endpoint = CREATE_DATASET_ROW.format(dataSetId=dataset_id)
|
|
174
|
+
response = self.api_service.post(
|
|
175
|
+
endpoint=endpoint,
|
|
176
|
+
data=row
|
|
177
|
+
)
|
|
178
|
+
validate_status_code(response)
|
|
179
|
+
return parse_json_response(response, "dataset operation")
|
|
180
|
+
|
|
181
|
+
def list_dataset_rows(self, dataset_id: str) -> dict:
|
|
182
|
+
"""
|
|
183
|
+
Lists rows for a dataset.
|
|
184
|
+
|
|
185
|
+
:param dataset_id: str - The ID of the dataset.
|
|
186
|
+
|
|
187
|
+
:return: dict - List of dataset rows.
|
|
188
|
+
"""
|
|
189
|
+
endpoint = LIST_DATASET_ROWS.format(dataSetId=dataset_id)
|
|
190
|
+
response = self.api_service.get(
|
|
191
|
+
endpoint=endpoint
|
|
192
|
+
)
|
|
193
|
+
validate_status_code(response)
|
|
194
|
+
return parse_json_response(response, "dataset operation")
|
|
195
|
+
|
|
196
|
+
def get_dataset_row(self, dataset_id: str, dataset_row_id: str) -> dict:
|
|
197
|
+
"""
|
|
198
|
+
Retrieves a specific dataset row.
|
|
199
|
+
|
|
200
|
+
:param dataset_id: str - The ID of the dataset.
|
|
201
|
+
:param dataset_row_id: str - The ID of the dataset row.
|
|
202
|
+
|
|
203
|
+
:return: dict - The dataset row metadata.
|
|
204
|
+
"""
|
|
205
|
+
endpoint = GET_DATASET_ROW.format(dataSetId=dataset_id, dataSetRowId=dataset_row_id)
|
|
206
|
+
response = self.api_service.get(
|
|
207
|
+
endpoint=endpoint
|
|
208
|
+
)
|
|
209
|
+
validate_status_code(response)
|
|
210
|
+
return parse_json_response(response, "dataset operation")
|
|
211
|
+
|
|
212
|
+
def update_dataset_row(self, dataset_id: str, dataset_row_id: str, row: dict) -> dict:
|
|
213
|
+
"""
|
|
214
|
+
Updates a dataset row.
|
|
215
|
+
|
|
216
|
+
:param dataset_id: str - The ID of the dataset.
|
|
217
|
+
:param dataset_row_id: str - The ID of the dataset row.
|
|
218
|
+
:param row: dict - Data to update the dataset row.
|
|
219
|
+
|
|
220
|
+
:return: dict - API response with the updated dataset row.
|
|
221
|
+
"""
|
|
222
|
+
endpoint = UPDATE_DATASET_ROW.format(dataSetId=dataset_id, dataSetRowId=dataset_row_id)
|
|
223
|
+
response = self.api_service.put(
|
|
224
|
+
endpoint=endpoint,
|
|
225
|
+
data=row
|
|
226
|
+
)
|
|
227
|
+
validate_status_code(response)
|
|
228
|
+
return parse_json_response(response, "dataset operation")
|
|
229
|
+
|
|
230
|
+
def delete_dataset_row(self, dataset_id: str, dataset_row_id: str) -> dict:
|
|
231
|
+
"""
|
|
232
|
+
Deletes a dataset row.
|
|
233
|
+
|
|
234
|
+
:param dataset_id: str - The ID of the dataset.
|
|
235
|
+
:param dataset_row_id: str - The ID of the dataset row.
|
|
236
|
+
|
|
237
|
+
:return: dict - Response indicating the success or failure of the deletion.
|
|
238
|
+
"""
|
|
239
|
+
endpoint = DELETE_DATASET_ROW.format(dataSetId=dataset_id, dataSetRowId=dataset_row_id)
|
|
240
|
+
response = self.api_service.delete(
|
|
241
|
+
endpoint=endpoint
|
|
242
|
+
)
|
|
243
|
+
validate_status_code(response)
|
|
244
|
+
return parse_json_response(response, "dataset operation")
|
|
245
|
+
|
|
246
|
+
def create_expected_source(
|
|
247
|
+
self,
|
|
248
|
+
dataset_id: str,
|
|
249
|
+
dataset_row_id: str,
|
|
250
|
+
expected_source_name: str,
|
|
251
|
+
expected_source_value: str,
|
|
252
|
+
expected_source_extension: str
|
|
253
|
+
) -> dict:
|
|
254
|
+
"""
|
|
255
|
+
Creates a new expected source for a specific dataset row.
|
|
256
|
+
|
|
257
|
+
:param dataset_id: str - The unique identifier of the dataset.
|
|
258
|
+
:param dataset_row_id: str - The unique identifier of the dataset row.
|
|
259
|
+
:param expected_source_name: str - The name of the expected source.
|
|
260
|
+
:param expected_source_value: str - The value associated with the expected source.
|
|
261
|
+
:param expected_source_extension: str - The file extension or format of the expected source.
|
|
262
|
+
|
|
263
|
+
:return: dict - API response containing the details of the created expected source.
|
|
264
|
+
"""
|
|
265
|
+
data = {
|
|
266
|
+
"dataSetExpectedSourceName": expected_source_name,
|
|
267
|
+
"dataSetExpectedSourceValue": expected_source_value,
|
|
268
|
+
"dataSetExpectedSourceExtension": expected_source_extension
|
|
269
|
+
}
|
|
270
|
+
endpoint = CREATE_EXPECTED_SOURCE.format(dataSetId=dataset_id, dataSetRowId=dataset_row_id)
|
|
271
|
+
response = self.api_service.post(
|
|
272
|
+
endpoint=endpoint,
|
|
273
|
+
data=data
|
|
274
|
+
)
|
|
275
|
+
validate_status_code(response)
|
|
276
|
+
return parse_json_response(response, "dataset operation")
|
|
277
|
+
|
|
278
|
+
def list_expected_sources(self, dataset_id: str, dataset_row_id: str) -> dict:
|
|
279
|
+
"""
|
|
280
|
+
Lists expected sources for a dataset row.
|
|
281
|
+
|
|
282
|
+
:param dataset_id: str - The ID of the dataset.
|
|
283
|
+
:param dataset_row_id: str - The ID of the dataset row.
|
|
284
|
+
|
|
285
|
+
:return: dict - List of expected sources for the dataset row.
|
|
286
|
+
"""
|
|
287
|
+
endpoint = LIST_EXPECTED_SOURCES.format(dataSetId=dataset_id, dataSetRowId=dataset_row_id)
|
|
288
|
+
response = self.api_service.get(
|
|
289
|
+
endpoint=endpoint
|
|
290
|
+
)
|
|
291
|
+
validate_status_code(response)
|
|
292
|
+
return parse_json_response(response, "dataset operation")
|
|
293
|
+
|
|
294
|
+
def get_expected_source(self, dataset_id: str, dataset_row_id: str, expected_source_id: str) -> dict:
|
|
295
|
+
"""
|
|
296
|
+
Retrieves a specific expected source.
|
|
297
|
+
|
|
298
|
+
:param dataset_id: str - The ID of the dataset.
|
|
299
|
+
:param dataset_row_id: str - The ID of the dataset row.
|
|
300
|
+
:param expected_source_id: str - The ID of the expected source.
|
|
301
|
+
|
|
302
|
+
:return: dict - The expected source metadata.
|
|
303
|
+
"""
|
|
304
|
+
endpoint = GET_EXPECTED_SOURCE.format(dataSetId=dataset_id, dataSetRowId=dataset_row_id, dataSetExpectedSourceId=expected_source_id)
|
|
305
|
+
response = self.api_service.get(
|
|
306
|
+
endpoint=endpoint
|
|
307
|
+
)
|
|
308
|
+
validate_status_code(response)
|
|
309
|
+
return parse_json_response(response, "dataset operation")
|
|
310
|
+
|
|
311
|
+
def update_expected_source(
|
|
312
|
+
self,
|
|
313
|
+
dataset_id: str,
|
|
314
|
+
dataset_row_id: str,
|
|
315
|
+
expected_source_id: str,
|
|
316
|
+
expected_source_name: str,
|
|
317
|
+
expected_source_value: str,
|
|
318
|
+
expected_source_extension: str
|
|
319
|
+
) -> dict:
|
|
320
|
+
"""
|
|
321
|
+
Updates an expected source for a dataset row.
|
|
322
|
+
|
|
323
|
+
:param dataset_id: str - The ID of the dataset.
|
|
324
|
+
:param dataset_row_id: str - The ID of the dataset row.
|
|
325
|
+
:param expected_source_id: str - The ID of the expected source.
|
|
326
|
+
:param expected_source_name: str - The updated name of the expected source.
|
|
327
|
+
:param expected_source_value: str - The updated value of the expected source.
|
|
328
|
+
:param expected_source_extension: str - The updated file extension of the expected source.
|
|
329
|
+
|
|
330
|
+
:return: dict - API response with the updated expected source.
|
|
331
|
+
"""
|
|
332
|
+
data = {
|
|
333
|
+
"dataSetExpectedSourceName": expected_source_name,
|
|
334
|
+
"dataSetExpectedSourceValue": expected_source_value,
|
|
335
|
+
"dataSetExpectedSourceExtension": expected_source_extension
|
|
336
|
+
}
|
|
337
|
+
endpoint = UPDATE_EXPECTED_SOURCE.format(dataSetId=dataset_id, dataSetRowId=dataset_row_id, dataSetExpectedSourceId=expected_source_id)
|
|
338
|
+
response = self.api_service.put(
|
|
339
|
+
endpoint=endpoint,
|
|
340
|
+
data=data
|
|
341
|
+
)
|
|
342
|
+
validate_status_code(response)
|
|
343
|
+
return parse_json_response(response, "dataset operation")
|
|
344
|
+
|
|
345
|
+
def delete_expected_source(self, dataset_id: str, dataset_row_id: str, expected_source_id: str) -> dict:
|
|
346
|
+
"""
|
|
347
|
+
Deletes an expected source.
|
|
348
|
+
|
|
349
|
+
:param dataset_id: str - The ID of the dataset.
|
|
350
|
+
:param dataset_row_id: str - The ID of the dataset row.
|
|
351
|
+
:param expected_source_id: str - The ID of the expected source.
|
|
352
|
+
|
|
353
|
+
:return: dict - Response indicating the success or failure of the deletion.
|
|
354
|
+
"""
|
|
355
|
+
endpoint = DELETE_EXPECTED_SOURCE.format(dataSetId=dataset_id, dataSetRowId=dataset_row_id, dataSetExpectedSourceId=expected_source_id)
|
|
356
|
+
response = self.api_service.delete(
|
|
357
|
+
endpoint=endpoint
|
|
358
|
+
)
|
|
359
|
+
validate_status_code(response)
|
|
360
|
+
return parse_json_response(response, "dataset operation")
|
|
361
|
+
|
|
362
|
+
def create_filter_variable(
|
|
363
|
+
self,
|
|
364
|
+
dataset_id: str,
|
|
365
|
+
dataset_row_id: str,
|
|
366
|
+
metadata_type: str,
|
|
367
|
+
filter_variable_key: str,
|
|
368
|
+
filter_variable_value: str,
|
|
369
|
+
filter_variable_operator: str
|
|
370
|
+
) -> dict:
|
|
371
|
+
"""
|
|
372
|
+
Creates a new filter variable for a dataset row.
|
|
373
|
+
|
|
374
|
+
:param dataset_id: str - The ID of the dataset.
|
|
375
|
+
:param dataset_row_id: str - The ID of the dataset row.
|
|
376
|
+
:param metadata_type: str - The type of metadata (e.g., "V" for variable, "F" for flag).
|
|
377
|
+
:param filter_variable_key: str - The key to filter by.
|
|
378
|
+
:param filter_variable_value: str - The value to filter by.
|
|
379
|
+
:param filter_variable_operator: str - The filter operation (e.g., "=", "!=", ">", "<", "contains").
|
|
380
|
+
|
|
381
|
+
:return: dict - API response with the created filter variable.
|
|
382
|
+
"""
|
|
383
|
+
data = {
|
|
384
|
+
"dataSetMetadataType": metadata_type,
|
|
385
|
+
"dataSetRowFilterKey": filter_variable_key,
|
|
386
|
+
"dataSetRowFilterValue": filter_variable_value,
|
|
387
|
+
"dataSetRowFilterOperator": filter_variable_operator
|
|
388
|
+
}
|
|
389
|
+
endpoint = CREATE_FILTER_VARIABLE.format(dataSetId=dataset_id, dataSetRowId=dataset_row_id)
|
|
390
|
+
response = self.api_service.post(
|
|
391
|
+
endpoint=endpoint,
|
|
392
|
+
data=data
|
|
393
|
+
)
|
|
394
|
+
validate_status_code(response)
|
|
395
|
+
return parse_json_response(response, "dataset operation")
|
|
396
|
+
|
|
397
|
+
def list_filter_variables(self, dataset_id: str, dataset_row_id: str) -> dict:
|
|
398
|
+
"""
|
|
399
|
+
Lists filter variables for a dataset row.
|
|
400
|
+
|
|
401
|
+
:param dataset_id: str - The ID of the dataset.
|
|
402
|
+
:param dataset_row_id: str - The ID of the dataset row.
|
|
403
|
+
|
|
404
|
+
:return: dict - List of filter variables.
|
|
405
|
+
"""
|
|
406
|
+
endpoint = LIST_FILTER_VARIABLES.format(dataSetId=dataset_id, dataSetRowId=dataset_row_id)
|
|
407
|
+
response = self.api_service.get(
|
|
408
|
+
endpoint=endpoint
|
|
409
|
+
)
|
|
410
|
+
validate_status_code(response)
|
|
411
|
+
return parse_json_response(response, "dataset operation")
|
|
412
|
+
|
|
413
|
+
def get_filter_variable(self, dataset_id: str, dataset_row_id: str, filter_variable_id: str) -> dict:
|
|
414
|
+
"""
|
|
415
|
+
Retrieves a specific filter variable.
|
|
416
|
+
|
|
417
|
+
:param dataset_id: str - The ID of the dataset.
|
|
418
|
+
:param dataset_row_id: str - The ID of the dataset row.
|
|
419
|
+
:param filter_variable_id: str - The ID of the filter variable.
|
|
420
|
+
|
|
421
|
+
:return: dict - The filter variable metadata.
|
|
422
|
+
"""
|
|
423
|
+
endpoint = GET_FILTER_VARIABLE.format(dataSetId=dataset_id, dataSetRowId=dataset_row_id, dataSetRowFilterVarId=filter_variable_id)
|
|
424
|
+
response = self.api_service.get(
|
|
425
|
+
endpoint=endpoint
|
|
426
|
+
)
|
|
427
|
+
validate_status_code(response)
|
|
428
|
+
return parse_json_response(response, "dataset operation")
|
|
429
|
+
|
|
430
|
+
def update_filter_variable(
|
|
431
|
+
self,
|
|
432
|
+
dataset_id: str,
|
|
433
|
+
dataset_row_id: str,
|
|
434
|
+
filter_variable_id: str,
|
|
435
|
+
metadata_type: str,
|
|
436
|
+
filter_variable_key: str,
|
|
437
|
+
filter_variable_value: str,
|
|
438
|
+
filter_variable_operator: str
|
|
439
|
+
) -> dict:
|
|
440
|
+
"""
|
|
441
|
+
Updates a filter variable for a dataset row.
|
|
442
|
+
|
|
443
|
+
:param dataset_id: str - The ID of the dataset.
|
|
444
|
+
:param dataset_row_id: str - The ID of the dataset row.
|
|
445
|
+
:param filter_variable_id: str - The ID of the filter variable.
|
|
446
|
+
:param metadata_type: str - The type of metadata (e.g., "V" for variable, "F" for flag).
|
|
447
|
+
:param filter_variable_key: str - The key to filter by.
|
|
448
|
+
:param filter_variable_value: str - The value to filter by.
|
|
449
|
+
:param filter_variable_operator: str - The filter operation (e.g., "=", "!=", ">", "<", "contains").
|
|
450
|
+
|
|
451
|
+
:return: dict - API response with the updated filter variable.
|
|
452
|
+
"""
|
|
453
|
+
data = {
|
|
454
|
+
"dataSetMetadataType": metadata_type,
|
|
455
|
+
"dataSetRowFilterKey": filter_variable_key,
|
|
456
|
+
"dataSetRowFilterValue": filter_variable_value,
|
|
457
|
+
"dataSetRowFilterOperator": filter_variable_operator
|
|
458
|
+
}
|
|
459
|
+
endpoint = UPDATE_FILTER_VARIABLE.format(dataSetId=dataset_id, dataSetRowId=dataset_row_id, dataSetRowFilterVarId=filter_variable_id)
|
|
460
|
+
response = self.api_service.put(
|
|
461
|
+
endpoint=endpoint,
|
|
462
|
+
data=data
|
|
463
|
+
)
|
|
464
|
+
validate_status_code(response)
|
|
465
|
+
return parse_json_response(response, "dataset operation")
|
|
466
|
+
|
|
467
|
+
def delete_filter_variable(self, dataset_id: str, dataset_row_id: str, filter_variable_id: str) -> dict:
|
|
468
|
+
"""
|
|
469
|
+
Deletes a filter variable.
|
|
470
|
+
|
|
471
|
+
:param dataset_id: str - The ID of the dataset.
|
|
472
|
+
:param dataset_row_id: str - The ID of the dataset row.
|
|
473
|
+
:param filter_variable_id: str - The ID of the filter variable.
|
|
474
|
+
|
|
475
|
+
:return: dict - Response indicating the success or failure of the deletion.
|
|
476
|
+
"""
|
|
477
|
+
endpoint = DELETE_FILTER_VARIABLE.format(dataSetId=dataset_id, dataSetRowId=dataset_row_id, dataSetRowFilterVarId=filter_variable_id)
|
|
478
|
+
response = self.api_service.delete(
|
|
479
|
+
endpoint=endpoint
|
|
480
|
+
)
|
|
481
|
+
validate_status_code(response)
|
|
482
|
+
return parse_json_response(response, "dataset operation")
|
|
483
|
+
|
|
484
|
+
def upload_dataset_rows_file(self, dataset_id: str, file_path: str) -> dict:
|
|
485
|
+
"""
|
|
486
|
+
Uploads multiple dataset rows via file upload.
|
|
487
|
+
|
|
488
|
+
:param dataset_id: str - The ID of the dataset.
|
|
489
|
+
:param file_path: dict - File path with data for the dataset rows upload.
|
|
490
|
+
|
|
491
|
+
:return: dict - API response with the file upload result.
|
|
492
|
+
"""
|
|
493
|
+
file_path = Path(file_path)
|
|
494
|
+
if not file_path.is_file():
|
|
495
|
+
raise FileNotFoundError(f"File not found: {file_path}")
|
|
496
|
+
|
|
497
|
+
headers = {
|
|
498
|
+
"Content-Type": "application/json",
|
|
499
|
+
}
|
|
500
|
+
endpoint = UPLOAD_DATASET_ROWS_FILE.format(dataSetId=dataset_id)
|
|
501
|
+
|
|
502
|
+
file = file_path.open("rb")
|
|
503
|
+
try:
|
|
504
|
+
response = self.api_service.post_file_binary(
|
|
505
|
+
endpoint=endpoint,
|
|
506
|
+
headers=headers,
|
|
507
|
+
file=file
|
|
508
|
+
)
|
|
509
|
+
validate_status_code(response)
|
|
510
|
+
return parse_json_response(response, "upload dataset rows file")
|
|
511
|
+
finally:
|
|
512
|
+
if file:
|
|
513
|
+
file.close()
|
|
514
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
LIST_DATASETS = "dataSetApi/dataSets" # GET -> Lists all datasets.
|
|
2
|
+
CREATE_DATASET = "dataSetApi/dataSet" # POST -> Creates a new dataset.
|
|
3
|
+
UPLOAD_DATASET_FILE = "dataSetApi/dataSet/FileUpload" # POST -> Uploads one complete dataset via file upload.
|
|
4
|
+
GET_DATASET = "dataSetApi/dataSet/{dataSetId}" # GET -> Retrieves a specific dataset.
|
|
5
|
+
UPDATE_DATASET = "dataSetApi/dataSet/{dataSetId}" # PUT -> Updates an existing dataset.
|
|
6
|
+
DELETE_DATASET = "dataSetApi/dataSet/{dataSetId}" # DELETE -> Deletes a dataset.
|
|
7
|
+
|
|
8
|
+
CREATE_DATASET_ROW = "dataSetApi/dataSet/{dataSetId}/dataSetRow" # POST -> Creates a new row in a dataset.
|
|
9
|
+
LIST_DATASET_ROWS = "dataSetApi/dataSet/{dataSetId}/dataSetRows" # GET -> Lists rows for a dataset.
|
|
10
|
+
GET_DATASET_ROW = "dataSetApi/dataSet/{dataSetId}/dataSetRow/{dataSetRowId}" # GET -> Retrieves a specific dataset row.
|
|
11
|
+
UPDATE_DATASET_ROW = "dataSetApi/dataSet/{dataSetId}/dataSetRow/{dataSetRowId}" # PUT -> Updates a dataset row.
|
|
12
|
+
DELETE_DATASET_ROW = "dataSetApi/dataSet/{dataSetId}/dataSetRow/{dataSetRowId}" # DELETE -> Deletes a dataset row.
|
|
13
|
+
|
|
14
|
+
CREATE_EXPECTED_SOURCE = "dataSetApi/dataSet/{dataSetId}/dataSetRow/{dataSetRowId}/dataSetRowExpectedSource" # POST -> Creates a new expected source for a dataset row.
|
|
15
|
+
LIST_EXPECTED_SOURCES = "dataSetApi/dataSet/{dataSetId}/dataSetRow/{dataSetRowId}/dataSetRowExpectedSources" # GET -> Lists expected sources for a dataset row.
|
|
16
|
+
GET_EXPECTED_SOURCE = "dataSetApi/dataSet/{dataSetId}/dataSetRow/{dataSetRowId}/dataSetRowExpectedSource/{dataSetExpectedSourceId}" # GET -> Retrieves a specific expected source.
|
|
17
|
+
UPDATE_EXPECTED_SOURCE = "dataSetApi/dataSet/{dataSetId}/dataSetRow/{dataSetRowId}/dataSetRowExpectedSource/{dataSetExpectedSourceId}" # PUT -> Updates an expected source.
|
|
18
|
+
DELETE_EXPECTED_SOURCE = "dataSetApi/dataSet/{dataSetId}/dataSetRow/{dataSetRowId}/dataSetRowExpectedSource/{dataSetExpectedSourceId}" # DELETE -> Deletes an expected source.
|
|
19
|
+
|
|
20
|
+
CREATE_FILTER_VARIABLE = "dataSetApi/dataSet/{dataSetId}/dataSetRow/{dataSetRowId}/dataSetRowFilterVariable" # POST -> Creates a new filter variable for a dataset row.
|
|
21
|
+
LIST_FILTER_VARIABLES = "dataSetApi/dataSet/{dataSetId}/dataSetRow/{dataSetRowId}/dataSetRowFilterVariables" # GET -> Lists filter variables for a dataset row.
|
|
22
|
+
GET_FILTER_VARIABLE = "dataSetApi/dataSet/{dataSetId}/dataSetRow/{dataSetRowId}/dataSetRowFilterVariable/{dataSetRowFilterVarId}" # GET -> Retrieves a specific filter variable.
|
|
23
|
+
UPDATE_FILTER_VARIABLE = "dataSetApi/dataSet/{dataSetId}/dataSetRow/{dataSetRowId}/dataSetRowFilterVariable/{dataSetRowFilterVarId}" # PUT -> Updates a filter variable.
|
|
24
|
+
DELETE_FILTER_VARIABLE = "dataSetApi/dataSet/{dataSetId}/dataSetRow/{dataSetRowId}/dataSetRowFilterVariable/{dataSetRowFilterVarId}" # DELETE -> Deletes a filter variable.
|
|
25
|
+
|
|
26
|
+
UPLOAD_DATASET_ROWS_FILE = "dataSetApi/dataSet/{dataSetId}/dataSetRow/FileUpload" # POST -> Uploads multiple dataset rows via file upload.
|
|
File without changes
|