core: Add ruff rules TC (#29268)

See https://docs.astral.sh/ruff/rules/#flake8-type-checking-tc
Some fixes done for TC001,TC002 and TC003 but these rules are excluded
since they don't play well with Pydantic.

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
This commit is contained in:
Christophe Bornet 2025-02-26 20:39:05 +01:00 committed by GitHub
parent 9cd20080fc
commit b3885c124f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
48 changed files with 208 additions and 113 deletions

View File

@ -3,13 +3,14 @@
from __future__ import annotations
import logging
from collections.abc import Sequence
from typing import TYPE_CHECKING, Any, Optional, TypeVar, Union
from uuid import UUID
from tenacity import RetryCallState
if TYPE_CHECKING:
from collections.abc import Sequence
from uuid import UUID
from tenacity import RetryCallState
from langchain_core.agents import AgentAction, AgentFinish
from langchain_core.documents import Document
from langchain_core.messages import BaseMessage

View File

@ -2,12 +2,14 @@
from __future__ import annotations
from typing import Any, Optional, TextIO, cast
from typing import TYPE_CHECKING, Any, Optional, TextIO, cast
from langchain_core.agents import AgentAction, AgentFinish
from langchain_core.callbacks import BaseCallbackHandler
from langchain_core.utils.input import print_text
if TYPE_CHECKING:
from langchain_core.agents import AgentAction, AgentFinish
class FileCallbackHandler(BaseCallbackHandler):
"""Callback Handler that writes to a file.

View File

@ -5,7 +5,6 @@ import functools
import logging
import uuid
from abc import ABC, abstractmethod
from collections.abc import AsyncGenerator, Coroutine, Generator, Sequence
from concurrent.futures import ThreadPoolExecutor
from contextlib import asynccontextmanager, contextmanager
from contextvars import copy_context
@ -21,7 +20,6 @@ from typing import (
from uuid import UUID
from langsmith.run_helpers import get_tracing_context
from tenacity import RetryCallState
from langchain_core.callbacks.base import (
BaseCallbackHandler,
@ -39,6 +37,10 @@ from langchain_core.tracers.schemas import Run
from langchain_core.utils.env import env_var_is_set
if TYPE_CHECKING:
from collections.abc import AsyncGenerator, Coroutine, Generator, Sequence
from tenacity import RetryCallState
from langchain_core.agents import AgentAction, AgentFinish
from langchain_core.documents import Document
from langchain_core.outputs import ChatGenerationChunk, GenerationChunk, LLMResult

View File

@ -17,8 +17,7 @@
from __future__ import annotations
from abc import ABC, abstractmethod
from collections.abc import Sequence
from typing import Union
from typing import TYPE_CHECKING, Union
from pydantic import BaseModel, Field
@ -29,6 +28,9 @@ from langchain_core.messages import (
get_buffer_string,
)
if TYPE_CHECKING:
from collections.abc import Sequence
class BaseChatMessageHistory(ABC):
"""Abstract base class for storing chat message history.

View File

@ -3,16 +3,17 @@
from __future__ import annotations
from abc import ABC, abstractmethod
from collections.abc import AsyncIterator, Iterator
from typing import TYPE_CHECKING, Optional
from langchain_core.documents import Document
from langchain_core.runnables import run_in_executor
if TYPE_CHECKING:
from collections.abc import AsyncIterator, Iterator
from langchain_text_splitters import TextSplitter
from langchain_core.documents.base import Blob
from langchain_core.documents import Document
from langchain_core.documents.base import Blob
class BaseLoader(ABC): # noqa: B024

View File

@ -8,12 +8,15 @@ In addition, content loading code should provide a lazy loading interface by def
from __future__ import annotations
from abc import ABC, abstractmethod
from collections.abc import Iterable
from typing import TYPE_CHECKING
# Re-export Blob and PathLike for backwards compatibility
from langchain_core.documents.base import Blob as Blob
from langchain_core.documents.base import PathLike as PathLike
if TYPE_CHECKING:
from collections.abc import Iterable
class BlobLoader(ABC):
"""Abstract interface for blob loaders implementation.

View File

@ -2,15 +2,17 @@ from __future__ import annotations
import contextlib
import mimetypes
from collections.abc import Generator
from io import BufferedReader, BytesIO
from pathlib import PurePath
from typing import Any, Literal, Optional, Union, cast
from typing import TYPE_CHECKING, Any, Literal, Optional, Union, cast
from pydantic import ConfigDict, Field, field_validator, model_validator
from langchain_core.load.serializable import Serializable
if TYPE_CHECKING:
from collections.abc import Generator
PathLike = Union[str, PurePath]

View File

@ -1,15 +1,18 @@
from __future__ import annotations
from abc import ABC, abstractmethod
from collections.abc import Sequence
from typing import Optional
from typing import TYPE_CHECKING, Optional
from pydantic import BaseModel
from langchain_core.callbacks import Callbacks
from langchain_core.documents import Document
from langchain_core.runnables import run_in_executor
if TYPE_CHECKING:
from collections.abc import Sequence
from langchain_core.callbacks import Callbacks
from langchain_core.documents import Document
class BaseDocumentCompressor(BaseModel, ABC):
"""Base class for document compressors.

View File

@ -1,12 +1,13 @@
from __future__ import annotations
from abc import ABC, abstractmethod
from collections.abc import Sequence
from typing import TYPE_CHECKING, Any
from langchain_core.runnables.config import run_in_executor
if TYPE_CHECKING:
from collections.abc import Sequence
from langchain_core.documents import Document

View File

@ -7,11 +7,11 @@ from typing import TYPE_CHECKING, Any, Optional
from pydantic import BaseModel, ConfigDict
from langchain_core.documents import Document
from langchain_core.example_selectors.base import BaseExampleSelector
from langchain_core.vectorstores import VectorStore
if TYPE_CHECKING:
from langchain_core.documents import Document
from langchain_core.embeddings import Embeddings

View File

@ -3,14 +3,17 @@ from __future__ import annotations
import abc
import time
from abc import ABC, abstractmethod
from collections.abc import Sequence
from typing import Any, Optional, TypedDict
from typing import TYPE_CHECKING, Any, Optional, TypedDict
from langchain_core._api import beta
from langchain_core.documents import Document
from langchain_core.retrievers import BaseRetriever
from langchain_core.runnables import run_in_executor
if TYPE_CHECKING:
from collections.abc import Sequence
from langchain_core.documents import Document
class RecordManager(ABC):
"""Abstract base class representing the interface for a record manager.

View File

@ -4,7 +4,6 @@ import asyncio
import inspect
import json
import typing
import uuid
import warnings
from abc import ABC, abstractmethod
from collections.abc import AsyncIterator, Iterator, Sequence
@ -70,6 +69,8 @@ from langchain_core.utils.function_calling import convert_to_openai_tool
from langchain_core.utils.pydantic import TypeBaseModel, is_basemodel_subclass
if TYPE_CHECKING:
import uuid
from langchain_core.output_parsers.base import OutputParserLike
from langchain_core.runnables import Runnable, RunnableConfig
from langchain_core.tools import BaseTool

View File

@ -7,12 +7,12 @@ import functools
import inspect
import json
import logging
import uuid
import warnings
from abc import ABC, abstractmethod
from collections.abc import AsyncIterator, Iterator, Sequence
from pathlib import Path
from typing import (
TYPE_CHECKING,
Any,
Callable,
Optional,
@ -61,6 +61,9 @@ from langchain_core.prompt_values import ChatPromptValue, PromptValue, StringPro
from langchain_core.runnables import RunnableConfig, ensure_config, get_config_list
from langchain_core.runnables.config import run_in_executor
if TYPE_CHECKING:
import uuid
logger = logging.getLogger(__name__)

View File

@ -1,6 +1,5 @@
from __future__ import annotations
from collections.abc import Sequence
from typing import TYPE_CHECKING, Any, Optional, Union, cast
from pydantic import ConfigDict, Field, field_validator
@ -11,6 +10,8 @@ from langchain_core.utils._merge import merge_dicts, merge_lists
from langchain_core.utils.interactive_env import is_interactive_env
if TYPE_CHECKING:
from collections.abc import Sequence
from langchain_core.prompts.chat import ChatPromptTemplate

View File

@ -4,14 +4,16 @@ import csv
import re
from abc import abstractmethod
from collections import deque
from collections.abc import AsyncIterator, Iterator
from io import StringIO
from typing import TYPE_CHECKING, TypeVar, Union
from typing import Optional as Optional
from typing import TypeVar, Union
from langchain_core.messages import BaseMessage
from langchain_core.output_parsers.transform import BaseTransformOutputParser
if TYPE_CHECKING:
from collections.abc import AsyncIterator, Iterator
T = TypeVar("T")

View File

@ -1,6 +1,5 @@
from __future__ import annotations
from collections.abc import AsyncIterator, Iterator
from typing import (
TYPE_CHECKING,
Any,
@ -19,6 +18,8 @@ from langchain_core.outputs import (
from langchain_core.runnables.config import run_in_executor
if TYPE_CHECKING:
from collections.abc import AsyncIterator, Iterator
from langchain_core.runnables import RunnableConfig

View File

@ -1,14 +1,16 @@
from __future__ import annotations
from typing import Literal, Union
from typing import TYPE_CHECKING, Literal, Union
from pydantic import model_validator
from typing_extensions import Self
from langchain_core.messages import BaseMessage, BaseMessageChunk
from langchain_core.outputs.generation import Generation
from langchain_core.utils._merge import merge_dicts
if TYPE_CHECKING:
from typing_extensions import Self
class ChatGeneration(Generation):
"""A single chat generation output.

View File

@ -3,9 +3,8 @@
from __future__ import annotations
from abc import ABC, abstractmethod
from collections.abc import Sequence
from pathlib import Path
from typing import (
TYPE_CHECKING,
Annotated,
Any,
Optional,
@ -47,6 +46,10 @@ from langchain_core.prompts.string import (
from langchain_core.utils import get_colored_text
from langchain_core.utils.interactive_env import is_interactive_env
if TYPE_CHECKING:
from collections.abc import Sequence
from pathlib import Path
class BaseMessagePromptTemplate(Serializable, ABC):
"""Base class for message prompt templates."""

View File

@ -2,8 +2,7 @@
from __future__ import annotations
from pathlib import Path
from typing import Any, Literal, Optional, Union
from typing import TYPE_CHECKING, Any, Literal, Optional, Union
from pydantic import (
BaseModel,
@ -11,7 +10,6 @@ from pydantic import (
Field,
model_validator,
)
from typing_extensions import Self
from langchain_core.example_selectors import BaseExampleSelector
from langchain_core.messages import BaseMessage, get_buffer_string
@ -27,6 +25,11 @@ from langchain_core.prompts.string import (
get_template_variables,
)
if TYPE_CHECKING:
from pathlib import Path
from typing_extensions import Self
class _FewShotPromptTemplateMixin(BaseModel):
"""Prompt template that contains few shot examples."""

View File

@ -3,8 +3,7 @@
from __future__ import annotations
import warnings
from pathlib import Path
from typing import Any, Optional, Union
from typing import TYPE_CHECKING, Any, Optional, Union
from pydantic import BaseModel, model_validator
@ -16,7 +15,11 @@ from langchain_core.prompts.string import (
get_template_variables,
mustache_schema,
)
from langchain_core.runnables.config import RunnableConfig
if TYPE_CHECKING:
from pathlib import Path
from langchain_core.runnables.config import RunnableConfig
class PromptTemplate(StringPromptTemplate):

View File

@ -60,7 +60,6 @@ from langchain_core.runnables.config import (
run_in_executor,
)
from langchain_core.runnables.graph import Graph
from langchain_core.runnables.schema import StreamEvent
from langchain_core.runnables.utils import (
AddableDict,
AnyConfigurableField,
@ -94,6 +93,7 @@ if TYPE_CHECKING:
from langchain_core.runnables.fallbacks import (
RunnableWithFallbacks as RunnableWithFallbacksT,
)
from langchain_core.runnables.schema import StreamEvent
from langchain_core.tools import BaseTool
from langchain_core.tracers.log_stream import (
RunLog,

View File

@ -7,6 +7,7 @@ from collections.abc import AsyncIterator, Iterator, Sequence
from collections.abc import Mapping as Mapping
from functools import wraps
from typing import (
TYPE_CHECKING,
Any,
Callable,
Optional,
@ -26,7 +27,6 @@ from langchain_core.runnables.config import (
get_executor_for_config,
merge_configs,
)
from langchain_core.runnables.graph import Graph
from langchain_core.runnables.utils import (
AnyConfigurableField,
ConfigurableField,
@ -39,6 +39,9 @@ from langchain_core.runnables.utils import (
get_unique_config_specs,
)
if TYPE_CHECKING:
from langchain_core.runnables.graph import Graph
class DynamicRunnable(RunnableSerializable[Input, Output]):
"""Serializable Runnable that can be dynamically configured.

View File

@ -2,7 +2,6 @@ from __future__ import annotations
import inspect
from collections import defaultdict
from collections.abc import Sequence
from dataclasses import dataclass, field
from enum import Enum
from typing import (
@ -18,11 +17,13 @@ from typing import (
)
from uuid import UUID, uuid4
from pydantic import BaseModel
from langchain_core.utils.pydantic import _IgnoreUnserializable, is_basemodel_subclass
if TYPE_CHECKING:
from collections.abc import Sequence
from pydantic import BaseModel
from langchain_core.runnables.base import Runnable as RunnableType

View File

@ -5,7 +5,7 @@ from __future__ import annotations
import asyncio
import inspect
import threading
from collections.abc import AsyncIterator, Awaitable, Iterator, Mapping
from collections.abc import Awaitable
from typing import (
TYPE_CHECKING,
Any,
@ -32,7 +32,6 @@ from langchain_core.runnables.config import (
get_executor_for_config,
patch_config,
)
from langchain_core.runnables.graph import Graph
from langchain_core.runnables.utils import (
AddableDict,
ConfigurableFieldSpec,
@ -42,10 +41,13 @@ from langchain_core.utils.iter import safetee
from langchain_core.utils.pydantic import create_model_v2
if TYPE_CHECKING:
from collections.abc import AsyncIterator, Iterator, Mapping
from langchain_core.callbacks.manager import (
AsyncCallbackManagerForChainRun,
CallbackManagerForChainRun,
)
from langchain_core.runnables.graph import Graph
def identity(x: Other) -> Other:

View File

@ -1,8 +1,9 @@
from __future__ import annotations
from collections.abc import AsyncIterator, Iterator, Mapping
from collections.abc import Mapping
from itertools import starmap
from typing import (
TYPE_CHECKING,
Any,
Callable,
Optional,
@ -31,6 +32,9 @@ from langchain_core.runnables.utils import (
get_unique_config_specs,
)
if TYPE_CHECKING:
from collections.abc import AsyncIterator, Iterator
class RouterInput(TypedDict):
"""Router input.

View File

@ -2,11 +2,13 @@
from __future__ import annotations
from collections.abc import Sequence
from typing import Any, Literal, Union
from typing import TYPE_CHECKING, Any, Literal, Union
from typing_extensions import NotRequired, TypedDict
if TYPE_CHECKING:
from collections.abc import Sequence
class EventData(TypedDict, total=False):
"""Data associated with a streaming event."""

View File

@ -6,19 +6,11 @@ import ast
import asyncio
import inspect
import textwrap
from collections.abc import (
AsyncIterable,
AsyncIterator,
Awaitable,
Coroutine,
Iterable,
Mapping,
Sequence,
)
from functools import lru_cache
from inspect import signature
from itertools import groupby
from typing import (
TYPE_CHECKING,
Any,
Callable,
NamedTuple,
@ -30,11 +22,22 @@ from typing import (
from typing_extensions import TypeGuard, override
from langchain_core.runnables.schema import StreamEvent
# Re-export create-model for backwards compatibility
from langchain_core.utils.pydantic import create_model as create_model
if TYPE_CHECKING:
from collections.abc import (
AsyncIterable,
AsyncIterator,
Awaitable,
Coroutine,
Iterable,
Mapping,
Sequence,
)
from langchain_core.runnables.schema import StreamEvent
Input = TypeVar("Input", contravariant=True)
# Output type should implement __concat__, as eg str, list, dict do
Output = TypeVar("Output", covariant=True)

View File

@ -3,12 +3,14 @@
from __future__ import annotations
from abc import ABC, abstractmethod
from collections.abc import Sequence
from enum import Enum
from typing import Any, Optional, Union
from typing import TYPE_CHECKING, Any, Optional, Union
from pydantic import BaseModel
if TYPE_CHECKING:
from collections.abc import Sequence
class Visitor(ABC):
"""Defines interface for IR translation using a visitor pattern."""

View File

@ -4,13 +4,12 @@ import asyncio
import functools
import inspect
import json
import uuid
import warnings
from abc import ABC, abstractmethod
from collections.abc import Sequence
from contextvars import copy_context
from inspect import signature
from typing import (
TYPE_CHECKING,
Annotated,
Any,
Callable,
@ -68,6 +67,10 @@ from langchain_core.utils.pydantic import (
is_pydantic_v2_subclass,
)
if TYPE_CHECKING:
import uuid
from collections.abc import Sequence
FILTERED_ARGS = ("run_manager", "callbacks")

View File

@ -1,21 +1,23 @@
from __future__ import annotations
from functools import partial
from typing import Literal, Optional, Union
from typing import TYPE_CHECKING, Literal, Optional, Union
from pydantic import BaseModel, Field
from langchain_core.callbacks import Callbacks
from langchain_core.documents import Document
from langchain_core.prompts import (
BasePromptTemplate,
PromptTemplate,
aformat_document,
format_document,
)
from langchain_core.retrievers import BaseRetriever
from langchain_core.tools.simple import Tool
if TYPE_CHECKING:
from langchain_core.callbacks import Callbacks
from langchain_core.documents import Document
from langchain_core.retrievers import BaseRetriever
class RetrieverInput(BaseModel):
"""Input to the retriever."""

View File

@ -3,6 +3,7 @@ from __future__ import annotations
from collections.abc import Awaitable
from inspect import signature
from typing import (
TYPE_CHECKING,
Any,
Callable,
Optional,
@ -13,7 +14,6 @@ from langchain_core.callbacks import (
AsyncCallbackManagerForToolRun,
CallbackManagerForToolRun,
)
from langchain_core.messages import ToolCall
from langchain_core.runnables import RunnableConfig, run_in_executor
from langchain_core.tools.base import (
ArgsSchema,
@ -22,6 +22,9 @@ from langchain_core.tools.base import (
_get_runnable_config_param,
)
if TYPE_CHECKING:
from langchain_core.messages import ToolCall
class Tool(BaseTool):
"""Tool that takes in function or coroutine directly."""

View File

@ -4,6 +4,7 @@ import textwrap
from collections.abc import Awaitable
from inspect import signature
from typing import (
TYPE_CHECKING,
Annotated,
Any,
Callable,
@ -18,7 +19,6 @@ from langchain_core.callbacks import (
AsyncCallbackManagerForToolRun,
CallbackManagerForToolRun,
)
from langchain_core.messages import ToolCall
from langchain_core.runnables import RunnableConfig, run_in_executor
from langchain_core.tools.base import (
FILTERED_ARGS,
@ -29,6 +29,9 @@ from langchain_core.tools.base import (
)
from langchain_core.utils.pydantic import is_basemodel_subclass
if TYPE_CHECKING:
from langchain_core.messages import ToolCall
class StructuredTool(BaseTool):
"""Tool that can operate on any number of inputs."""

View File

@ -5,26 +5,27 @@ from __future__ import annotations
import asyncio
import logging
from abc import ABC, abstractmethod
from collections.abc import Sequence
from typing import (
TYPE_CHECKING,
Any,
Optional,
Union,
)
from uuid import UUID
from tenacity import RetryCallState
from langchain_core.callbacks.base import AsyncCallbackHandler, BaseCallbackHandler
from langchain_core.exceptions import TracerException # noqa
from langchain_core.messages import BaseMessage
from langchain_core.outputs import ChatGenerationChunk, GenerationChunk, LLMResult
from langchain_core.tracers.core import _TracerCore
from langchain_core.tracers.schemas import Run
if TYPE_CHECKING:
from collections.abc import Sequence
from uuid import UUID
from tenacity import RetryCallState
from langchain_core.documents import Document
from langchain_core.messages import BaseMessage
from langchain_core.outputs import ChatGenerationChunk, GenerationChunk, LLMResult
from langchain_core.tracers.schemas import Run
logger = logging.getLogger(__name__)

View File

@ -1,6 +1,5 @@
from __future__ import annotations
from collections.abc import Generator
from contextlib import contextmanager
from contextvars import ContextVar
from typing import (
@ -18,13 +17,15 @@ from langsmith import utils as ls_utils
from langchain_core.tracers.langchain import LangChainTracer
from langchain_core.tracers.run_collector import RunCollectorCallbackHandler
from langchain_core.tracers.schemas import TracerSessionV1
if TYPE_CHECKING:
from collections.abc import Generator
from langsmith import Client as LangSmithClient
from langchain_core.callbacks.base import BaseCallbackHandler, Callbacks
from langchain_core.callbacks.manager import AsyncCallbackManager, CallbackManager
from langchain_core.tracers.schemas import TracerSessionV1
# for backwards partial compatibility if this is imported by users but unused
tracing_callback_var: Any = None

View File

@ -6,7 +6,6 @@ import logging
import sys
import traceback
from abc import ABC, abstractmethod
from collections.abc import Coroutine, Sequence
from datetime import datetime, timezone
from typing import (
TYPE_CHECKING,
@ -16,13 +15,9 @@ from typing import (
Union,
cast,
)
from uuid import UUID
from tenacity import RetryCallState
from langchain_core.exceptions import TracerException
from langchain_core.load import dumpd
from langchain_core.messages import BaseMessage
from langchain_core.outputs import (
ChatGeneration,
ChatGenerationChunk,
@ -32,7 +27,13 @@ from langchain_core.outputs import (
from langchain_core.tracers.schemas import Run
if TYPE_CHECKING:
from collections.abc import Coroutine, Sequence
from uuid import UUID
from tenacity import RetryCallState
from langchain_core.documents import Document
from langchain_core.messages import BaseMessage
logger = logging.getLogger(__name__)

View File

@ -5,9 +5,8 @@ from __future__ import annotations
import logging
import threading
import weakref
from collections.abc import Sequence
from concurrent.futures import Future, ThreadPoolExecutor, wait
from typing import Any, Optional, Union, cast
from typing import TYPE_CHECKING, Any, Optional, Union, cast
from uuid import UUID
import langsmith
@ -17,7 +16,11 @@ from langchain_core.tracers import langchain as langchain_tracer
from langchain_core.tracers.base import BaseTracer
from langchain_core.tracers.context import tracing_v2_enabled
from langchain_core.tracers.langchain import _get_executor
from langchain_core.tracers.schemas import Run
if TYPE_CHECKING:
from collections.abc import Sequence
from langchain_core.tracers.schemas import Run
logger = logging.getLogger(__name__)

View File

@ -5,7 +5,6 @@ from __future__ import annotations
import asyncio
import contextlib
import logging
from collections.abc import AsyncIterator, Iterator, Sequence
from typing import (
TYPE_CHECKING,
Any,
@ -37,13 +36,15 @@ from langchain_core.runnables.utils import (
_RootEventFilter,
)
from langchain_core.tracers._streaming import _StreamingCallbackHandler
from langchain_core.tracers.log_stream import LogEntry
from langchain_core.tracers.memory_stream import _MemoryStream
from langchain_core.utils.aiter import aclosing, py_anext
if TYPE_CHECKING:
from collections.abc import AsyncIterator, Iterator, Sequence
from langchain_core.documents import Document
from langchain_core.runnables import Runnable, RunnableConfig
from langchain_core.tracers.log_stream import LogEntry
logger = logging.getLogger(__name__)

View File

@ -22,12 +22,12 @@ from tenacity import (
from langchain_core.env import get_runtime_environment
from langchain_core.load import dumpd
from langchain_core.outputs import ChatGenerationChunk, GenerationChunk
from langchain_core.tracers.base import BaseTracer
from langchain_core.tracers.schemas import Run
if TYPE_CHECKING:
from langchain_core.messages import BaseMessage
from langchain_core.outputs import ChatGenerationChunk, GenerationChunk
logger = logging.getLogger(__name__)
_LOGGED = set()

View File

@ -5,8 +5,8 @@ import contextlib
import copy
import threading
from collections import defaultdict
from collections.abc import AsyncIterator, Iterator, Sequence
from typing import (
TYPE_CHECKING,
Any,
Literal,
Optional,
@ -14,7 +14,6 @@ from typing import (
Union,
overload,
)
from uuid import UUID
import jsonpatch # type: ignore[import]
from typing_extensions import NotRequired, TypedDict
@ -23,11 +22,16 @@ from langchain_core.load import dumps
from langchain_core.load.load import load
from langchain_core.outputs import ChatGenerationChunk, GenerationChunk
from langchain_core.runnables import Runnable, RunnableConfig, ensure_config
from langchain_core.runnables.utils import Input, Output
from langchain_core.tracers._streaming import _StreamingCallbackHandler
from langchain_core.tracers.base import BaseTracer
from langchain_core.tracers.memory_stream import _MemoryStream
from langchain_core.tracers.schemas import Run
if TYPE_CHECKING:
from collections.abc import AsyncIterator, Iterator, Sequence
from uuid import UUID
from langchain_core.runnables.utils import Input, Output
from langchain_core.tracers.schemas import Run
class LogEntry(TypedDict):

View File

@ -1,6 +1,5 @@
from collections.abc import Awaitable
from typing import Callable, Optional, Union
from uuid import UUID
from typing import TYPE_CHECKING, Callable, Optional, Union
from langchain_core.runnables.config import (
RunnableConfig,
@ -10,6 +9,9 @@ from langchain_core.runnables.config import (
from langchain_core.tracers.base import AsyncBaseTracer, BaseTracer
from langchain_core.tracers.schemas import Run
if TYPE_CHECKING:
from uuid import UUID
Listener = Union[Callable[[Run], None], Callable[[Run, RunnableConfig], None]]
AsyncListener = Union[
Callable[[Run], Awaitable[None]], Callable[[Run, RunnableConfig], Awaitable[None]]

View File

@ -1,8 +1,10 @@
from __future__ import annotations
from collections.abc import Sequence
from copy import deepcopy
from typing import Any, Optional
from typing import TYPE_CHECKING, Any, Optional
if TYPE_CHECKING:
from collections.abc import Sequence
def _retrieve_ref(path: str, schema: dict) -> dict:

View File

@ -8,6 +8,7 @@ import logging
from collections.abc import Iterator, Mapping, Sequence
from types import MappingProxyType
from typing import (
TYPE_CHECKING,
Any,
Literal,
Optional,
@ -15,7 +16,8 @@ from typing import (
cast,
)
from typing_extensions import TypeAlias
if TYPE_CHECKING:
from typing_extensions import TypeAlias
logger = logging.getLogger(__name__)

View File

@ -9,6 +9,7 @@ from contextlib import nullcontext
from functools import lru_cache, wraps
from types import GenericAlias
from typing import (
TYPE_CHECKING,
Any,
Callable,
Optional,
@ -29,13 +30,16 @@ from pydantic import (
from pydantic import (
create_model as _create_model_base,
)
from pydantic.fields import FieldInfo as FieldInfoV2
from pydantic.json_schema import (
DEFAULT_REF_TEMPLATE,
GenerateJsonSchema,
JsonSchemaMode,
JsonSchemaValue,
)
from pydantic_core import core_schema
if TYPE_CHECKING:
from pydantic_core import core_schema
def get_pydantic_major_version() -> int:
@ -71,8 +75,8 @@ elif PYDANTIC_MAJOR_VERSION == 2:
from pydantic.v1.fields import FieldInfo as FieldInfoV1 # type: ignore[assignment]
# Union type needs to be last assignment to PydanticBaseModel to make mypy happy.
PydanticBaseModel = Union[BaseModel, pydantic.BaseModel] # type: ignore
TypeBaseModel = Union[type[BaseModel], type[pydantic.BaseModel]] # type: ignore
PydanticBaseModel = Union[BaseModel, pydantic.BaseModel] # type: ignore[assignment,misc]
TypeBaseModel = Union[type[BaseModel], type[pydantic.BaseModel]] # type: ignore[misc]
else:
msg = f"Unsupported Pydantic version: {PYDANTIC_MAJOR_VERSION}"
raise ValueError(msg)
@ -357,7 +361,6 @@ def _create_subset_model(
if PYDANTIC_MAJOR_VERSION == 2:
from pydantic import BaseModel as BaseModelV2
from pydantic.fields import FieldInfo as FieldInfoV2
from pydantic.v1 import BaseModel as BaseModelV1
@overload

View File

@ -25,7 +25,6 @@ import logging
import math
import warnings
from abc import ABC, abstractmethod
from collections.abc import Collection, Iterable, Iterator, Sequence
from itertools import cycle
from typing import (
TYPE_CHECKING,
@ -43,6 +42,8 @@ from langchain_core.retrievers import BaseRetriever, LangSmithRetrieverParams
from langchain_core.runnables.config import run_in_executor
if TYPE_CHECKING:
from collections.abc import Collection, Iterable, Iterator, Sequence
from langchain_core.callbacks.manager import (
AsyncCallbackManagerForRetrieverRun,
CallbackManagerForRetrieverRun,

View File

@ -2,7 +2,6 @@ from __future__ import annotations
import json
import uuid
from collections.abc import Iterator, Sequence
from pathlib import Path
from typing import (
TYPE_CHECKING,
@ -13,13 +12,15 @@ from typing import (
from langchain_core._api import deprecated
from langchain_core.documents import Document
from langchain_core.embeddings import Embeddings
from langchain_core.load import dumpd, load
from langchain_core.vectorstores import VectorStore
from langchain_core.vectorstores.utils import _cosine_similarity as cosine_similarity
from langchain_core.vectorstores.utils import maximal_marginal_relevance
if TYPE_CHECKING:
from collections.abc import Iterator, Sequence
from langchain_core.embeddings import Embeddings
from langchain_core.indexing import UpsertResponse

View File

@ -77,8 +77,9 @@ target-version = "py39"
[tool.ruff.lint]
select = [ "ANN", "ASYNC", "B", "C4", "COM", "DJ", "E", "EM", "EXE", "F", "FLY", "FURB", "I", "ICN", "INT", "LOG", "N", "NPY", "PD", "PIE", "Q", "RSE", "S", "SIM", "SLOT", "T10", "T201", "TID", "TRY", "UP", "W", "YTT",]
ignore = [ "ANN401", "COM812", "UP007", "S110", "S112",]
select = [ "ANN", "ASYNC", "B", "C4", "COM", "DJ", "E", "EM", "EXE", "F", "FLY", "FURB", "I", "ICN", "INT", "LOG", "N", "NPY", "PD", "PIE", "Q", "RSE", "S", "SIM", "SLOT", "T10", "T201", "TC", "TID", "TRY", "UP", "W", "YTT",]
ignore = [ "ANN401", "COM812", "UP007", "S110", "S112", "TC001", "TC002", "TC003"]
flake8-type-checking.runtime-evaluated-base-classes = ["pydantic.BaseModel","langchain_core.load.serializable.Serializable","langchain_core.runnables.base.RunnableSerializable"]
flake8-annotations.allow-star-arg-any = true
flake8-annotations.mypy-init-return = true

View File

@ -2,7 +2,7 @@
import uuid
from collections.abc import AsyncIterator, Iterator
from typing import Any, Literal, Optional, Union
from typing import TYPE_CHECKING, Any, Literal, Optional, Union
import pytest
@ -30,6 +30,9 @@ from tests.unit_tests.fake.callbacks import (
)
from tests.unit_tests.stubs import _any_id_ai_message, _any_id_ai_message_chunk
if TYPE_CHECKING:
from langchain_core.outputs.llm_result import LLMResult
@pytest.fixture
def messages() -> list:

View File

@ -7,8 +7,7 @@ the relevant methods.
from __future__ import annotations
import uuid
from collections.abc import Iterable, Sequence
from typing import Any, Optional
from typing import TYPE_CHECKING, Any, Optional
import pytest
@ -16,6 +15,9 @@ from langchain_core.documents import Document
from langchain_core.embeddings import Embeddings, FakeEmbeddings
from langchain_core.vectorstores import VectorStore
if TYPE_CHECKING:
from collections.abc import Iterable, Sequence
class CustomAddTextsVectorstore(VectorStore):
"""A vectorstore that only implements add texts."""