dify/dify-agent/src/shellctl/__init__.py
zyssyz123 925f97be20
feat: daily sync (#38593)
Co-authored-by: 盐粒 Yanli <mail@yanli.one>
Co-authored-by: yyh <yuanyouhuilyz@gmail.com>
Co-authored-by: Joel <iamjoel007@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: QuantumGhost <obelisk.reg+git@gmail.com>
Co-authored-by: yyh <92089059+lyzno1@users.noreply.github.com>
Co-authored-by: 盐粒 Yanli <yanli@dify.ai>
2026-07-09 10:35:15 +00:00

125 lines
3.7 KiB
Python

"""Public shellctl package exports.
This package stays lazy on purpose. Hot-path runtime helpers live outside the
`shellctl` package, and importing this package root should
not pull the full client/server/public DTO surface unless a caller explicitly
asks for those exports.
"""
from __future__ import annotations
from importlib import import_module
from typing import TYPE_CHECKING, Any
if TYPE_CHECKING:
from shellctl.client import (
ShellctlClient,
ShellctlClientError,
)
from shellctl.shared import (
DEFAULT_AUTH_TOKEN_ENV,
DEFAULT_BASE_URL,
DEFAULT_BASE_URL_ENV,
DEFAULT_GC_FINISHED_JOB_RETENTION_SECONDS,
DEFAULT_GC_INTERVAL_SECONDS,
DEFAULT_IDLE_FLUSH_SECONDS,
DEFAULT_LIST_LIMIT,
DEFAULT_OUTPUT_LIMIT_BYTES,
DEFAULT_TERMINAL_COLS,
DEFAULT_TERMINAL_ROWS,
DEFAULT_TERMINATE_GRACE_SECONDS,
DEFAULT_TIMEOUT_SECONDS,
DeleteJobResponse,
HealthResponse,
InputJobRequest,
JobInfo,
JobResult,
JobStatusName,
JobStatusView,
ListJobsResponse,
RunJobRequest,
TerminalSize,
TerminateJobRequest,
WaitJobRequest,
generate_job_id,
read_output_window,
tail_output_window,
)
__all__ = [
"DEFAULT_AUTH_TOKEN_ENV",
"DEFAULT_BASE_URL",
"DEFAULT_BASE_URL_ENV",
"DEFAULT_GC_FINISHED_JOB_RETENTION_SECONDS",
"DEFAULT_GC_INTERVAL_SECONDS",
"DEFAULT_IDLE_FLUSH_SECONDS",
"DEFAULT_LIST_LIMIT",
"DEFAULT_OUTPUT_LIMIT_BYTES",
"DEFAULT_TERMINAL_COLS",
"DEFAULT_TERMINAL_ROWS",
"DEFAULT_TERMINATE_GRACE_SECONDS",
"DEFAULT_TIMEOUT_SECONDS",
"DeleteJobResponse",
"HealthResponse",
"InputJobRequest",
"JobInfo",
"JobResult",
"JobStatusName",
"JobStatusView",
"ListJobsResponse",
"RunJobRequest",
"ShellctlClient",
"ShellctlClientError",
"TerminalSize",
"TerminateJobRequest",
"WaitJobRequest",
"generate_job_id",
"read_output_window",
"tail_output_window",
]
_EXPORTS = {
"ShellctlClient": "shellctl.client",
"ShellctlClientError": "shellctl.client",
"DEFAULT_AUTH_TOKEN_ENV": "shellctl.shared",
"DEFAULT_BASE_URL": "shellctl.shared",
"DEFAULT_BASE_URL_ENV": "shellctl.shared",
"DEFAULT_GC_FINISHED_JOB_RETENTION_SECONDS": "shellctl.shared",
"DEFAULT_GC_INTERVAL_SECONDS": "shellctl.shared",
"DEFAULT_IDLE_FLUSH_SECONDS": "shellctl.shared",
"DEFAULT_LIST_LIMIT": "shellctl.shared",
"DEFAULT_OUTPUT_LIMIT_BYTES": "shellctl.shared",
"DEFAULT_TERMINAL_COLS": "shellctl.shared",
"DEFAULT_TERMINAL_ROWS": "shellctl.shared",
"DEFAULT_TERMINATE_GRACE_SECONDS": "shellctl.shared",
"DEFAULT_TIMEOUT_SECONDS": "shellctl.shared",
"DeleteJobResponse": "shellctl.shared",
"HealthResponse": "shellctl.shared",
"InputJobRequest": "shellctl.shared",
"JobInfo": "shellctl.shared",
"JobResult": "shellctl.shared",
"JobStatusName": "shellctl.shared",
"JobStatusView": "shellctl.shared",
"ListJobsResponse": "shellctl.shared",
"RunJobRequest": "shellctl.shared",
"TerminalSize": "shellctl.shared",
"TerminateJobRequest": "shellctl.shared",
"WaitJobRequest": "shellctl.shared",
"generate_job_id": "shellctl.shared",
"read_output_window": "shellctl.shared",
"tail_output_window": "shellctl.shared",
}
def __getattr__(name: str) -> Any:
if name not in _EXPORTS:
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
module = import_module(_EXPORTS[name])
value = getattr(module, name) # noqa: no-new-getattr lazy export proxy
globals()[name] = value
return value
def __dir__() -> list[str]:
return sorted(set(globals()) | set(__all__))