diff --git a/pyproject.toml b/pyproject.toml index fd30b56a..c031bfa1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "uipath" -version = "2.1.31" +version = "2.1.32" description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools." readme = { file = "README.md", content-type = "text/markdown" } requires-python = ">=3.10" diff --git a/src/uipath/_cli/__init__.py b/src/uipath/_cli/__init__.py index 4be143fd..efa21ef1 100644 --- a/src/uipath/_cli/__init__.py +++ b/src/uipath/_cli/__init__.py @@ -3,6 +3,7 @@ import click +from ._utils._common import load_environment_variables from .cli_auth import auth as auth from .cli_deploy import deploy as deploy # type: ignore from .cli_dev import dev as dev @@ -43,6 +44,8 @@ def _get_safe_version() -> str: help="Display the current version of uipath.", ) def cli(lv: bool, v: bool) -> None: + load_environment_variables() + if lv: try: version = importlib.metadata.version("uipath-langchain") diff --git a/src/uipath/_cli/_auth/_auth_server.py b/src/uipath/_cli/_auth/_auth_server.py index 3ad2de8b..0a80d2da 100644 --- a/src/uipath/_cli/_auth/_auth_server.py +++ b/src/uipath/_cli/_auth/_auth_server.py @@ -7,12 +7,8 @@ import time from typing import Optional -from dotenv import load_dotenv - from ._oidc_utils import get_auth_config -load_dotenv(override=True) - # Server port PORT = 6234 diff --git a/src/uipath/_cli/_evals/progress_reporter.py b/src/uipath/_cli/_evals/progress_reporter.py index 24db7a4f..f5b2b222 100644 --- a/src/uipath/_cli/_evals/progress_reporter.py +++ b/src/uipath/_cli/_evals/progress_reporter.py @@ -3,9 +3,11 @@ import json import logging import os -from typing import Any, List +from typing import TYPE_CHECKING, Any, List + +if TYPE_CHECKING: + from uipath import UiPath -from uipath import UiPath from uipath._cli._evals._evaluators import EvaluatorBase from uipath._cli._evals._models._evaluation_set import EvaluationStatus from uipath._cli._evals._models._evaluators import EvalItemResult, ScoreType @@ -32,6 +34,8 @@ def __init__( no_of_evals: Number of evaluations in the set evaluators: List of evaluator instances """ + from uipath import UiPath + self._eval_set_id = eval_set_id self.agent_snapshot = agent_snapshot self._no_of_evals = no_of_evals @@ -46,7 +50,6 @@ def __init__( logging.getLogger("uipath._cli.middlewares").setLevel(logging.CRITICAL) console_logger = ConsoleLogger.get_instance() - uipath = UiPath() self._eval_set_run_id = None diff --git a/src/uipath/_cli/_utils/_common.py b/src/uipath/_cli/_utils/_common.py index 8ff634f6..b56eeab2 100644 --- a/src/uipath/_cli/_utils/_common.py +++ b/src/uipath/_cli/_utils/_common.py @@ -3,6 +3,7 @@ from urllib.parse import urlparse import click +from dotenv import find_dotenv, load_dotenv from ..spinner import Spinner @@ -102,3 +103,7 @@ def clean_directory(directory: str) -> None: if os.path.isfile(file_path) and file_name.endswith(".py"): os.remove(file_path) + + +def load_environment_variables(): + load_dotenv(dotenv_path=find_dotenv(usecwd=True), override=False) diff --git a/src/uipath/_cli/cli_auth.py b/src/uipath/_cli/cli_auth.py index b8b2b69b..a1fc21a6 100644 --- a/src/uipath/_cli/cli_auth.py +++ b/src/uipath/_cli/cli_auth.py @@ -7,7 +7,6 @@ from urllib.parse import urlparse import click -from dotenv import load_dotenv from ..telemetry import track from ._auth._auth_server import HTTPServer @@ -18,7 +17,6 @@ from ._utils._common import environment_options from ._utils._console import ConsoleLogger -load_dotenv(override=True) console = ConsoleLogger() diff --git a/src/uipath/_cli/cli_eval.py b/src/uipath/_cli/cli_eval.py index d8cd64e7..f37494cc 100644 --- a/src/uipath/_cli/cli_eval.py +++ b/src/uipath/_cli/cli_eval.py @@ -5,7 +5,6 @@ from typing import List, Optional, Tuple import click -from dotenv import load_dotenv from .._utils.constants import ENV_JOB_ID from ..telemetry import track @@ -13,7 +12,6 @@ from ._utils._console import ConsoleLogger console = ConsoleLogger() -load_dotenv(override=True) class LiteralOption(click.Option): diff --git a/src/uipath/_cli/cli_init.py b/src/uipath/_cli/cli_init.py index 916cc578..3586413b 100644 --- a/src/uipath/_cli/cli_init.py +++ b/src/uipath/_cli/cli_init.py @@ -6,7 +6,6 @@ from typing import Any, Dict, Optional import click -from dotenv import load_dotenv from .._utils.constants import ENV_TELEMETRY_ENABLED from ..telemetry import track @@ -17,7 +16,6 @@ from .middlewares import Middlewares console = ConsoleLogger() - CONFIG_PATH = "uipath.json" @@ -125,9 +123,6 @@ def write_config_file(config_data: Dict[str, Any]) -> None: @track def init(entrypoint: str, infer_bindings: bool) -> None: """Create uipath.json with input/output schemas and bindings.""" - current_path = os.getcwd() - load_dotenv(os.path.join(current_path, ".env"), override=True) - with console.spinner("Initializing UiPath project ..."): current_directory = os.getcwd() generate_env_file(current_directory) diff --git a/src/uipath/_cli/cli_invoke.py b/src/uipath/_cli/cli_invoke.py index 822a88d8..12907228 100644 --- a/src/uipath/_cli/cli_invoke.py +++ b/src/uipath/_cli/cli_invoke.py @@ -5,7 +5,6 @@ import click import httpx -from dotenv import load_dotenv from ._utils._console import ConsoleLogger @@ -21,7 +20,6 @@ from ._utils._processes import get_release_info logger = logging.getLogger(__name__) -load_dotenv(override=True) console = ConsoleLogger() @@ -63,8 +61,6 @@ def invoke( with open(file) as f: input = f.read() with console.spinner("Loading configuration ..."): - current_path = os.getcwd() - load_dotenv(os.path.join(current_path, ".env"), override=True) [base_url, token] = get_env_vars() url = f"{base_url}/orchestrator_/odata/Jobs/UiPath.Server.Configuration.OData.StartJobs" diff --git a/src/uipath/_cli/cli_publish.py b/src/uipath/_cli/cli_publish.py index e0682941..06460c6e 100644 --- a/src/uipath/_cli/cli_publish.py +++ b/src/uipath/_cli/cli_publish.py @@ -4,7 +4,6 @@ import click import httpx -from dotenv import load_dotenv from .._utils._ssl_context import get_httpx_client_kwargs from ..telemetry import track @@ -70,9 +69,6 @@ def get_available_feeds( @track def publish(feed): """Publish the package.""" - current_path = os.getcwd() - load_dotenv(os.path.join(current_path, ".env"), override=True) - [base_url, token] = get_env_vars() headers = {"Authorization": f"Bearer {token}"} diff --git a/src/uipath/_cli/cli_pull.py b/src/uipath/_cli/cli_pull.py index a995348e..4b7ebf43 100644 --- a/src/uipath/_cli/cli_pull.py +++ b/src/uipath/_cli/cli_pull.py @@ -17,7 +17,6 @@ from typing import Dict, Set import click -from dotenv import load_dotenv from ..telemetry import track from ._utils._console import ConsoleLogger @@ -30,7 +29,6 @@ ) console = ConsoleLogger() -load_dotenv(override=True) def compute_normalized_hash(content: str) -> str: diff --git a/src/uipath/_cli/cli_push.py b/src/uipath/_cli/cli_push.py index a78b02f3..87d630ab 100644 --- a/src/uipath/_cli/cli_push.py +++ b/src/uipath/_cli/cli_push.py @@ -5,7 +5,6 @@ from urllib.parse import urlparse import click -from dotenv import load_dotenv from ..telemetry import track from ._push.sw_file_handler import SwFileHandler @@ -21,7 +20,6 @@ from ._utils._uv_helpers import handle_uv_operations console = ConsoleLogger() -load_dotenv(override=True) def get_org_scoped_url(base_url: str) -> str: diff --git a/src/uipath/_cli/cli_run.py b/src/uipath/_cli/cli_run.py index 56041e5c..77f68f57 100644 --- a/src/uipath/_cli/cli_run.py +++ b/src/uipath/_cli/cli_run.py @@ -7,7 +7,6 @@ from uuid import uuid4 import click -from dotenv import load_dotenv from uipath._cli._utils._debug import setup_debugging from uipath.tracing import LlmOpsHttpExporter @@ -27,7 +26,6 @@ from .middlewares import MiddlewareResult, Middlewares console = ConsoleLogger() -load_dotenv(override=True) def python_run_middleware( diff --git a/src/uipath/_execution_context.py b/src/uipath/_execution_context.py index 1b861929..46f4da07 100644 --- a/src/uipath/_execution_context.py +++ b/src/uipath/_execution_context.py @@ -1,12 +1,8 @@ from os import environ as env from typing import Optional -from dotenv import load_dotenv - from ._utils.constants import ENV_JOB_ID, ENV_JOB_KEY, ENV_ROBOT_KEY -load_dotenv(override=True) - class ExecutionContext: """Manages the execution context for UiPath automation processes. diff --git a/src/uipath/_folder_context.py b/src/uipath/_folder_context.py index 2ca3bd83..dd8e03ea 100644 --- a/src/uipath/_folder_context.py +++ b/src/uipath/_folder_context.py @@ -1,8 +1,6 @@ from os import environ as env from typing import Any, Optional -from dotenv import load_dotenv - from ._utils.constants import ( ENV_FOLDER_KEY, ENV_FOLDER_PATH, @@ -10,8 +8,6 @@ HEADER_FOLDER_PATH, ) -load_dotenv(override=True) - class FolderContext: """Manages the folder context for UiPath automation resources. diff --git a/src/uipath/_uipath.py b/src/uipath/_uipath.py index b54c286a..ce24866d 100644 --- a/src/uipath/_uipath.py +++ b/src/uipath/_uipath.py @@ -1,7 +1,6 @@ from os import environ as env from typing import Optional -from dotenv import load_dotenv from pydantic import ValidationError from ._config import Config @@ -29,8 +28,6 @@ ) from .models.errors import BaseUrlMissingError, SecretMissingError -load_dotenv(override=True) - class UiPath: def __init__(