shu/removeSettingsManager.get_settings (#1305)
This commit is contained in:
@@ -6,7 +6,7 @@ import aioboto3
|
||||
import structlog
|
||||
from aiobotocore.client import AioBaseClient
|
||||
|
||||
from skyvern.forge.sdk.settings_manager import SettingsManager
|
||||
from skyvern.config import settings
|
||||
|
||||
LOG = structlog.get_logger()
|
||||
|
||||
@@ -22,7 +22,7 @@ def execute_with_async_client(client_type: AWSClientType) -> Callable:
|
||||
self = args[0]
|
||||
assert isinstance(self, AsyncAWSClient)
|
||||
session = aioboto3.Session()
|
||||
async with session.client(client_type, region_name=SettingsManager.get_settings().AWS_REGION) as client:
|
||||
async with session.client(client_type, region_name=settings.AWS_REGION) as client:
|
||||
return await f(*args, client=client, **kwargs)
|
||||
|
||||
return wrapper
|
||||
@@ -95,7 +95,7 @@ class AsyncAWSClient:
|
||||
url = await client.generate_presigned_url(
|
||||
"get_object",
|
||||
Params={"Bucket": parsed_uri.bucket, "Key": parsed_uri.key},
|
||||
ExpiresIn=SettingsManager.get_settings().PRESIGNED_URL_EXPIRATION,
|
||||
ExpiresIn=settings.PRESIGNED_URL_EXPIRATION,
|
||||
)
|
||||
presigned_urls.append(url)
|
||||
|
||||
|
||||
@@ -12,10 +12,10 @@ import aiohttp
|
||||
import structlog
|
||||
from multidict import CIMultiDictProxy
|
||||
|
||||
from skyvern.config import settings
|
||||
from skyvern.constants import REPO_ROOT_DIR
|
||||
from skyvern.exceptions import DownloadFileMaxSizeExceeded
|
||||
from skyvern.forge.sdk.api.aws import AsyncAWSClient
|
||||
from skyvern.forge.sdk.settings_manager import SettingsManager
|
||||
|
||||
LOG = structlog.get_logger()
|
||||
|
||||
@@ -169,7 +169,7 @@ def create_folder_if_not_exist(dir: str) -> None:
|
||||
|
||||
|
||||
def get_skyvern_temp_dir() -> str:
|
||||
temp_dir = SettingsManager.get_settings().TEMP_PATH
|
||||
temp_dir = settings.TEMP_PATH
|
||||
create_folder_if_not_exist(temp_dir)
|
||||
return temp_dir
|
||||
|
||||
@@ -178,13 +178,13 @@ def make_temp_directory(
|
||||
suffix: str | None = None,
|
||||
prefix: str | None = None,
|
||||
) -> str:
|
||||
temp_dir = SettingsManager.get_settings().TEMP_PATH
|
||||
temp_dir = settings.TEMP_PATH
|
||||
create_folder_if_not_exist(temp_dir)
|
||||
return tempfile.mkdtemp(suffix=suffix, prefix=prefix, dir=temp_dir)
|
||||
|
||||
|
||||
def create_named_temporary_file(delete: bool = True) -> tempfile._TemporaryFileWrapper:
|
||||
temp_dir = SettingsManager.get_settings().TEMP_PATH
|
||||
temp_dir = settings.TEMP_PATH
|
||||
create_folder_if_not_exist(temp_dir)
|
||||
return tempfile.NamedTemporaryFile(dir=temp_dir, delete=delete)
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ from typing import Any
|
||||
import litellm
|
||||
import structlog
|
||||
|
||||
from skyvern.config import settings
|
||||
from skyvern.forge import app
|
||||
from skyvern.forge.sdk.api.llm.config_registry import LLMConfigRegistry
|
||||
from skyvern.forge.sdk.api.llm.exceptions import (
|
||||
@@ -19,7 +20,6 @@ from skyvern.forge.sdk.api.llm.models import LLMAPIHandler, LLMConfig, LLMRouter
|
||||
from skyvern.forge.sdk.api.llm.utils import llm_messages_builder, parse_api_response
|
||||
from skyvern.forge.sdk.artifact.models import ArtifactType
|
||||
from skyvern.forge.sdk.models import Step
|
||||
from skyvern.forge.sdk.settings_manager import SettingsManager
|
||||
|
||||
LOG = structlog.get_logger()
|
||||
|
||||
@@ -50,7 +50,7 @@ class LLMAPIHandlerFactory:
|
||||
allowed_fails=llm_config.allowed_fails,
|
||||
allowed_fails_policy=llm_config.allowed_fails_policy,
|
||||
cooldown_time=llm_config.cooldown_time,
|
||||
set_verbose=(False if SettingsManager.get_settings().is_cloud_environment() else llm_config.set_verbose),
|
||||
set_verbose=(False if settings.is_cloud_environment() else llm_config.set_verbose),
|
||||
enable_pre_call_checks=True,
|
||||
)
|
||||
main_model_group = llm_config.main_model_group
|
||||
@@ -213,7 +213,7 @@ class LLMAPIHandlerFactory:
|
||||
response = await litellm.acompletion(
|
||||
model=llm_config.model_name,
|
||||
messages=messages,
|
||||
timeout=SettingsManager.get_settings().LLM_CONFIG_TIMEOUT,
|
||||
timeout=settings.LLM_CONFIG_TIMEOUT,
|
||||
**active_parameters,
|
||||
)
|
||||
LOG.info("LLM API call successful", llm_key=llm_key, model=llm_config.model_name)
|
||||
@@ -263,7 +263,7 @@ class LLMAPIHandlerFactory:
|
||||
def get_api_parameters(llm_config: LLMConfig | LLMRouterConfig) -> dict[str, Any]:
|
||||
return {
|
||||
"max_tokens": llm_config.max_output_tokens,
|
||||
"temperature": SettingsManager.get_settings().LLM_CONFIG_TEMPERATURE,
|
||||
"temperature": settings.LLM_CONFIG_TEMPERATURE,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import structlog
|
||||
|
||||
from skyvern.config import settings
|
||||
from skyvern.forge.sdk.api.llm.exceptions import (
|
||||
DuplicateLLMConfigError,
|
||||
InvalidLLMConfigError,
|
||||
@@ -7,7 +8,6 @@ from skyvern.forge.sdk.api.llm.exceptions import (
|
||||
NoProviderEnabledError,
|
||||
)
|
||||
from skyvern.forge.sdk.api.llm.models import LiteLLMParams, LLMConfig, LLMRouterConfig
|
||||
from skyvern.forge.sdk.settings_manager import SettingsManager
|
||||
|
||||
LOG = structlog.get_logger()
|
||||
|
||||
@@ -46,17 +46,17 @@ class LLMConfigRegistry:
|
||||
# if none of the LLM providers are enabled, raise an error
|
||||
if not any(
|
||||
[
|
||||
SettingsManager.get_settings().ENABLE_OPENAI,
|
||||
SettingsManager.get_settings().ENABLE_ANTHROPIC,
|
||||
SettingsManager.get_settings().ENABLE_AZURE,
|
||||
SettingsManager.get_settings().ENABLE_AZURE_GPT4O_MINI,
|
||||
SettingsManager.get_settings().ENABLE_BEDROCK,
|
||||
settings.ENABLE_OPENAI,
|
||||
settings.ENABLE_ANTHROPIC,
|
||||
settings.ENABLE_AZURE,
|
||||
settings.ENABLE_AZURE_GPT4O_MINI,
|
||||
settings.ENABLE_BEDROCK,
|
||||
]
|
||||
):
|
||||
raise NoProviderEnabledError()
|
||||
|
||||
|
||||
if SettingsManager.get_settings().ENABLE_OPENAI:
|
||||
if settings.ENABLE_OPENAI:
|
||||
LLMConfigRegistry.register_config(
|
||||
"OPENAI_GPT4_TURBO",
|
||||
LLMConfig(
|
||||
@@ -103,7 +103,7 @@ if SettingsManager.get_settings().ENABLE_OPENAI:
|
||||
)
|
||||
|
||||
|
||||
if SettingsManager.get_settings().ENABLE_ANTHROPIC:
|
||||
if settings.ENABLE_ANTHROPIC:
|
||||
LLMConfigRegistry.register_config(
|
||||
"ANTHROPIC_CLAUDE3",
|
||||
LLMConfig(
|
||||
@@ -151,7 +151,7 @@ if SettingsManager.get_settings().ENABLE_ANTHROPIC:
|
||||
),
|
||||
)
|
||||
|
||||
if SettingsManager.get_settings().ENABLE_BEDROCK:
|
||||
if settings.ENABLE_BEDROCK:
|
||||
# Supported through AWS IAM authentication
|
||||
LLMConfigRegistry.register_config(
|
||||
"BEDROCK_ANTHROPIC_CLAUDE3_OPUS",
|
||||
@@ -209,11 +209,11 @@ if SettingsManager.get_settings().ENABLE_BEDROCK:
|
||||
)
|
||||
|
||||
|
||||
if SettingsManager.get_settings().ENABLE_AZURE:
|
||||
if settings.ENABLE_AZURE:
|
||||
LLMConfigRegistry.register_config(
|
||||
"AZURE_OPENAI",
|
||||
LLMConfig(
|
||||
f"azure/{SettingsManager.get_settings().AZURE_DEPLOYMENT}",
|
||||
f"azure/{settings.AZURE_DEPLOYMENT}",
|
||||
[
|
||||
"AZURE_DEPLOYMENT",
|
||||
"AZURE_API_KEY",
|
||||
@@ -225,11 +225,11 @@ if SettingsManager.get_settings().ENABLE_AZURE:
|
||||
),
|
||||
)
|
||||
|
||||
if SettingsManager.get_settings().ENABLE_AZURE_GPT4O_MINI:
|
||||
if settings.ENABLE_AZURE_GPT4O_MINI:
|
||||
LLMConfigRegistry.register_config(
|
||||
"AZURE_OPENAI_GPT4O_MINI",
|
||||
LLMConfig(
|
||||
f"azure/{SettingsManager.get_settings().AZURE_GPT4O_MINI_DEPLOYMENT}",
|
||||
f"azure/{settings.AZURE_GPT4O_MINI_DEPLOYMENT}",
|
||||
[
|
||||
"AZURE_GPT4O_MINI_DEPLOYMENT",
|
||||
"AZURE_GPT4O_MINI_API_KEY",
|
||||
@@ -237,9 +237,9 @@ if SettingsManager.get_settings().ENABLE_AZURE_GPT4O_MINI:
|
||||
"AZURE_GPT4O_MINI_API_VERSION",
|
||||
],
|
||||
litellm_params=LiteLLMParams(
|
||||
api_base=SettingsManager.get_settings().AZURE_GPT4O_MINI_API_BASE,
|
||||
api_key=SettingsManager.get_settings().AZURE_GPT4O_MINI_API_KEY,
|
||||
api_version=SettingsManager.get_settings().AZURE_GPT4O_MINI_API_VERSION,
|
||||
api_base=settings.AZURE_GPT4O_MINI_API_BASE,
|
||||
api_key=settings.AZURE_GPT4O_MINI_API_KEY,
|
||||
api_version=settings.AZURE_GPT4O_MINI_API_VERSION,
|
||||
model_info={"model_name": "azure/gpt-4o-mini"},
|
||||
),
|
||||
supports_vision=True,
|
||||
|
||||
@@ -6,17 +6,17 @@ from urllib.parse import unquote, urlparse
|
||||
|
||||
import structlog
|
||||
|
||||
from skyvern.config import settings
|
||||
from skyvern.forge.sdk.api.files import get_download_dir, get_skyvern_temp_dir
|
||||
from skyvern.forge.sdk.artifact.models import Artifact, ArtifactType
|
||||
from skyvern.forge.sdk.artifact.storage.base import FILE_EXTENTSION_MAP, BaseStorage
|
||||
from skyvern.forge.sdk.models import Step
|
||||
from skyvern.forge.sdk.settings_manager import SettingsManager
|
||||
|
||||
LOG = structlog.get_logger()
|
||||
|
||||
|
||||
class LocalStorage(BaseStorage):
|
||||
def __init__(self, artifact_path: str = SettingsManager.get_settings().ARTIFACT_STORAGE_PATH) -> None:
|
||||
def __init__(self, artifact_path: str = settings.ARTIFACT_STORAGE_PATH) -> None:
|
||||
self.artifact_path = artifact_path
|
||||
|
||||
def build_uri(self, artifact_id: str, step: Step, artifact_type: ArtifactType) -> str:
|
||||
@@ -84,9 +84,7 @@ class LocalStorage(BaseStorage):
|
||||
return None
|
||||
|
||||
async def store_browser_session(self, organization_id: str, workflow_permanent_id: str, directory: str) -> None:
|
||||
stored_folder_path = (
|
||||
Path(SettingsManager.get_settings().BROWSER_SESSION_BASE_PATH) / organization_id / workflow_permanent_id
|
||||
)
|
||||
stored_folder_path = Path(settings.BROWSER_SESSION_BASE_PATH) / organization_id / workflow_permanent_id
|
||||
if directory == str(stored_folder_path):
|
||||
return
|
||||
self._create_directories_if_not_exists(stored_folder_path)
|
||||
@@ -108,9 +106,7 @@ class LocalStorage(BaseStorage):
|
||||
shutil.copy2(source_file_path, target_file_path)
|
||||
|
||||
async def retrieve_browser_session(self, organization_id: str, workflow_permanent_id: str) -> str | None:
|
||||
stored_folder_path = (
|
||||
Path(SettingsManager.get_settings().BROWSER_SESSION_BASE_PATH) / organization_id / workflow_permanent_id
|
||||
)
|
||||
stored_folder_path = Path(settings.BROWSER_SESSION_BASE_PATH) / organization_id / workflow_permanent_id
|
||||
if not stored_folder_path.exists():
|
||||
return None
|
||||
return str(stored_folder_path)
|
||||
|
||||
@@ -5,7 +5,7 @@ from typing import Any, Union
|
||||
|
||||
from jose import jwt
|
||||
|
||||
from skyvern.forge.sdk.settings_manager import SettingsManager
|
||||
from skyvern.config import settings
|
||||
|
||||
|
||||
def create_access_token(
|
||||
@@ -16,13 +16,13 @@ def create_access_token(
|
||||
expire = datetime.utcnow() + expires_delta
|
||||
else:
|
||||
expire = datetime.utcnow() + timedelta(
|
||||
minutes=SettingsManager.get_settings().ACCESS_TOKEN_EXPIRE_MINUTES,
|
||||
minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES,
|
||||
)
|
||||
to_encode = {"exp": expire, "sub": str(subject)}
|
||||
encoded_jwt = jwt.encode(
|
||||
to_encode,
|
||||
SettingsManager.get_settings().SECRET_KEY,
|
||||
algorithm=SettingsManager.get_settings().SIGNATURE_ALGORITHM,
|
||||
settings.SECRET_KEY,
|
||||
algorithm=settings.SIGNATURE_ALGORITHM,
|
||||
)
|
||||
return encoded_jwt
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ import logging
|
||||
import structlog
|
||||
from structlog.typing import EventDict
|
||||
|
||||
from skyvern.config import settings
|
||||
from skyvern.forge.sdk.core import skyvern_context
|
||||
from skyvern.forge.sdk.settings_manager import SettingsManager
|
||||
|
||||
LOGGING_LEVEL_MAP: dict[str, int] = {
|
||||
"DEBUG": logging.DEBUG,
|
||||
@@ -34,7 +34,7 @@ def add_kv_pairs_to_msg(logger: logging.Logger, method_name: str, event_dict: Ev
|
||||
event_dict["workflow_run_id"] = context.workflow_run_id
|
||||
|
||||
# Add env to the log
|
||||
event_dict["env"] = SettingsManager.get_settings().ENV
|
||||
event_dict["env"] = settings.ENV
|
||||
|
||||
if method_name not in ["info", "warning", "error", "critical", "exception"]:
|
||||
# Only modify the log for these log levels
|
||||
@@ -59,11 +59,7 @@ def setup_logger() -> None:
|
||||
Setup the logger with the specified format
|
||||
"""
|
||||
# logging.config.dictConfig(logging_config)
|
||||
renderer = (
|
||||
structlog.processors.JSONRenderer()
|
||||
if SettingsManager.get_settings().JSON_LOGGING
|
||||
else structlog.dev.ConsoleRenderer()
|
||||
)
|
||||
renderer = structlog.processors.JSONRenderer() if settings.JSON_LOGGING else structlog.dev.ConsoleRenderer()
|
||||
additional_processors = (
|
||||
[
|
||||
structlog.processors.EventRenamer("msg"),
|
||||
@@ -78,10 +74,10 @@ def setup_logger() -> None:
|
||||
}
|
||||
),
|
||||
]
|
||||
if SettingsManager.get_settings().JSON_LOGGING
|
||||
if settings.JSON_LOGGING
|
||||
else []
|
||||
)
|
||||
LOG_LEVEL_VAL = LOGGING_LEVEL_MAP.get(SettingsManager.get_settings().LOG_LEVEL, logging.INFO)
|
||||
LOG_LEVEL_VAL = LOGGING_LEVEL_MAP.get(settings.LOG_LEVEL, logging.INFO)
|
||||
|
||||
structlog.configure(
|
||||
wrapper_class=structlog.make_filtering_bound_logger(LOG_LEVEL_VAL),
|
||||
|
||||
@@ -22,6 +22,7 @@ from pydantic import BaseModel
|
||||
from sqlalchemy.exc import OperationalError
|
||||
|
||||
from skyvern import analytics
|
||||
from skyvern.config import settings
|
||||
from skyvern.exceptions import StepNotFound
|
||||
from skyvern.forge import app
|
||||
from skyvern.forge.prompts import prompt_engine
|
||||
@@ -50,7 +51,6 @@ from skyvern.forge.sdk.schemas.tasks import (
|
||||
TaskStatus,
|
||||
)
|
||||
from skyvern.forge.sdk.services import org_auth_service
|
||||
from skyvern.forge.sdk.settings_manager import SettingsManager
|
||||
from skyvern.forge.sdk.workflow.exceptions import (
|
||||
FailedToCreateWorkflow,
|
||||
FailedToUpdateWorkflow,
|
||||
@@ -95,7 +95,7 @@ async def webhook(
|
||||
|
||||
generated_signature = generate_skyvern_signature(
|
||||
payload.decode("utf-8"),
|
||||
SettingsManager.get_settings().SKYVERN_API_KEY,
|
||||
settings.SKYVERN_API_KEY,
|
||||
)
|
||||
|
||||
LOG.info(
|
||||
@@ -291,7 +291,7 @@ async def get_task(
|
||||
task_id=task_obj.task_id,
|
||||
organization_id=task_obj.organization_id,
|
||||
artifact_types=[ArtifactType.SCREENSHOT_ACTION],
|
||||
n=SettingsManager.get_settings().TASK_RESPONSE_ACTION_SCREENSHOT_COUNT,
|
||||
n=settings.TASK_RESPONSE_ACTION_SCREENSHOT_COUNT,
|
||||
)
|
||||
latest_action_screenshot_urls: list[str] | None = None
|
||||
if latest_action_screenshot_artifacts:
|
||||
@@ -532,7 +532,7 @@ async def get_agent_task_step_artifacts(
|
||||
step_id,
|
||||
organization_id=current_org.organization_id,
|
||||
)
|
||||
if SettingsManager.get_settings().ENV != "local" or SettingsManager.get_settings().GENERATE_PRESIGNED_URLS:
|
||||
if settings.ENV != "local" or settings.GENERATE_PRESIGNED_URLS:
|
||||
signed_urls = await app.ARTIFACT_MANAGER.get_share_links(artifacts)
|
||||
if signed_urls:
|
||||
for i, artifact in enumerate(artifacts):
|
||||
@@ -863,7 +863,7 @@ async def generate_task(
|
||||
# check if there's a same user_prompt within the past x Hours
|
||||
# in the future, we can use vector db to fetch similar prompts
|
||||
existing_task_generation = await app.DATABASE.get_task_generation_by_prompt_hash(
|
||||
user_prompt_hash=user_prompt_hash, query_window_hours=SettingsManager.get_settings().PROMPT_CACHE_WINDOW_HOURS
|
||||
user_prompt_hash=user_prompt_hash, query_window_hours=settings.PROMPT_CACHE_WINDOW_HOURS
|
||||
)
|
||||
if existing_task_generation:
|
||||
new_task_generation = await app.DATABASE.create_task_generation(
|
||||
@@ -898,7 +898,7 @@ async def generate_task(
|
||||
data_extraction_goal=parsed_task_generation_obj.data_extraction_goal,
|
||||
extracted_information_schema=parsed_task_generation_obj.extracted_information_schema,
|
||||
suggested_title=parsed_task_generation_obj.suggested_title,
|
||||
llm=SettingsManager.get_settings().LLM_KEY,
|
||||
llm=settings.LLM_KEY,
|
||||
llm_prompt=llm_prompt,
|
||||
llm_response=str(llm_response),
|
||||
)
|
||||
|
||||
@@ -8,11 +8,11 @@ from jose import jwt
|
||||
from jose.exceptions import JWTError
|
||||
from pydantic import ValidationError
|
||||
|
||||
from skyvern.config import settings
|
||||
from skyvern.forge import app
|
||||
from skyvern.forge.sdk.core import skyvern_context
|
||||
from skyvern.forge.sdk.db.client import AgentDB
|
||||
from skyvern.forge.sdk.models import Organization, OrganizationAuthTokenType, TokenPayload
|
||||
from skyvern.forge.sdk.settings_manager import SettingsManager
|
||||
|
||||
AUTHENTICATION_TTL = 60 * 60 # one hour
|
||||
CACHE_SIZE = 128
|
||||
@@ -85,7 +85,7 @@ async def _get_current_org_cached(x_api_key: str, db: AgentDB) -> Organization:
|
||||
try:
|
||||
payload = jwt.decode(
|
||||
x_api_key,
|
||||
SettingsManager.get_settings().SECRET_KEY,
|
||||
settings.SECRET_KEY,
|
||||
algorithms=[ALGORITHM],
|
||||
)
|
||||
api_key_data = TokenPayload(**payload)
|
||||
|
||||
@@ -46,7 +46,6 @@ from skyvern.forge.sdk.api.files import (
|
||||
from skyvern.forge.sdk.api.llm.api_handler_factory import LLMAPIHandlerFactory
|
||||
from skyvern.forge.sdk.db.enums import TaskType
|
||||
from skyvern.forge.sdk.schemas.tasks import Task, TaskOutput, TaskStatus
|
||||
from skyvern.forge.sdk.settings_manager import SettingsManager
|
||||
from skyvern.forge.sdk.workflow.context_manager import WorkflowRunContext
|
||||
from skyvern.forge.sdk.workflow.exceptions import (
|
||||
InvalidEmailClientConfiguration,
|
||||
@@ -376,8 +375,8 @@ class BaseTaskBlock(Block):
|
||||
)
|
||||
else:
|
||||
browser_state = app.BROWSER_MANAGER.get_for_workflow_run(workflow_run_id=workflow_run_id)
|
||||
if browser_state is None:
|
||||
raise MissingBrowserState(task_id=task.task_id, workflow_run_id=workflow_run_id)
|
||||
if browser_state is None:
|
||||
raise MissingBrowserState(task_id=task.task_id, workflow_run_id=workflow_run_id)
|
||||
except FailedToNavigateToUrl as e:
|
||||
# Make sure the task is marked as failed in the database before raising the exception
|
||||
await app.DATABASE.update_task(
|
||||
@@ -982,7 +981,7 @@ class DownloadToS3Block(Block):
|
||||
|
||||
uri = None
|
||||
try:
|
||||
uri = f"s3://{SettingsManager.get_settings().AWS_S3_BUCKET_UPLOADS}/{SettingsManager.get_settings().ENV}/{workflow_run_id}/{uuid.uuid4()}"
|
||||
uri = f"s3://{settings.AWS_S3_BUCKET_UPLOADS}/{settings.ENV}/{workflow_run_id}/{uuid.uuid4()}"
|
||||
await self._upload_file_to_s3(uri, file_path)
|
||||
except Exception as e:
|
||||
LOG.error("DownloadToS3Block: Failed to upload file to S3", uri=uri, error=str(e))
|
||||
@@ -1019,8 +1018,8 @@ class UploadToS3Block(Block):
|
||||
|
||||
@staticmethod
|
||||
def _get_s3_uri(workflow_run_id: str, path: str) -> str:
|
||||
s3_bucket = SettingsManager.get_settings().AWS_S3_BUCKET_UPLOADS
|
||||
s3_key = f"{SettingsManager.get_settings().ENV}/{workflow_run_id}/{uuid.uuid4()}_{Path(path).name}"
|
||||
s3_bucket = settings.AWS_S3_BUCKET_UPLOADS
|
||||
s3_key = f"{settings.ENV}/{workflow_run_id}/{uuid.uuid4()}_{Path(path).name}"
|
||||
return f"s3://{s3_bucket}/{s3_key}"
|
||||
|
||||
async def execute(self, workflow_run_id: str, **kwargs: dict) -> BlockResult:
|
||||
@@ -1037,7 +1036,7 @@ class UploadToS3Block(Block):
|
||||
)
|
||||
self.path = file_path_parameter_value
|
||||
# if the path is WORKFLOW_DOWNLOAD_DIRECTORY_PARAMETER_KEY, use the download directory for the workflow run
|
||||
elif self.path == SettingsManager.get_settings().WORKFLOW_DOWNLOAD_DIRECTORY_PARAMETER_KEY:
|
||||
elif self.path == settings.WORKFLOW_DOWNLOAD_DIRECTORY_PARAMETER_KEY:
|
||||
self.path = str(get_path_for_workflow_download_directory(workflow_run_id).absolute())
|
||||
|
||||
self.format_potential_template_parameters(workflow_run_context)
|
||||
@@ -1173,7 +1172,7 @@ class SendEmailBlock(Block):
|
||||
else:
|
||||
path = file_path_parameter_value
|
||||
|
||||
if path == SettingsManager.get_settings().WORKFLOW_DOWNLOAD_DIRECTORY_PARAMETER_KEY:
|
||||
if path == settings.WORKFLOW_DOWNLOAD_DIRECTORY_PARAMETER_KEY:
|
||||
# if the path is WORKFLOW_DOWNLOAD_DIRECTORY_PARAMETER_KEY, use download directory for the workflow run
|
||||
path = str(get_path_for_workflow_download_directory(workflow_run_id).absolute())
|
||||
LOG.info(
|
||||
|
||||
@@ -7,6 +7,7 @@ import httpx
|
||||
import structlog
|
||||
|
||||
from skyvern import analytics
|
||||
from skyvern.config import settings
|
||||
from skyvern.constants import GET_DOWNLOADED_FILES_TIMEOUT, SAVE_DOWNLOADED_FILES_TIMEOUT
|
||||
from skyvern.exceptions import (
|
||||
FailedToSendWebhook,
|
||||
@@ -23,7 +24,6 @@ from skyvern.forge.sdk.core.skyvern_context import SkyvernContext
|
||||
from skyvern.forge.sdk.db.enums import TaskType
|
||||
from skyvern.forge.sdk.models import Organization, Step
|
||||
from skyvern.forge.sdk.schemas.tasks import ProxyLocation, Task
|
||||
from skyvern.forge.sdk.settings_manager import SettingsManager
|
||||
from skyvern.forge.sdk.workflow.exceptions import (
|
||||
ContextParameterSourceNotDefined,
|
||||
InvalidWaitBlockTime,
|
||||
@@ -1508,11 +1508,8 @@ class WorkflowService:
|
||||
)
|
||||
|
||||
elif block_yaml.block_type == BlockType.WAIT:
|
||||
if (
|
||||
block_yaml.wait_sec <= 0
|
||||
or block_yaml.wait_sec > SettingsManager.get_settings().WORKFLOW_WAIT_BLOCK_MAX_SEC
|
||||
):
|
||||
raise InvalidWaitBlockTime(SettingsManager.get_settings().WORKFLOW_WAIT_BLOCK_MAX_SEC)
|
||||
if block_yaml.wait_sec <= 0 or block_yaml.wait_sec > settings.WORKFLOW_WAIT_BLOCK_MAX_SEC:
|
||||
raise InvalidWaitBlockTime(settings.WORKFLOW_WAIT_BLOCK_MAX_SEC)
|
||||
|
||||
return WaitBlock(
|
||||
label=block_yaml.label,
|
||||
|
||||
Reference in New Issue
Block a user