Skip to content
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 34 additions & 20 deletions src/pynguin/analyses/type_inference.py
Comment thread
LuKrO2011 marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,12 @@
import typing
from abc import ABC, abstractmethod
from collections import OrderedDict
from copy import deepcopy
from dataclasses import dataclass
from functools import reduce
from operator import or_
from pathlib import Path
from typing import TYPE_CHECKING, Any, get_type_hints

if TYPE_CHECKING:
from pynguin.utils.typeevalpy_json_schema import ParsedTypeEvalPyData

try:
from pydantic import SecretStr

from pynguin.utils.llm import OpenAI

OPENAI_AVAILABLE = True
except ImportError:
OPENAI_AVAILABLE = False

from typing import Any, get_type_hints

import pynguin.configuration as config
from pynguin.large_language_model.parsing.type_str_parser import TypeStrParser
Expand All @@ -47,14 +35,41 @@
from pynguin.utils.llm import LLMProvider
from pynguin.utils.orderedset import OrderedSet

# ---- Safe imports for optional dependencies ----

# Handle SecretStr safely
try:
from pydantic import SecretStr as _SecretStr
except ImportError:

class _SecretStr:
"""Fallback SecretStr implementation."""

def __init__(self, value: str) -> None:
self._value = value

def get_secret_value(self) -> str:
return self._value


SecretStr = _SecretStr


# Handle OpenAI safely
try:
from pynguin.utils.llm import OpenAI as _OpenAI
except ImportError:
_OpenAI = None

OpenAI: Any = _OpenAI

if typing.TYPE_CHECKING:
from collections.abc import Callable, Mapping, Sequence

from pynguin.analyses.typesystem import (
TypeSystem,
)

from copy import deepcopy
from pynguin.analyses.typesystem import TypeSystem
from pynguin.utils.typeevalpy_json_schema import ParsedTypeEvalPyData
else:
ParsedTypeEvalPyData = Any # type: ignore[assignment]

_LOGGER = logging.getLogger(__name__)

Expand Down Expand Up @@ -531,7 +546,6 @@ class TypeEvalPyInference(InferenceProvider):
def __init__(
self,
typeevalpy_data: ParsedTypeEvalPyData,
*,
name_resolver: Callable[[Callable[..., Any]], str] | None = None,
file_resolver: Callable[[Callable[..., Any]], str] | None = None,
) -> None:
Expand Down
Loading
Loading