sycommon-python-lib 0.2.10a15__tar.gz → 0.2.10a17__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/PKG-INFO +14 -14
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/pyproject.toml +14 -14
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/sandbox/file_ops.py +11 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/sandbox/http_sandbox_backend.py +8 -0
- sycommon_python_lib-0.2.10a17/src/sycommon/alert/__init__.py +32 -0
- sycommon_python_lib-0.2.10a17/src/sycommon/alert/alert_sdk.py +71 -0
- sycommon_python_lib-0.2.10a17/src/sycommon/alert/ao.py +91 -0
- sycommon_python_lib-0.2.10a17/src/sycommon/alert/api.py +69 -0
- sycommon_python_lib-0.2.10a17/src/sycommon/alert/bridge.py +49 -0
- sycommon_python_lib-0.2.10a17/src/sycommon/alert/env.py +144 -0
- sycommon_python_lib-0.2.10a17/src/sycommon/alert/guard.py +70 -0
- sycommon_python_lib-0.2.10a17/src/sycommon/alert/monitor.py +169 -0
- sycommon_python_lib-0.2.10a17/src/sycommon/alert/queue.py +110 -0
- sycommon_python_lib-0.2.10a17/src/sycommon/alert/sdk.py +310 -0
- sycommon_python_lib-0.2.10a17/src/sycommon/alert/sdk_selfcheck.py +253 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/Config.py +112 -18
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/logging/kafka_log.py +5 -2
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/context.py +7 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/sandbox.py +32 -1
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/traceid.py +9 -1
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/models/sandbox.py +5 -1
- sycommon_python_lib-0.2.10a17/src/sycommon/rabbitmq/delay_queue.py +145 -0
- sycommon_python_lib-0.2.10a17/src/sycommon/rabbitmq/mq_store.py +271 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/rabbitmq/rabbitmq_client.py +40 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +18 -0
- sycommon_python_lib-0.2.10a17/src/sycommon/rabbitmq/topic_registry.py +82 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/services.py +26 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/synacos/feign.py +7 -1
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/synacos/feign_client.py +13 -2
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_upgrade_aio_pika.py +2 -2
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_upgrade_verification.py +7 -7
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tools/sso_token.py +30 -6
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon_python_lib.egg-info/PKG-INFO +14 -14
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon_python_lib.egg-info/SOURCES.txt +14 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon_python_lib.egg-info/requires.txt +13 -13
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/README.md +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/setup.cfg +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/cli.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/core/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/core/console.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/core/models.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/core/project.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/core/utils.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/agent/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/agent/main_agent.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/agent/nodes/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/agent/nodes/example_node.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/agent/states/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/agent/states/agent_state.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/api/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/api/query.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/api/sse/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/api/sse/agent.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/db/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/db/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/db/model/entity.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/db/service.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/model/parse.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/agent/tools/mq.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/base/.env.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/base/.gitignore.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/base/Dockerfile.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/base/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/base/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/base/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/base/app.yaml.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/base/client/FileServiceClient.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/base/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/base/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/base/model/file_info.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/base/requirements.txt.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/cli/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/cli/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/cli/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/cli/commands/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/cli/commands/hello.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/cli/pyproject.toml.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/cli/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/web/README.md.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/web/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/web/api/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/web/api/echo.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/web/api/sse/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/web/api/sse/echo.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/web/app.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/web/client/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/web/model/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/web/tools/__init__.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/command/templates/web/tools/mq.py.tpl +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/nexus/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/__main__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/acp/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/acp/config.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/acp/executor.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/acp/registry.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/acp/server.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/agents/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/agents/factory.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/agents/prompts.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/cdp/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/cdp/browser.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/cdp/capabilities/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/cdp/capabilities/console.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/cdp/capabilities/dom.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/cdp/capabilities/network.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/cdp/capabilities/page_errors.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/cdp/capabilities/performance.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/cdp/capabilities/screenshot.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/cdp/client.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/cdp/protocol.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/cdp/repl.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/cli.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/commands/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/commands/acp_cmd.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/commands/acp_serve_cmd.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/commands/cdp_cmd.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/commands/chat_cmd.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/commands/create_cmd.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/commands/evaluate_cmd.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/commands/init_cmd.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/commands/memory_cmd.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/commands/resume_cmd.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/commands/rollback_cmd.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/commands/run_cmd.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/core/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/core/backend.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/core/config.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/core/display.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/core/git_integration.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/core/llm.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/core/state.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/evaluate/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/evaluate/api_evaluator.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/memory/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/memory/compressor.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/memory/full.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/memory/hot.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/memory/manager.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/memory/warm.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/mode/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/mode/create.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/mode/optimize.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/models/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/models/config_models.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/baseline_tests.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/checkpoint.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/convergence.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/diagnosis.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/engine.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/environment.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/experience.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/harness_prompts.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/history.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/optimization_logger.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/pre_validation.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/reward.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/strategy_bandit.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/strategy_generator.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/rl/strategy_prompts.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/simple_chat_agent.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycli/skills/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/acp/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/acp/client.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/acp/fetch.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/acp/server_adapter.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/acp/ssh_init.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/acp/tool.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/agent_manager.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/chat_events.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/deep_agent.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/mcp/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/mcp/models.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/mcp/tool_loader.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/middleware/model_request_prep.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/middleware/sandbox_path_guard.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/middleware/sensitive_guard.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/middleware/skill_write_guard.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/multi_agent_team.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/reasoning_content_patch.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/resume_compactor.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/sandbox/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/sandbox/consistent_hash.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/sandbox/minio_sync.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/sandbox/session.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/skills_retry_patch.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/agent/summarization_utils.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/auth/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/auth/ldap_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/auth/oa_cache.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/auth/oa_crypto.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/auth/oa_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/auth/wecom_ldap_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/ACPAgentConfig.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/DatabaseConfig.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/EgressPolicyConfig.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/ElasticsearchConfig.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/EmbeddingConfig.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/LLMConfig.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/LangfuseConfig.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/MQConfig.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/PgConfig.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/RedisConfig.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/RerankerConfig.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/SentryConfig.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/XxlJobConfig.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/config/config_change_notifier.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/database/async_base_db_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/database/async_database_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/database/base_db_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/database/database_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/database/elasticsearch_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/database/pg_checkpoint_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/database/redis_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/database/resilient_pg_saver.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/database/token_usage_db_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/health/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/health/health_check.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/health/metrics.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/health/ping.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/health/readiness.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/heartbeat_process/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/embedding.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/get_llm.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/llm_logger.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/llm_tokens.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/output_fixing_runnable.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/struct_token.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/sy_langfuse.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/tiktoken_cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/tiktoken_cache/fb374d419588a4632f3f557e76b4b70aebbca790 +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/token_usage_es_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/token_utils.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/llm/usage_token.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/logging/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/logging/async_sql_logger.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/logging/bounded_kafka_sink.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/logging/bounded_stdout_sink.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/logging/log_masker.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/logging/logger_levels.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/logging/logger_wrapper.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/logging/process_logger.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/logging/sql_logger.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/mcp_server/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/mcp_server/server.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/cors.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/docs.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/egress_wall.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/exception.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/middleware.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/monitor_memory.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/mq.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/sandbox_gateway.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/timeout.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/token_tracking.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/middleware/tool_result_truncation.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/models/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/models/base_http.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/models/log.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/models/mcp_server_config.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/models/mqlistener_config.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/models/mqmsg_model.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/models/mqsend_config.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/models/sso_user.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/models/token_usage.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/models/token_usage_mysql.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/models/xxljob_handler_config.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/notice/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/notice/uvicorn_monitor.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/notice/wecom_message.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/rabbitmq/rabbit_management_client.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/sentry/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/sentry/sy_sentry.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/sse/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/sse/event.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/sse/sse.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/synacos/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/synacos/example.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/synacos/example2.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/synacos/nacos_client_base.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/synacos/nacos_config_manager.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/synacos/nacos_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/synacos/nacos_service_registration.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/synacos/param.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/deep_agent_server.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_backend_factory_compat.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_consistent_hash.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_consume_dedup.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_consumer_broker_health.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_consumer_loss_rootcause.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_consumer_recovery.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_consumer_recovery_fix.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_consumer_tags_sync.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_db_keepalive.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_deep_agent.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_dynamic_max_tokens.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_email.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_encoding_cache.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_env_tenant_helper.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_exp_concurrent_migrate.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_exp_delete_queue_with_consumers.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_fault_injection_real.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_fix_verification.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_heartbeat_timeout.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_integration_real_broker.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_mcp_server.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_minimax_reasoning.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_mq.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_mq_config_driven.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_nacos_llm_real.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_oa_login.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_queue_priority_fallback.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_queue_priority_upgrade_timing.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_real_summarization.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_reconnect_scenarios.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_sandbox_glob_hardening.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_services_plugin_defaults.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_summarization_config.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_summarization_real.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_summary_leak_e2e.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tests/test_upgrade_langgraph_stream.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tools/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tools/async_utils.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tools/docs.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tools/env.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tools/merge_headers.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tools/snowflake.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tools/syemail.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tools/time_utils.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tools/timing.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/tools/user_id.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/xxljob/__init__.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon/xxljob/xxljob_service.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_acp_tool.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_asyncio_logging.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_config_change_notifier.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_frame_alignment.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_hotreload_snapshot.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_kafka_upie_fix.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_llm_apikey_contextvar.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_log_masker.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_print_capture.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_resilient_pg_saver.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_sandbox_path_guard.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_sensitive_guard.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_simple_chat_agent.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_skill_regex_upgrade.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_skill_write_guard.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_sql_params_full.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_streaming_e2e.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_summary_echo_break_loop.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_sycli.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_sylogger_fixes.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_sync_skills_to_sandbox.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_time_utils.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_traceid_omit_base64.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_unicode_decode_regress.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_upload_concurrency.py +0 -0
- {sycommon_python_lib-0.2.10a15 → sycommon_python_lib-0.2.10a17}/tests/test_upload_e2e_http.py +0 -0
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sycommon-python-lib
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.10a17
|
|
4
4
|
Summary: Add your description here
|
|
5
5
|
Requires-Python: >=3.11
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
7
|
-
Requires-Dist: aio-pika==10.1.
|
|
8
|
-
Requires-Dist: aiohttp==3.14.
|
|
7
|
+
Requires-Dist: aio-pika==10.1.1
|
|
8
|
+
Requires-Dist: aiohttp==3.14.5
|
|
9
9
|
Requires-Dist: aiomysql==0.3.2
|
|
10
10
|
Requires-Dist: anyio==4.15.1
|
|
11
11
|
Requires-Dist: decorator==5.3.1
|
|
12
|
-
Requires-Dist: deepagents==0.7.
|
|
12
|
+
Requires-Dist: deepagents==0.7.28
|
|
13
13
|
Requires-Dist: elasticsearch==9.5.1
|
|
14
14
|
Requires-Dist: fastapi==0.143.0
|
|
15
15
|
Requires-Dist: jinja2==3.1.6
|
|
16
16
|
Requires-Dist: kafka-python==3.0.11
|
|
17
|
-
Requires-Dist: langchain==1.4.
|
|
18
|
-
Requires-Dist: langchain-core==1.6.
|
|
19
|
-
Requires-Dist: langchain-openai==1.7.
|
|
20
|
-
Requires-Dist: langfuse==
|
|
21
|
-
Requires-Dist: langgraph==1.2.
|
|
22
|
-
Requires-Dist: langgraph-checkpoint-postgres==3.
|
|
17
|
+
Requires-Dist: langchain==1.4.6
|
|
18
|
+
Requires-Dist: langchain-core==1.6.12
|
|
19
|
+
Requires-Dist: langchain-openai==1.7.2
|
|
20
|
+
Requires-Dist: langfuse==5.0.2
|
|
21
|
+
Requires-Dist: langgraph==1.2.16
|
|
22
|
+
Requires-Dist: langgraph-checkpoint-postgres==3.2.0
|
|
23
23
|
Requires-Dist: langgraph-checkpoint-redis==0.5.2
|
|
24
24
|
Requires-Dist: ldap3==2.9.1
|
|
25
25
|
Requires-Dist: loguru==0.7.3
|
|
@@ -27,14 +27,14 @@ Requires-Dist: mysql-connector-python==26.7.0
|
|
|
27
27
|
Requires-Dist: nacos-sdk-python<3.0,==2.0.11
|
|
28
28
|
Requires-Dist: psutil==7.2.2
|
|
29
29
|
Requires-Dist: pyxxl==0.4.8
|
|
30
|
-
Requires-Dist: pydantic==2.14.
|
|
30
|
+
Requires-Dist: pydantic==2.14.1
|
|
31
31
|
Requires-Dist: python-dotenv==1.2.4
|
|
32
32
|
Requires-Dist: python-multipart==0.0.32
|
|
33
33
|
Requires-Dist: pyyaml==6.0.3
|
|
34
34
|
Requires-Dist: redis==7.4.0
|
|
35
|
-
Requires-Dist: sentry-sdk[fastapi]==2.
|
|
36
|
-
Requires-Dist: sqlalchemy[asyncio]==2.1.
|
|
37
|
-
Requires-Dist: starlette[full]==1.
|
|
35
|
+
Requires-Dist: sentry-sdk[fastapi]==2.72.0
|
|
36
|
+
Requires-Dist: sqlalchemy[asyncio]==2.1.5
|
|
37
|
+
Requires-Dist: starlette[full]==1.9.0
|
|
38
38
|
Requires-Dist: tiktoken==0.14.0
|
|
39
39
|
Requires-Dist: uvicorn==0.54.0
|
|
40
40
|
Requires-Dist: wecom-aibot-python-sdk==1.0.2
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sycommon-python-lib"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.10a17"
|
|
4
4
|
description = "Add your description here"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
7
7
|
dependencies = [
|
|
8
|
-
"aio-pika==10.1.
|
|
9
|
-
"aiohttp==3.14.
|
|
8
|
+
"aio-pika==10.1.1",
|
|
9
|
+
"aiohttp==3.14.5",
|
|
10
10
|
"aiomysql==0.3.2",
|
|
11
11
|
"anyio==4.15.1",
|
|
12
12
|
"decorator==5.3.1",
|
|
13
|
-
"deepagents==0.7.
|
|
13
|
+
"deepagents==0.7.28",
|
|
14
14
|
"elasticsearch==9.5.1",
|
|
15
15
|
"fastapi==0.143.0",
|
|
16
16
|
"jinja2==3.1.6",
|
|
17
17
|
"kafka-python==3.0.11",
|
|
18
|
-
"langchain==1.4.
|
|
19
|
-
"langchain-core==1.6.
|
|
20
|
-
"langchain-openai==1.7.
|
|
21
|
-
"langfuse==
|
|
22
|
-
"langgraph==1.2.
|
|
23
|
-
"langgraph-checkpoint-postgres==3.
|
|
18
|
+
"langchain==1.4.6",
|
|
19
|
+
"langchain-core==1.6.12",
|
|
20
|
+
"langchain-openai==1.7.2",
|
|
21
|
+
"langfuse==5.0.2",
|
|
22
|
+
"langgraph==1.2.16",
|
|
23
|
+
"langgraph-checkpoint-postgres==3.2.0",
|
|
24
24
|
"langgraph-checkpoint-redis==0.5.2",
|
|
25
25
|
"ldap3==2.9.1",
|
|
26
26
|
"loguru==0.7.3",
|
|
@@ -28,14 +28,14 @@ dependencies = [
|
|
|
28
28
|
"nacos-sdk-python==2.0.11,<3.0",
|
|
29
29
|
"psutil==7.2.2",
|
|
30
30
|
"pyxxl==0.4.8",
|
|
31
|
-
"pydantic==2.14.
|
|
31
|
+
"pydantic==2.14.1",
|
|
32
32
|
"python-dotenv==1.2.4",
|
|
33
33
|
"python-multipart==0.0.32",
|
|
34
34
|
"pyyaml==6.0.3",
|
|
35
35
|
"redis==7.4.0",
|
|
36
|
-
"sentry-sdk[fastapi]==2.
|
|
37
|
-
"sqlalchemy[asyncio]==2.1.
|
|
38
|
-
"starlette[full]==1.
|
|
36
|
+
"sentry-sdk[fastapi]==2.72.0",
|
|
37
|
+
"sqlalchemy[asyncio]==2.1.5",
|
|
38
|
+
"starlette[full]==1.9.0",
|
|
39
39
|
"tiktoken==0.14.0",
|
|
40
40
|
"uvicorn==0.54.0",
|
|
41
41
|
"wecom-aibot-python-sdk==1.0.2",
|
|
@@ -755,12 +755,17 @@ class FileOperationsMixin:
|
|
|
755
755
|
glob: str = None,
|
|
756
756
|
*,
|
|
757
757
|
max_count: int = None,
|
|
758
|
+
exclude_dirs: list[str] | None = None,
|
|
758
759
|
) -> GrepResult:
|
|
759
760
|
"""搜索文件内容
|
|
760
761
|
|
|
761
762
|
max_count 对齐 deepagents 0.7.1:None=不限;设为 int 时服务端 `head -n N+1`
|
|
762
763
|
早停,超出则返回前 N 条并置 truncated=True。框架反射签名发现支持后直接透传。
|
|
763
764
|
|
|
765
|
+
exclude_dirs 对齐 deepagents 0.7.28 grep_exclude_dirs:None=服务端默认
|
|
766
|
+
(.git/node_modules);[] = 不排除。类属性 grep_exclude_dirs 同名语义,
|
|
767
|
+
供框架/上层按 BaseSandbox 惯例读取。
|
|
768
|
+
|
|
764
769
|
错误前缀对齐 BaseSandbox._parse_grep_output:"Path '<path>': <reason>"。
|
|
765
770
|
"""
|
|
766
771
|
try:
|
|
@@ -772,6 +777,7 @@ class FileOperationsMixin:
|
|
|
772
777
|
"path": path,
|
|
773
778
|
"glob": glob,
|
|
774
779
|
"max_count": max_count,
|
|
780
|
+
"exclude_dirs": exclude_dirs,
|
|
775
781
|
})
|
|
776
782
|
# GrepResponse: {"matches": [...], "partial_error": "...", "error": "...", "truncated": bool}
|
|
777
783
|
matches = [GrepMatch(**item) for item in result.get("matches", [])]
|
|
@@ -806,11 +812,15 @@ class FileOperationsMixin:
|
|
|
806
812
|
*,
|
|
807
813
|
max_count: int = None,
|
|
808
814
|
timeout: int = None,
|
|
815
|
+
exclude_dirs: list[str] | None = None,
|
|
809
816
|
) -> GrepResult:
|
|
810
817
|
"""异步搜索文件内容
|
|
811
818
|
|
|
812
819
|
max_count 对齐 deepagents 0.7.1:服务端早停 + truncated 标志。
|
|
813
820
|
|
|
821
|
+
exclude_dirs 对齐 deepagents 0.7.28 grep_exclude_dirs:None=服务端默认
|
|
822
|
+
(.git/node_modules);[] = 不排除。
|
|
823
|
+
|
|
814
824
|
对齐 deepagents 0.7.1 BaseSandbox.agrep:用 asyncio.wait_for 包裹
|
|
815
825
|
远程调用,超时返回 "grep timed out after Ns. Try a more specific
|
|
816
826
|
pattern or a narrower path.",避免大仓库 grep 拖垮整条 async 链。
|
|
@@ -829,6 +839,7 @@ class FileOperationsMixin:
|
|
|
829
839
|
"path": path,
|
|
830
840
|
"glob": glob,
|
|
831
841
|
"max_count": max_count,
|
|
842
|
+
"exclude_dirs": exclude_dirs,
|
|
832
843
|
}, timeout=grep_timeout),
|
|
833
844
|
timeout=grep_timeout,
|
|
834
845
|
)
|
|
@@ -235,6 +235,14 @@ class HTTPSandboxBackend(FileOperationsMixin, BaseSandbox):
|
|
|
235
235
|
# 生产 Linux 沙箱走 bash heredoc 执行命令(见 _build_execute_command),必然满足。
|
|
236
236
|
enable_capture_offload = True
|
|
237
237
|
|
|
238
|
+
# 对齐 deepagents 0.7.28 BaseSandbox.grep_exclude_dirs:grep/agrep 默认跳过的
|
|
239
|
+
# 目录名(服务端 /v1/sandbox/grep 用 --exclude-dir 实现)。我们的 grep 走 HTTP
|
|
240
|
+
# 而非 BaseSandbox 的 shell 命令路径,BaseSandbox 的新 grep 实现不会生效,
|
|
241
|
+
# 但类属性保持同名同义:FilesystemMiddleware/上层框架按 BaseSandbox 惯例反射
|
|
242
|
+
# 读取时语义一致;调用方可用 exclude_dirs=None(服务端默认,即本属性内容)
|
|
243
|
+
# 或 [] (不排除)覆盖。服务端默认清单见 sandbox.py _DEFAULT_GREP_EXCLUDE_DIRS。
|
|
244
|
+
grep_exclude_dirs = (".git", "node_modules")
|
|
245
|
+
|
|
238
246
|
"""
|
|
239
247
|
|
|
240
248
|
支持两种模式:
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""sycommon.alert — 对齐 Java shengye-platform-alert-sdk(jar 反编译)。
|
|
2
|
+
|
|
3
|
+
用法(对齐 Java AlertSdk/BizAlertSdk 静态调用):
|
|
4
|
+
from sycommon.alert import alert_sdk
|
|
5
|
+
alert_sdk.fatal("标题") # AlertSdk.fatal(title)
|
|
6
|
+
alert_sdk.critical("标题", "详情", e) # AlertSdk.critical(title, detail, e)
|
|
7
|
+
alert_sdk.biz_warn("TPL001", "标题", "详情") # BizAlertSdk.warn(templateNo, title, detail)
|
|
8
|
+
|
|
9
|
+
# @XxxAlert 注解等价(AlertAspect)
|
|
10
|
+
from sycommon.alert.guard import fatal_alert
|
|
11
|
+
@fatal_alert("任务失败", "TPL001")
|
|
12
|
+
async def run(): ...
|
|
13
|
+
|
|
14
|
+
# 监控接线(服务启动时一次;sy-alert.monitor.enable 控制)
|
|
15
|
+
from sycommon.alert.bridge import init_alert_monitors
|
|
16
|
+
await init_alert_monitors()
|
|
17
|
+
"""
|
|
18
|
+
from sycommon.alert import alert_sdk # noqa: F401 (统一门面)
|
|
19
|
+
from sycommon.alert.ao import AlertAo # noqa: F401
|
|
20
|
+
from sycommon.alert.sdk import (alert, alert_access_url, alert_async, # noqa: F401
|
|
21
|
+
start, stop)
|
|
22
|
+
|
|
23
|
+
__all__ = [
|
|
24
|
+
"AlertAo",
|
|
25
|
+
"alert",
|
|
26
|
+
"alert_async",
|
|
27
|
+
"alert_access_url",
|
|
28
|
+
"start",
|
|
29
|
+
"stop",
|
|
30
|
+
"alert_sdk",
|
|
31
|
+
]
|
|
32
|
+
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"""alert_sdk.py — Java AlertSdk / BizAlertSdk 静态门面的 Python 形态。
|
|
2
|
+
|
|
3
|
+
Java 侧 AlertSdk.fatal(...)/critical(...)/warn(...)/info(...) 与
|
|
4
|
+
BizAlertSdk.fatal(templateNo, ...) 的重载统一坍缩为关键字参数版:
|
|
5
|
+
fatal(title, detail="", err=None) / biz_fatal(template_no, title, detail="", err=None)。
|
|
6
|
+
"""
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from typing import Optional
|
|
10
|
+
|
|
11
|
+
from sycommon.alert import api
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class AlertSdk:
|
|
15
|
+
"""对齐 Java com.shengyecapital.alert.AlertSdk 静态方法集。
|
|
16
|
+
|
|
17
|
+
fatal/critical/warn/info 既可类方法调用(AlertSdk.fatal(...)),也提供
|
|
18
|
+
模块级同名单名:from sycommon.alert import alert_sdk; alert_sdk.fatal(...)。
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
@staticmethod
|
|
22
|
+
def fatal(title: str, detail: str = "", err: Optional[Exception] = None) -> None:
|
|
23
|
+
api.fatal(title, detail, err)
|
|
24
|
+
|
|
25
|
+
@staticmethod
|
|
26
|
+
def critical(title: str, detail: str = "", err: Optional[Exception] = None) -> None:
|
|
27
|
+
api.critical(title, detail, err)
|
|
28
|
+
|
|
29
|
+
@staticmethod
|
|
30
|
+
def warn(title: str, detail: str = "", err: Optional[Exception] = None) -> None:
|
|
31
|
+
api.warn(title, detail, err)
|
|
32
|
+
|
|
33
|
+
@staticmethod
|
|
34
|
+
def info(title: str, detail: str = "") -> None:
|
|
35
|
+
"""对齐 AlertSdk.info(title)/(title, detail) — Java 无 Throwable 重载。"""
|
|
36
|
+
api.info(title, detail)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class BizAlertSdk:
|
|
40
|
+
"""对齐 Java com.shengyecapital.alert.BizAlertSdk(templateNo 前缀)。"""
|
|
41
|
+
|
|
42
|
+
@staticmethod
|
|
43
|
+
def fatal(template_no: str, title: str, detail: str = "",
|
|
44
|
+
err: Optional[Exception] = None) -> None:
|
|
45
|
+
api.biz_fatal(template_no, title, detail, err)
|
|
46
|
+
|
|
47
|
+
@staticmethod
|
|
48
|
+
def critical(template_no: str, title: str, detail: str = "",
|
|
49
|
+
err: Optional[Exception] = None) -> None:
|
|
50
|
+
api.biz_critical(template_no, title, detail, err)
|
|
51
|
+
|
|
52
|
+
@staticmethod
|
|
53
|
+
def warn(template_no: str, title: str, detail: str = "",
|
|
54
|
+
err: Optional[Exception] = None) -> None:
|
|
55
|
+
api.biz_warn(template_no, title, detail, err)
|
|
56
|
+
|
|
57
|
+
@staticmethod
|
|
58
|
+
def info(template_no: str, title: str, detail: str = "") -> None:
|
|
59
|
+
"""对齐 BizAlertSdk.info(templateNo, title)/(…, detail) — 无 Throwable 重载。"""
|
|
60
|
+
api.biz_info(template_no, title, detail)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
# 模块级单名快捷形态(Java AlertSdk.fatal 静态直呼的最短 Python 形态)。
|
|
64
|
+
fatal = AlertSdk.fatal
|
|
65
|
+
critical = AlertSdk.critical
|
|
66
|
+
warn = AlertSdk.warn
|
|
67
|
+
info = AlertSdk.info
|
|
68
|
+
biz_fatal = BizAlertSdk.fatal
|
|
69
|
+
biz_critical = BizAlertSdk.critical
|
|
70
|
+
biz_warn = BizAlertSdk.warn
|
|
71
|
+
biz_info = BizAlertSdk.info
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"""ao.py — AlertAo 值对象,对齐 Java com.shengyecapital.alert.vo.AlertAo(jar 反编译)。
|
|
2
|
+
|
|
3
|
+
字段/优先级/比较序/getKeyMsg 与 Java 字节码逐条对齐:
|
|
4
|
+
- calc_priority: fatal=100 / critical=50 / warn=20 / 其余 0;
|
|
5
|
+
- compareTo: priority 升序 → time 升序 → id 升序(队列 first=最低最旧=驱逐
|
|
6
|
+
候选,poll 最高优先先发);
|
|
7
|
+
- get_key_msg: [level serviceName templateNo alertTime title] 非空则以单个
|
|
8
|
+
前导空格拼接,detail 非空则追加 " detail=" + detail(常量池 #231=b' ' /
|
|
9
|
+
#238=b' detail=' — 2026-10-19 常量池解析确认)。
|
|
10
|
+
|
|
11
|
+
JSON 序列化字段名为 Java getter 驼峰(hutool JSONUtil.toJsonStr),null 字段
|
|
12
|
+
不输出(hutool 默认忽略 null)→ Pydantic exclude_none 同形。
|
|
13
|
+
"""
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
from typing import ClassVar, Optional
|
|
17
|
+
|
|
18
|
+
from pydantic import BaseModel, ConfigDict
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class AlertAo(BaseModel):
|
|
22
|
+
"""告警值对象(Java vo.AlertAo 15 字段)。"""
|
|
23
|
+
|
|
24
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
25
|
+
|
|
26
|
+
LEVEL_INFO: ClassVar[str] = "info"
|
|
27
|
+
LEVEL_WARN: ClassVar[str] = "warn"
|
|
28
|
+
LEVEL_CRITICAL: ClassVar[str] = "critical"
|
|
29
|
+
LEVEL_FATAL: ClassVar[str] = "fatal"
|
|
30
|
+
|
|
31
|
+
priority: int = 0
|
|
32
|
+
level: Optional[str] = None
|
|
33
|
+
serviceName: Optional[str] = None
|
|
34
|
+
serviceGroup: Optional[str] = None
|
|
35
|
+
templateNo: Optional[str] = None
|
|
36
|
+
title: Optional[str] = None
|
|
37
|
+
detail: Optional[str] = None
|
|
38
|
+
ip: Optional[str] = None
|
|
39
|
+
traceId: Optional[str] = None
|
|
40
|
+
env: Optional[str] = None
|
|
41
|
+
alertTime: Optional[str] = None
|
|
42
|
+
errorMsg: Optional[str] = None
|
|
43
|
+
time: Optional[int] = None # 入队毫秒时间戳
|
|
44
|
+
id: int = 0
|
|
45
|
+
|
|
46
|
+
def calc_priority(self) -> None:
|
|
47
|
+
"""对齐 Java calcPriority():fatal→100 / critical→50 / warn→20 / 其他 0。"""
|
|
48
|
+
if self.level == self.LEVEL_FATAL:
|
|
49
|
+
self.priority = 100
|
|
50
|
+
elif self.level == self.LEVEL_CRITICAL:
|
|
51
|
+
self.priority = 50
|
|
52
|
+
elif self.level == self.LEVEL_WARN:
|
|
53
|
+
self.priority = 20
|
|
54
|
+
else:
|
|
55
|
+
self.priority = 0
|
|
56
|
+
|
|
57
|
+
def compare_to(self, other: "AlertAo") -> int:
|
|
58
|
+
"""对齐 Java compareTo:None→1;priority 升序→time 升序→id 升序。"""
|
|
59
|
+
if other is None:
|
|
60
|
+
return 1
|
|
61
|
+
if self.priority != other.priority:
|
|
62
|
+
return -1 if self.priority < other.priority else 1
|
|
63
|
+
st = self.time if self.time is not None else 0
|
|
64
|
+
ot = other.time if other.time is not None else 0
|
|
65
|
+
if st != ot:
|
|
66
|
+
return -1 if st < ot else 1
|
|
67
|
+
return (self.id > other.id) - (self.id < other.id)
|
|
68
|
+
|
|
69
|
+
def get_key_msg(self) -> str:
|
|
70
|
+
"""对齐 Java getKeyMsg():前导单空格 join,detail 段 " detail="。"""
|
|
71
|
+
parts: list[str] = []
|
|
72
|
+
for f in (self.level, self.serviceName, self.templateNo,
|
|
73
|
+
self.alertTime, self.title):
|
|
74
|
+
if f:
|
|
75
|
+
parts.append(" " + f)
|
|
76
|
+
if self.detail:
|
|
77
|
+
parts.append(" detail=" + self.detail)
|
|
78
|
+
return "".join(parts)
|
|
79
|
+
|
|
80
|
+
def to_wire(self) -> dict:
|
|
81
|
+
"""出站 JSON 形态(hutool 默认:camel 字段 + 忽略 null)。"""
|
|
82
|
+
return self.model_dump(exclude_none=True)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def get_count_string(batch: list[AlertAo]) -> str:
|
|
86
|
+
"""对齐 Java InnerSdk.getCountString:按级别计数拼一条汇总。"""
|
|
87
|
+
fatal = sum(1 for a in batch if a.level == AlertAo.LEVEL_FATAL)
|
|
88
|
+
critical = sum(1 for a in batch if a.level == AlertAo.LEVEL_CRITICAL)
|
|
89
|
+
warn = sum(1 for a in batch if a.level == AlertAo.LEVEL_WARN)
|
|
90
|
+
info = sum(1 for a in batch if a.level == AlertAo.LEVEL_INFO)
|
|
91
|
+
return f"致命{fatal}条 严重{critical}条 告警{warn}条 信息{info}条"
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""api.py — 对齐 Java com.shengyecapital.alert.AlertSdk / BizAlertSdk 门面。
|
|
2
|
+
|
|
3
|
+
Java AlertSdk 重载矩阵(每级 4 个):fatal/critical/warn ×
|
|
4
|
+
(title)/(title,Throwable)/(title,detail)/(title,detail,Throwable);
|
|
5
|
+
info × (title)/(title,detail)。BizAlertSdk 同形但首参 templateNo。
|
|
6
|
+
全部经 _alert_inner 组 AlertAo(level/title/detail/errorMsg=get_msg)→ InnerSdk.alert。
|
|
7
|
+
"""
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
from typing import Optional
|
|
11
|
+
|
|
12
|
+
from sycommon.alert.ao import AlertAo
|
|
13
|
+
from sycommon.alert.sdk import alert
|
|
14
|
+
from sycommon.alert.sdk_selfcheck import get_msg
|
|
15
|
+
|
|
16
|
+
LEVEL_INFO = AlertAo.LEVEL_INFO
|
|
17
|
+
LEVEL_WARN = AlertAo.LEVEL_WARN
|
|
18
|
+
LEVEL_CRITICAL = AlertAo.LEVEL_CRITICAL
|
|
19
|
+
LEVEL_FATAL = AlertAo.LEVEL_FATAL
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _alert_inner(level: str, template_no: str, title: str, detail: str,
|
|
23
|
+
err: Optional[Exception]) -> None:
|
|
24
|
+
ao = AlertAo(level=level, templateNo=template_no or None,
|
|
25
|
+
title=title or None, detail=detail or None)
|
|
26
|
+
if err is not None:
|
|
27
|
+
ao.errorMsg = get_msg(err)
|
|
28
|
+
alert(ao)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
# ---------------- AlertSdk ----------------
|
|
32
|
+
|
|
33
|
+
def fatal(title: str, detail: str = "", err: Optional[Exception] = None) -> None:
|
|
34
|
+
_alert_inner(LEVEL_FATAL, "", title, detail, err)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def critical(title: str, detail: str = "", err: Optional[Exception] = None) -> None:
|
|
38
|
+
_alert_inner(LEVEL_CRITICAL, "", title, detail, err)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def warn(title: str, detail: str = "", err: Optional[Exception] = None) -> None:
|
|
42
|
+
_alert_inner(LEVEL_WARN, "", title, detail, err)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def info(title: str, detail: str = "") -> None:
|
|
46
|
+
"""对齐 AlertSdk.info(title)/(title, detail) — Java 无 Throwable 重载。"""
|
|
47
|
+
_alert_inner(LEVEL_INFO, "", title, detail, None)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# ---------------- BizAlertSdk ----------------
|
|
51
|
+
|
|
52
|
+
def biz_fatal(template_no: str, title: str, detail: str = "",
|
|
53
|
+
err: Optional[Exception] = None) -> None:
|
|
54
|
+
_alert_inner(LEVEL_FATAL, template_no, title, detail, err)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def biz_critical(template_no: str, title: str, detail: str = "",
|
|
58
|
+
err: Optional[Exception] = None) -> None:
|
|
59
|
+
_alert_inner(LEVEL_CRITICAL, template_no, title, detail, err)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def biz_warn(template_no: str, title: str, detail: str = "",
|
|
63
|
+
err: Optional[Exception] = None) -> None:
|
|
64
|
+
_alert_inner(LEVEL_WARN, template_no, title, detail, err)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def biz_info(template_no: str, title: str, detail: str = "") -> None:
|
|
68
|
+
"""对齐 BizAlertSdk.info(templateNo, title)/(…, detail) — 无 Throwable 重载。"""
|
|
69
|
+
_alert_inner(LEVEL_INFO, template_no, title, detail, None)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"""bridge.py — alert 包对外接线 helpers(对齐 Go 侧 infra/alert/bridge.go)。
|
|
2
|
+
|
|
3
|
+
与 Java ApplicationContextInitializer 自动挂监控不同:显式接线。
|
|
4
|
+
服务启动(事件循环就绪后)await init_alert_monitors() 一次,按
|
|
5
|
+
sy-alert.monitor.enable 决定是否挂 GC/DB 池扫描;DB 饱和度数据源经
|
|
6
|
+
register_db_stats 由 SQLAlchemy engine.pool.status() 提供。
|
|
7
|
+
"""
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import asyncio
|
|
11
|
+
import re
|
|
12
|
+
|
|
13
|
+
from sycommon.alert.monitor import register_db_stats, start_monitors
|
|
14
|
+
from sycommon.logging.kafka_log import SYLogger
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _sqlalchemy_pool_stats() -> dict:
|
|
18
|
+
"""SQLAlchemy engine.pool.status() → {'in_use', 'max_open'}。
|
|
19
|
+
|
|
20
|
+
status() 形如 "Pool size: 10 Connections in pool: 2 Current Overflow: -8
|
|
21
|
+
Checked Out Connections: 0";in_use=checkedout,max_open=pool_size+max_overflow
|
|
22
|
+
(overflow 为负表示空闲位未用满)。engine 未初始化返回空 dict。
|
|
23
|
+
"""
|
|
24
|
+
try:
|
|
25
|
+
from sycommon.database.database_service import DatabaseService
|
|
26
|
+
engine = DatabaseService.engine()
|
|
27
|
+
if engine is None:
|
|
28
|
+
return {}
|
|
29
|
+
m = re.search(r"Checked Out Connections:\s*(\d+)", engine.pool.status())
|
|
30
|
+
if not m:
|
|
31
|
+
return {}
|
|
32
|
+
in_use = int(m.group(1))
|
|
33
|
+
pool_size = getattr(engine.pool, 'size', lambda: 0)()
|
|
34
|
+
max_overflow = getattr(engine.pool, '_max_overflow', 0)
|
|
35
|
+
return {"in_use": in_use, "max_open": pool_size + max_overflow}
|
|
36
|
+
except Exception as e: # noqa: BLE001
|
|
37
|
+
SYLogger.warning(f"[alert] 读取数据库连接池状态失败: {e}")
|
|
38
|
+
return {}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
async def init_alert_monitors() -> None:
|
|
42
|
+
"""启动默认监控(GC + 连接池饱和度)。engine 未初始化时跳过池监控。"""
|
|
43
|
+
stats = _sqlalchemy_pool_stats()
|
|
44
|
+
if stats:
|
|
45
|
+
register_db_stats(_sqlalchemy_pool_stats)
|
|
46
|
+
start_monitors()
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
__all__ = ["init_alert_monitors", "register_db_stats"]
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"""env.py — 对齐 Java com.shengyecapital.alert.config.AlertEnv + AlertLocalIpUtil。
|
|
2
|
+
|
|
3
|
+
Java 侧取值链(ApplicationContextInitializer):appName←spring.application.name、
|
|
4
|
+
activeProfile←spring.cloud.nacos.config.namespace、sy-alert.* 配置经 Spring
|
|
5
|
+
Environment getProperty。Python 等价映射:Config()(app.yaml+nacos 共享配置落地)、
|
|
6
|
+
env 兜底;appName=Config Name(与 sso_token.app_name 同源);profile=
|
|
7
|
+
Config Nacos.namespaceId(env 兜底 MODE/ENV)。
|
|
8
|
+
"""
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import os
|
|
12
|
+
import socket
|
|
13
|
+
import threading
|
|
14
|
+
from typing import Optional
|
|
15
|
+
|
|
16
|
+
_local = threading.local()
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _cfg():
|
|
20
|
+
try:
|
|
21
|
+
from sycommon.config.Config import Config
|
|
22
|
+
return Config()
|
|
23
|
+
except Exception:
|
|
24
|
+
return None
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def app_name_of_sdk() -> str:
|
|
28
|
+
"""对齐 Java AlertEnv.getAppName(spring.application.name)。"""
|
|
29
|
+
cfg = _cfg()
|
|
30
|
+
if cfg is not None:
|
|
31
|
+
return cfg.config.get('Name', '') or ''
|
|
32
|
+
return ''
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def active_profile() -> str:
|
|
36
|
+
"""对齐 Java AlertEnv.getActiveProfile(spring.cloud.nacos.config.namespace)。
|
|
37
|
+
|
|
38
|
+
测试可注入 _local.profile;生产链:Config Nacos.namespaceId → env MODE/ENV。
|
|
39
|
+
"""
|
|
40
|
+
injected = getattr(_local, 'profile', None)
|
|
41
|
+
if injected is not None:
|
|
42
|
+
return injected
|
|
43
|
+
cfg = _cfg()
|
|
44
|
+
if cfg is not None:
|
|
45
|
+
ns = cfg.config.get('Nacos', {}).get('namespaceId', '')
|
|
46
|
+
if ns:
|
|
47
|
+
return ns
|
|
48
|
+
return os.getenv('MODE') or os.getenv('ENV') or ''
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def set_active_profile_for_test(profile: str) -> None:
|
|
52
|
+
"""线程内注入 profile(测试用;空串恢复)。"""
|
|
53
|
+
_local.profile = profile or None
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def get_property(key: str, default: str = '') -> str:
|
|
57
|
+
"""对齐 Java AlertEnv.getProperty(key, def) 的【配置源覆盖面】。
|
|
58
|
+
|
|
59
|
+
Java getProperty = Spring Environment.getProperty:统一抽象全部配置源 —
|
|
60
|
+
application.yml / nacos 配置中心(任一 dataId 同键)/ 系统属性 / 环境变量
|
|
61
|
+
(relaxed binding:SY_ALERT_MONITOR_ENABLE ↔ sy-alert.monitor.enable)。
|
|
62
|
+
|
|
63
|
+
Python 等价覆盖面(优先序对齐 Spring:nacos 各 dataId → 本地 yml → 环境变量):
|
|
64
|
+
1. Config.read_key_layered 逐层下钻:项目 dataId(==Name)优先,其余
|
|
65
|
+
sharedConfigs 声明序(common.yml 等),本地 app.yaml 段兜底 — 与
|
|
66
|
+
Go ReadKeyLayered / Spring 逐属性覆盖一致(项目 dataId 只覆盖自己
|
|
67
|
+
写了的键,共享受保护的键自动落到下层);
|
|
68
|
+
2. 环境变量:key 点号/横线→下划线大写(sy-alert.monitor.enable →
|
|
69
|
+
SY_ALERT_MONITOR_ENABLE,等价 Spring relaxed binding)。
|
|
70
|
+
"""
|
|
71
|
+
from sycommon.config.Config import Config
|
|
72
|
+
trimmed = key[len('sy-alert.'):] if key.startswith('sy-alert.') else key
|
|
73
|
+
try:
|
|
74
|
+
cfg = Config()
|
|
75
|
+
v, ok = cfg.read_key_layered('sy-alert', *trimmed.split('.'))
|
|
76
|
+
if ok and v is not None and v != '':
|
|
77
|
+
return str(v)
|
|
78
|
+
except Exception:
|
|
79
|
+
pass
|
|
80
|
+
env_key = key.replace('.', '_').replace('-', '_').upper()
|
|
81
|
+
env_val = os.getenv(env_key) or os.getenv(env_key.lower())
|
|
82
|
+
if env_val:
|
|
83
|
+
return env_val
|
|
84
|
+
return default
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def get_bool(key: str, default: bool) -> bool:
|
|
88
|
+
"""对齐 Java getBoolean 字节码:非空时仅 equalsIgnoreCase('true') 为真,
|
|
89
|
+
其余任何值(含 'false'/'1'/'yes')都 False;空时返回 default。"""
|
|
90
|
+
v = get_property(key, '')
|
|
91
|
+
if v == '':
|
|
92
|
+
return default
|
|
93
|
+
return v.strip().lower() == 'true'
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def get_int(key: str, default: int) -> int:
|
|
97
|
+
try:
|
|
98
|
+
return int(get_property(key, ''))
|
|
99
|
+
except (TypeError, ValueError):
|
|
100
|
+
return default
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def get_float(key: str, default: float) -> float:
|
|
104
|
+
try:
|
|
105
|
+
return float(get_property(key, ''))
|
|
106
|
+
except (TypeError, ValueError):
|
|
107
|
+
return default
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
_ip_cache: Optional[str] = None
|
|
111
|
+
_ip_lock = threading.Lock()
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def local_ip() -> str:
|
|
115
|
+
"""对齐 Java AlertLocalIpUtil.getLocalIp():本机非环回 IPv4,进程内缓存。"""
|
|
116
|
+
global _ip_cache
|
|
117
|
+
with _ip_lock:
|
|
118
|
+
if _ip_cache is not None:
|
|
119
|
+
return _ip_cache
|
|
120
|
+
ip = _lookup_local_ip()
|
|
121
|
+
with _ip_lock:
|
|
122
|
+
_ip_cache = ip
|
|
123
|
+
return ip
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def _lookup_local_ip() -> str:
|
|
127
|
+
try:
|
|
128
|
+
hostname = socket.gethostname()
|
|
129
|
+
# k8s pod 场景 hostname 即 pod ip 或可解析;优先 UDP connect 法(不发包)。
|
|
130
|
+
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
131
|
+
try:
|
|
132
|
+
s.settimeout(0)
|
|
133
|
+
s.connect(('10.255.255.255', 1))
|
|
134
|
+
return s.getsockname()[0]
|
|
135
|
+
finally:
|
|
136
|
+
s.close()
|
|
137
|
+
except Exception:
|
|
138
|
+
pass
|
|
139
|
+
try:
|
|
140
|
+
for info in socket.getaddrinfo(hostname, None, socket.AF_INET):
|
|
141
|
+
return info[4][0]
|
|
142
|
+
except Exception:
|
|
143
|
+
pass
|
|
144
|
+
return ''
|