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
|
@@ -0,0 +1,651 @@
|
|
|
1
|
+
PyGEAI Debugger
|
|
2
|
+
===============
|
|
3
|
+
|
|
4
|
+
Overview
|
|
5
|
+
--------
|
|
6
|
+
|
|
7
|
+
``geai-dbg`` is an interactive command-line debugger for PyGEAI applications. It enables developers to debug the ``geai`` CLI, custom Python scripts that use PyGEAI, or specific PyGEAI modules. The debugger pauses execution at specified breakpoints, allowing inspection of variables, stack navigation, code stepping, and interactive control of program flow.
|
|
8
|
+
|
|
9
|
+
The debugger provides features similar to Python's built-in ``pdb`` debugger, including:
|
|
10
|
+
|
|
11
|
+
- **Multiple debugging modes**: Debug geai CLI, Python files, or specific modules
|
|
12
|
+
- **Breakpoint management**: Set, list, enable/disable, and remove breakpoints with optional conditions
|
|
13
|
+
- **Stepping**: Step into, over, and out of function calls
|
|
14
|
+
- **Stack navigation**: Move up and down the call stack to inspect different frames
|
|
15
|
+
- **Variable inspection**: Print, pretty-print, and examine local/global variables
|
|
16
|
+
- **Source code display**: View source code around the current execution point
|
|
17
|
+
- **Performance optimization**: Module filtering to minimize overhead
|
|
18
|
+
- **Command history**: Uses readline for command history and editing
|
|
19
|
+
|
|
20
|
+
Installation and Setup
|
|
21
|
+
----------------------
|
|
22
|
+
|
|
23
|
+
``geai-dbg`` is included in the ``pygeai`` package. Ensure ``pygeai`` is installed in your Python environment:
|
|
24
|
+
|
|
25
|
+
.. code-block:: bash
|
|
26
|
+
|
|
27
|
+
pip install pygeai
|
|
28
|
+
|
|
29
|
+
No additional setup is required. The debugger is located in the ``pygeai.dbg`` module and can be invoked via the ``geai-dbg`` command.
|
|
30
|
+
|
|
31
|
+
Usage Modes
|
|
32
|
+
-----------
|
|
33
|
+
|
|
34
|
+
The debugger supports three distinct usage modes:
|
|
35
|
+
|
|
36
|
+
Mode 1: Debug geai CLI (Default)
|
|
37
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
38
|
+
|
|
39
|
+
Debug the ``geai`` CLI tool with your command arguments:
|
|
40
|
+
|
|
41
|
+
.. code-block:: bash
|
|
42
|
+
|
|
43
|
+
geai-dbg
|
|
44
|
+
geai-dbg ail lrs
|
|
45
|
+
geai-dbg chat "Hello, AI"
|
|
46
|
+
|
|
47
|
+
This runs the ``geai`` CLI under the debugger with an automatic breakpoint at ``pygeai.cli.geai:main``.
|
|
48
|
+
|
|
49
|
+
Mode 2: Debug Python Files
|
|
50
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
51
|
+
|
|
52
|
+
Debug any Python script that uses PyGEAI:
|
|
53
|
+
|
|
54
|
+
.. code-block:: bash
|
|
55
|
+
|
|
56
|
+
geai-dbg my_script.py
|
|
57
|
+
geai-dbg my_script.py --input data.csv --output results.json
|
|
58
|
+
geai-dbg -b process_data my_script.py
|
|
59
|
+
|
|
60
|
+
The debugger automatically detects whether your script imports PyGEAI and adjusts module filtering accordingly.
|
|
61
|
+
|
|
62
|
+
Mode 3: Debug Specific Modules
|
|
63
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
64
|
+
|
|
65
|
+
Debug a specific module and function directly:
|
|
66
|
+
|
|
67
|
+
.. code-block:: bash
|
|
68
|
+
|
|
69
|
+
geai-dbg -m pygeai.cli.geai:main
|
|
70
|
+
geai-dbg -m pygeai.chat:send_message -b process_response
|
|
71
|
+
|
|
72
|
+
This imports the module, sets up debugging, and runs the specified function.
|
|
73
|
+
|
|
74
|
+
Command-Line Options
|
|
75
|
+
--------------------
|
|
76
|
+
|
|
77
|
+
.. code-block:: text
|
|
78
|
+
|
|
79
|
+
geai-dbg [OPTIONS] [target] [args...]
|
|
80
|
+
|
|
81
|
+
Options:
|
|
82
|
+
-h, --help Show help message
|
|
83
|
+
-m MODULE:FUNC Debug a module function (e.g., pygeai.cli.geai:main)
|
|
84
|
+
-b BREAKPOINT Set initial breakpoint ([module:]function)
|
|
85
|
+
--filter PREFIX Only trace modules with this prefix
|
|
86
|
+
--trace-all Trace all modules (warning: slow)
|
|
87
|
+
-v, --verbose Enable verbose logging for pygeai modules
|
|
88
|
+
--log-level LEVEL Log level for verbose mode: DEBUG, INFO, WARNING, ERROR (default: DEBUG)
|
|
89
|
+
|
|
90
|
+
Examples:
|
|
91
|
+
geai-dbg Debug the geai CLI
|
|
92
|
+
geai-dbg script.py arg1 arg2 Debug a Python file with arguments
|
|
93
|
+
geai-dbg -v script.py Debug with verbose logging (DEBUG level)
|
|
94
|
+
geai-dbg -v --log-level INFO script.py Debug with INFO level logging
|
|
95
|
+
geai-dbg -m pygeai.cli.geai:main Debug a specific module function
|
|
96
|
+
geai-dbg -b main script.py Break on 'main' function
|
|
97
|
+
geai-dbg --filter pygeai script.py Only trace pygeai modules
|
|
98
|
+
|
|
99
|
+
Programmatic Usage
|
|
100
|
+
------------------
|
|
101
|
+
|
|
102
|
+
Debug a Python File
|
|
103
|
+
~~~~~~~~~~~~~~~~~~~
|
|
104
|
+
|
|
105
|
+
.. code-block:: python
|
|
106
|
+
|
|
107
|
+
from pygeai.dbg import debug_file
|
|
108
|
+
|
|
109
|
+
# Set up debugger for a file
|
|
110
|
+
dbg = debug_file('my_script.py', args=['--verbose'])
|
|
111
|
+
dbg.add_breakpoint(function_name='process_data')
|
|
112
|
+
dbg.add_breakpoint(module='pygeai.chat', function_name='send_message')
|
|
113
|
+
|
|
114
|
+
# Run with debugging
|
|
115
|
+
dbg.run()
|
|
116
|
+
|
|
117
|
+
# Enable verbose logging with custom log level
|
|
118
|
+
dbg = debug_file('my_script.py', verbose=True, log_level='INFO')
|
|
119
|
+
dbg.run()
|
|
120
|
+
|
|
121
|
+
Debug a Module
|
|
122
|
+
~~~~~~~~~~~~~~
|
|
123
|
+
|
|
124
|
+
.. code-block:: python
|
|
125
|
+
|
|
126
|
+
from pygeai.dbg import debug_module
|
|
127
|
+
|
|
128
|
+
# Debug a specific module function
|
|
129
|
+
dbg = debug_module('pygeai.cli.geai', 'main')
|
|
130
|
+
dbg.add_breakpoint(module='pygeai.core.llm', function_name='get_completion')
|
|
131
|
+
dbg.run()
|
|
132
|
+
|
|
133
|
+
Advanced Configuration
|
|
134
|
+
~~~~~~~~~~~~~~~~~~~~~~
|
|
135
|
+
|
|
136
|
+
.. code-block:: python
|
|
137
|
+
|
|
138
|
+
from pygeai.dbg import Debugger
|
|
139
|
+
|
|
140
|
+
def my_function():
|
|
141
|
+
# Your code here
|
|
142
|
+
pass
|
|
143
|
+
|
|
144
|
+
# Create custom debugger
|
|
145
|
+
dbg = Debugger(target=my_function, module_filter='') # Trace all modules
|
|
146
|
+
dbg.add_breakpoint(function_name='helper_func', condition='x > 100')
|
|
147
|
+
dbg.run()
|
|
148
|
+
|
|
149
|
+
Interactive Commands
|
|
150
|
+
--------------------
|
|
151
|
+
|
|
152
|
+
Once paused at a breakpoint, the following commands are available at the ``(geai-dbg)`` prompt:
|
|
153
|
+
|
|
154
|
+
Flow Control
|
|
155
|
+
~~~~~~~~~~~~
|
|
156
|
+
|
|
157
|
+
**continue, c**
|
|
158
|
+
Resume execution until the next breakpoint is hit or the program completes.
|
|
159
|
+
|
|
160
|
+
**step, s**
|
|
161
|
+
Execute the current line and stop at the first possible occasion (either in a function that is called or on the next line in the current function).
|
|
162
|
+
|
|
163
|
+
**next, n**
|
|
164
|
+
Continue execution until the next line in the current function is reached or it returns (step over function calls).
|
|
165
|
+
|
|
166
|
+
**return, ret**
|
|
167
|
+
Continue execution until the current function returns.
|
|
168
|
+
|
|
169
|
+
**run, r**
|
|
170
|
+
Run the program to completion, disabling all breakpoints and skipping further pauses.
|
|
171
|
+
|
|
172
|
+
**quit, q**
|
|
173
|
+
Exit the debugger, terminating the program with a clean exit status (0).
|
|
174
|
+
|
|
175
|
+
Stack Navigation
|
|
176
|
+
~~~~~~~~~~~~~~~~
|
|
177
|
+
|
|
178
|
+
**where, w, bt**
|
|
179
|
+
Display the stack trace, showing all frames from the current execution point to the top of the call stack.
|
|
180
|
+
|
|
181
|
+
**up, u**
|
|
182
|
+
Move up one level in the stack trace (to an older frame). This allows you to inspect the context of the caller.
|
|
183
|
+
|
|
184
|
+
**down, d**
|
|
185
|
+
Move down one level in the stack trace (to a newer frame).
|
|
186
|
+
|
|
187
|
+
Source Display
|
|
188
|
+
~~~~~~~~~~~~~~
|
|
189
|
+
|
|
190
|
+
**list, l [n]**
|
|
191
|
+
Show source code around the current line. Optional argument ``n`` specifies the number of lines of context (default: 10).
|
|
192
|
+
|
|
193
|
+
Variable Inspection
|
|
194
|
+
~~~~~~~~~~~~~~~~~~~
|
|
195
|
+
|
|
196
|
+
**print, p <expression>**
|
|
197
|
+
Evaluate and print the value of a Python expression in the current frame's context.
|
|
198
|
+
|
|
199
|
+
Example: ``p x + y``
|
|
200
|
+
|
|
201
|
+
**pp <expression>**
|
|
202
|
+
Pretty-print the value of a Python expression using ``pprint.pprint()``.
|
|
203
|
+
|
|
204
|
+
Example: ``pp locals()``
|
|
205
|
+
|
|
206
|
+
**locals, loc**
|
|
207
|
+
Display all local variables in the current frame.
|
|
208
|
+
|
|
209
|
+
**globals, glob**
|
|
210
|
+
Display all global variables in the current frame (excluding built-ins).
|
|
211
|
+
|
|
212
|
+
**args, a**
|
|
213
|
+
Display the arguments of the current function.
|
|
214
|
+
|
|
215
|
+
Breakpoint Management
|
|
216
|
+
~~~~~~~~~~~~~~~~~~~~~
|
|
217
|
+
|
|
218
|
+
**break, b**
|
|
219
|
+
List all breakpoints with their status, hit counts, and conditions.
|
|
220
|
+
|
|
221
|
+
**b <function>**
|
|
222
|
+
Set a breakpoint on any function with the given name.
|
|
223
|
+
|
|
224
|
+
Example: ``b main``
|
|
225
|
+
|
|
226
|
+
**b <module>:<function>**
|
|
227
|
+
Set a breakpoint on a specific function in a specific module.
|
|
228
|
+
|
|
229
|
+
Example: ``b pygeai.cli.geai:main``
|
|
230
|
+
|
|
231
|
+
**clear, cl <breakpoint>**
|
|
232
|
+
Remove a breakpoint. Use the same syntax as setting a breakpoint.
|
|
233
|
+
|
|
234
|
+
Example: ``cl main`` or ``cl pygeai.cli.geai:main``
|
|
235
|
+
|
|
236
|
+
**clearall, cla**
|
|
237
|
+
Remove all breakpoints.
|
|
238
|
+
|
|
239
|
+
**enable, en <breakpoint>**
|
|
240
|
+
Enable a disabled breakpoint.
|
|
241
|
+
|
|
242
|
+
Example: ``en main``
|
|
243
|
+
|
|
244
|
+
**disable, dis <breakpoint>**
|
|
245
|
+
Disable a breakpoint without removing it.
|
|
246
|
+
|
|
247
|
+
Example: ``dis main``
|
|
248
|
+
|
|
249
|
+
Other Commands
|
|
250
|
+
~~~~~~~~~~~~~~
|
|
251
|
+
|
|
252
|
+
**help, h, ?**
|
|
253
|
+
Display a list of available commands and their descriptions.
|
|
254
|
+
|
|
255
|
+
**<Python code>**
|
|
256
|
+
Execute arbitrary Python code in the current frame's context. For example, ``x = 42`` or ``print(sys.argv)``.
|
|
257
|
+
|
|
258
|
+
Examples
|
|
259
|
+
--------
|
|
260
|
+
|
|
261
|
+
Example 1: Debug a Chat Application
|
|
262
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
263
|
+
|
|
264
|
+
Create a chat application script:
|
|
265
|
+
|
|
266
|
+
.. code-block:: python
|
|
267
|
+
|
|
268
|
+
# chat_app.py
|
|
269
|
+
from pygeai.chat import ChatClient
|
|
270
|
+
|
|
271
|
+
def process_message(message):
|
|
272
|
+
client = ChatClient()
|
|
273
|
+
response = client.send_message(message)
|
|
274
|
+
return response.content
|
|
275
|
+
|
|
276
|
+
def main():
|
|
277
|
+
msg = "Hello, AI!"
|
|
278
|
+
result = process_message(msg)
|
|
279
|
+
print(result)
|
|
280
|
+
|
|
281
|
+
if __name__ == "__main__":
|
|
282
|
+
main()
|
|
283
|
+
|
|
284
|
+
Debug it:
|
|
285
|
+
|
|
286
|
+
.. code-block:: bash
|
|
287
|
+
|
|
288
|
+
# Break on process_message
|
|
289
|
+
geai-dbg -b process_message chat_app.py
|
|
290
|
+
|
|
291
|
+
# Or with module-specific breakpoint
|
|
292
|
+
geai-dbg -b pygeai.chat:send_message chat_app.py
|
|
293
|
+
|
|
294
|
+
Interactive session:
|
|
295
|
+
|
|
296
|
+
.. code-block:: text
|
|
297
|
+
|
|
298
|
+
(geai-dbg) p message
|
|
299
|
+
'Hello, AI!'
|
|
300
|
+
(geai-dbg) s # Step into send_message
|
|
301
|
+
(geai-dbg) l # List source code
|
|
302
|
+
(geai-dbg) p self.config # Inspect client configuration
|
|
303
|
+
(geai-dbg) c # Continue
|
|
304
|
+
|
|
305
|
+
Example 2: Debug geai CLI
|
|
306
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
307
|
+
|
|
308
|
+
Debug the ``geai`` CLI with specific arguments:
|
|
309
|
+
|
|
310
|
+
.. code-block:: bash
|
|
311
|
+
|
|
312
|
+
geai-dbg ail lrs
|
|
313
|
+
|
|
314
|
+
Output:
|
|
315
|
+
|
|
316
|
+
.. code-block:: text
|
|
317
|
+
|
|
318
|
+
2026-01-14 15:04:57,263 - geai.dbg - INFO - GEAI debugger started.
|
|
319
|
+
2026-01-14 15:04:57,264 - geai.dbg - INFO - Breakpoint added: pygeai.cli.geai:main (enabled, hits: 0)
|
|
320
|
+
2026-01-14 15:04:57,264 - geai.dbg - INFO - Setting trace and running target
|
|
321
|
+
2026-01-14 15:04:57,264 - geai.dbg - INFO - Breakpoint hit at pygeai.cli.geai.main (hit #1)
|
|
322
|
+
|
|
323
|
+
============================================================
|
|
324
|
+
Paused at pygeai.cli.geai.main (line 42)
|
|
325
|
+
|
|
326
|
+
Source (/path/to/pygeai/cli/geai.py):
|
|
327
|
+
39
|
|
328
|
+
40 class CLIDriver:
|
|
329
|
+
41 def main(self):
|
|
330
|
+
-> 42 parser = ArgumentParser()
|
|
331
|
+
43 args = parser.parse_args()
|
|
332
|
+
44 return self.execute(args)
|
|
333
|
+
45
|
|
334
|
+
============================================================
|
|
335
|
+
Type 'h' for help, 'c' to continue
|
|
336
|
+
(geai-dbg) p sys.argv
|
|
337
|
+
['geai', 'ail', 'lrs']
|
|
338
|
+
(geai-dbg) c
|
|
339
|
+
|
|
340
|
+
Example 3: Debug with Conditional Breakpoints
|
|
341
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
342
|
+
|
|
343
|
+
.. code-block:: python
|
|
344
|
+
|
|
345
|
+
from pygeai.dbg import debug_file
|
|
346
|
+
|
|
347
|
+
dbg = debug_file('process_data.py')
|
|
348
|
+
|
|
349
|
+
# Only break when count exceeds 1000
|
|
350
|
+
dbg.add_breakpoint(
|
|
351
|
+
function_name='process_batch',
|
|
352
|
+
condition='len(batch) > 1000'
|
|
353
|
+
)
|
|
354
|
+
|
|
355
|
+
dbg.run()
|
|
356
|
+
|
|
357
|
+
Example 4: Debug SDK Internals
|
|
358
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
359
|
+
|
|
360
|
+
.. code-block:: bash
|
|
361
|
+
|
|
362
|
+
# Debug the CLI and inspect how commands are processed
|
|
363
|
+
geai-dbg -m pygeai.cli.geai:main -b parse_command
|
|
364
|
+
|
|
365
|
+
Interactive session:
|
|
366
|
+
|
|
367
|
+
.. code-block:: text
|
|
368
|
+
|
|
369
|
+
(geai-dbg) p command
|
|
370
|
+
(geai-dbg) pp locals()
|
|
371
|
+
(geai-dbg) where # See the full call stack
|
|
372
|
+
|
|
373
|
+
Example 5: Stack Navigation
|
|
374
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
375
|
+
|
|
376
|
+
Navigate the call stack:
|
|
377
|
+
|
|
378
|
+
.. code-block:: text
|
|
379
|
+
|
|
380
|
+
(geai-dbg) where
|
|
381
|
+
Stack trace (most recent call last):
|
|
382
|
+
#0 __main__.level_3 at /path/to/script.py:15
|
|
383
|
+
> #1 __main__.level_2 at /path/to/script.py:10
|
|
384
|
+
#2 __main__.level_1 at /path/to/script.py:5
|
|
385
|
+
|
|
386
|
+
(geai-dbg) up
|
|
387
|
+
Frame #0: __main__.level_2
|
|
388
|
+
|
|
389
|
+
(geai-dbg) locals
|
|
390
|
+
Local variables:
|
|
391
|
+
{'value': 'level 2'}
|
|
392
|
+
|
|
393
|
+
(geai-dbg) down
|
|
394
|
+
Frame #1: __main__.level_3
|
|
395
|
+
|
|
396
|
+
Example 6: Breakpoint Management
|
|
397
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
398
|
+
|
|
399
|
+
Manage breakpoints during debugging:
|
|
400
|
+
|
|
401
|
+
.. code-block:: text
|
|
402
|
+
|
|
403
|
+
(geai-dbg) b
|
|
404
|
+
Breakpoints:
|
|
405
|
+
1. pygeai.cli.geai:main (enabled, hits: 1)
|
|
406
|
+
|
|
407
|
+
(geai-dbg) b process_data
|
|
408
|
+
Breakpoint added: *:process_data (enabled, hits: 0)
|
|
409
|
+
|
|
410
|
+
(geai-dbg) b pygeai.core:helper_function
|
|
411
|
+
Breakpoint added: pygeai.core:helper_function (enabled, hits: 0)
|
|
412
|
+
|
|
413
|
+
(geai-dbg) dis process_data
|
|
414
|
+
Breakpoint disabled: *:process_data (disabled, hits: 0)
|
|
415
|
+
|
|
416
|
+
(geai-dbg) cl pygeai.core:helper_function
|
|
417
|
+
Breakpoint removed: pygeai.core:helper_function
|
|
418
|
+
|
|
419
|
+
Example 7: Verbose Logging
|
|
420
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
421
|
+
|
|
422
|
+
Debug with verbose logging to see PyGEAI internal logs:
|
|
423
|
+
|
|
424
|
+
.. code-block:: bash
|
|
425
|
+
|
|
426
|
+
# Enable verbose logging with DEBUG level (default)
|
|
427
|
+
geai-dbg -v my_script.py
|
|
428
|
+
|
|
429
|
+
# Enable verbose logging with INFO level
|
|
430
|
+
geai-dbg -v --log-level INFO my_script.py
|
|
431
|
+
|
|
432
|
+
# Enable verbose logging with ERROR level only
|
|
433
|
+
geai-dbg -v --log-level ERROR my_script.py
|
|
434
|
+
|
|
435
|
+
Programmatically:
|
|
436
|
+
|
|
437
|
+
.. code-block:: python
|
|
438
|
+
|
|
439
|
+
from pygeai.dbg import debug_file
|
|
440
|
+
|
|
441
|
+
# Enable verbose logging with DEBUG level
|
|
442
|
+
dbg = debug_file('my_script.py', verbose=True)
|
|
443
|
+
dbg.run()
|
|
444
|
+
|
|
445
|
+
# Enable verbose logging with INFO level
|
|
446
|
+
dbg = debug_file('my_script.py', verbose=True, log_level='INFO')
|
|
447
|
+
dbg.run()
|
|
448
|
+
|
|
449
|
+
Advanced Features
|
|
450
|
+
-----------------
|
|
451
|
+
|
|
452
|
+
Module Filtering
|
|
453
|
+
~~~~~~~~~~~~~~~~
|
|
454
|
+
|
|
455
|
+
The debugger includes a performance optimization that only traces modules matching a specified prefix. This significantly reduces overhead compared to tracing all Python code.
|
|
456
|
+
|
|
457
|
+
**Automatic detection** (for file debugging):
|
|
458
|
+
|
|
459
|
+
- Scripts without PyGEAI imports: filters to ``__main__`` only
|
|
460
|
+
- Scripts with PyGEAI imports: traces all modules (empty filter)
|
|
461
|
+
|
|
462
|
+
**Manual control**:
|
|
463
|
+
|
|
464
|
+
.. code-block:: bash
|
|
465
|
+
|
|
466
|
+
# Only trace pygeai modules (default for geai CLI)
|
|
467
|
+
geai-dbg --filter pygeai my_script.py
|
|
468
|
+
|
|
469
|
+
# Only trace your script
|
|
470
|
+
geai-dbg --filter __main__ my_script.py
|
|
471
|
+
|
|
472
|
+
# Trace everything (slow!)
|
|
473
|
+
geai-dbg --trace-all my_script.py
|
|
474
|
+
|
|
475
|
+
Programmatically:
|
|
476
|
+
|
|
477
|
+
.. code-block:: python
|
|
478
|
+
|
|
479
|
+
# Fast: only trace __main__
|
|
480
|
+
dbg = debug_file('script.py', module_filter='__main__')
|
|
481
|
+
|
|
482
|
+
# Slower: trace pygeai and __main__
|
|
483
|
+
dbg = debug_file('script.py', module_filter='')
|
|
484
|
+
|
|
485
|
+
Conditional Breakpoints
|
|
486
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
|
487
|
+
|
|
488
|
+
Breakpoints can include conditions that must be met for the breakpoint to trigger:
|
|
489
|
+
|
|
490
|
+
.. code-block:: python
|
|
491
|
+
|
|
492
|
+
from pygeai.dbg import Debugger
|
|
493
|
+
|
|
494
|
+
dbg = Debugger(target=my_function)
|
|
495
|
+
dbg.add_breakpoint(
|
|
496
|
+
module="my_module",
|
|
497
|
+
function_name="process_item",
|
|
498
|
+
condition="item > 100"
|
|
499
|
+
)
|
|
500
|
+
|
|
501
|
+
The breakpoint will only trigger when ``item > 100`` evaluates to ``True`` in the function's context.
|
|
502
|
+
|
|
503
|
+
Command History
|
|
504
|
+
~~~~~~~~~~~~~~~
|
|
505
|
+
|
|
506
|
+
The debugger uses Python's ``readline`` module to provide command history and line editing. You can use:
|
|
507
|
+
|
|
508
|
+
- **Up/Down arrows**: Navigate through command history
|
|
509
|
+
- **Ctrl+R**: Search command history
|
|
510
|
+
|
|
511
|
+
Command history is saved to ``~/.geai_dbg_history`` and persists across debugging sessions.
|
|
512
|
+
|
|
513
|
+
Helper Functions
|
|
514
|
+
~~~~~~~~~~~~~~~~
|
|
515
|
+
|
|
516
|
+
The ``pygeai.dbg`` module provides convenient helper functions:
|
|
517
|
+
|
|
518
|
+
**debug_file(filepath, args, module_filter, breakpoint_specs, verbose, log_level)**
|
|
519
|
+
Debug a Python file by executing it under the debugger.
|
|
520
|
+
|
|
521
|
+
:param filepath: Path to the Python file to debug (required)
|
|
522
|
+
:param args: Command-line arguments to pass to the script (optional)
|
|
523
|
+
:param module_filter: Module prefix to trace, None auto-detects (optional)
|
|
524
|
+
:param breakpoint_specs: List of (module, function) tuples for initial breakpoints (optional)
|
|
525
|
+
:param verbose: Enable verbose logging for pygeai modules (default: False)
|
|
526
|
+
:param log_level: Log level for verbose mode: 'DEBUG', 'INFO', 'WARNING', 'ERROR' (default: 'DEBUG')
|
|
527
|
+
:return: Configured Debugger instance
|
|
528
|
+
:raises: FileNotFoundError if the file doesn't exist
|
|
529
|
+
|
|
530
|
+
**debug_module(module_name, function_name, args, module_filter)**
|
|
531
|
+
Debug a specific module and function.
|
|
532
|
+
|
|
533
|
+
:param module_name: Fully qualified module name, e.g., 'pygeai.cli.geai' (required)
|
|
534
|
+
:param function_name: Function to call (default: 'main')
|
|
535
|
+
:param args: Command-line arguments (optional)
|
|
536
|
+
:param module_filter: Module prefix to trace (optional)
|
|
537
|
+
:return: Configured Debugger instance with automatic breakpoint
|
|
538
|
+
:raises: ImportError if module or function cannot be imported
|
|
539
|
+
|
|
540
|
+
Tips and Best Practices
|
|
541
|
+
-----------------------
|
|
542
|
+
|
|
543
|
+
1. **Start with targeted breakpoints**: Set specific breakpoints on the functions you want to debug rather than using wildcards.
|
|
544
|
+
|
|
545
|
+
2. **Use step wisely**: The ``step`` command can be slow if it steps into many library functions. Use ``next`` to stay at the same level.
|
|
546
|
+
|
|
547
|
+
3. **Inspect the stack**: Use ``where`` to understand the call chain, especially in complex codebases.
|
|
548
|
+
|
|
549
|
+
4. **Pretty-print complex data**: Use ``pp`` instead of ``p`` for dictionaries, lists, and other complex structures.
|
|
550
|
+
|
|
551
|
+
5. **Disable instead of removing**: Use ``disable`` to temporarily turn off breakpoints you might need again, rather than removing them.
|
|
552
|
+
|
|
553
|
+
6. **Use module filtering**: When debugging custom code, set ``module_filter`` to your package name to avoid tracing unrelated code.
|
|
554
|
+
|
|
555
|
+
7. **Conditional breakpoints**: Use conditions to break only when specific criteria are met, reducing manual stepping.
|
|
556
|
+
|
|
557
|
+
8. **Strategic breakpoints**: Set breakpoints only where needed. Specific module:function breakpoints are faster than wildcards.
|
|
558
|
+
|
|
559
|
+
Performance Considerations
|
|
560
|
+
--------------------------
|
|
561
|
+
|
|
562
|
+
**Module Filtering**
|
|
563
|
+
|
|
564
|
+
Module filtering defaults to sensible values:
|
|
565
|
+
|
|
566
|
+
- ``__main__`` for scripts without PyGEAI imports
|
|
567
|
+
- Empty string (all modules) for scripts with PyGEAI imports
|
|
568
|
+
- Inherited from module name for module debugging
|
|
569
|
+
|
|
570
|
+
Users can override with ``--filter`` or ``--trace-all``.
|
|
571
|
+
|
|
572
|
+
**Overhead**
|
|
573
|
+
|
|
574
|
+
The debugger uses ``sys.settrace`` which has performance overhead. The module filter helps minimize this, but expect slower execution than running without the debugger.
|
|
575
|
+
|
|
576
|
+
Troubleshooting
|
|
577
|
+
---------------
|
|
578
|
+
|
|
579
|
+
**Debugger Not Stopping**
|
|
580
|
+
|
|
581
|
+
1. Check module filter matches your code
|
|
582
|
+
2. Verify breakpoint module/function names are correct
|
|
583
|
+
3. Use ``--trace-all`` to debug filtering issues
|
|
584
|
+
|
|
585
|
+
**Source Code Not Available**
|
|
586
|
+
|
|
587
|
+
Some modules (built-ins, compiled extensions) don't have accessible source. The debugger will notify you when source is unavailable.
|
|
588
|
+
|
|
589
|
+
**Performance Issues**
|
|
590
|
+
|
|
591
|
+
1. Reduce module filter scope
|
|
592
|
+
2. Use specific breakpoints instead of wildcards
|
|
593
|
+
3. Disable conditional breakpoints if not needed
|
|
594
|
+
|
|
595
|
+
**Breakpoint not hitting**
|
|
596
|
+
|
|
597
|
+
- Check that the module and function names match exactly (use ``lm`` to list loaded modules)
|
|
598
|
+
- Verify the breakpoint is enabled (use ``b`` to list breakpoints)
|
|
599
|
+
- Check if a condition is preventing the breakpoint from triggering
|
|
600
|
+
|
|
601
|
+
**Can't see local variables**
|
|
602
|
+
|
|
603
|
+
Make sure you're in the correct frame. Use ``where`` to see the stack and ``up``/``down`` to navigate.
|
|
604
|
+
|
|
605
|
+
Code Examples
|
|
606
|
+
-------------
|
|
607
|
+
|
|
608
|
+
See the ``pygeai/tests/snippets/dbg/`` directory for complete working examples:
|
|
609
|
+
|
|
610
|
+
- ``basic_debugging.py`` - Simple debugging with variable inspection
|
|
611
|
+
- ``file_debugging.py`` - Demonstrates debugging Python files
|
|
612
|
+
- ``module_debugging.py`` - Shows module debugging capabilities
|
|
613
|
+
- ``breakpoint_management.py`` - Examples of managing breakpoints
|
|
614
|
+
- ``stack_navigation.py`` - Shows stack traversal with up/down
|
|
615
|
+
|
|
616
|
+
Run these examples with:
|
|
617
|
+
|
|
618
|
+
.. code-block:: bash
|
|
619
|
+
|
|
620
|
+
python pygeai/tests/snippets/dbg/basic_debugging.py
|
|
621
|
+
python pygeai/tests/snippets/dbg/file_debugging.py
|
|
622
|
+
python pygeai/tests/snippets/dbg/module_debugging.py
|
|
623
|
+
|
|
624
|
+
Notes
|
|
625
|
+
-----
|
|
626
|
+
|
|
627
|
+
- **Ctrl+D and Ctrl+C**:
|
|
628
|
+
- Pressing ``Ctrl+D`` at the ``(geai-dbg)`` prompt terminates the debugger gracefully.
|
|
629
|
+
- Pressing ``Ctrl+C`` resumes execution, equivalent to the ``continue`` command.
|
|
630
|
+
|
|
631
|
+
- **Python Code Execution**:
|
|
632
|
+
- Arbitrary Python code executed at the prompt runs in the context of the current frame, with access to local and global variables.
|
|
633
|
+
|
|
634
|
+
- **Breakpoint Persistence**:
|
|
635
|
+
- Breakpoints persist across ``continue`` commands but are cleared when the program exits. They are not saved to disk.
|
|
636
|
+
|
|
637
|
+
- **Logging**:
|
|
638
|
+
- The debugger logs to stdout with timestamps, including breakpoint hits, state changes, and errors.
|
|
639
|
+
- PyGEAI module logging is disabled by default. Enable it with ``-v/--verbose`` flag.
|
|
640
|
+
- When verbose mode is enabled, the log level can be controlled with ``--log-level`` (default: DEBUG).
|
|
641
|
+
|
|
642
|
+
- **Frame Context**:
|
|
643
|
+
- When you move up/down the stack with ``up``/``down``, the current frame changes, affecting what ``locals``, ``globals``, and expression evaluation see.
|
|
644
|
+
|
|
645
|
+
For issues or feature requests, contact the PyGEAI development team or file an issue on the project's GitHub repository.
|
|
646
|
+
|
|
647
|
+
.. seealso::
|
|
648
|
+
|
|
649
|
+
- ``geai`` CLI documentation for details on the underlying command-line tool
|
|
650
|
+
- Python's ``sys.settrace`` documentation for technical details on the debugging mechanism
|
|
651
|
+
- Python's ``pdb`` module for comparison with the standard Python debugger
|