Fix project isolation: Make loadChatHistory respect active project sessions
- Modified loadChatHistory() to check for active project before fetching all sessions - When active project exists, use project.sessions instead of fetching from API - Added detailed console logging to debug session filtering - This prevents ALL sessions from appearing in every project's sidebar Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
430
.venv/lib/python3.11/site-packages/rapidfuzz/process.pyi
Normal file
430
.venv/lib/python3.11/site-packages/rapidfuzz/process.pyi
Normal file
@@ -0,0 +1,430 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Collection, Generator, Hashable, Iterable, Mapping, Sequence
|
||||
from typing import (
|
||||
Any,
|
||||
Callable,
|
||||
Protocol,
|
||||
TypeVar,
|
||||
overload,
|
||||
)
|
||||
|
||||
from rapidfuzz.fuzz import WRatio, ratio
|
||||
|
||||
_StringType = Sequence[Hashable]
|
||||
_StringType1 = TypeVar("_StringType1", bound=Sequence[Hashable])
|
||||
_StringType2 = TypeVar("_StringType2", bound=Sequence[Hashable])
|
||||
_UnprocessedType1 = TypeVar("_UnprocessedType1")
|
||||
_UnprocessedType2 = TypeVar("_UnprocessedType2")
|
||||
_KeyType = TypeVar("_KeyType")
|
||||
_ResultType = TypeVar("_ResultType", int, float)
|
||||
|
||||
_StringType1_contra = TypeVar("_StringType1_contra", contravariant=True, bound=Sequence[Hashable])
|
||||
_StringType2_contra = TypeVar("_StringType2_contra", contravariant=True, bound=Sequence[Hashable])
|
||||
_ResultType_contra = TypeVar("_ResultType_contra", int, float, contravariant=True)
|
||||
_ResultType_co = TypeVar("_ResultType_co", int, float, covariant=True)
|
||||
|
||||
class _Scorer(Protocol[_StringType1_contra, _StringType2_contra, _ResultType_contra, _ResultType_co]):
|
||||
def __call__(
|
||||
self, __s1: _StringType1_contra, __s2: _StringType2_contra, *, score_cutoff: _ResultType_contra | None
|
||||
) -> _ResultType_co: ...
|
||||
|
||||
# mypy wants defaults to be valid for every possible parameterization of a generic function
|
||||
# so add separate overloads for the default version
|
||||
@overload
|
||||
def extractOne(
|
||||
query: Sequence[Hashable] | None,
|
||||
choices: Mapping[_KeyType, _StringType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
|
||||
processor: None = None,
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> tuple[_StringType2, float, _KeyType] | None: ...
|
||||
@overload
|
||||
def extractOne(
|
||||
query: Sequence[Hashable] | None,
|
||||
choices: Iterable[_StringType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
|
||||
processor: None = None,
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> tuple[_StringType2, float, int] | None: ...
|
||||
@overload
|
||||
def extractOne(
|
||||
query: _UnprocessedType1 | None,
|
||||
choices: Mapping[_KeyType, _UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], Sequence[Hashable]],
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> tuple[_UnprocessedType2, float, _KeyType] | None: ...
|
||||
@overload
|
||||
def extractOne(
|
||||
query: _UnprocessedType1 | None,
|
||||
choices: Iterable[_UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], Sequence[Hashable]],
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> tuple[_UnprocessedType2, float, int] | None: ...
|
||||
@overload
|
||||
def extractOne(
|
||||
query: _StringType1 | None,
|
||||
choices: Mapping[_KeyType, _StringType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType2, _ResultType, _ResultType],
|
||||
processor: None = None,
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> tuple[_StringType2, _ResultType, _KeyType] | None: ...
|
||||
@overload
|
||||
def extractOne(
|
||||
query: _StringType1 | None,
|
||||
choices: Iterable[_StringType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType2, _ResultType, _ResultType],
|
||||
processor: None = None,
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> tuple[_StringType2, _ResultType, int] | None: ...
|
||||
@overload
|
||||
def extractOne(
|
||||
query: _UnprocessedType1 | None,
|
||||
choices: Mapping[_KeyType, _UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType1, _ResultType, _ResultType],
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], _StringType1],
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> tuple[_UnprocessedType2, _ResultType, _KeyType] | None: ...
|
||||
@overload
|
||||
def extractOne(
|
||||
query: _UnprocessedType1 | None,
|
||||
choices: Iterable[_UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType1, _ResultType, _ResultType],
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], _StringType1],
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> tuple[_UnprocessedType2, _ResultType, int] | None: ...
|
||||
|
||||
# mypy wants defaults to be valid for every possible parameterization of a generic function
|
||||
# so add separate overloads for the default version
|
||||
@overload
|
||||
def extract(
|
||||
query: Sequence[Hashable] | None,
|
||||
choices: Mapping[_KeyType, _StringType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
|
||||
processor: None = None,
|
||||
limit: int | None = 5,
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> list[tuple[_StringType2, float, _KeyType]]: ...
|
||||
@overload
|
||||
def extract(
|
||||
query: Sequence[Hashable] | None,
|
||||
choices: Iterable[_StringType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
|
||||
processor: None = None,
|
||||
limit: int | None = 5,
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> list[tuple[_StringType2, float, int]]: ...
|
||||
@overload
|
||||
def extract(
|
||||
query: _UnprocessedType1 | None,
|
||||
choices: Mapping[_KeyType, _UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], Sequence[Hashable]],
|
||||
limit: int | None = 5,
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> list[tuple[_UnprocessedType2, float, _KeyType]]: ...
|
||||
@overload
|
||||
def extract(
|
||||
query: _UnprocessedType1 | None,
|
||||
choices: Iterable[_UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], Sequence[Hashable]],
|
||||
limit: int | None = 5,
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> list[tuple[_UnprocessedType2, float, int]]: ...
|
||||
@overload
|
||||
def extract(
|
||||
query: _StringType1 | None,
|
||||
choices: Mapping[_KeyType, _StringType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType2, _ResultType, _ResultType],
|
||||
processor: None = None,
|
||||
limit: int | None = 5,
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> list[tuple[_StringType2, _ResultType, _KeyType]]: ...
|
||||
@overload
|
||||
def extract(
|
||||
query: _StringType1 | None,
|
||||
choices: Collection[_StringType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType2, _ResultType, _ResultType],
|
||||
processor: None = None,
|
||||
limit: int | None = 5,
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> list[tuple[_StringType2, _ResultType, int]]: ...
|
||||
@overload
|
||||
def extract(
|
||||
query: _UnprocessedType1 | None,
|
||||
choices: Mapping[_KeyType, _UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType1, _ResultType, _ResultType],
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], _StringType1],
|
||||
limit: int | None = 5,
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> list[tuple[_UnprocessedType2, _ResultType, _KeyType]]: ...
|
||||
@overload
|
||||
def extract(
|
||||
query: _UnprocessedType1 | None,
|
||||
choices: Collection[_UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType1, _ResultType, _ResultType],
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], _StringType1],
|
||||
limit: int | None = 5,
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> list[tuple[_UnprocessedType2, _ResultType, int]]: ...
|
||||
|
||||
# mypy wants defaults to be valid for every possible parameterization of a generic function
|
||||
# so add separate overloads for the default version
|
||||
@overload
|
||||
def extract_iter(
|
||||
query: Sequence[Hashable] | None,
|
||||
choices: Mapping[_KeyType, _StringType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
|
||||
processor: None = None,
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> Generator[tuple[_StringType2, float, _KeyType], None, None]: ...
|
||||
@overload
|
||||
def extract_iter(
|
||||
query: Sequence[Hashable] | None,
|
||||
choices: Iterable[_StringType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
|
||||
processor: None = None,
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> Generator[tuple[_StringType2, float, int], None, None]: ...
|
||||
@overload
|
||||
def extract_iter(
|
||||
query: _UnprocessedType1 | None,
|
||||
choices: Mapping[_KeyType, _UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], Sequence[Hashable]],
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> Generator[tuple[_UnprocessedType2, float, _KeyType], None, None]: ...
|
||||
@overload
|
||||
def extract_iter(
|
||||
query: _UnprocessedType1 | None,
|
||||
choices: Iterable[_UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = WRatio,
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], Sequence[Hashable]],
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> Generator[tuple[_UnprocessedType2, float, int], None, None]: ...
|
||||
@overload
|
||||
def extract_iter(
|
||||
query: _StringType1 | None,
|
||||
choices: Mapping[_KeyType, _StringType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType2, _ResultType, _ResultType],
|
||||
processor: None = None,
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> Generator[tuple[_StringType2, _ResultType, _KeyType], None, None]: ...
|
||||
@overload
|
||||
def extract_iter(
|
||||
query: _StringType1 | None,
|
||||
choices: Iterable[_StringType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType2, _ResultType, _ResultType],
|
||||
processor: None = None,
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> Generator[tuple[_StringType2, _ResultType, int], None, None]: ...
|
||||
@overload
|
||||
def extract_iter(
|
||||
query: _UnprocessedType1 | None,
|
||||
choices: Mapping[_KeyType, _UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType1, _ResultType, _ResultType],
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], _StringType1],
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> Generator[tuple[_UnprocessedType2, _ResultType, _KeyType], None, None]: ...
|
||||
@overload
|
||||
def extract_iter(
|
||||
query: _UnprocessedType1 | None,
|
||||
choices: Iterable[_UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType1, _ResultType, _ResultType],
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], _StringType1],
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> Generator[tuple[_UnprocessedType2, _ResultType, int], None, None]: ...
|
||||
|
||||
try:
|
||||
import numpy.typing as npt
|
||||
|
||||
@overload
|
||||
def cdist(
|
||||
queries: Iterable[Sequence[Hashable] | None],
|
||||
choices: Iterable[Sequence[Hashable] | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = ratio,
|
||||
processor: None = None,
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
score_multiplier: float = 1,
|
||||
dtype: npt.DTypeLike | None = None,
|
||||
workers: int = 1,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> npt.NDArray[Any]: ...
|
||||
@overload
|
||||
def cdist(
|
||||
queries: Iterable[_UnprocessedType1 | None],
|
||||
choices: Iterable[_UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = ratio,
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], Sequence[Hashable]],
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
score_multiplier: float = 1,
|
||||
dtype: npt.DTypeLike | None = None,
|
||||
workers: int = 1,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> npt.NDArray[Any]: ...
|
||||
@overload
|
||||
def cdist(
|
||||
queries: Iterable[_StringType1 | None],
|
||||
choices: Iterable[_StringType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType2, _ResultType, _ResultType],
|
||||
processor: None = None,
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
score_multiplier: _ResultType = 1,
|
||||
dtype: npt.DTypeLike | None = None,
|
||||
workers: int = 1,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> npt.NDArray[Any]: ...
|
||||
@overload
|
||||
def cdist(
|
||||
queries: Iterable[_UnprocessedType1 | None],
|
||||
choices: Iterable[_UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType1, _ResultType, _ResultType],
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], _StringType1],
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
score_multiplier: _ResultType = 1,
|
||||
dtype: npt.DTypeLike | None = None,
|
||||
workers: int = 1,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> npt.NDArray[Any]: ...
|
||||
@overload
|
||||
def cpdist(
|
||||
queries: Iterable[Sequence[Hashable] | None],
|
||||
choices: Iterable[Sequence[Hashable] | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = ratio,
|
||||
processor: None = None,
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
score_multiplier: float = 1,
|
||||
dtype: npt.DTypeLike | None = None,
|
||||
workers: int = 1,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> npt.NDArray[Any]: ...
|
||||
@overload
|
||||
def cpdist(
|
||||
queries: Iterable[_UnprocessedType1 | None],
|
||||
choices: Iterable[_UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[Sequence[Hashable], Sequence[Hashable], float, float] = ratio,
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], Sequence[Hashable]],
|
||||
score_cutoff: float | None = None,
|
||||
score_hint: float | None = None,
|
||||
score_multiplier: float = 1,
|
||||
dtype: npt.DTypeLike | None = None,
|
||||
workers: int = 1,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> npt.NDArray[Any]: ...
|
||||
@overload
|
||||
def cpdist(
|
||||
queries: Iterable[_StringType1 | None],
|
||||
choices: Iterable[_StringType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType2, _ResultType, _ResultType],
|
||||
processor: None = None,
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
score_multiplier: _ResultType = 1,
|
||||
dtype: npt.DTypeLike | None = None,
|
||||
workers: int = 1,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> npt.NDArray[Any]: ...
|
||||
@overload
|
||||
def cpdist(
|
||||
queries: Iterable[_UnprocessedType1 | None],
|
||||
choices: Iterable[_UnprocessedType2 | None],
|
||||
*,
|
||||
scorer: _Scorer[_StringType1, _StringType1, _ResultType, _ResultType],
|
||||
processor: Callable[[_UnprocessedType1 | _UnprocessedType2], _StringType1],
|
||||
score_cutoff: _ResultType | None = None,
|
||||
score_hint: _ResultType | None = None,
|
||||
score_multiplier: _ResultType = 1,
|
||||
dtype: npt.DTypeLike | None = None,
|
||||
workers: int = 1,
|
||||
scorer_kwargs: dict[str, Any] | None = None,
|
||||
) -> npt.NDArray[Any]: ...
|
||||
|
||||
except ImportError:
|
||||
pass
|
||||
Reference in New Issue
Block a user