SYMBOL INDEX (2376 symbols across 232 files) FILE: benchmarks/locomo/_run_impl.py class RunConfig (line 42) | class RunConfig: class PairRequest (line 74) | class PairRequest: function run_locomo (line 79) | def run_locomo(cfg: RunConfig) -> dict: function _resolve_run_id (line 386) | def _resolve_run_id( function _distinct_run_ids_from_provenance_sqlite (line 424) | def _distinct_run_ids_from_provenance_sqlite(path: Path) -> set[str]: function _distinct_run_ids_from_memori_sqlite (line 435) | def _distinct_run_ids_from_memori_sqlite(path: Path) -> set[str]: function _get_entity_id_sqlite (line 458) | def _get_entity_id_sqlite(*, sqlite_path: Path, entity_external_id: str)... function _count_entity_facts_sqlite (line 473) | def _count_entity_facts_sqlite(*, sqlite_path: Path, entity_db_id: int) ... function _init_memori (line 488) | def _init_memori(sqlite_path: Path) -> Memori: function _configure_aa_meta (line 497) | def _configure_aa_meta(mem: Memori, cfg: RunConfig) -> None: function _ingest_with_advanced_augmentation (line 505) | def _ingest_with_advanced_augmentation( function _aa_enqueue_pairs_sequential (line 532) | def _aa_enqueue_pairs_sequential( function _read_conversation_summary (line 590) | def _read_conversation_summary(mem: Memori, conversation_id: int) -> str... function _create_conversation_and_persist_messages (line 601) | def _create_conversation_and_persist_messages( function _enqueue_aa (line 617) | def _enqueue_aa( function _build_aa_messages_for_sample (line 635) | def _build_aa_messages_for_sample(sample) -> list[dict[str, str]]: function _build_aa_messages_for_session (line 640) | def _build_aa_messages_for_session(sample, session) -> list[dict[str, st... function _build_aa_messages_for_turns (line 648) | def _build_aa_messages_for_turns( function _build_aa_messages_and_turn_ids_for_sample (line 657) | def _build_aa_messages_and_turn_ids_for_sample( function _build_aa_messages_and_turn_ids_for_turns (line 672) | def _build_aa_messages_and_turn_ids_for_turns( function _format_turn_content (line 695) | def _format_turn_content( function _speaker_to_role (line 703) | def _speaker_to_role(sample) -> dict[str, str]: function _build_aa_provenance (line 719) | def _build_aa_provenance( function _write_aa_payload_preview (line 771) | def _write_aa_payload_preview( function _build_per_pair_requests (line 861) | def _build_per_pair_requests( function _format_top_k (line 894) | def _format_top_k( class _Totals (line 945) | class _Totals: method __init__ (line 946) | def __init__(self) -> None: method count_question (line 961) | def count_question(self, category: str | None) -> None: method add_metrics (line 966) | def add_metrics(self, *, category: str, metrics: dict[str, float]) -> ... method to_summary (line 985) | def to_summary( FILE: benchmarks/locomo/_types.py class LoCoMoTurn (line 8) | class LoCoMoTurn: class LoCoMoSession (line 16) | class LoCoMoSession: class LoCoMoQA (line 23) | class LoCoMoQA: class LoCoMoSample (line 32) | class LoCoMoSample: FILE: benchmarks/locomo/loader.py function load_locomo_json (line 11) | def load_locomo_json(path: str | Path) -> list[LoCoMoSample]: function _parse_conversation (line 34) | def _parse_conversation(value: Any) -> tuple[LoCoMoSession, ...]: function _parse_conversation_dict (line 62) | def _parse_conversation_dict(value: dict[str, Any]) -> tuple[LoCoMoSessi... function _parse_turns (line 84) | def _parse_turns(value: Any, *, context: str) -> tuple[LoCoMoTurn, ...]: function _parse_qa (line 111) | def _parse_qa(value: Any) -> tuple[LoCoMoQA, ...]: function _coerce_str (line 148) | def _coerce_str(value: Any) -> str | None: function _coerce_answers (line 157) | def _coerce_answers(value: Any) -> tuple[str, ...]: FILE: benchmarks/locomo/preprocess.py function preprocess_locomo_json (line 14) | def preprocess_locomo_json(in_path: str | Path, out_path: str | Path) ->... function _strip_multimodal_fields_inplace (line 64) | def _strip_multimodal_fields_inplace(conversation: Any) -> int: function _rewrite_speakers_inplace (line 76) | def _rewrite_speakers_inplace(conversation: Any, *, assistant_speaker: s... function _iter_turn_dicts (line 82) | def _iter_turn_dicts(conversation: Any): function _coerce_str (line 124) | def _coerce_str(value: Any) -> str | None: function main (line 133) | def main(argv: list[str] | None = None) -> int: FILE: benchmarks/locomo/provenance.py class FactAttribution (line 17) | class FactAttribution: class ProvenanceStore (line 23) | class ProvenanceStore: method __init__ (line 24) | def __init__(self, path: str | Path) -> None: method _connect (line 29) | def _connect(self) -> sqlite3.Connection: method _ensure_schema (line 32) | def _ensure_schema(self) -> None: method upsert_many (line 54) | def upsert_many( method best_dia_ids_for_fact (line 73) | def best_dia_ids_for_fact( method has_any (line 91) | def has_any(self, *, run_id: str, sample_id: str) -> bool: method delete_sample (line 104) | def delete_sample(self, *, run_id: str, sample_id: str) -> None: function attribute_facts_to_turn_ids (line 116) | def attribute_facts_to_turn_ids( function _tokenize (line 232) | def _tokenize(text: str) -> list[str]: function _lexical_scores (line 237) | def _lexical_scores(*, query_text: str, docs: list[str]) -> list[float]: FILE: benchmarks/locomo/report.py function main (line 11) | def main(argv: list[str] | None = None) -> int: function _read_jsonl (line 119) | def _read_jsonl(path: Path) -> list[dict[str, Any]]: function _coerce_str (line 128) | def _coerce_str(value: Any) -> str | None: FILE: benchmarks/locomo/retrieval.py class TurnFact (line 11) | class TurnFact: function build_turn_facts (line 19) | def build_turn_facts( function extract_turn_id_from_content (line 43) | def extract_turn_id_from_content(content: str) -> str | None: function evidence_to_turn_ids (line 51) | def evidence_to_turn_ids( function _add_evidence_obj (line 85) | def _add_evidence_obj( function _add_evidence_turn_index (line 101) | def _add_evidence_turn_index( function _coerce_str (line 113) | def _coerce_str(value: Any) -> str | None: function _coerce_int (line 122) | def _coerce_int(value: Any) -> int | None: FILE: benchmarks/locomo/run.py function main (line 7) | def main(argv: list[str] | None = None) -> int: FILE: benchmarks/locomo/scoring.py function hit_at_k (line 4) | def hit_at_k(relevant: set[str], retrieved: list[str], k: int) -> float: function mrr (line 11) | def mrr(relevant: set[str], retrieved: list[str]) -> float: function hit_at_k_groups (line 20) | def hit_at_k_groups(relevant: set[str], retrieved: list[set[str]], k: in... function mrr_groups (line 35) | def mrr_groups(relevant: set[str], retrieved: list[set[str]]) -> float: FILE: benchmarks/perf/_results.py function repo_root (line 8) | def repo_root() -> Path: function results_dir (line 12) | def results_dir() -> Path: function append_csv_row (line 18) | def append_csv_row(path: str | Path, *, header: list[str], row: dict[str... FILE: benchmarks/perf/conftest.py function postgres_db_connection (line 18) | def postgres_db_connection(): function mysql_db_connection (line 62) | def mysql_db_connection(): function db_connection (line 93) | def db_connection(request): function memori_instance (line 106) | def memori_instance(db_connection, request): function sample_queries (line 134) | def sample_queries(): function fact_content_size (line 140) | def fact_content_size(): function entity_with_n_facts (line 152) | def entity_with_n_facts(memori_instance, fact_content_size, request): FILE: benchmarks/perf/fixtures/sample_data.py function generate_random_string (line 9) | def generate_random_string(length: int = 10) -> str: function generate_sample_fact (line 14) | def generate_sample_fact() -> str: function generate_sample_queries (line 50) | def generate_sample_queries() -> dict[str, list[str]]: function generate_facts (line 77) | def generate_facts(count: int) -> list[str]: function generate_facts_with_size (line 95) | def generate_facts_with_size(count: int, size: str = "small") -> list[str]: FILE: benchmarks/perf/fixtures/sample_facts.py function build_user_data (line 5) | def build_user_data() -> dict: FILE: benchmarks/perf/generate_percentile_report.py function calculate_percentile (line 8) | def calculate_percentile(data, percentile): function extract_n_from_test_name (line 24) | def extract_n_from_test_name(test_name): function extract_db_type_from_test_name (line 38) | def extract_db_type_from_test_name(test_name): function extract_content_size_from_test_name (line 51) | def extract_content_size_from_test_name(test_name): function extract_benchmark_id_from_test_name (line 63) | def extract_benchmark_id_from_test_name(test_name): function generate_percentile_report (line 76) | def generate_percentile_report(json_file_path, max_n=None): function generate_report (line 136) | def generate_report(benchmarks, output_format="table"): function main (line 227) | def main(): FILE: benchmarks/perf/memory_utils.py function measure_peak_rss_bytes (line 9) | def measure_peak_rss_bytes( FILE: benchmarks/perf/test_cloud_recall_benchmarks.py function _make_cloud_cfg (line 21) | def _make_cloud_cfg(*, entity_id: str, process_id: str) -> Config: function _seed_cloud_messages (line 34) | def _seed_cloud_messages( function test_benchmark_cloud_recall_latency (line 62) | def test_benchmark_cloud_recall_latency(benchmark, n_messages: int) -> N... function test_benchmark_cloud_pre_llm_overhead (line 95) | def test_benchmark_cloud_pre_llm_overhead(benchmark, n_history_pairs: in... function test_benchmark_cloud_network_history_get (line 135) | def test_benchmark_cloud_network_history_get(benchmark, n_history_pairs:... function test_benchmark_cloud_network_recall_post (line 163) | def test_benchmark_cloud_network_recall_post(benchmark, n_history_pairs:... function test_benchmark_cloud_network_only_history_plus_recall (line 193) | def test_benchmark_cloud_network_only_history_plus_recall( function _make_invoke_with_stubbed_history (line 222) | def _make_invoke_with_stubbed_history( function test_benchmark_cloud_injection_only_history (line 236) | def test_benchmark_cloud_injection_only_history( function test_benchmark_cloud_injection_only_recalled_facts (line 257) | def test_benchmark_cloud_injection_only_recalled_facts( FILE: benchmarks/perf/test_hosted_recall_benchmarks.py function _make_cloud_cfg (line 21) | def _make_cloud_cfg(*, entity_id: str, process_id: str) -> Config: function _seed_cloud_messages (line 34) | def _seed_cloud_messages( function test_benchmark_cloud_recall_latency (line 62) | def test_benchmark_cloud_recall_latency(benchmark, n_messages: int) -> N... function test_benchmark_cloud_pre_llm_overhead (line 95) | def test_benchmark_cloud_pre_llm_overhead(benchmark, n_history_pairs: in... function test_benchmark_cloud_network_history_get (line 135) | def test_benchmark_cloud_network_history_get(benchmark, n_history_pairs:... function test_benchmark_cloud_network_recall_post (line 163) | def test_benchmark_cloud_network_recall_post(benchmark, n_history_pairs:... function test_benchmark_cloud_network_only_history_plus_recall (line 193) | def test_benchmark_cloud_network_only_history_plus_recall( function _make_invoke_with_stubbed_history (line 222) | def _make_invoke_with_stubbed_history( function test_benchmark_cloud_injection_only_history (line 236) | def test_benchmark_cloud_injection_only_history( function test_benchmark_cloud_injection_only_recalled_facts (line 257) | def test_benchmark_cloud_injection_only_recalled_facts( FILE: benchmarks/perf/test_recall_benchmarks.py function _default_benchmark_csv_path (line 20) | def _default_benchmark_csv_path() -> str: function _write_benchmark_row (line 24) | def _write_benchmark_row(*, benchmark, row: dict[str, object]) -> None: class TestQueryEmbeddingBenchmarks (line 68) | class TestQueryEmbeddingBenchmarks: method test_benchmark_query_embedding_short (line 71) | def test_benchmark_query_embedding_short(self, benchmark, sample_queri... method test_benchmark_query_embedding_medium (line 100) | def test_benchmark_query_embedding_medium(self, benchmark, sample_quer... method test_benchmark_query_embedding_long (line 129) | def test_benchmark_query_embedding_long(self, benchmark, sample_queries): method test_benchmark_query_embedding_batch (line 158) | def test_benchmark_query_embedding_batch(self, benchmark, sample_queri... class TestDatabaseEmbeddingRetrievalBenchmarks (line 189) | class TestDatabaseEmbeddingRetrievalBenchmarks: method test_benchmark_db_embedding_retrieval (line 192) | def test_benchmark_db_embedding_retrieval( class TestDatabaseFactContentRetrievalBenchmarks (line 225) | class TestDatabaseFactContentRetrievalBenchmarks: method test_benchmark_db_fact_content_retrieval (line 234) | def test_benchmark_db_fact_content_retrieval( class TestSemanticSearchBenchmarks (line 278) | class TestSemanticSearchBenchmarks: method test_benchmark_semantic_search (line 281) | def test_benchmark_semantic_search( class TestLexicalBenchmarks (line 326) | class TestLexicalBenchmarks: method test_benchmark_bm25_scoring (line 330) | def test_benchmark_bm25_scoring(self, benchmark, fact_count): class TestEndToEndRecallBenchmarks (line 364) | class TestEndToEndRecallBenchmarks: method test_benchmark_end_to_end_recall (line 372) | def test_benchmark_end_to_end_recall( FILE: benchmarks/scripts/fetch_locomo.py function main (line 10) | def main(argv: list[str] | None = None) -> int: function _default_dest (line 61) | def _default_dest() -> Path: function _sha256 (line 65) | def _sha256(path: Path) -> str: FILE: conftest.py function mock_mysql_session (line 8) | def mock_mysql_session(mocker): function mock_postgres_session (line 22) | def mock_postgres_session(mocker): function session (line 36) | def session(mock_mysql_session): function postgres_session (line 41) | def postgres_session(mock_postgres_session): function config (line 46) | def config(mocker, session): FILE: examples/cockroachdb/main.py function get_conn (line 17) | def get_conn(): FILE: integrations/openclaw/src/constants.ts constant PLUGIN_CONFIG (line 1) | const PLUGIN_CONFIG = { constant RECALL_CONFIG (line 7) | const RECALL_CONFIG = { constant AUGMENTATION_CONFIG (line 11) | const AUGMENTATION_CONFIG = { FILE: integrations/openclaw/src/handlers/augmentation.ts function extractLLMMetadata (line 8) | function extractLLMMetadata(event: OpenClawEvent): IntegrationMetadata { function handleAugmentation (line 21) | async function handleAugmentation( FILE: integrations/openclaw/src/handlers/recall.ts function handleRecall (line 6) | async function handleRecall( FILE: integrations/openclaw/src/index.ts method register (line 13) | register(api: OpenClawPluginApi) { FILE: integrations/openclaw/src/sanitizer.ts constant SYSTEM_MESSAGE_PATTERNS (line 3) | const SYSTEM_MESSAGE_PATTERNS = [ constant TIMESTAMP_PREFIX_REGEX (line 10) | const TIMESTAMP_PREFIX_REGEX = function isMessageBlockArray (line 13) | function isMessageBlockArray(value: unknown): value is OpenClawMessageBl... function isSystemMessage (line 17) | function isSystemMessage(text: string): boolean { function extractRawUserMessage (line 30) | function extractRawUserMessage(content: string): string { function extractMessageText (line 48) | function extractMessageText(content: unknown): string { function cleanText (line 65) | function cleanText(rawContent: unknown): string { FILE: integrations/openclaw/src/types.ts type MemoriPluginConfig (line 1) | interface MemoriPluginConfig { type OpenClawMessageBlock (line 6) | interface OpenClawMessageBlock { type OpenClawMessage (line 13) | interface OpenClawMessage { type OpenClawEvent (line 20) | interface OpenClawEvent { type OpenClawContext (line 32) | interface OpenClawContext { FILE: integrations/openclaw/src/utils/context.ts type ExtractedContext (line 6) | interface ExtractedContext { function extractContext (line 22) | function extractContext( FILE: integrations/openclaw/src/utils/logger.ts class MemoriLogger (line 4) | class MemoriLogger { method constructor (line 5) | constructor(private api: OpenClawPluginApi) {} method prefix (line 7) | private prefix(msg: string): string { method info (line 11) | info(message: string): void { method warn (line 15) | warn(message: string): void { method error (line 19) | error(message: string): void { method section (line 23) | section(title: string): void { method endSection (line 27) | endSection(title: string): void { FILE: integrations/openclaw/src/utils/memori-client.ts function initializeMemoriClient (line 12) | function initializeMemoriClient( FILE: integrations/openclaw/src/version.ts constant SDK_VERSION (line 2) | const SDK_VERSION = '0.0.0'; FILE: memori-ts/examples/cloud/simple.ts function main (line 20) | async function main() { FILE: memori-ts/src/cli/commands/help.ts function helpCommand (line 3) | function helpCommand(_args: string[]): Promise { FILE: memori-ts/src/cli/commands/quota.ts type QuotaResponse (line 5) | interface QuotaResponse { function quotaCommand (line 13) | async function quotaCommand(_args: string[]): Promise { FILE: memori-ts/src/cli/router.ts function main (line 9) | async function main() { FILE: memori-ts/src/core/config.ts function getEnv (line 6) | function getEnv(key: string): string | undefined { class Config (line 13) | class Config { method constructor (line 60) | constructor() { FILE: memori-ts/src/core/errors.ts class MemoriError (line 4) | class MemoriError extends Error { method constructor (line 5) | constructor(message: string) { class QuotaExceededError (line 13) | class QuotaExceededError extends MemoriError { method constructor (line 14) | constructor(message?: string) { class MemoriApiClientError (line 24) | class MemoriApiClientError extends MemoriError { method constructor (line 28) | constructor(statusCode: number, message?: string, details?: unknown) { class MemoriApiValidationError (line 37) | class MemoriApiValidationError extends MemoriApiClientError { method constructor (line 38) | constructor(statusCode: number, message: string, details?: unknown) { class MemoriApiRequestRejectedError (line 45) | class MemoriApiRequestRejectedError extends MemoriApiClientError { method constructor (line 46) | constructor(statusCode: number, message: string, details?: unknown) { class MissingMemoriApiKeyError (line 53) | class MissingMemoriApiKeyError extends MemoriError { method constructor (line 54) | constructor(envVar = 'MEMORI_API_KEY') { class TimeoutError (line 63) | class TimeoutError extends MemoriError { method constructor (line 64) | constructor(timeout: number) { FILE: memori-ts/src/core/network.ts type ApiSubdomain (line 10) | enum ApiSubdomain { constant PUBLIC_PROD_KEY (line 15) | const PUBLIC_PROD_KEY = '96a7ea3e-11c2-428c-b9ae-5a168363dc80'; constant PUBLIC_STAGING_KEY (line 16) | const PUBLIC_STAGING_KEY = 'c18b1022-7fe2-42af-ab01-b1f9139184f0'; type FetchOptions (line 18) | interface FetchOptions extends RequestInit { class Api (line 24) | class Api { method constructor (line 29) | constructor(config: Config, subdomain: ApiSubdomain = ApiSubdomain.DEF... method getHeaders (line 43) | private getHeaders(): HeadersInit { method request (line 60) | private async request( method executeAttempt (line 106) | private async executeAttempt(url: string, init: RequestInit): Promi... method throwOnApiError (line 134) | private async throwOnApiError(response: Response): Promise { method get (line 164) | public get(route: string): Promise { method post (line 168) | public post(route: string, body?: unknown): Promise { method patch (line 172) | public patch(route: string, body?: unknown): Promise { method delete (line 176) | public delete(route: string): Promise { FILE: memori-ts/src/core/session.ts class SessionManager (line 7) | class SessionManager { method constructor (line 10) | constructor() { method id (line 17) | public get id(): string { method reset (line 25) | public reset(): this { method set (line 36) | public set(id: string): this { FILE: memori-ts/src/engines/augmentation.ts class AugmentationEngine (line 8) | class AugmentationEngine { method constructor (line 9) | constructor( method handleAugmentation (line 15) | public handleAugmentation( method buildMeta (line 45) | private buildMeta(req: LLMRequest, ctx: CallContext): Record { method handleRecall (line 35) | public async handleRecall(req: LLMRequest, _ctx: CallContext): Promise... FILE: memori-ts/src/integrations/base.ts method constructor (line 16) | constructor(protected readonly core: MemoriCore) {} method executeAugmentation (line 25) | protected async executeAugmentation(req: IntegrationRequest): Promise { method recall (line 53) | public async recall(promptText: string): Promise { FILE: memori-ts/src/memori.ts class Memori (line 20) | class Memori { method constructor (line 60) | constructor() { method attribution (line 88) | public attribution(entityId?: string, processId?: string): this { method recall (line 101) | public async recall(query: string): Promise { method resetSession (line 109) | public resetSession(): this { method setSession (line 120) | public setSession(id: string): this { method integrate (line 132) | public integrate(IntegrationClass: Int... FILE: memori-ts/src/types/api.ts type RecallObject (line 6) | interface RecallObject { type RecallItem (line 16) | type RecallItem = string | RecallObject; type CloudRecallResponse (line 22) | interface CloudRecallResponse { type ParsedFact (line 39) | interface ParsedFact { FILE: memori-ts/src/types/integrations.ts type MemoriCore (line 13) | interface MemoriCore { type IntegrationRequest (line 26) | interface IntegrationRequest { type IntegrationMetadata (line 50) | interface IntegrationMetadata { type SupportedIntegration (line 86) | type SupportedIntegration = OpenClawIntegration; type IntegrationConstructor (line 93) | type IntegrationConstructor = new (core:... FILE: memori-ts/src/utils/utils.ts function formatDate (line 5) | function formatDate(dateStr?: string): string | undefined { function stringifyContent (line 21) | function stringifyContent(content: unknown): string { function extractFacts (line 49) | function extractFacts(response: CloudRecallResponse): ParsedFact[] { function extractHistory (line 75) | function extractHistory(response: CloudRecallResponse): unknown[] { function extractLastUserMessage (line 87) | function extractLastUserMessage(messages: Message[]): string | undefined { FILE: memori-ts/src/version.ts constant SDK_VERSION (line 2) | const SDK_VERSION = '0.0.0'; FILE: memori-ts/tests/integrations/base.test.ts class TestIntegration (line 7) | class TestIntegration extends BaseIntegration { method testCapture (line 8) | public testCapture(req: IntegrationRequest) { method testRecall (line 11) | public testRecall(userMessage: string) { FILE: memori/__init__.py class LlmRegistry (line 41) | class LlmRegistry: method __init__ (line 42) | def __init__(self, memori): method register (line 45) | def register( class Memori (line 73) | class Memori: method __init__ (line 74) | def __init__( method _get_default_connection (line 105) | def _get_default_connection(self) -> Callable[[], Any] | None: method attribution (line 122) | def attribution(self, entity_id=None, process_id=None): method new_session (line 140) | def new_session(self): method set_session (line 145) | def set_session(self, id): method recall (line 149) | def recall(self, query: str, limit: int | None = None): method close (line 152) | def close(self) -> None: method __enter__ (line 167) | def __enter__(self) -> "Memori": method __exit__ (line 170) | def __exit__(self, exc_type, exc, tb) -> None: method embed_texts (line 173) | def embed_texts(self, texts: str | list[str], *, async_: bool = False)... FILE: memori/__main__.py function main (line 24) | def main(): FILE: memori/_cli.py class Cli (line 16) | class Cli: method __init__ (line 17) | def __init__(self, config: Config): method banner (line 20) | def banner(self): method newline (line 26) | def newline(self): method notice (line 29) | def notice(self, message, ident=0, end=None): method print (line 36) | def print(self, message, end=None): FILE: memori/_config.py function _env_bool (line 16) | def _env_bool(name: str, default: bool) -> bool: function _env_int (line 23) | def _env_int(name: str, default: int) -> int: function _env_str (line 33) | def _env_str(name: str, default: str | None) -> str | None: class Cache (line 41) | class Cache: method __init__ (line 42) | def __init__(self): class Storage (line 49) | class Storage: method __init__ (line 50) | def __init__(self): class Embeddings (line 54) | class Embeddings: method __init__ (line 55) | def __init__(self): class Config (line 59) | class Config: method __init__ (line 60) | def __init__(self): method is_test_mode (line 90) | def is_test_mode(self): method reset_cache (line 93) | def reset_cache(self): class Framework (line 98) | class Framework: method __init__ (line 99) | def __init__(self): class Platform (line 103) | class Platform: method __init__ (line 104) | def __init__(self): class Llm (line 108) | class Llm: method __init__ (line 109) | def __init__(self): FILE: memori/_exceptions.py class QuotaExceededError (line 15) | class QuotaExceededError(Exception): method __init__ (line 16) | def __init__( class MemoriApiError (line 27) | class MemoriApiError(Exception): class MemoriApiClientError (line 31) | class MemoriApiClientError(MemoriApiError): method __init__ (line 32) | def __init__( class MemoriApiValidationError (line 45) | class MemoriApiValidationError(MemoriApiClientError): class MemoriApiRequestRejectedError (line 49) | class MemoriApiRequestRejectedError(MemoriApiClientError): class MissingMemoriApiKeyError (line 53) | class MissingMemoriApiKeyError(RuntimeError): method __init__ (line 56) | def __init__(self, env_var: str = "MEMORI_API_KEY"): class MissingPsycopgError (line 63) | class MissingPsycopgError(ImportError): method __init__ (line 66) | def __init__(self, database: str = "PostgreSQL/CockroachDB"): class UnsupportedLLMProviderError (line 73) | class UnsupportedLLMProviderError(RuntimeError): method __init__ (line 76) | def __init__(self, provider: str): class UnsupportedDatabaseError (line 82) | class UnsupportedDatabaseError(RuntimeError): method __init__ (line 85) | def __init__(self, database: str | None = None): class MemoriLegacyPackageWarning (line 96) | class MemoriLegacyPackageWarning(UserWarning): function warn_if_legacy_memorisdk_installed (line 100) | def warn_if_legacy_memorisdk_installed() -> None: FILE: memori/_logging.py function set_truncate_enabled (line 20) | def set_truncate_enabled(enabled: bool) -> None: function truncate (line 27) | def truncate(text: str, max_len: int = 200) -> str: function sanitize_payload (line 50) | def sanitize_payload(payload: dict) -> dict: FILE: memori/_network.py class ApiSubdomain (line 35) | class ApiSubdomain(str, Enum): class Api (line 40) | class Api: method __init__ (line 41) | def __init__(self, config: Config, subdomain: ApiSubdomain = ApiSubdom... method augmentation_async (line 61) | async def augmentation_async(self, payload: dict) -> dict: method delete (line 160) | def delete(self, route): method get (line 169) | def get(self, route): method get_async (line 178) | async def get_async(self, route): method patch (line 181) | def patch(self, route, json=None): method patch_async (line 190) | async def patch_async(self, route, json=None): method post (line 193) | def post(self, route, json=None, status_code: bool = False): method post_async (line 205) | async def post_async(self, route, json=None): method headers (line 208) | def headers(self): method _is_anonymous (line 217) | def _is_anonymous(self): method __request_async (line 220) | async def __request_async(self, method: str, route: str, json=None): method __session (line 300) | def __session(self): method url (line 317) | def url(self, route): class _ApiRetryRecoverable (line 321) | class _ApiRetryRecoverable(Retry): method is_retry (line 322) | def is_retry(self, method, status_code, has_retry_after=False): FILE: memori/_setup.py class Manager (line 17) | class Manager: method __init__ (line 18) | def __init__(self, config: Config): method execute (line 21) | def execute(self): FILE: memori/_utils.py function bytes_to_json (line 17) | def bytes_to_json(obj): function generate_uniq (line 46) | def generate_uniq(terms: list): function merge_chunk (line 56) | def merge_chunk(data: dict, chunk: dict): function format_date_created (line 73) | def format_date_created(value) -> str | None: FILE: memori/api/_quota.py class Manager (line 16) | class Manager: method __init__ (line 17) | def __init__(self, config: Config): method execute (line 20) | def execute(self): FILE: memori/api/_sign_up.py class Manager (line 19) | class Manager: method __init__ (line 20) | def __init__(self, config: Config): method execute (line 23) | def execute(self): method usage (line 35) | def usage(self): FILE: memori/embeddings/_api.py function _embed_texts (line 28) | def _embed_texts( function _embed_texts_async (line 56) | async def _embed_texts_async( function embed_texts (line 77) | def embed_texts( function embed_texts (line 89) | def embed_texts( function embed_texts (line 100) | def embed_texts( FILE: memori/embeddings/_chunking.py function chunk_text_by_tokens (line 19) | def chunk_text_by_tokens( FILE: memori/embeddings/_format.py function format_embedding_for_db (line 18) | def format_embedding_for_db(embedding: list[float], dialect: str) -> Any: FILE: memori/embeddings/_sentence_transformers.py class SentenceTransformersEmbedder (line 28) | class SentenceTransformersEmbedder: method __init__ (line 29) | def __init__(self, model_name: str) -> None: method _get_model (line 35) | def _get_model(self) -> SentenceTransformer: method _load_encoder (line 41) | def _load_encoder(self, *, fallback_dimension: int) -> SentenceTransfo... method _encode_batch (line 50) | def _encode_batch( method _encode_one_by_one (line 59) | def _encode_one_by_one( method _chunk_size_tokens (line 76) | def _chunk_size_tokens(self, encoder: SentenceTransformer) -> int | None: method _tokenizer (line 111) | def _tokenizer(self, encoder: SentenceTransformer) -> Any | None: method _chunk_text (line 114) | def _chunk_text( method _mean_pool_and_normalize (line 150) | def _mean_pool_and_normalize(self, vectors: np.ndarray) -> np.ndarray: method _encode_chunks (line 157) | def _encode_chunks( method _encode_inputs (line 175) | def _encode_inputs( method _zero_result (line 213) | def _zero_result( method embed (line 232) | def embed(self, inputs: list[str], *, fallback_dimension: int) -> list... function get_sentence_transformers_embedder (line 290) | def get_sentence_transformers_embedder(model_name: str) -> SentenceTrans... FILE: memori/embeddings/_tei.py class TEI (line 19) | class TEI: method _request_headers (line 24) | def _request_headers(self) -> dict[str, str]: method _post_embeddings (line 30) | def _post_embeddings(self, inputs: list[str], *, model: str) -> list[l... method embed (line 47) | def embed(self, texts: list[str], *, model: str) -> list[list[float]]: FILE: memori/embeddings/_tei_embed.py function embed_texts_via_tei (line 24) | def embed_texts_via_tei( FILE: memori/embeddings/_utils.py function prepare_text_inputs (line 17) | def prepare_text_inputs(texts: str | Iterable[str]) -> list[str]: function embedding_dimension (line 23) | def embedding_dimension(model: Any, default: int) -> int: function zero_vectors (line 31) | def zero_vectors(count: int, dim: int) -> list[list[float]]: FILE: memori/llm/_base.py function _score_for_recall_threshold (line 48) | def _score_for_recall_threshold( class BaseClient (line 76) | class BaseClient: method __init__ (line 77) | def __init__(self, config: Config): method register (line 81) | def register(self, *args, **kwargs): method _wrap_method (line 84) | def _wrap_method( class BaseInvoke (line 136) | class BaseInvoke: method __init__ (line 137) | def __init__(self, config: Config, method): method _ensure_cached_conversation_id (line 144) | def _ensure_cached_conversation_id(self) -> bool: method configure_for_streaming_usage (line 172) | def configure_for_streaming_usage(self, kwargs: dict) -> dict: method _convert_to_json (line 191) | def _convert_to_json(self, obj, _seen=None): method dict_to_json (line 233) | def dict_to_json(self, dict_: dict) -> dict: method _format_kwargs (line 236) | def _format_kwargs(self, kwargs): method _format_payload (line 268) | def _format_payload( method _format_augmentation_input (line 326) | def _format_augmentation_input(self, payload: dict) -> AugmentationInp... method _safe_copy (line 341) | def _safe_copy(self, obj): method _format_response (line 383) | def _format_response(self, raw_response): method get_response_content (line 424) | def get_response_content(self, raw_response): method _extract_text_from_parts (line 449) | def _extract_text_from_parts(self, parts: list) -> str: method _extract_from_contents (line 461) | def _extract_from_contents(self, contents) -> str: method _extract_user_query (line 480) | def _extract_user_query(self, kwargs: dict) -> str: method _append_to_google_system_instruction_dict (line 523) | def _append_to_google_system_instruction_dict(self, config: dict, cont... method _append_to_google_system_instruction_obj (line 542) | def _append_to_google_system_instruction_obj(self, config, context: str): method _append_to_list (line 560) | def _append_to_list(self, lst: list, context: str, parent: dict, key: ... method _append_to_list_obj (line 571) | def _append_to_list_obj(self, config, context: str): method _append_to_content_dict (line 583) | def _append_to_content_dict( method _append_to_part_obj (line 600) | def _append_to_part_obj(self, part, context: str): method _append_to_content_obj (line 607) | def _append_to_content_obj(self, content, context: str): method _inject_google_system_instruction (line 619) | def _inject_google_system_instruction(self, kwargs: dict, context: str): method _format_recalled_fact_lines (line 642) | def _format_recalled_fact_lines( method inject_recalled_facts (line 668) | def inject_recalled_facts(self, kwargs: dict) -> dict: method inject_conversation_messages (line 761) | def inject_conversation_messages(self, kwargs: dict) -> dict: method set_client (line 1012) | def set_client(self, framework_provider, llm_provider, provider_sdk_ve... method uses_protobuf (line 1018) | def uses_protobuf(self): method handle_post_response (line 1022) | def handle_post_response(self, kwargs, start_time, raw_response): class BaseIterator (line 1069) | class BaseIterator: method __init__ (line 1070) | def __init__(self, config: Config, source_iterator): method configure_invoke (line 1076) | def configure_invoke(self, invoke: BaseInvoke): method configure_request (line 1080) | def configure_request(self, kwargs, time_start): method process_chunk (line 1085) | def process_chunk(self, chunk): method set_raw_response (line 1138) | def set_raw_response(self): class BaseLlmAdaptor (line 1149) | class BaseLlmAdaptor: method _exclude_injected_messages (line 1150) | def _exclude_injected_messages(self, messages, payload): method get_formatted_query (line 1158) | def get_formatted_query(self, payload): method get_formatted_response (line 1161) | def get_formatted_response(self, payload): class BaseProvider (line 1165) | class BaseProvider: method __init__ (line 1166) | def __init__(self, entity): FILE: memori/llm/_clients.py class Anthropic (line 37) | class Anthropic(BaseClient): method register (line 38) | def register(self, client, _provider=None): class Google (line 82) | class Google(BaseClient): method register (line 83) | def register(self, client, _provider=None): class LangChain (line 162) | class LangChain(BaseClient): method register (line 163) | def register( function _detect_platform (line 491) | def _detect_platform(client): class OpenAi (line 505) | class OpenAi(BaseClient): method register (line 506) | def register(self, client, _provider=None, stream=False): class PydanticAi (line 562) | class PydanticAi(BaseClient): method register (line 563) | def register(self, client): class XAi (line 591) | class XAi(BaseClient): method register (line 600) | def register(self, client, _provider=None, stream=False): class Agno (line 666) | class Agno(BaseClient): method register (line 667) | def register(self, openai_chat=None, claude=None, gemini=None, xai=None): method _is_agno_openai_model (line 798) | def _is_agno_openai_model(self, model): method _is_agno_anthropic_model (line 801) | def _is_agno_anthropic_model(self, model): method _is_agno_google_model (line 804) | def _is_agno_google_model(self, model): method _is_agno_xai_model (line 807) | def _is_agno_xai_model(self, model): FILE: memori/llm/_invoke.py class Invoke (line 31) | class Invoke(BaseInvoke): method invoke (line 32) | def invoke(self, **kwargs): class InvokeAsync (line 74) | class InvokeAsync(BaseInvoke): method invoke (line 75) | async def invoke(self, **kwargs): class InvokeAsyncIterator (line 92) | class InvokeAsyncIterator(BaseInvoke): method invoke (line 93) | async def invoke(self, **kwargs): class InvokeAsyncStream (line 114) | class InvokeAsyncStream(BaseInvoke): method invoke (line 115) | async def invoke(self, **kwargs): class InvokeStream (line 132) | class InvokeStream(BaseInvoke): method invoke (line 133) | async def invoke(self, **kwargs): FILE: memori/llm/_iterable.py class Iterable (line 21) | class Iterable: method __init__ (line 22) | def __init__(self, config: Config, source_iterable): method __getattr__ (line 27) | def __getattr__(self, name): method configure_invoke (line 30) | def configure_invoke(self, invoke: BaseInvoke): method configure_request (line 34) | def configure_request(self, kwargs, time_start): method __iter__ (line 43) | def __iter__(self): FILE: memori/llm/_iterator.py class AsyncIterator (line 17) | class AsyncIterator(BaseIterator): method __aiter__ (line 18) | def __aiter__(self): method __anext__ (line 22) | async def __anext__(self): method __aenter__ (line 46) | async def __aenter__(self): method __aexit__ (line 51) | async def __aexit__(self, exc_type, exc, tb): class Iterator (line 57) | class Iterator(BaseIterator): method __iter__ (line 58) | def __iter__(self): method __next__ (line 61) | def __next__(self): method __enter__ (line 84) | def __enter__(self): method __exit__ (line 89) | def __exit__(self, exc_type, exc, tb): FILE: memori/llm/_providers.py class Agno (line 23) | class Agno(BaseProvider): method register (line 24) | def register(self, openai_chat=None, claude=None, gemini=None, xai=None): class Anthropic (line 41) | class Anthropic(BaseProvider): method register (line 42) | def register(self, client): class Google (line 54) | class Google(BaseProvider): method register (line 55) | def register(self, client): class LangChain (line 67) | class LangChain(BaseProvider): method register (line 68) | def register( class OpenAi (line 87) | class OpenAi(BaseProvider): method register (line 88) | def register(self, client, stream=False): class PydanticAi (line 102) | class PydanticAi(BaseProvider): method register (line 103) | def register(self, client): class XAi (line 115) | class XAi(BaseProvider): method register (line 116) | def register(self, client, stream=False): FILE: memori/llm/_registry.py class Registry (line 18) | class Registry: method register_client (line 23) | def register_client(cls, matcher: Callable[[Any], bool]): method register_adapter (line 31) | def register_adapter(cls, matcher: Callable[[str | None, str | None], ... method client (line 38) | def client(self, client_obj: Any, config) -> BaseClient: method adapter (line 55) | def adapter(self, provider: str | None, title: str | None) -> BaseLlmA... function register_llm (line 64) | def register_llm( FILE: memori/llm/_streaming.py class StreamingBody (line 21) | class StreamingBody: method __init__ (line 22) | def __init__(self, config: Config, source_streaming_body): method __getattr__ (line 27) | def __getattr__(self, name): method configure_invoke (line 30) | def configure_invoke(self, invoke: BaseInvoke): method configure_request (line 34) | def configure_request(self, kwargs, time_start): method read (line 43) | def read(self, *args, **kwargs): FILE: memori/llm/_utils.py function client_is_bedrock (line 29) | def client_is_bedrock(provider, title): function llm_is_anthropic (line 35) | def llm_is_anthropic(provider, title): function llm_is_bedrock (line 39) | def llm_is_bedrock(provider, title): function llm_is_google (line 45) | def llm_is_google(provider, title): function llm_is_openai (line 53) | def llm_is_openai(provider, title): function llm_is_xai (line 61) | def llm_is_xai(provider, title): function agno_is_anthropic (line 65) | def agno_is_anthropic(provider, title): function agno_is_google (line 69) | def agno_is_google(provider, title): function agno_is_openai (line 73) | def agno_is_openai(provider, title): function agno_is_xai (line 77) | def agno_is_xai(provider, title): function provider_is_agno (line 81) | def provider_is_agno(provider): function provider_is_langchain (line 85) | def provider_is_langchain(provider): FILE: memori/llm/_xai_wrappers.py class XAiWrappers (line 20) | class XAiWrappers: method __init__ (line 32) | def __init__(self, config): method _ensure_cached_conversation_id (line 35) | def _ensure_cached_conversation_id(self) -> bool: method inject_conversation_history (line 63) | def inject_conversation_history(self, kwargs): method wrap_chat_methods (line 90) | def wrap_chat_methods(self, chat_obj, client_version, model=None): method _create_sync_sample_wrapper (line 114) | def _create_sync_sample_wrapper(self, chat_obj, client_version): method _create_async_sample_wrapper (line 161) | def _create_async_sample_wrapper(self, chat_obj, client_version): method _create_stream_wrapper (line 208) | def _create_stream_wrapper(self, chat_obj, client_version): method _build_payload (line 271) | def _build_payload( method _normalize_role (line 298) | def _normalize_role(self, response): FILE: memori/llm/adapters/anthropic/_adapter.py class Adapter (line 18) | class Adapter(BaseLlmAdaptor): method get_formatted_query (line 19) | def get_formatted_query(self, payload): method get_formatted_response (line 35) | def get_formatted_response(self, payload): FILE: memori/llm/adapters/bedrock/_adapter.py class Adapter (line 17) | class Adapter(BaseLlmAdaptor): method get_formatted_query (line 18) | def get_formatted_query(self, payload): method get_formatted_response (line 34) | def get_formatted_response(self, payload): FILE: memori/llm/adapters/google/_adapter.py class Adapter (line 18) | class Adapter(BaseLlmAdaptor): method get_formatted_query (line 19) | def get_formatted_query(self, payload): method get_formatted_response (line 89) | def get_formatted_response(self, payload): FILE: memori/llm/adapters/openai/_adapter.py class Adapter (line 18) | class Adapter(BaseLlmAdaptor): method get_formatted_query (line 19) | def get_formatted_query(self, payload): method get_formatted_response (line 76) | def get_formatted_response(self, payload): FILE: memori/llm/adapters/xai/_adapter.py class Adapter (line 18) | class Adapter(BaseLlmAdaptor): method get_formatted_query (line 19) | def get_formatted_query(self, payload): method get_formatted_response (line 58) | def get_formatted_response(self, payload): FILE: memori/memory/_collector.py class Api (line 23) | class Api: method __init__ (line 24) | def __init__(self, config: Config): method get (line 31) | def get(self, route): method patch (line 40) | def patch(self, route, json=None): method post (line 53) | def post(self, route, json=None): method __session (line 66) | def __session(self): method url (line 83) | def url(self, route): class _ApiRetryRecoverable (line 87) | class _ApiRetryRecoverable(Retry): method is_retry (line 88) | def is_retry(self, method, status_code, has_retry_after=False): class Collector (line 92) | class Collector: method __init__ (line 93) | def __init__(self, config: Config): method fire_and_forget (line 100) | def fire_and_forget(self, payload): FILE: memori/memory/_conversation_messages.py class ConversationMessage (line 16) | class ConversationMessage(TypedDict): function _stringify_content (line 22) | def _stringify_content(content: Any) -> str: function parse_payload_conversation_messages (line 28) | def parse_payload_conversation_messages( FILE: memori/memory/_manager.py class Manager (line 22) | class Manager: method __init__ (line 23) | def __init__(self, config: Config): method execute (line 26) | def execute(self, payload): method _handle_cloud (line 44) | def _handle_cloud(self, payload): method _ensure_cached_id (line 76) | def _ensure_cached_id(self, cache_attr: str, create_func, *create_args... method _persist_cloud_messages_locally (line 85) | def _persist_cloud_messages_locally(self, payload: dict) -> None: FILE: memori/memory/_struct.py function build_fact_text_from_triple_entry (line 12) | def build_fact_text_from_triple_entry(entry: dict) -> str | None: class Conversation (line 29) | class Conversation: method __init__ (line 30) | def __init__(self): method configure_from_advanced_augmentation (line 33) | def configure_from_advanced_augmentation(self, json_: dict) -> "Conver... class Entity (line 43) | class Entity: method __init__ (line 44) | def __init__(self): method configure_from_advanced_augmentation (line 49) | def configure_from_advanced_augmentation(self, json_: dict) -> "Entity": method _parse_semantic_triple (line 75) | def _parse_semantic_triple(self, entry: dict) -> "SemanticTriple | None": class Memories (line 102) | class Memories: method __init__ (line 103) | def __init__(self): method configure_from_advanced_augmentation (line 108) | def configure_from_advanced_augmentation(self, json_: dict) -> "Memori... class Process (line 115) | class Process: method __init__ (line 116) | def __init__(self): method configure_from_advanced_augmentation (line 119) | def configure_from_advanced_augmentation(self, json_: dict) -> "Process": class SemanticTriple (line 129) | class SemanticTriple: method __init__ (line 130) | def __init__(self): FILE: memori/memory/_writer.py class Writer (line 24) | class Writer: method __init__ (line 25) | def __init__(self, config: Config): method execute (line 28) | def execute(self, payload: dict, max_retries: int = MAX_RETRIES) -> "W... method _ensure_cached_id (line 51) | def _ensure_cached_id(self, cache_attr: str, create_func, *create_args... method _execute_transaction (line 61) | def _execute_transaction(self, payload: dict) -> None: FILE: memori/memory/augmentation/_base.py class AugmentationContext (line 14) | class AugmentationContext: method __init__ (line 15) | def __init__(self, payload: AugmentationInput): method add_write (line 20) | def add_write(self, method_path: str, *args, **kwargs): class BaseAugmentation (line 25) | class BaseAugmentation: method __init__ (line 26) | def __init__(self, config=None, enabled: bool = True): method process (line 30) | async def process(self, ctx: AugmentationContext, driver) -> Augmentat... FILE: memori/memory/augmentation/_db_writer.py class WriteTask (line 22) | class WriteTask: method __init__ (line 23) | def __init__( method execute (line 36) | def execute(self, driver): method _resolve_method (line 41) | def _resolve_method(self, driver, method_path: str): class DbWriterRuntime (line 53) | class DbWriterRuntime: method __init__ (line 54) | def __init__(self): method configure (line 62) | def configure(self, config): method ensure_started (line 71) | def ensure_started(self) -> None: method enqueue_write (line 82) | def enqueue_write(self, task: WriteTask, timeout: float = 5.0) -> bool: method _run_loop (line 91) | def _run_loop(self) -> None: method _drain_batches (line 102) | def _drain_batches(self) -> None: method _collect_batch (line 145) | def _collect_batch(self) -> list[WriteTask]: function get_db_writer (line 163) | def get_db_writer() -> DbWriterRuntime: FILE: memori/memory/augmentation/_handler.py function _build_meta (line 25) | def _build_meta(config) -> dict[str, object]: function _post_cloud_augmentation (line 74) | def _post_cloud_augmentation(config, payload: dict) -> None: function _send_cloud_augmentation_background (line 102) | def _send_cloud_augmentation_background(config, payload: dict) -> None: function handle_augmentation (line 109) | def handle_augmentation( FILE: memori/memory/augmentation/_manager.py class Manager (line 34) | class Manager: method __init__ (line 35) | def __init__(self, config: Config) -> None: method start (line 47) | def start(self, conn: Callable | Any) -> "Manager": method enqueue (line 73) | def enqueue(self, input_data: AugmentationInput) -> "Manager": method _handle_augmentation_result (line 97) | def _handle_augmentation_result(self, future: Future[Any]) -> None: method _process_augmentations (line 112) | async def _process_augmentations(self, input_data: AugmentationInput) ... method _enqueue_writes (line 154) | def _enqueue_writes(self, writes: list[dict[str, Any]]) -> None: method wait (line 168) | def wait(self, timeout: float | None = None) -> bool: FILE: memori/memory/augmentation/_message.py class ConversationMessage (line 15) | class ConversationMessage: method to_dict (line 19) | def to_dict(self) -> dict[str, str]: FILE: memori/memory/augmentation/_models.py function hash_id (line 15) | def hash_id(value: str | None) -> str | None: class ConversationData (line 22) | class ConversationData: class SdkVersionData (line 30) | class SdkVersionData: class ModelData (line 37) | class ModelData: class FrameworkData (line 46) | class FrameworkData: class LlmData (line 53) | class LlmData: class PlatformData (line 60) | class PlatformData: class SdkData (line 67) | class SdkData: class StorageData (line 75) | class StorageData: class EntityData (line 83) | class EntityData: class ProcessData (line 90) | class ProcessData: class AttributionData (line 97) | class AttributionData: class MetaData (line 105) | class MetaData: class AugmentationPayload (line 117) | class AugmentationPayload: method to_dict (line 123) | def to_dict(self) -> dict: FILE: memori/memory/augmentation/_registry.py class Registry (line 12) | class Registry: method register (line 16) | def register(cls, name: str): method augmentations (line 23) | def augmentations(self, config=None): FILE: memori/memory/augmentation/_runtime.py class AugmentationRuntime (line 15) | class AugmentationRuntime: method __init__ (line 16) | def __init__(self): method ensure_started (line 25) | def ensure_started(self, max_workers: int): method _run_loop (line 44) | def _run_loop(self) -> None: function get_runtime (line 55) | def get_runtime() -> AugmentationRuntime: FILE: memori/memory/augmentation/augmentations/memori/_augmentation.py class AdvancedAugmentation (line 40) | class AdvancedAugmentation(BaseAugmentation): method __init__ (line 41) | def __init__(self, config=None, enabled: bool = True): method _get_conversation_summary (line 44) | def _get_conversation_summary(self, driver, conversation_id: str) -> str: method _select_messages_for_summary (line 53) | def _select_messages_for_summary(self, messages: list, summary: str) -... method _build_api_payload (line 86) | def _build_api_payload( method process (line 125) | async def process(self, ctx: AugmentationContext, driver) -> Augmentat... method _process_api_response (line 182) | async def _process_api_response(self, api_response: dict) -> Memories: method _schedule_entity_writes (line 205) | async def _schedule_entity_writes( method _schedule_process_writes (line 253) | def _schedule_process_writes( method _schedule_conversation_writes (line 265) | def _schedule_conversation_writes( FILE: memori/memory/augmentation/augmentations/memori/models.py class EntityData (line 17) | class EntityData: class ProcessData (line 24) | class ProcessData: class AttributionData (line 31) | class AttributionData: method to_dict (line 37) | def to_dict(self) -> dict[str, object]: class SessionData (line 45) | class SessionData: method to_dict (line 50) | def to_dict(self) -> dict[str, object]: class AugmentationInputData (line 55) | class AugmentationInputData: method messages_as_dicts (line 60) | def messages_as_dicts(self) -> list[dict[str, str]]: method to_dict (line 63) | def to_dict(self) -> dict[str, object]: FILE: memori/memory/augmentation/input.py class AugmentationInput (line 17) | class AugmentationInput: FILE: memori/memory/augmentation/memories/_conversation.py class Conversation (line 12) | class Conversation: method __init__ (line 13) | def __init__(self): FILE: memori/memory/augmentation/memories/_entity.py class Entity (line 12) | class Entity: method __init__ (line 13) | def __init__(self): FILE: memori/memory/augmentation/memories/_process.py class Process (line 12) | class Process: method __init__ (line 13) | def __init__(self): FILE: memori/memory/recall.py function _is_str_object_mapping (line 31) | def _is_str_object_mapping(value: object) -> TypeGuard[Mapping[str, obje... class Recall (line 37) | class Recall: method __init__ (line 38) | def __init__(self, config: Config) -> None: method _resolve_entity_id (line 41) | def _resolve_entity_id(self, entity_id: int | None) -> int | None: method _resolve_limit (line 55) | def _resolve_limit(self, limit: int | None) -> int: method _embed_query (line 58) | def _embed_query(self, query: str) -> list[float]: method _search_with_retries (line 66) | def _search_with_retries( method _search_with_retries_cloud (line 96) | def _search_with_retries_cloud( method _cloud_recall (line 103) | def _cloud_recall(self, query: str, *, limit: int | None = None) -> ob... method _parse_cloud_recall_response (line 125) | def _parse_cloud_recall_response( method search_facts (line 183) | def search_facts( FILE: memori/search/_api.py function search_facts (line 23) | def search_facts( FILE: memori/search/_core.py function _candidate_pool_from_candidates (line 22) | def _candidate_pool_from_candidates( function _get_embeddings_rows (line 56) | def _get_embeddings_rows( function _candidate_limit (line 72) | def _candidate_limit( function _fetch_content_maps (line 80) | def _fetch_content_maps( function _rank_candidates (line 103) | def _rank_candidates( function _build_fact_rows (line 140) | def _build_fact_rows( function search_entity_facts_core (line 170) | def search_entity_facts_core( FILE: memori/search/_faiss.py function _query_dim (line 25) | def _query_dim(query_embedding: list[float]) -> int: function _parse_valid_embeddings (line 29) | def _parse_valid_embeddings( function _stack_embeddings (line 50) | def _stack_embeddings(embeddings_list: list[np.ndarray]) -> np.ndarray |... function _faiss_search (line 57) | def _faiss_search( function find_similar_embeddings (line 91) | def find_similar_embeddings( FILE: memori/search/_lexical.py function _tokenize (line 69) | def _tokenize(text: str) -> list[str]: function lexical_scores_for_ids (line 74) | def lexical_scores_for_ids( function dense_lexical_weights (line 127) | def dense_lexical_weights(*, query_text: str) -> tuple[float, float]: FILE: memori/search/_parsing.py function parse_embedding (line 19) | def parse_embedding(raw: Any) -> np.ndarray: FILE: memori/search/_types.py class FactCandidate (line 25) | class FactCandidate: class FactSearchResult (line 33) | class FactSearchResult: method to_dict (line 40) | def to_dict(self) -> dict[str, object]: FILE: memori/storage/__init__.py function _import_optional_module (line 16) | def _import_optional_module(module_path: str) -> None: FILE: memori/storage/_base.py class BaseStorageAdapter (line 12) | class BaseStorageAdapter: method __init__ (line 13) | def __init__(self, conn): method close (line 43) | def close(self): method _is_managed_resource (line 58) | def _is_managed_resource(obj) -> bool: method commit (line 86) | def commit(self): method execute (line 89) | def execute(self, *args, **kwargs): method flush (line 92) | def flush(self): method get_dialect (line 95) | def get_dialect(self): method rollback (line 98) | def rollback(self): class BaseConversation (line 102) | class BaseConversation: method __init__ (line 103) | def __init__(self, conn: BaseStorageAdapter): method create (line 106) | def create(self, session_id: int, timeout_minutes: int): method update (line 109) | def update(self, id: int, summary: str): method read (line 112) | def read(self, id: int) -> dict | None: class BaseConversationMessage (line 116) | class BaseConversationMessage: method __init__ (line 117) | def __init__(self, conn: BaseStorageAdapter): method create (line 120) | def create(self, conversation_id: int, role: str, type: str, content: ... class BaseConversationMessages (line 124) | class BaseConversationMessages: method __init__ (line 125) | def __init__(self, conn: BaseStorageAdapter): method read (line 128) | def read(self, conversation_id: int): class BaseKnowledgeGraph (line 132) | class BaseKnowledgeGraph: method __init__ (line 133) | def __init__(self, conn: BaseStorageAdapter): method create (line 136) | def create(self, entity_id: int, semantic_triples: list): class BaseEntity (line 140) | class BaseEntity: method __init__ (line 141) | def __init__(self, conn: BaseStorageAdapter): method create (line 144) | def create(self, external_id: str): class BaseEntityFact (line 148) | class BaseEntityFact: method __init__ (line 149) | def __init__(self, conn: BaseStorageAdapter): method create (line 152) | def create(self, entity_id: int, facts: list, fact_embeddings: list | ... method get_embeddings (line 155) | def get_embeddings(self, entity_id: int, limit: int = 1000): method get_facts_by_ids (line 158) | def get_facts_by_ids(self, fact_ids: list[int]): class BaseProcess (line 162) | class BaseProcess: method __init__ (line 163) | def __init__(self, conn: BaseStorageAdapter): method create (line 166) | def create(self, external_id: str): class BaseProcessAttribute (line 170) | class BaseProcessAttribute: method __init__ (line 171) | def __init__(self, conn: BaseStorageAdapter): method create (line 174) | def create(self, process_id: int, attributes: list): class BaseSession (line 178) | class BaseSession: method __init__ (line 179) | def __init__(self, conn: BaseStorageAdapter): method create (line 182) | def create(self, uuid: str, entity_id: int, process_id: int): class BaseSchema (line 186) | class BaseSchema: method __init__ (line 187) | def __init__(self, conn: BaseStorageAdapter): class BaseSchemaVersion (line 191) | class BaseSchemaVersion: method __init__ (line 192) | def __init__(self, conn: BaseStorageAdapter): method create (line 195) | def create(self, num: int): method delete (line 198) | def delete(self): method read (line 201) | def read(self): FILE: memori/storage/_builder.py class Builder (line 16) | class Builder: method __init__ (line 17) | def __init__(self, config: Config): method create_data_structures (line 23) | def create_data_structures(self): method disable_banner (line 93) | def disable_banner(self): method execute (line 97) | def execute(self): method _get_supported_dialects (line 114) | def _get_supported_dialects(self): method _get_dialect_family (line 117) | def _get_dialect_family(self, dialect): method _requires_rollback (line 124) | def _requires_rollback(self, dialect): FILE: memori/storage/_connection.py function connection_context (line 20) | def connection_context( FILE: memori/storage/_manager.py class Manager (line 17) | class Manager: method __init__ (line 18) | def __init__(self, config: Config) -> None: method conn (line 25) | def conn(self): method build (line 28) | def build(self) -> "Manager": method start (line 36) | def start(self, conn) -> "Manager": FILE: memori/storage/_registry.py class Registry (line 18) | class Registry: method register_adapter (line 23) | def register_adapter(cls, matcher: Callable[[Any], bool]): method register_driver (line 31) | def register_driver(cls, dialect: str): method adapter (line 38) | def adapter(self, conn: Any) -> BaseStorageAdapter: method driver (line 63) | def driver(self, conn: BaseStorageAdapter): FILE: memori/storage/adapters/dbapi/_adapter.py class CursorWrapper (line 15) | class CursorWrapper: method __init__ (line 16) | def __init__(self, cursor): method mappings (line 19) | def mappings(self): method __getattr__ (line 22) | def __getattr__(self, name): class MappingResult (line 26) | class MappingResult: method __init__ (line 27) | def __init__(self, cursor): method fetchone (line 30) | def fetchone(self): method fetchall (line 37) | def fetchall(self): function is_dbapi_connection (line 43) | def is_dbapi_connection(conn): class Adapter (line 68) | class Adapter(BaseStorageAdapter): method commit (line 69) | def commit(self): method execute (line 73) | def execute(self, operation, binds=()): method flush (line 82) | def flush(self): method get_dialect (line 85) | def get_dialect(self): method rollback (line 101) | def rollback(self): FILE: memori/storage/adapters/django/_adapter.py class CursorWrapper (line 15) | class CursorWrapper: method __init__ (line 16) | def __init__(self, cursor): method mappings (line 19) | def mappings(self): method __getattr__ (line 22) | def __getattr__(self, name): class MappingResult (line 26) | class MappingResult: method __init__ (line 27) | def __init__(self, cursor): method fetchone (line 30) | def fetchone(self): method fetchall (line 37) | def fetchall(self): function is_django_connection (line 43) | def is_django_connection(conn): class Adapter (line 58) | class Adapter(BaseStorageAdapter): method commit (line 59) | def commit(self): method execute (line 63) | def execute(self, operation, binds=()): method flush (line 72) | def flush(self): method get_dialect (line 75) | def get_dialect(self): method rollback (line 87) | def rollback(self): FILE: memori/storage/adapters/mongodb/_adapter.py class Adapter (line 20) | class Adapter(BaseStorageAdapter): method execute (line 23) | def execute(self, collection_name_or_ops, operation=None, *args, **kwa... method commit (line 51) | def commit(self): method flush (line 55) | def flush(self): method rollback (line 59) | def rollback(self): method close (line 63) | def close(self): method get_dialect (line 71) | def get_dialect(self): method _execute_operation (line 74) | def _execute_operation(self, db, op): FILE: memori/storage/adapters/sqlalchemy/_adapter.py class Adapter (line 18) | class Adapter(BaseStorageAdapter): method commit (line 19) | def commit(self): method execute (line 23) | def execute(self, operation, binds=()): method flush (line 26) | def flush(self): method get_dialect (line 30) | def get_dialect(self): method rollback (line 37) | def rollback(self): FILE: memori/storage/cockroachdb/_cluster_manager.py class ClusterManager (line 28) | class ClusterManager: method __init__ (line 29) | def __init__(self, config: Config): method claim (line 34) | def claim(self, cli: Cli): method delete (line 51) | def delete(self, cli: Cli): method execute (line 71) | def execute(self): method start (line 88) | def start(self, cli: Cli): method cluster_finalize_failed (line 170) | def cluster_finalize_failed(self): method cluster_is_started (line 173) | def cluster_is_started(self): method usage (line 176) | def usage(self): FILE: memori/storage/cockroachdb/_display.py class Display (line 14) | class Display: method __init__ (line 15) | def __init__(self): method cluster_already_started (line 18) | def cluster_already_started(self): method cluster_was_not_started (line 25) | def cluster_was_not_started(self): FILE: memori/storage/cockroachdb/_files.py class Files (line 14) | class Files: method __init__ (line 15) | def __init__(self): method cluster_dir (line 18) | def cluster_dir(self): method cluster_id (line 21) | def cluster_id(self): method makedirs (line 24) | def makedirs(self): method read_id (line 28) | def read_id(self): method remove_id (line 35) | def remove_id(self): method storage_dir (line 43) | def storage_dir(self): method write_id (line 55) | def write_id(self, id): FILE: memori/storage/drivers/mongodb/_driver.py class Conversation (line 32) | class Conversation(BaseConversation): method __init__ (line 33) | def __init__(self, conn: BaseStorageAdapter): method create (line 38) | def create(self, session_id, timeout_minutes: int): method update (line 78) | def update(self, id: int, summary: str): method read (line 91) | def read(self, id: int) -> dict | None: method read_id_by_session_id (line 108) | def read_id_by_session_id(self, session_id): class ConversationMessage (line 117) | class ConversationMessage(BaseConversationMessage): method create (line 118) | def create(self, conversation_id: int, role: str, type: str, content: ... class ConversationMessages (line 132) | class ConversationMessages(BaseConversationMessages): method read (line 133) | def read(self, conversation_id: int): class Entity (line 148) | class Entity(BaseEntity): method create (line 149) | def create(self, external_id: str): class EntityFact (line 171) | class EntityFact(BaseEntityFact): method create (line 172) | def create(self, entity_id: int, facts: list, fact_embeddings: list | ... method get_embeddings (line 224) | def get_embeddings(self, entity_id: int, limit: int = 1000): method get_facts_by_ids (line 260) | def get_facts_by_ids(self, fact_ids: list[int]): class KnowledgeGraph (line 284) | class KnowledgeGraph(BaseKnowledgeGraph): method create (line 285) | def create(self, entity_id: int, semantic_triples: list): class Process (line 404) | class Process(BaseProcess): method create (line 405) | def create(self, external_id: str): class ProcessAttribute (line 427) | class ProcessAttribute(BaseProcessAttribute): method create (line 428) | def create(self, process_id: int, attributes: list): class Session (line 472) | class Session(BaseSession): method create (line 473) | def create(self, uuid: str, entity_id: int, process_id: int): method read (line 493) | def read(self, uuid: str): class Schema (line 500) | class Schema(BaseSchema): method __init__ (line 501) | def __init__(self, conn: BaseStorageAdapter): class SchemaVersion (line 506) | class SchemaVersion(BaseSchemaVersion): method create (line 507) | def create(self, num: int): method delete (line 512) | def delete(self): method read (line 515) | def read(self): class Driver (line 527) | class Driver: method __init__ (line 539) | def __init__(self, conn: BaseStorageAdapter): FILE: memori/storage/drivers/mysql/_driver.py class Conversation (line 32) | class Conversation(BaseConversation): method __init__ (line 33) | def __init__(self, conn: BaseStorageAdapter): method create (line 38) | def create(self, session_id, timeout_minutes: int): method update (line 95) | def update(self, id: int, summary: str): method read (line 114) | def read(self, id: int) -> dict | None: method read_id_by_session_id (line 133) | def read_id_by_session_id(self, session_id) -> int | None: class ConversationMessage (line 151) | class ConversationMessage(BaseConversationMessage): method create (line 152) | def create(self, conversation_id: int, role: str, type: str, content: ... class ConversationMessages (line 179) | class ConversationMessages(BaseConversationMessages): method read (line 180) | def read(self, conversation_id: int): class KnowledgeGraph (line 202) | class KnowledgeGraph(BaseKnowledgeGraph): method create (line 203) | def create(self, entity_id: int, semantic_triples: list): class Entity (line 362) | class Entity(BaseEntity): method create (line 363) | def create(self, external_id: str): class EntityFact (line 393) | class EntityFact(BaseEntityFact): method create (line 394) | def create(self, entity_id: int, facts: list, fact_embeddings: list | ... method get_embeddings (line 445) | def get_embeddings(self, entity_id: int, limit: int = 1000): method get_facts_by_ids (line 464) | def get_facts_by_ids(self, fact_ids: list[int]): class Process (line 479) | class Process(BaseProcess): method create (line 480) | def create(self, external_id: str): class ProcessAttribute (line 513) | class ProcessAttribute(BaseProcessAttribute): method create (line 514) | def create(self, process_id: int, attributes: list): class Session (line 554) | class Session(BaseSession): method create (line 555) | def create(self, uuid: str, entity_id: int, process_id: int): method read (line 590) | def read(self, uuid: str) -> int | None: class Schema (line 608) | class Schema(BaseSchema): method __init__ (line 609) | def __init__(self, conn: BaseStorageAdapter): class SchemaVersion (line 614) | class SchemaVersion(BaseSchemaVersion): method create (line 615) | def create(self, num: int): method delete (line 627) | def delete(self): method read (line 634) | def read(self): class Driver (line 650) | class Driver: method __init__ (line 662) | def __init__(self, conn: BaseStorageAdapter): FILE: memori/storage/drivers/oceanbase/_driver.py class EntityFact (line 20) | class EntityFact(MysqlEntityFact): method create (line 21) | def create(self, entity_id: int, facts: list, fact_embeddings: list | ... class Driver (line 76) | class Driver(MysqlDriver): method __init__ (line 82) | def __init__(self, conn): FILE: memori/storage/drivers/oracle/_driver.py class Conversation (line 31) | class Conversation(BaseConversation): method __init__ (line 32) | def __init__(self, conn: BaseStorageAdapter): method create (line 37) | def create(self, session_id, timeout_minutes: int): method update (line 97) | def update(self, id: int, summary: str): method read (line 116) | def read(self, id: int) -> dict | None: method read_id_by_session_id (line 135) | def read_id_by_session_id(self, session_id) -> int | None: class ConversationMessage (line 153) | class ConversationMessage(BaseConversationMessage): method create (line 154) | def create(self, conversation_id: int, role: str, type: str, content: ... class ConversationMessages (line 181) | class ConversationMessages(BaseConversationMessages): method read (line 182) | def read(self, conversation_id: int): class Entity (line 205) | class Entity(BaseEntity): method create (line 206) | def create(self, external_id: str): class EntityFact (line 235) | class EntityFact(BaseEntityFact): method create (line 236) | def create(self, entity_id: int, facts: list, fact_embeddings: list | ... method get_embeddings (line 281) | def get_embeddings(self, entity_id: int, limit: int = 1000): method get_facts_by_ids (line 304) | def get_facts_by_ids(self, fact_ids: list[int]): class KnowledgeGraph (line 321) | class KnowledgeGraph(BaseKnowledgeGraph): method create (line 322) | def create(self, entity_id: int, semantic_triples: list): class Process (line 463) | class Process(BaseProcess): method create (line 464) | def create(self, external_id: str): class ProcessAttribute (line 493) | class ProcessAttribute(BaseProcessAttribute): method create (line 494) | def create(self, process_id: int, attributes: list): class Session (line 527) | class Session(BaseSession): method create (line 528) | def create(self, uuid: str, entity_id: int, process_id: int): method read (line 556) | def read(self, uuid: str) -> int | None: class Schema (line 574) | class Schema(BaseSchema): method __init__ (line 575) | def __init__(self, conn: BaseStorageAdapter): class SchemaVersion (line 580) | class SchemaVersion(BaseSchemaVersion): method create (line 581) | def create(self, num: int): method delete (line 593) | def delete(self): method read (line 600) | def read(self): class Driver (line 615) | class Driver: method __init__ (line 627) | def __init__(self, conn: BaseStorageAdapter): FILE: memori/storage/drivers/postgresql/_driver.py class Conversation (line 31) | class Conversation(BaseConversation): method __init__ (line 32) | def __init__(self, conn: BaseStorageAdapter): method create (line 37) | def create(self, session_id, timeout_minutes: int): method update (line 95) | def update(self, id: int, summary: str): method read (line 114) | def read(self, id: int) -> dict | None: method read_id_by_session_id (line 133) | def read_id_by_session_id(self, session_id) -> int | None: class ConversationMessage (line 151) | class ConversationMessage(BaseConversationMessage): method create (line 152) | def create(self, conversation_id: int, role: str, type: str, content: ... class ConversationMessages (line 179) | class ConversationMessages(BaseConversationMessages): method read (line 180) | def read(self, conversation_id: int): class Entity (line 202) | class Entity(BaseEntity): method create (line 203) | def create(self, external_id: str): class EntityFact (line 234) | class EntityFact(BaseEntityFact): method create (line 235) | def create(self, entity_id: int, facts: list, fact_embeddings: list | ... method get_embeddings (line 287) | def get_embeddings(self, entity_id: int, limit: int = 1000): method get_facts_by_ids (line 306) | def get_facts_by_ids(self, fact_ids: list[int]): class KnowledgeGraph (line 323) | class KnowledgeGraph(BaseKnowledgeGraph): method create (line 324) | def create(self, entity_id: int, semantic_triples: list): class Process (line 487) | class Process(BaseProcess): method create (line 488) | def create(self, external_id: str): class ProcessAttribute (line 519) | class ProcessAttribute(BaseProcessAttribute): method create (line 520) | def create(self, process_id: int, attributes: list): class Session (line 561) | class Session(BaseSession): method create (line 562) | def create(self, uuid: str, entity_id: int, process_id: int): method read (line 594) | def read(self, uuid: str) -> int | None: class Schema (line 612) | class Schema(BaseSchema): method __init__ (line 613) | def __init__(self, conn: BaseStorageAdapter): class SchemaVersion (line 618) | class SchemaVersion(BaseSchemaVersion): method create (line 619) | def create(self, num: int): method delete (line 631) | def delete(self): method read (line 638) | def read(self): class Driver (line 654) | class Driver: method __init__ (line 666) | def __init__(self, conn: BaseStorageAdapter): FILE: memori/storage/drivers/sqlite/_driver.py class Conversation (line 31) | class Conversation(BaseConversation): method __init__ (line 32) | def __init__(self, conn: BaseStorageAdapter): method create (line 37) | def create(self, session_id, timeout_minutes: int): method update (line 94) | def update(self, id: int, summary: str): method read (line 113) | def read(self, id: int) -> dict | None: method read_id_by_session_id (line 132) | def read_id_by_session_id(self, session_id) -> int | None: class ConversationMessage (line 150) | class ConversationMessage(BaseConversationMessage): method create (line 151) | def create(self, conversation_id: int, role: str, type: str, content: ... class ConversationMessages (line 178) | class ConversationMessages(BaseConversationMessages): method read (line 179) | def read(self, conversation_id: int): class Entity (line 202) | class Entity(BaseEntity): method create (line 203) | def create(self, external_id: str): class EntityFact (line 233) | class EntityFact(BaseEntityFact): method create (line 234) | def create(self, entity_id: int, facts: list, fact_embeddings: list | ... method get_embeddings (line 287) | def get_embeddings(self, entity_id: int, limit: int = 1000): method get_facts_by_ids (line 306) | def get_facts_by_ids(self, fact_ids: list[int]): class KnowledgeGraph (line 321) | class KnowledgeGraph(BaseKnowledgeGraph): method create (line 322) | def create(self, entity_id: int, semantic_triples: list): class Process (line 453) | class Process(BaseProcess): method create (line 454) | def create(self, external_id: str): class ProcessAttribute (line 484) | class ProcessAttribute(BaseProcessAttribute): method create (line 485) | def create(self, process_id: int, attributes: list): class Session (line 515) | class Session(BaseSession): method create (line 516) | def create(self, uuid: str, entity_id: int, process_id: int): method read (line 547) | def read(self, uuid: str) -> int | None: class Schema (line 565) | class Schema(BaseSchema): method __init__ (line 566) | def __init__(self, conn: BaseStorageAdapter): class SchemaVersion (line 571) | class SchemaVersion(BaseSchemaVersion): method create (line 572) | def create(self, num: int): method delete (line 584) | def delete(self): method read (line 591) | def read(self): class Driver (line 606) | class Driver: method __init__ (line 618) | def __init__(self, conn: BaseStorageAdapter): FILE: tests/benchmarks_locomo/test_locomo_aa_pairing.py function test_build_per_pair_requests_cumulative (line 6) | def test_build_per_pair_requests_cumulative() -> None: function test_build_per_pair_requests_skips_unpairable_pair_boundaries (line 22) | def test_build_per_pair_requests_skips_unpairable_pair_boundaries() -> N... FILE: tests/benchmarks_locomo/test_locomo_loader.py function _write_locomo_tiny (line 9) | def _write_locomo_tiny(path: Path) -> Path: function test_load_locomo_tiny_fixture (line 46) | def test_load_locomo_tiny_fixture(tmp_path: Path): FILE: tests/benchmarks_locomo/test_locomo_preprocess.py function test_preprocess_strips_multimodal_fields (line 9) | def test_preprocess_strips_multimodal_fields(tmp_path: Path) -> None: function test_preprocess_rewrites_speaker_b_to_assistant (line 47) | def test_preprocess_rewrites_speaker_b_to_assistant(tmp_path: Path) -> N... function test_preprocess_keeps_speakers_when_speaker_b_missing (line 77) | def test_preprocess_keeps_speakers_when_speaker_b_missing(tmp_path: Path... FILE: tests/benchmarks_locomo/test_locomo_provenance.py function test_attribute_facts_to_turn_ids_maps_best_match (line 10) | def test_attribute_facts_to_turn_ids_maps_best_match(): function test_attribute_facts_to_turn_ids_can_use_lexical_signal (line 36) | def test_attribute_facts_to_turn_ids_can_use_lexical_signal(monkeypatch): function test_provenance_store_delete_sample (line 64) | def test_provenance_store_delete_sample(tmp_path: Path): function test_group_scoring_any_match (line 79) | def test_group_scoring_any_match(): function test_format_top_k_includes_turn_ids_for_aa_mode (line 91) | def test_format_top_k_includes_turn_ids_for_aa_mode(tmp_path: Path): FILE: tests/benchmarks_locomo/test_locomo_run_and_report.py function _write_locomo_tiny (line 10) | def _write_locomo_tiny(path: Path) -> Path: function _fake_embed_texts (line 47) | def _fake_embed_texts( function _seed_reuse_db (line 68) | def _seed_reuse_db( function test_run_writes_predictions_and_summary (line 121) | def test_run_writes_predictions_and_summary(tmp_path: Path, monkeypatch): function test_run_skips_questions_with_evidence_in_removed_sessions (line 183) | def test_run_skips_questions_with_evidence_in_removed_sessions( function test_report_aggregates_predictions (line 268) | def test_report_aggregates_predictions(tmp_path: Path, monkeypatch): function test_run_can_reuse_existing_sqlite_db_without_ingestion (line 319) | def test_run_can_reuse_existing_sqlite_db_without_ingestion( FILE: tests/database/core.py function set_sqlite_pragma (line 75) | def set_sqlite_pragma(dbapi_conn, connection_record): function OracleTestDBSession (line 94) | def OracleTestDBSession(): function MongoTestDBSession (line 109) | def MongoTestDBSession(): FILE: tests/database/init_db.py function init_db (line 5) | def init_db(): FILE: tests/embeddings/test_tei_chunking.py function test_chunk_text_by_tokens_list_input_ids (line 18) | def test_chunk_text_by_tokens_list_input_ids(mocker): function test_chunk_text_by_tokens_numpy_input_ids (line 28) | def test_chunk_text_by_tokens_numpy_input_ids(mocker): function test_embed_texts_via_tei_no_tokenizer_calls_server_once (line 38) | def test_embed_texts_via_tei_no_tokenizer_calls_server_once(mocker): function test_embed_texts_via_tei_tokenizer_chunks_and_pools (line 53) | def test_embed_texts_via_tei_tokenizer_chunks_and_pools(mocker): FILE: tests/integration/cloud/conftest.py function cloud_test_mode (line 15) | def cloud_test_mode(): function cloud_memori_instance (line 31) | def cloud_memori_instance(sqlite_session_factory, cloud_test_mode): function cloud_registered_openai_client (line 54) | def cloud_registered_openai_client(cloud_memori_instance, openai_client): function cloud_registered_async_openai_client (line 63) | def cloud_registered_async_openai_client(cloud_memori_instance, async_op... function cloud_registered_anthropic_client (line 72) | def cloud_registered_anthropic_client(cloud_memori_instance, anthropic_c... function cloud_registered_async_anthropic_client (line 81) | def cloud_registered_async_anthropic_client( function cloud_registered_google_client (line 92) | def cloud_registered_google_client(cloud_memori_instance, google_client): function cloud_registered_xai_client (line 101) | def cloud_registered_xai_client(cloud_memori_instance, xai_client): function cloud_registered_async_xai_client (line 110) | def cloud_registered_async_xai_client(cloud_memori_instance, async_xai_c... function cloud_registered_bedrock_client (line 119) | def cloud_registered_bedrock_client(cloud_memori_instance, bedrock_client): FILE: tests/integration/cloud/test_cloud_anthropic.py class TestCloudAnthropicSync (line 14) | class TestCloudAnthropicSync: method test_sync_message_through_cloud_pipeline (line 17) | def test_sync_message_through_cloud_pipeline( method test_sync_message_stores_conversation (line 40) | def test_sync_message_stores_conversation( method test_sync_message_stores_messages (line 62) | def test_sync_message_stores_messages( class TestCloudAnthropicAsync (line 93) | class TestCloudAnthropicAsync: method test_async_message_through_cloud_pipeline (line 97) | async def test_async_message_through_cloud_pipeline( method test_async_message_stores_conversation (line 122) | async def test_async_message_stores_conversation( class TestCloudAnthropicStreaming (line 143) | class TestCloudAnthropicStreaming: method test_sync_streaming_through_cloud_pipeline (line 146) | def test_sync_streaming_through_cloud_pipeline( method test_async_streaming_through_cloud_pipeline (line 163) | async def test_async_streaming_through_cloud_pipeline( class TestCloudAnthropicAugmentation (line 182) | class TestCloudAnthropicAugmentation: method test_augmentation_completes_without_error (line 185) | def test_augmentation_completes_without_error( method test_multi_turn_triggers_augmentation (line 198) | def test_multi_turn_triggers_augmentation( class TestCloudAnthropicSessionManagement (line 214) | class TestCloudAnthropicSessionManagement: method test_multiple_calls_same_session (line 217) | def test_multiple_calls_same_session( method test_new_session_resets_context (line 232) | def test_new_session_resets_context( FILE: tests/integration/cloud/test_cloud_bedrock.py class TestCloudBedrockSync (line 17) | class TestCloudBedrockSync: method test_sync_invocation_through_cloud_pipeline (line 20) | def test_sync_invocation_through_cloud_pipeline( method test_sync_invocation_stores_conversation (line 44) | def test_sync_invocation_stores_conversation( method test_sync_invocation_stores_messages (line 62) | def test_sync_invocation_stores_messages( class TestCloudBedrockAsync (line 84) | class TestCloudBedrockAsync: method test_async_invocation_through_cloud_pipeline (line 88) | async def test_async_invocation_through_cloud_pipeline( method test_async_invocation_stores_conversation (line 114) | async def test_async_invocation_stores_conversation( class TestCloudBedrockStreaming (line 131) | class TestCloudBedrockStreaming: method test_sync_streaming_through_cloud_pipeline (line 134) | def test_sync_streaming_through_cloud_pipeline( method test_async_streaming_through_cloud_pipeline (line 150) | async def test_async_streaming_through_cloud_pipeline( class TestCloudBedrockAugmentation (line 165) | class TestCloudBedrockAugmentation: method test_augmentation_completes_without_error (line 168) | def test_augmentation_completes_without_error( method test_multi_turn_triggers_augmentation (line 177) | def test_multi_turn_triggers_augmentation( class TestCloudBedrockSessionManagement (line 193) | class TestCloudBedrockSessionManagement: method test_multiple_calls_same_session (line 196) | def test_multiple_calls_same_session( method test_new_session_resets_context (line 207) | def test_new_session_resets_context( FILE: tests/integration/cloud/test_cloud_gemini.py class TestCloudGeminiSync (line 17) | class TestCloudGeminiSync: method test_sync_generation_through_cloud_pipeline (line 20) | def test_sync_generation_through_cloud_pipeline( method test_sync_generation_stores_conversation (line 47) | def test_sync_generation_stores_conversation( method test_sync_generation_stores_messages (line 68) | def test_sync_generation_stores_messages( class TestCloudGeminiAsync (line 94) | class TestCloudGeminiAsync: method test_async_generation_through_cloud_pipeline (line 98) | async def test_async_generation_through_cloud_pipeline( method test_async_generation_stores_conversation (line 127) | async def test_async_generation_stores_conversation( class TestCloudGeminiStreaming (line 147) | class TestCloudGeminiStreaming: method test_sync_streaming_through_cloud_pipeline (line 150) | def test_sync_streaming_through_cloud_pipeline( method test_async_streaming_through_cloud_pipeline (line 171) | async def test_async_streaming_through_cloud_pipeline( class TestCloudGeminiAugmentation (line 193) | class TestCloudGeminiAugmentation: method test_augmentation_completes_without_error (line 196) | def test_augmentation_completes_without_error( method test_multi_turn_triggers_augmentation (line 208) | def test_multi_turn_triggers_augmentation( class TestCloudGeminiSessionManagement (line 225) | class TestCloudGeminiSessionManagement: method test_multiple_calls_same_session (line 228) | def test_multiple_calls_same_session( method test_new_session_resets_context (line 242) | def test_new_session_resets_context( FILE: tests/integration/cloud/test_cloud_openai.py class TestCloudOpenAISync (line 15) | class TestCloudOpenAISync: method test_sync_completion_through_cloud_pipeline (line 18) | def test_sync_completion_through_cloud_pipeline( method test_sync_completion_stores_conversation (line 40) | def test_sync_completion_stores_conversation( method test_sync_completion_stores_messages (line 62) | def test_sync_completion_stores_messages( class TestCloudOpenAIAsync (line 93) | class TestCloudOpenAIAsync: method test_async_completion_through_cloud_pipeline (line 97) | async def test_async_completion_through_cloud_pipeline( method test_async_completion_stores_conversation (line 121) | async def test_async_completion_stores_conversation( class TestCloudOpenAIStreaming (line 142) | class TestCloudOpenAIStreaming: method test_sync_streaming_through_cloud_pipeline (line 145) | def test_sync_streaming_through_cloud_pipeline( method test_async_streaming_through_cloud_pipeline (line 168) | async def test_async_streaming_through_cloud_pipeline( class TestCloudOpenAIAugmentation (line 190) | class TestCloudOpenAIAugmentation: method test_augmentation_completes_without_error (line 193) | def test_augmentation_completes_without_error( method test_multi_turn_triggers_augmentation (line 206) | def test_multi_turn_triggers_augmentation( method test_cloud_memori_instance_is_configured (line 224) | def test_cloud_memori_instance_is_configured(self, cloud_memori_instan... class TestCloudOpenAIResponses (line 230) | class TestCloudOpenAIResponses: method test_responses_api_through_cloud_pipeline (line 233) | def test_responses_api_through_cloud_pipeline( method test_responses_streaming_through_cloud_pipeline (line 250) | def test_responses_streaming_through_cloud_pipeline( class TestCloudOpenAISessionManagement (line 269) | class TestCloudOpenAISessionManagement: method test_multiple_calls_same_session (line 272) | def test_multiple_calls_same_session( method test_new_session_resets_context (line 287) | def test_new_session_resets_context( FILE: tests/integration/cloud/test_cloud_xai.py class TestcloudXAISync (line 15) | class TestcloudXAISync: method test_sync_completion_through_cloud_pipeline (line 18) | def test_sync_completion_through_cloud_pipeline( method test_sync_completion_stores_conversation (line 40) | def test_sync_completion_stores_conversation( method test_sync_completion_stores_messages (line 62) | def test_sync_completion_stores_messages( class TestcloudXAIAsync (line 93) | class TestcloudXAIAsync: method test_async_completion_through_cloud_pipeline (line 97) | async def test_async_completion_through_cloud_pipeline( method test_async_completion_stores_conversation (line 121) | async def test_async_completion_stores_conversation( class TestcloudXAIStreaming (line 142) | class TestcloudXAIStreaming: method test_sync_streaming_through_cloud_pipeline (line 145) | def test_sync_streaming_through_cloud_pipeline( method test_async_streaming_through_cloud_pipeline (line 168) | async def test_async_streaming_through_cloud_pipeline( class TestcloudXAIAugmentation (line 190) | class TestcloudXAIAugmentation: method test_augmentation_completes_without_error (line 193) | def test_augmentation_completes_without_error( method test_multi_turn_triggers_augmentation (line 206) | def test_multi_turn_triggers_augmentation( class TestcloudXAISessionManagement (line 223) | class TestcloudXAISessionManagement: method test_multiple_calls_same_session (line 226) | def test_multiple_calls_same_session( method test_new_session_resets_context (line 241) | def test_new_session_resets_context( FILE: tests/integration/conftest.py function openai_api_key (line 59) | def openai_api_key(): function sqlite_session_factory (line 66) | def sqlite_session_factory(tmp_path): function memori_test_mode (line 90) | def memori_test_mode(): function openai_client (line 101) | def openai_client(openai_api_key): function async_openai_client (line 108) | def async_openai_client(openai_api_key): function memori_instance (line 115) | def memori_instance(sqlite_session_factory, memori_test_mode): function registered_openai_client (line 127) | def registered_openai_client(memori_instance, openai_client): function registered_async_openai_client (line 134) | def registered_async_openai_client(memori_instance, async_openai_client): function anthropic_api_key (line 141) | def anthropic_api_key(): function anthropic_client (line 148) | def anthropic_client(anthropic_api_key): function async_anthropic_client (line 155) | def async_anthropic_client(anthropic_api_key): function registered_anthropic_client (line 162) | def registered_anthropic_client(memori_instance, anthropic_client): function registered_async_anthropic_client (line 169) | def registered_async_anthropic_client(memori_instance, async_anthropic_c... function google_api_key (line 176) | def google_api_key(): function google_client (line 183) | def google_client(google_api_key): function registered_google_client (line 195) | def registered_google_client(memori_instance, google_client): function xai_api_key (line 202) | def xai_api_key(): function xai_client (line 209) | def xai_client(xai_api_key): function async_xai_client (line 219) | def async_xai_client(xai_api_key): function registered_xai_client (line 229) | def registered_xai_client(memori_instance, xai_client): function registered_async_xai_client (line 236) | def registered_async_xai_client(memori_instance, async_xai_client): function aws_credentials (line 243) | def aws_credentials(): function bedrock_client (line 254) | def bedrock_client(aws_credentials): function registered_bedrock_client (line 267) | def registered_bedrock_client(memori_instance, bedrock_client): class CapturedPayload (line 274) | class CapturedPayload: method capture (line 277) | def capture(self, payload: dict) -> dict: method last (line 286) | def last(self) -> dict | None: method count (line 290) | def count(self) -> int: method validate_structure (line 293) | def validate_structure(self, payload: dict | None = None) -> list[str]: method is_valid (line 368) | def is_valid(self, payload: dict | None = None) -> bool: function aa_payload_capture (line 373) | def aa_payload_capture(): function memori_instance_with_capture (line 384) | def memori_instance_with_capture( FILE: tests/integration/databases/conftest.py function sqlite_session_factory (line 43) | def sqlite_session_factory(tmp_path): function postgres_session_factory (line 68) | def postgres_session_factory(): function mysql_session_factory (line 89) | def mysql_session_factory(): function mongodb_client (line 110) | def mongodb_client(): function memori_test_mode (line 123) | def memori_test_mode(): function sqlite_memori (line 135) | def sqlite_memori(sqlite_session_factory, memori_test_mode): function postgres_memori (line 149) | def postgres_memori(postgres_session_factory, memori_test_mode): function mysql_memori (line 163) | def mysql_memori(mysql_session_factory, memori_test_mode): function mongodb_memori (line 177) | def mongodb_memori(mongodb_client, memori_test_mode): function openai_api_key (line 191) | def openai_api_key(): function openai_client (line 199) | def openai_client(openai_api_key): FILE: tests/integration/databases/test_database_storage.py class TestSQLiteStorage (line 21) | class TestSQLiteStorage: method test_store_and_search_facts (line 27) | def test_store_and_search_facts(self, sqlite_memori, openai_api_key): method test_multiple_entities_isolation (line 55) | def test_multiple_entities_isolation(self, sqlite_memori, openai_api_k... method test_conversation_storage (line 89) | def test_conversation_storage(self, sqlite_memori, openai_api_key): class TestPostgresStorage (line 119) | class TestPostgresStorage: method test_store_and_search_facts (line 125) | def test_store_and_search_facts(self, postgres_memori, openai_api_key): method test_multiple_entities_isolation (line 151) | def test_multiple_entities_isolation(self, postgres_memori, openai_api... method test_conversation_storage (line 184) | def test_conversation_storage(self, postgres_memori, openai_api_key): class TestMySQLStorage (line 213) | class TestMySQLStorage: method test_store_and_search_facts (line 219) | def test_store_and_search_facts(self, mysql_memori, openai_api_key): method test_multiple_entities_isolation (line 248) | def test_multiple_entities_isolation(self, mysql_memori, openai_api_key): method test_conversation_storage (line 281) | def test_conversation_storage(self, mysql_memori, openai_api_key): class TestMongoDBStorage (line 310) | class TestMongoDBStorage: method test_store_and_search_facts (line 316) | def test_store_and_search_facts(self, mongodb_memori, openai_api_key): method test_multiple_entities_isolation (line 342) | def test_multiple_entities_isolation(self, mongodb_memori, openai_api_... method test_conversation_storage (line 375) | def test_conversation_storage(self, mongodb_memori, openai_api_key): FILE: tests/integration/providers/test_anthropic.py class TestClientRegistration (line 11) | class TestClientRegistration: method test_sync_client_registration_marks_installed (line 14) | def test_sync_client_registration_marks_installed( method test_async_client_registration_marks_installed (line 28) | def test_async_client_registration_marks_installed( method test_multiple_registrations_are_idempotent (line 42) | def test_multiple_registrations_are_idempotent( method test_registration_preserves_original_methods (line 57) | def test_registration_preserves_original_methods( class TestSyncMessages (line 67) | class TestSyncMessages: method test_sync_message_returns_response (line 70) | def test_sync_message_returns_response(self, registered_anthropic_clie... method test_sync_message_response_structure (line 84) | def test_sync_message_response_structure(self, registered_anthropic_cl... method test_sync_message_with_system_message (line 105) | def test_sync_message_with_system_message(self, registered_anthropic_c... method test_sync_message_multi_turn (line 118) | def test_sync_message_multi_turn(self, registered_anthropic_client): class TestAsyncMessages (line 134) | class TestAsyncMessages: method test_async_message_returns_response (line 138) | async def test_async_message_returns_response( method test_async_message_response_structure (line 155) | async def test_async_message_response_structure( method test_async_message_with_system (line 175) | async def test_async_message_with_system(self, registered_async_anthro... class TestSyncStreaming (line 187) | class TestSyncStreaming: method test_sync_streaming_returns_events (line 190) | def test_sync_streaming_returns_events(self, registered_anthropic_clie... method test_sync_streaming_assembles_content (line 202) | def test_sync_streaming_assembles_content(self, registered_anthropic_c... method test_sync_streaming_event_structure (line 214) | def test_sync_streaming_event_structure(self, registered_anthropic_cli... class TestAsyncStreaming (line 226) | class TestAsyncStreaming: method test_async_streaming_returns_events (line 230) | async def test_async_streaming_returns_events( method test_async_streaming_assembles_content (line 247) | async def test_async_streaming_assembles_content( method test_async_streaming_chunk_structure (line 265) | async def test_async_streaming_chunk_structure( method test_async_streaming_final_message (line 284) | async def test_async_streaming_final_message( method test_async_streaming_with_usage_info (line 303) | async def test_async_streaming_with_usage_info( class TestErrorHandling (line 322) | class TestErrorHandling: method test_invalid_api_key_raises_authentication_error (line 324) | def test_invalid_api_key_raises_authentication_error(self, memori_inst... method test_invalid_model_raises_error (line 337) | def test_invalid_model_raises_error(self, registered_anthropic_client): method test_async_invalid_api_key_raises_error (line 347) | async def test_async_invalid_api_key_raises_error(self, memori_instance): class TestResponseFormatValidation (line 359) | class TestResponseFormatValidation: method test_response_contains_usage_metadata (line 362) | def test_response_contains_usage_metadata(self, registered_anthropic_c... method test_response_model_matches_request (line 375) | def test_response_model_matches_request(self, registered_anthropic_cli... method test_response_stop_reason_is_valid (line 386) | def test_response_stop_reason_is_valid(self, registered_anthropic_clie... method test_async_response_contains_usage_metadata (line 399) | async def test_async_response_contains_usage_metadata( class TestMemoriIntegration (line 413) | class TestMemoriIntegration: method test_memori_wrapper_does_not_modify_response_type (line 416) | def test_memori_wrapper_does_not_modify_response_type( method test_config_captures_provider_info (line 441) | def test_config_captures_provider_info(self, memori_instance, anthropi... method test_attribution_is_preserved_across_calls (line 449) | def test_attribution_is_preserved_across_calls( class TestStorageVerification (line 473) | class TestStorageVerification: method test_conversation_stored_after_sync_call (line 476) | def test_conversation_stored_after_sync_call( method test_messages_stored_with_content (line 496) | def test_messages_stored_with_content( method test_conversation_stored_after_async_call (line 527) | async def test_conversation_stored_after_async_call( method test_multiple_calls_accumulate_messages (line 546) | def test_multiple_calls_accumulate_messages( FILE: tests/integration/providers/test_bedrock.py class TestClientRegistration (line 14) | class TestClientRegistration: method test_client_registration_marks_installed (line 17) | def test_client_registration_marks_installed( method test_multiple_registrations_are_idempotent (line 36) | def test_multiple_registrations_are_idempotent( method test_registration_preserves_original_methods (line 57) | def test_registration_preserves_original_methods( class TestSyncInvocation (line 73) | class TestSyncInvocation: method test_sync_invoke_returns_response (line 76) | def test_sync_invoke_returns_response(self, registered_bedrock_client): method test_sync_invoke_response_structure (line 85) | def test_sync_invoke_response_structure(self, registered_bedrock_client): method test_sync_invoke_with_messages (line 94) | def test_sync_invoke_with_messages(self, registered_bedrock_client): method test_sync_invoke_multi_turn (line 109) | def test_sync_invoke_multi_turn(self, registered_bedrock_client): class TestAsyncInvocation (line 125) | class TestAsyncInvocation: method test_async_invoke_returns_response (line 129) | async def test_async_invoke_returns_response(self, registered_bedrock_... method test_async_invoke_response_structure (line 139) | async def test_async_invoke_response_structure(self, registered_bedroc... method test_async_invoke_with_system_message (line 149) | async def test_async_invoke_with_system_message(self, registered_bedro... class TestSyncStreaming (line 163) | class TestSyncStreaming: method test_sync_streaming_returns_chunks (line 166) | def test_sync_streaming_returns_chunks(self, registered_bedrock_client): method test_sync_streaming_assembles_content (line 173) | def test_sync_streaming_assembles_content(self, registered_bedrock_cli... method test_sync_streaming_chunk_structure (line 184) | def test_sync_streaming_chunk_structure(self, registered_bedrock_client): class TestAsyncStreaming (line 189) | class TestAsyncStreaming: method test_async_streaming_returns_chunks (line 193) | async def test_async_streaming_returns_chunks(self, registered_bedrock... method test_async_streaming_assembles_content (line 203) | async def test_async_streaming_assembles_content(self, registered_bedr... method test_async_streaming_chunk_structure (line 215) | async def test_async_streaming_chunk_structure(self, registered_bedroc... method test_async_streaming_with_usage_info (line 222) | async def test_async_streaming_with_usage_info(self, registered_bedroc... class TestErrorHandling (line 234) | class TestErrorHandling: method test_invalid_credentials_raises_error (line 236) | def test_invalid_credentials_raises_error(self, memori_instance): method test_invalid_model_raises_error (line 260) | def test_invalid_model_raises_error(self, memori_instance, aws_credent... method test_async_invalid_model_raises_error (line 275) | async def test_async_invalid_model_raises_error( class TestResponseFormatValidation (line 290) | class TestResponseFormatValidation: method test_response_contains_usage_metadata (line 293) | def test_response_contains_usage_metadata(self, registered_bedrock_cli... method test_response_model_matches_requested (line 302) | def test_response_model_matches_requested(self, registered_bedrock_cli... method test_response_finish_reason_is_valid (line 310) | def test_response_finish_reason_is_valid(self, registered_bedrock_clie... method test_async_response_contains_usage_metadata (line 321) | async def test_async_response_contains_usage_metadata( class TestMemoriIntegration (line 329) | class TestMemoriIntegration: method test_memori_wrapper_does_not_modify_response_type (line 332) | def test_memori_wrapper_does_not_modify_response_type( method test_config_captures_provider_info (line 356) | def test_config_captures_provider_info(self, memori_instance, aws_cred... method test_attribution_is_preserved_across_calls (line 369) | def test_attribution_is_preserved_across_calls( class TestStorageVerification (line 385) | class TestStorageVerification: method test_conversation_stored_after_sync_call (line 388) | def test_conversation_stored_after_sync_call( method test_messages_stored_with_content (line 404) | def test_messages_stored_with_content( method test_conversation_stored_after_async_call (line 426) | async def test_conversation_stored_after_async_call( method test_multiple_calls_accumulate_messages (line 441) | def test_multiple_calls_accumulate_messages( FILE: tests/integration/providers/test_google.py class TestClientRegistration (line 14) | class TestClientRegistration: method test_client_registration_marks_installed (line 17) | def test_client_registration_marks_installed(self, memori_instance, go... method test_multiple_registrations_are_idempotent (line 33) | def test_multiple_registrations_are_idempotent( method test_registration_preserves_original_methods (line 52) | def test_registration_preserves_original_methods( class TestSyncContentGeneration (line 67) | class TestSyncContentGeneration: method test_sync_generate_returns_response (line 70) | def test_sync_generate_returns_response(self, registered_google_client): method test_sync_generate_response_structure (line 82) | def test_sync_generate_response_structure(self, registered_google_clie... method test_sync_generate_with_config (line 96) | def test_sync_generate_with_config(self, registered_google_client): method test_sync_generate_multi_turn (line 113) | def test_sync_generate_multi_turn(self, registered_google_client): class TestAsyncContentGeneration (line 130) | class TestAsyncContentGeneration: method test_async_generate_returns_response (line 134) | async def test_async_generate_returns_response(self, registered_google... method test_async_generate_response_structure (line 147) | async def test_async_generate_response_structure(self, registered_goog... method test_async_generate_with_system_instruction (line 160) | async def test_async_generate_with_system_instruction( class TestSyncStreaming (line 178) | class TestSyncStreaming: method test_sync_streaming_returns_chunks (line 181) | def test_sync_streaming_returns_chunks(self, registered_google_client): method test_sync_streaming_assembles_content (line 192) | def test_sync_streaming_assembles_content(self, registered_google_clie... method test_sync_streaming_chunk_structure (line 208) | def test_sync_streaming_chunk_structure(self, registered_google_client): class TestAsyncStreaming (line 218) | class TestAsyncStreaming: method test_async_streaming_returns_chunks (line 222) | async def test_async_streaming_returns_chunks(self, registered_google_... method test_async_streaming_assembles_content (line 237) | async def test_async_streaming_assembles_content(self, registered_goog... method test_async_streaming_chunk_structure (line 254) | async def test_async_streaming_chunk_structure(self, registered_google... method test_async_streaming_with_usage_info (line 266) | async def test_async_streaming_with_usage_info(self, registered_google... class TestErrorHandling (line 284) | class TestErrorHandling: method test_invalid_api_key_raises_error (line 286) | def test_invalid_api_key_raises_error(self, memori_instance): method test_invalid_model_raises_error (line 303) | def test_invalid_model_raises_error(self, registered_google_client): method test_async_invalid_api_key_raises_error (line 314) | async def test_async_invalid_api_key_raises_error(self, memori_instance): class TestResponseFormatValidation (line 330) | class TestResponseFormatValidation: method test_response_contains_usage_metadata (line 333) | def test_response_contains_usage_metadata(self, registered_google_clie... method test_response_finish_reason_is_valid (line 343) | def test_response_finish_reason_is_valid(self, registered_google_client): method test_response_model_info_is_present (line 355) | def test_response_model_info_is_present(self, registered_google_client): method test_async_response_contains_usage_metadata (line 366) | async def test_async_response_contains_usage_metadata( class TestMemoriIntegration (line 377) | class TestMemoriIntegration: method test_memori_wrapper_does_not_modify_response_type (line 380) | def test_memori_wrapper_does_not_modify_response_type( method test_config_captures_provider_info (line 407) | def test_config_captures_provider_info(self, memori_instance, google_a... method test_attribution_is_preserved_across_calls (line 419) | def test_attribution_is_preserved_across_calls( class TestStorageVerification (line 441) | class TestStorageVerification: method test_conversation_stored_after_sync_call (line 444) | def test_conversation_stored_after_sync_call( method test_messages_stored_with_content (line 463) | def test_messages_stored_with_content( method test_conversation_stored_after_async_call (line 489) | async def test_conversation_stored_after_async_call( method test_multiple_calls_accumulate_messages (line 507) | def test_multiple_calls_accumulate_messages( FILE: tests/integration/providers/test_openai.py class TestClientRegistration (line 18) | class TestClientRegistration: method test_sync_client_registration_marks_installed (line 21) | def test_sync_client_registration_marks_installed( method test_async_client_registration_marks_installed (line 35) | def test_async_client_registration_marks_installed( method test_multiple_registrations_are_idempotent (line 49) | def test_multiple_registrations_are_idempotent( method test_registration_preserves_original_methods (line 64) | def test_registration_preserves_original_methods( method test_sync_client_registration_wraps_responses (line 76) | def test_sync_client_registration_wraps_responses( method test_async_client_registration_wraps_responses (line 92) | def test_async_client_registration_wraps_responses( method test_multiple_registrations_preserve_responses_wrapper (line 106) | def test_multiple_registrations_preserve_responses_wrapper( class TestSyncChatCompletions (line 119) | class TestSyncChatCompletions: method test_sync_chat_completion_returns_response (line 122) | def test_sync_chat_completion_returns_response(self, registered_openai... method test_sync_chat_completion_response_structure (line 136) | def test_sync_chat_completion_response_structure(self, registered_open... method test_sync_chat_completion_with_system_message (line 157) | def test_sync_chat_completion_with_system_message(self, registered_ope... method test_sync_chat_completion_multi_turn (line 172) | def test_sync_chat_completion_multi_turn(self, registered_openai_client): class TestAsyncChatCompletions (line 188) | class TestAsyncChatCompletions: method test_async_chat_completion_returns_response (line 192) | async def test_async_chat_completion_returns_response( method test_async_chat_completion_response_structure (line 209) | async def test_async_chat_completion_response_structure( method test_async_chat_completion_with_system_message (line 230) | async def test_async_chat_completion_with_system_message( class TestSyncStreaming (line 246) | class TestSyncStreaming: method test_sync_streaming_returns_chunks (line 249) | def test_sync_streaming_returns_chunks(self, registered_openai_client): method test_sync_streaming_assembles_content (line 263) | def test_sync_streaming_assembles_content(self, registered_openai_clie... method test_sync_streaming_chunk_structure (line 281) | def test_sync_streaming_chunk_structure(self, registered_openai_client): class TestAsyncStreaming (line 295) | class TestAsyncStreaming: method test_async_streaming_returns_chunks (line 299) | async def test_async_streaming_returns_chunks(self, registered_async_o... method test_async_streaming_assembles_content (line 316) | async def test_async_streaming_assembles_content( method test_async_streaming_chunk_structure (line 337) | async def test_async_streaming_chunk_structure( method test_async_streaming_with_usage_info (line 355) | async def test_async_streaming_with_usage_info( class TestErrorHandling (line 373) | class TestErrorHandling: method test_invalid_api_key_raises_authentication_error (line 375) | def test_invalid_api_key_raises_authentication_error(self, memori_inst... method test_invalid_model_raises_error (line 388) | def test_invalid_model_raises_error(self, registered_openai_client): method test_async_invalid_api_key_raises_error (line 398) | async def test_async_invalid_api_key_raises_error(self, memori_instance): class TestResponseFormatValidation (line 410) | class TestResponseFormatValidation: method test_response_contains_usage_metadata (line 413) | def test_response_contains_usage_metadata(self, registered_openai_clie... method test_response_model_matches_request (line 427) | def test_response_model_matches_request(self, registered_openai_client): method test_response_finish_reason_is_valid (line 438) | def test_response_finish_reason_is_valid(self, registered_openai_client): method test_async_response_contains_usage_metadata (line 457) | async def test_async_response_contains_usage_metadata( class TestMemoriIntegration (line 471) | class TestMemoriIntegration: method test_memori_wrapper_does_not_modify_response_type (line 474) | def test_memori_wrapper_does_not_modify_response_type( method test_config_captures_provider_info (line 499) | def test_config_captures_provider_info(self, memori_instance, openai_a... method test_attribution_is_preserved_across_calls (line 507) | def test_attribution_is_preserved_across_calls( class TestBetaApi (line 531) | class TestBetaApi: method test_beta_parse_registration (line 534) | def test_beta_parse_registration(self, memori_instance, openai_api_key): class TestStorageVerification (line 541) | class TestStorageVerification: method test_conversation_stored_after_sync_call (line 544) | def test_conversation_stored_after_sync_call( method test_conversation_stored_after_async_call (line 565) | async def test_conversation_stored_after_async_call( method test_messages_stored_with_content (line 584) | def test_messages_stored_with_content( method test_multiple_calls_accumulate_messages (line 614) | def test_multiple_calls_accumulate_messages( class TestSyncResponses (line 650) | class TestSyncResponses: method test_sync_responses_returns_response (line 653) | def test_sync_responses_returns_response(self, registered_openai_client): method test_sync_responses_response_structure (line 667) | def test_sync_responses_response_structure(self, registered_openai_cli... method test_sync_responses_with_instructions (line 682) | def test_sync_responses_with_instructions(self, registered_openai_clie... method test_sync_responses_simple_math (line 695) | def test_sync_responses_simple_math(self, registered_openai_client): class TestAsyncResponses (line 707) | class TestAsyncResponses: method test_async_responses_returns_response (line 711) | async def test_async_responses_returns_response( method test_async_responses_response_structure (line 728) | async def test_async_responses_response_structure( method test_async_responses_with_instructions (line 745) | async def test_async_responses_with_instructions( class TestResponsesConversationStorage (line 759) | class TestResponsesConversationStorage: method test_conversation_id_created_after_call (line 762) | def test_conversation_id_created_after_call(self, memori_instance, ope... method test_conversation_continuity (line 779) | def test_conversation_continuity(self, memori_instance, openai_api_key): class TestResponsesErrorHandling (line 801) | class TestResponsesErrorHandling: method test_invalid_api_key_raises_error (line 803) | def test_invalid_api_key_raises_error(self, memori_instance): method test_invalid_model_raises_error (line 816) | def test_invalid_model_raises_error(self, registered_openai_client): method test_async_invalid_api_key_raises_error (line 826) | async def test_async_invalid_api_key_raises_error(self, memori_instance): class TestResponsesWithChatCompletionsCoexistence (line 838) | class TestResponsesWithChatCompletionsCoexistence: method test_both_apis_work_with_same_client (line 841) | def test_both_apis_work_with_same_client(self, registered_openai_client): method test_async_both_apis_work_with_same_client (line 861) | async def test_async_both_apis_work_with_same_client( class TestResponsesStreaming (line 881) | class TestResponsesStreaming: method test_sync_streaming_returns_events (line 884) | def test_sync_streaming_returns_events(self, registered_openai_client): method test_sync_streaming_final_response_structure (line 900) | def test_sync_streaming_final_response_structure(self, registered_open... method test_sync_streaming_yields_text_deltas (line 928) | def test_sync_streaming_yields_text_deltas(self, registered_openai_cli... method test_sync_streaming_context_manager (line 945) | def test_sync_streaming_context_manager(self, registered_openai_client): method test_async_streaming_returns_events (line 959) | async def test_async_streaming_returns_events(self, registered_async_o... method test_async_streaming_final_response_structure (line 978) | async def test_async_streaming_final_response_structure( method test_async_streaming_context_manager (line 1012) | async def test_async_streaming_context_manager( method test_async_streaming_event_structure (line 1030) | async def test_async_streaming_event_structure( method test_async_streaming_yields_text_deltas (line 1046) | async def test_async_streaming_yields_text_deltas( class TestResponsesInputFormats (line 1064) | class TestResponsesInputFormats: method test_string_input (line 1067) | def test_string_input(self, registered_openai_client): method test_list_input_with_messages (line 1079) | def test_list_input_with_messages(self, registered_openai_client): class TestResponsesFormatValidation (line 1094) | class TestResponsesFormatValidation: method test_responses_contains_usage_metadata (line 1097) | def test_responses_contains_usage_metadata(self, registered_openai_cli... method test_responses_model_matches_request (line 1111) | def test_responses_model_matches_request(self, registered_openai_client): method test_responses_status_is_valid (line 1122) | def test_responses_status_is_valid(self, registered_openai_client): method test_async_responses_contains_usage_metadata (line 1135) | async def test_async_responses_contains_usage_metadata( class TestResponsesMemoriIntegration (line 1149) | class TestResponsesMemoriIntegration: method test_memori_wrapper_does_not_modify_response_type (line 1152) | def test_memori_wrapper_does_not_modify_response_type( method test_config_captures_provider_info (line 1177) | def test_config_captures_provider_info(self, memori_instance, openai_a... method test_attribution_is_preserved_across_calls (line 1185) | def test_attribution_is_preserved_across_calls( class TestResponsesStorageVerification (line 1209) | class TestResponsesStorageVerification: method test_conversation_stored_after_sync_call (line 1212) | def test_conversation_stored_after_sync_call( method test_conversation_stored_after_async_call (line 1233) | async def test_conversation_stored_after_async_call( method test_messages_stored_with_content (line 1252) | def test_messages_stored_with_content( method test_multiple_calls_accumulate_messages (line 1282) | def test_multiple_calls_accumulate_messages( FILE: tests/integration/providers/test_xai.py class TestClientRegistration (line 18) | class TestClientRegistration: method test_sync_client_registration_marks_installed (line 21) | def test_sync_client_registration_marks_installed( method test_async_client_registration_marks_installed (line 35) | def test_async_client_registration_marks_installed( method test_multiple_registrations_are_idempotent (line 49) | def test_multiple_registrations_are_idempotent(self, memori_instance, ... method test_registration_preserves_original_methods (line 62) | def test_registration_preserves_original_methods( class TestSyncChatCompletions (line 72) | class TestSyncChatCompletions: method test_sync_chat_completion_returns_response (line 75) | def test_sync_chat_completion_returns_response(self, registered_xai_cl... method test_sync_chat_completion_response_structure (line 89) | def test_sync_chat_completion_response_structure(self, registered_xai_... method test_sync_chat_completion_with_system_message (line 110) | def test_sync_chat_completion_with_system_message(self, registered_xai... method test_sync_chat_completion_multi_turn (line 125) | def test_sync_chat_completion_multi_turn(self, registered_xai_client): class TestAsyncChatCompletions (line 141) | class TestAsyncChatCompletions: method test_async_chat_completion_returns_response (line 145) | async def test_async_chat_completion_returns_response( method test_async_chat_completion_response_structure (line 162) | async def test_async_chat_completion_response_structure( method test_async_chat_completion_with_system_message (line 183) | async def test_async_chat_completion_with_system_message( class TestSyncStreaming (line 199) | class TestSyncStreaming: method test_sync_streaming_returns_chunks (line 202) | def test_sync_streaming_returns_chunks(self, registered_xai_client): method test_sync_streaming_assembles_content (line 216) | def test_sync_streaming_assembles_content(self, registered_xai_client): method test_sync_streaming_chunk_structure (line 234) | def test_sync_streaming_chunk_structure(self, registered_xai_client): class TestAsyncStreaming (line 248) | class TestAsyncStreaming: method test_async_streaming_returns_chunks (line 252) | async def test_async_streaming_returns_chunks(self, registered_async_x... method test_async_streaming_assembles_content (line 269) | async def test_async_streaming_assembles_content(self, registered_asyn... method test_async_streaming_chunk_structure (line 288) | async def test_async_streaming_chunk_structure(self, registered_async_... method test_async_streaming_with_usage_info (line 304) | async def test_async_streaming_with_usage_info(self, registered_async_... class TestErrorHandling (line 320) | class TestErrorHandling: method test_invalid_api_key_raises_error (line 322) | def test_invalid_api_key_raises_error(self, memori_instance): method test_invalid_model_raises_error (line 335) | def test_invalid_model_raises_error(self, registered_xai_client): method test_async_invalid_api_key_raises_error (line 345) | async def test_async_invalid_api_key_raises_error(self, memori_instance): class TestResponseFormatValidation (line 357) | class TestResponseFormatValidation: method test_response_contains_usage_metadata (line 360) | def test_response_contains_usage_metadata(self, registered_xai_client): method test_response_model_matches_request (line 374) | def test_response_model_matches_request(self, registered_xai_client): method test_response_finish_reason_is_valid (line 385) | def test_response_finish_reason_is_valid(self, registered_xai_client): method test_async_response_contains_usage_metadata (line 404) | async def test_async_response_contains_usage_metadata( class TestMemoriIntegration (line 418) | class TestMemoriIntegration: method test_memori_wrapper_does_not_modify_response_type (line 421) | def test_memori_wrapper_does_not_modify_response_type( method test_config_captures_provider_info (line 446) | def test_config_captures_provider_info(self, memori_instance, xai_api_... method test_attribution_is_preserved_across_calls (line 454) | def test_attribution_is_preserved_across_calls( class TestStorageVerification (line 478) | class TestStorageVerification: method test_conversation_stored_after_sync_call (line 481) | def test_conversation_stored_after_sync_call( method test_messages_stored_with_content (line 501) | def test_messages_stored_with_content(self, registered_xai_client, mem... method test_conversation_stored_after_async_call (line 530) | async def test_conversation_stored_after_async_call( method test_multiple_calls_accumulate_messages (line 549) | def test_multiple_calls_accumulate_messages( FILE: tests/integration/test_aa_payload.py class TestSyncAAIntegration (line 17) | class TestSyncAAIntegration: method test_sync_call_triggers_aa_pipeline (line 20) | def test_sync_call_triggers_aa_pipeline(self, memori_instance, openai_... method test_sync_streaming_triggers_aa_pipeline (line 42) | def test_sync_streaming_triggers_aa_pipeline(self, memori_instance, op... method test_multi_turn_conversation_triggers_aa (line 69) | def test_multi_turn_conversation_triggers_aa(self, memori_instance, op... class TestAsyncAAIntegration (line 100) | class TestAsyncAAIntegration: method test_async_call_triggers_aa_pipeline (line 104) | async def test_async_call_triggers_aa_pipeline( method test_async_streaming_triggers_aa_pipeline (line 130) | async def test_async_streaming_triggers_aa_pipeline( class TestAAEdgeCases (line 159) | class TestAAEdgeCases: method test_no_aa_without_attribution (line 162) | def test_no_aa_without_attribution(self, memori_instance, openai_api_k... method test_aa_with_entity_only (line 181) | def test_aa_with_entity_only(self, memori_instance, openai_api_key): method test_multiple_calls_same_session (line 201) | def test_multiple_calls_same_session(self, memori_instance, openai_api... class TestTestModeConfiguration (line 221) | class TestTestModeConfiguration: method test_memori_test_mode_is_enabled (line 222) | def test_memori_test_mode_is_enabled(self): method test_memori_instance_in_test_mode (line 227) | def test_memori_instance_in_test_mode(self, memori_instance): FILE: tests/llm/adapters/anthropic/test_llm_adapters_anthropic_adapter.py function test_get_formatted_query (line 4) | def test_get_formatted_query(): function test_get_formatted_response_unstreamed (line 22) | def test_get_formatted_response_unstreamed(): function test_get_formatted_query_with_injected_messages (line 44) | def test_get_formatted_query_with_injected_messages(): FILE: tests/llm/adapters/bedrock/test_llm_adapters_bedrock_adapter.py function test_get_formatted_query (line 4) | def test_get_formatted_query(): function test_get_formatted_response_streamed (line 24) | def test_get_formatted_response_streamed(): function test_get_formatted_query_with_injected_messages (line 41) | def test_get_formatted_query_with_injected_messages(): FILE: tests/llm/adapters/google/test_llm_adapters_google_adapter.py function test_get_formatted_query (line 4) | def test_get_formatted_query(): function test_get_formatted_response_streamed (line 22) | def test_get_formatted_response_streamed(): function test_get_formatted_response_unstreamed (line 51) | def test_get_formatted_response_unstreamed(): function test_get_formatted_query_with_injected_messages (line 72) | def test_get_formatted_query_with_injected_messages(): FILE: tests/llm/adapters/openai/test_llm_adapters_openai_adapter.py class MockEvent (line 12) | class MockEvent: method __init__ (line 13) | def __init__(self, event_type: str, response=None): class MockResponse (line 19) | class MockResponse: method __init__ (line 20) | def __init__(self, output_text: str): method model_dump (line 29) | def model_dump(self): class MockResponsesResponse (line 33) | class MockResponsesResponse: method __init__ (line 34) | def __init__(self): method model_dump (line 38) | def model_dump(self): function test_get_formatted_query (line 42) | def test_get_formatted_query(): function test_get_formatted_response_streamed (line 60) | def test_get_formatted_response_streamed(): function test_get_formatted_response_unstreamed (line 89) | def test_get_formatted_response_unstreamed(): function test_get_formatted_query_with_injected_messages (line 111) | def test_get_formatted_query_with_injected_messages(): function test_responses_get_formatted_query_string_input (line 132) | def test_responses_get_formatted_query_string_input(): function test_responses_get_formatted_query_list_input (line 147) | def test_responses_get_formatted_query_list_input(): function test_responses_get_formatted_query_strips_memori_context (line 164) | def test_responses_get_formatted_query_strips_memori_context(): function test_responses_get_formatted_query_with_injected_messages (line 178) | def test_responses_get_formatted_query_with_injected_messages(): function test_responses_get_formatted_response_with_output_message (line 196) | def test_responses_get_formatted_response_with_output_message(): function test_responses_get_formatted_response_fallback_to_output_text (line 215) | def test_responses_get_formatted_response_fallback_to_output_text(): function test_iterator_iter_returns_self (line 227) | def test_iterator_iter_returns_self(): function test_iterator_yields_all_events (line 234) | def test_iterator_yields_all_events(mock_memory_manager): function test_iterator_captures_response_on_completed_event (line 255) | def test_iterator_captures_response_on_completed_event(mock_memory_manag... function test_async_iterator_aiter_returns_self (line 273) | def test_async_iterator_aiter_returns_self(): function test_async_iterator_yields_all_events (line 283) | async def test_async_iterator_yields_all_events(mock_memory_manager): function test_async_iterator_raises_runtime_error_if_not_initialized (line 312) | async def test_async_iterator_raises_runtime_error_if_not_initialized(): function test_extract_user_query_from_string_input (line 319) | def test_extract_user_query_from_string_input(): function test_extract_user_query_from_list_input (line 325) | def test_extract_user_query_from_list_input(): function test_extract_user_query_from_missing_input (line 337) | def test_extract_user_query_from_missing_input(): function test_inject_recalled_facts_returns_kwargs_when_no_storage (line 343) | def test_inject_recalled_facts_returns_kwargs_when_no_storage(): function test_inject_recalled_facts_appends_facts_to_instructions (line 351) | def test_inject_recalled_facts_appends_facts_to_instructions(): function test_inject_conversation_messages_returns_kwargs_when_no_conversation_id (line 373) | def test_inject_conversation_messages_returns_kwargs_when_no_conversatio... function test_inject_conversation_messages_converts_string_input_to_list (line 381) | def test_inject_conversation_messages_converts_string_input_to_list(): function test_invoke_calls_method (line 399) | def test_invoke_calls_method(): function test_async_invoke_calls_method (line 415) | async def test_async_invoke_calls_method(): FILE: tests/llm/adapters/xai/test_llm_adapters_xai_adapter.py function test_get_formatted_query_empty_payload (line 4) | def test_get_formatted_query_empty_payload(): function test_get_formatted_query_missing_messages (line 8) | def test_get_formatted_query_missing_messages(): function test_get_formatted_query_with_user_message (line 12) | def test_get_formatted_query_with_user_message(): function test_get_formatted_query_with_assistant_message (line 29) | def test_get_formatted_query_with_assistant_message(): function test_get_formatted_query_with_system_message (line 46) | def test_get_formatted_query_with_system_message(): function test_get_formatted_query_with_multiple_messages (line 63) | def test_get_formatted_query_with_multiple_messages(): function test_get_formatted_query_with_multiple_content_parts (line 92) | def test_get_formatted_query_with_multiple_content_parts(): function test_get_formatted_query_with_missing_role (line 113) | def test_get_formatted_query_with_missing_role(): function test_get_formatted_query_with_unknown_role (line 132) | def test_get_formatted_query_with_unknown_role(): function test_get_formatted_query_with_empty_content (line 152) | def test_get_formatted_query_with_empty_content(): function test_get_formatted_query_with_content_without_text (line 172) | def test_get_formatted_query_with_content_without_text(): function test_get_formatted_query_with_injected_messages (line 192) | def test_get_formatted_query_with_injected_messages(): function test_get_formatted_response_empty_payload (line 225) | def test_get_formatted_response_empty_payload(): function test_get_formatted_response_missing_response (line 229) | def test_get_formatted_response_missing_response(): function test_get_formatted_response_with_string_content (line 233) | def test_get_formatted_response_with_string_content(): function test_get_formatted_response_with_list_of_dicts (line 246) | def test_get_formatted_response_with_list_of_dicts(): function test_get_formatted_response_with_list_of_strings (line 265) | def test_get_formatted_response_with_list_of_strings(): function test_get_formatted_response_with_mixed_list (line 281) | def test_get_formatted_response_with_mixed_list(): function test_get_formatted_response_with_missing_role (line 302) | def test_get_formatted_response_with_missing_role(): function test_get_formatted_response_with_missing_content (line 317) | def test_get_formatted_response_with_missing_content(): function test_get_formatted_response_with_dict_without_text (line 332) | def test_get_formatted_response_with_dict_without_text(): FILE: tests/llm/clients/oss/agno/anthropic_async.py function main (line 18) | async def main(): FILE: tests/llm/clients/oss/agno/gemini_async.py function main (line 18) | async def main(): FILE: tests/llm/clients/oss/agno/openai_async.py function main (line 18) | async def main(): FILE: tests/llm/clients/oss/agno/xai_async.py function main (line 18) | async def main(): FILE: tests/llm/clients/oss/anthropic/async.py function run (line 17) | async def run(): FILE: tests/llm/clients/oss/gemini/async.py function main (line 17) | async def main(): FILE: tests/llm/clients/oss/gemini/async_streaming.py function main (line 17) | async def main(): FILE: tests/llm/clients/oss/langchain/chatbedrock/async_runnable.py function main (line 19) | async def main(): FILE: tests/llm/clients/oss/langchain/chatgooglegenai/async_runnable.py function main (line 19) | async def main(): FILE: tests/llm/clients/oss/langchain/chatgooglegenai/async_streaming.py function main (line 18) | async def main(): FILE: tests/llm/clients/oss/langchain/chatgooglegenai/sync_runnable_structured_output.py class Color (line 18) | class Color(BaseModel): class Order (line 22) | class Order(BaseModel): FILE: tests/llm/clients/oss/langchain/chatopenai/async_ainvoke.py function run (line 18) | async def run(): FILE: tests/llm/clients/oss/langchain/chatopenai/async_runnable.py function main (line 19) | async def main(): FILE: tests/llm/clients/oss/langchain/chatopenai/async_streaming.py function main (line 18) | async def main(): FILE: tests/llm/clients/oss/langchain/chatopenai/sync_runnable_structured_output.py class Color (line 18) | class Color(BaseModel): class Order (line 22) | class Order(BaseModel): FILE: tests/llm/clients/oss/openai/async.py function run (line 24) | async def run(db_backend: str = "default"): FILE: tests/llm/clients/oss/openai/async_streaming.py function run (line 17) | async def run(): FILE: tests/llm/clients/oss/xai/async.py function run (line 26) | async def run(db_backend: str = "default"): FILE: tests/llm/clients/oss/xai/async_stream.py function run (line 26) | async def run(db_backend: str = "default"): FILE: tests/llm/providers/azure_openai/test_azure_openai.py function config (line 16) | def config(): function openai_handler (line 21) | def openai_handler(config): class TestAzureOpenAIModuleDetection (line 25) | class TestAzureOpenAIModuleDetection: method test_openai_module_path (line 28) | def test_openai_module_path(self): method test_azure_openai_module_path (line 34) | def test_azure_openai_module_path(self): method test_azure_openai_startswith_openai (line 40) | def test_azure_openai_startswith_openai(self): method test_openai_startswith_openai (line 46) | def test_openai_startswith_openai(self): class TestAzureOpenAIInheritance (line 53) | class TestAzureOpenAIInheritance: method test_azure_openai_is_subclass_of_openai (line 56) | def test_azure_openai_is_subclass_of_openai(self): method test_azure_openai_has_chat_attribute (line 62) | def test_azure_openai_has_chat_attribute(self): method test_azure_openai_has_beta_attribute (line 68) | def test_azure_openai_has_beta_attribute(self): class TestAzureOpenAIRegistryDetection (line 75) | class TestAzureOpenAIRegistryDetection: method test_registry_detects_openai_client (line 78) | def test_registry_detects_openai_client(self): method test_registry_detects_azure_openai_client (line 85) | def test_registry_detects_azure_openai_client(self): method test_registry_does_not_detect_anthropic (line 92) | def test_registry_does_not_detect_anthropic(self): method test_registry_does_not_detect_langchain_openai (line 98) | def test_registry_does_not_detect_langchain_openai(self): class TestAzureOpenAIClientRegistration (line 105) | class TestAzureOpenAIClientRegistration: method test_openai_handler_registers_openai_client (line 108) | def test_openai_handler_registers_openai_client(self, openai_handler, ... method test_openai_handler_registers_azure_openai_client (line 124) | def test_openai_handler_registers_azure_openai_client(self, openai_han... method test_openai_handler_wraps_chat_completions_create (line 145) | def test_openai_handler_wraps_chat_completions_create(self, openai_han... method test_openai_handler_wraps_beta_parse (line 159) | def test_openai_handler_wraps_beta_parse(self, openai_handler, mocker): class TestAzureOpenAINoFalsePositives (line 174) | class TestAzureOpenAINoFalsePositives: method test_anthropic_not_matched (line 177) | def test_anthropic_not_matched(self): method test_google_not_matched (line 181) | def test_google_not_matched(self): method test_langchain_openai_not_matched (line 185) | def test_langchain_openai_not_matched(self): method test_pydantic_ai_not_matched (line 189) | def test_pydantic_ai_not_matched(self): method test_xai_not_matched (line 193) | def test_xai_not_matched(self): method test_openai_submodules_matched (line 197) | def test_openai_submodules_matched(self): FILE: tests/llm/providers/google_genai/test_google_genai.py function config (line 16) | def config(): class MockGoogleGenaiPart (line 20) | class MockGoogleGenaiPart: method __init__ (line 23) | def __init__(self, text): class MockGoogleGenaiContent (line 27) | class MockGoogleGenaiContent: method __init__ (line 30) | def __init__(self, parts, role="model"): class MockGoogleGenaiCandidate (line 35) | class MockGoogleGenaiCandidate: method __init__ (line 38) | def __init__(self, content): class MockGoogleGenaiResponse (line 42) | class MockGoogleGenaiResponse: method __init__ (line 45) | def __init__(self, text, role="model"): class MockGoogleGenaiChunk (line 52) | class MockGoogleGenaiChunk: method __init__ (line 55) | def __init__(self, text, role="model"): class TestGoogleGenaiFormatDetection (line 62) | class TestGoogleGenaiFormatDetection: method test_response_has_no_pb_attribute (line 65) | def test_response_has_no_pb_attribute(self): method test_response_has_candidates_attribute (line 71) | def test_response_has_candidates_attribute(self): method test_chunk_has_no_pb_attribute (line 77) | def test_chunk_has_no_pb_attribute(self): method test_chunk_has_candidates_attribute (line 83) | def test_chunk_has_candidates_attribute(self): class TestGoogleGenaiNonStreamingFormat (line 89) | class TestGoogleGenaiNonStreamingFormat: method test_format_response_with_google_genai_format (line 92) | def test_format_response_with_google_genai_format(self, config): method test_format_response_with_empty_candidates (line 109) | def test_format_response_with_empty_candidates(self, config): method test_format_response_preserves_role (line 121) | def test_format_response_preserves_role(self, config): class TestGoogleGenaiStreamingFormat (line 132) | class TestGoogleGenaiStreamingFormat: method test_process_chunk_with_google_genai_format (line 135) | def test_process_chunk_with_google_genai_format(self, config): method test_process_multiple_chunks (line 154) | def test_process_multiple_chunks(self, config): method test_process_chunk_preserves_role (line 186) | def test_process_chunk_preserves_role(self, config): class TestGoogleGenaiBackwardsCompatibility (line 201) | class TestGoogleGenaiBackwardsCompatibility: method test_format_response_with_pb_format (line 204) | def test_format_response_with_pb_format(self, config): method test_non_protobuf_response_unchanged (line 219) | def test_non_protobuf_response_unchanged(self, config): FILE: tests/llm/test_llm_base.py function test_dict_to_json_dict (line 13) | def test_dict_to_json_dict(): function test_dist_to_json_dict_has_dict (line 20) | def test_dist_to_json_dict_has_dict(): function test_configure_for_streaming_usage_openai (line 26) | def test_configure_for_streaming_usage_openai(): function test_configure_for_streaming_usage_streaming_options_is_not_dict_openai (line 45) | def test_configure_for_streaming_usage_streaming_options_is_not_dict_ope... function test_configure_for_streaming_usage_only_if_stream_is_true_openai (line 58) | def test_configure_for_streaming_usage_only_if_stream_is_true_openai(): function test_configure_for_streaming_usage_langchain_openai (line 65) | def test_configure_for_streaming_usage_langchain_openai(): function test_configure_for_streaming_usage_streaming_opts_is_not_dict_langchain_openai (line 85) | def test_configure_for_streaming_usage_streaming_opts_is_not_dict_langch... function test_configure_for_streaming_usage_only_if_stream_is_true_langchain_openai (line 99) | def test_configure_for_streaming_usage_only_if_stream_is_true_langchain_... function test_get_response_content (line 107) | def test_get_response_content(): function test_exclude_injected_messages (line 123) | def test_exclude_injected_messages(): function test_handle_post_response_without_augmentation (line 146) | def test_handle_post_response_without_augmentation(): function test_handle_post_response_with_augmentation_no_conversation (line 170) | def test_handle_post_response_with_augmentation_no_conversation(): function test_handle_post_response_with_augmentation_and_conversation (line 202) | def test_handle_post_response_with_augmentation_and_conversation(): function test_extract_user_query_with_user_message (line 235) | def test_extract_user_query_with_user_message(): function test_extract_user_query_with_multiple_user_messages (line 246) | def test_extract_user_query_with_multiple_user_messages(): function test_extract_user_query_no_messages (line 258) | def test_extract_user_query_no_messages(): function test_extract_user_query_no_user_messages (line 264) | def test_extract_user_query_no_user_messages(): function test_extract_user_query_google_contents_string (line 275) | def test_extract_user_query_google_contents_string(): function test_extract_user_query_google_contents_list_of_strings (line 281) | def test_extract_user_query_google_contents_list_of_strings(): function test_extract_user_query_google_contents_list_of_dicts (line 287) | def test_extract_user_query_google_contents_list_of_dicts(): function test_extract_user_query_google_contents_with_string_parts (line 299) | def test_extract_user_query_google_contents_with_string_parts(): function test_extract_user_query_google_contents_empty (line 309) | def test_extract_user_query_google_contents_empty(): function test_extract_text_from_parts_with_strings (line 315) | def test_extract_text_from_parts_with_strings(): function test_extract_text_from_parts_with_dicts (line 321) | def test_extract_text_from_parts_with_dicts(): function test_extract_text_from_parts_mixed (line 327) | def test_extract_text_from_parts_mixed(): function test_extract_text_from_parts_empty (line 333) | def test_extract_text_from_parts_empty(): function test_extract_from_contents_string (line 338) | def test_extract_from_contents_string(): function test_extract_from_contents_list_strings (line 343) | def test_extract_from_contents_list_strings(): function test_extract_from_contents_list_dicts (line 348) | def test_extract_from_contents_list_dicts(): function test_inject_recalled_facts_no_storage (line 356) | def test_inject_recalled_facts_no_storage(): function test_inject_recalled_facts_no_entity_id (line 367) | def test_inject_recalled_facts_no_entity_id(): function test_inject_recalled_facts_no_user_query (line 379) | def test_inject_recalled_facts_no_user_query(): function test_inject_recalled_facts_no_facts_found (line 393) | def test_inject_recalled_facts_no_facts_found(): function test_inject_recalled_facts_no_relevant_facts (line 411) | def test_inject_recalled_facts_no_relevant_facts(): function test_inject_recalled_facts_success (line 431) | def test_inject_recalled_facts_success(): function test_inject_recalled_facts_filters_by_relevance (line 467) | def test_inject_recalled_facts_filters_by_relevance(): function test_inject_recalled_facts_extends_existing_system_message (line 489) | def test_inject_recalled_facts_extends_existing_system_message(): function test_inject_recalled_facts_creates_system_message_when_none_exists (line 520) | def test_inject_recalled_facts_creates_system_message_when_none_exists(): function test_inject_recalled_facts_google_creates_config (line 545) | def test_inject_recalled_facts_google_creates_config(): function test_inject_recalled_facts_google_extends_existing_config (line 568) | def test_inject_recalled_facts_google_extends_existing_config(): function test_inject_recalled_facts_google_with_contents_list (line 593) | def test_inject_recalled_facts_google_with_contents_list(): function test_append_to_google_system_instruction_dict_empty (line 620) | def test_append_to_google_system_instruction_dict_empty(): function test_append_to_google_system_instruction_dict_string (line 627) | def test_append_to_google_system_instruction_dict_string(): function test_append_to_google_system_instruction_dict_list_of_dicts (line 634) | def test_append_to_google_system_instruction_dict_list_of_dicts(): function test_append_to_google_system_instruction_dict_list_of_strings (line 641) | def test_append_to_google_system_instruction_dict_list_of_strings(): function test_append_to_list_empty (line 648) | def test_append_to_list_empty(): function test_append_to_list_dict_with_text (line 655) | def test_append_to_list_dict_with_text(): function test_append_to_list_strings (line 663) | def test_append_to_list_strings(): function test_append_to_content_dict_with_parts (line 671) | def test_append_to_content_dict_with_parts(): function test_append_to_content_dict_with_text (line 679) | def test_append_to_content_dict_with_text(): function test_inject_conversation_messages_no_conversation_id (line 687) | def test_inject_conversation_messages_no_conversation_id(): function test_inject_conversation_messages_no_storage (line 698) | def test_inject_conversation_messages_no_storage(): function test_inject_conversation_messages_no_messages (line 710) | def test_inject_conversation_messages_no_messages(): function test_inject_conversation_messages_openai_success (line 725) | def test_inject_conversation_messages_openai_success(): function test_inject_conversation_messages_cache_miss_loads_from_session (line 747) | def test_inject_conversation_messages_cache_miss_loads_from_session(mock... function test_inject_conversation_messages_cloud_fetches_from_cloud (line 781) | def test_inject_conversation_messages_cloud_fetches_from_cloud(mocker): FILE: tests/llm/test_llm_clients.py function config (line 16) | def config(): function anthropic_client (line 21) | def anthropic_client(config): function google_client (line 26) | def google_client(config): function openai_client (line 31) | def openai_client(config): function pydantic_client (line 36) | def pydantic_client(config): function langchain_client (line 41) | def langchain_client(config): function xai_client (line 46) | def xai_client(config): function agno_client (line 51) | def agno_client(config): function test_anthropic_register_adds_memori_wrappers_sync (line 55) | def test_anthropic_register_adds_memori_wrappers_sync(anthropic_client, ... function test_anthropic_register_wraps_real_client_and_injects_recall (line 73) | def test_anthropic_register_wraps_real_client_and_injects_recall(config,... function test_anthropic_register_adds_memori_wrappers_async (line 122) | async def test_anthropic_register_adds_memori_wrappers_async(anthropic_c... function test_anthropic_register_skips_if_already_installed (line 136) | def test_anthropic_register_skips_if_already_installed(anthropic_client,... function test_anthropic_register_raises_without_messages_attr (line 148) | def test_anthropic_register_raises_without_messages_attr(anthropic_clien... function test_google_register_adds_memori_wrappers (line 155) | def test_google_register_adds_memori_wrappers(google_client, mocker): function test_google_register_wraps_real_google_genai_client_and_injects_recall (line 169) | def test_google_register_wraps_real_google_genai_client_and_injects_recall( function test_google_register_skips_if_already_installed (line 219) | def test_google_register_skips_if_already_installed(google_client, mocker): function test_google_register_raises_without_models_attr (line 231) | def test_google_register_raises_without_models_attr(google_client, mocker): function test_openai_register_adds_memori_wrappers_sync (line 238) | def test_openai_register_adds_memori_wrappers_sync(openai_client, mocker): function test_openai_register_wraps_real_client_and_injects_recall (line 256) | def test_openai_register_wraps_real_client_and_injects_recall(config, mo... function test_openai_register_with_streaming_sync (line 307) | def test_openai_register_with_streaming_sync(openai_client, mocker): function test_openai_register_adds_memori_wrappers_async (line 323) | async def test_openai_register_adds_memori_wrappers_async(openai_client,... function test_openai_register_with_streaming_async (line 337) | async def test_openai_register_with_streaming_async(openai_client, mocker): function test_openai_register_skips_if_already_installed (line 350) | def test_openai_register_skips_if_already_installed(openai_client, mocker): function test_openai_register_raises_without_chat_attr (line 362) | def test_openai_register_raises_without_chat_attr(openai_client, mocker): function test_pydantic_ai_register_adds_memori_wrappers (line 369) | def test_pydantic_ai_register_adds_memori_wrappers(pydantic_client, mock... function test_pydantic_ai_register_skips_if_already_installed (line 383) | def test_pydantic_ai_register_skips_if_already_installed(pydantic_client... function test_pydantic_ai_register_raises_without_chat_attr (line 395) | def test_pydantic_ai_register_raises_without_chat_attr(pydantic_client, ... function test_langchain_register_without_any_client_raises (line 402) | def test_langchain_register_without_any_client_raises(langchain_client): function test_langchain_register_chatbedrock (line 407) | def test_langchain_register_chatbedrock(langchain_client, mocker): function test_langchain_register_chatgooglegenai (line 421) | def test_langchain_register_chatgooglegenai(langchain_client, mocker): function test_langchain_register_chatgooglegenai_with_async_client (line 434) | def test_langchain_register_chatgooglegenai_with_async_client(langchain_... function test_langchain_register_chatgooglegenai_new_sdk (line 446) | def test_langchain_register_chatgooglegenai_new_sdk(langchain_client, mo... function test_langchain_register_chatgooglegenai_new_sdk_with_async (line 465) | def test_langchain_register_chatgooglegenai_new_sdk_with_async( function test_langchain_register_chatopenai (line 490) | def test_langchain_register_chatopenai(langchain_client, mocker): function test_langchain_register_chatvertexai (line 517) | def test_langchain_register_chatvertexai(langchain_client, mocker): function test_langchain_register_chatbedrock_raises_without_client_attr (line 529) | def test_langchain_register_chatbedrock_raises_without_client_attr( function test_langchain_register_chatgooglegenai_raises_without_client_attr (line 538) | def test_langchain_register_chatgooglegenai_raises_without_client_attr( function test_langchain_register_chatopenai_raises_without_client_attrs (line 547) | def test_langchain_register_chatopenai_raises_without_client_attrs( function test_langchain_register_chatvertexai_raises_without_prediction_client (line 556) | def test_langchain_register_chatvertexai_raises_without_prediction_client( function test_xai_register_adds_memori_wrappers (line 565) | def test_xai_register_adds_memori_wrappers(xai_client, mocker): function test_xai_register_skips_if_already_installed (line 579) | def test_xai_register_skips_if_already_installed(xai_client, mocker): function test_xai_register_raises_without_chat_attr (line 591) | def test_xai_register_raises_without_chat_attr(xai_client, mocker): function test_agno_register_openai_chat_sync (line 598) | def test_agno_register_openai_chat_sync(agno_client, mocker): function test_agno_register_openai_chat_async (line 621) | async def test_agno_register_openai_chat_async(agno_client, mocker): function test_agno_register_claude_sync (line 639) | def test_agno_register_claude_sync(agno_client, mocker): function test_agno_register_gemini_sync (line 661) | def test_agno_register_gemini_sync(agno_client, mocker): function test_agno_register_gemini_async (line 683) | async def test_agno_register_gemini_async(agno_client, mocker): function test_agno_register_skips_if_already_installed (line 701) | def test_agno_register_skips_if_already_installed(agno_client, mocker): function test_agno_register_raises_without_models (line 718) | def test_agno_register_raises_without_models(agno_client): function test_agno_register_raises_with_invalid_openai_model (line 723) | def test_agno_register_raises_with_invalid_openai_model(agno_client, moc... function test_agno_register_raises_with_invalid_gemini_model (line 733) | def test_agno_register_raises_with_invalid_gemini_model(agno_client, moc... function test_agno_register_xai_sync (line 741) | def test_agno_register_xai_sync(agno_client, mocker): function test_agno_register_xai_async (line 764) | async def test_agno_register_xai_async(agno_client, mocker): function test_agno_register_raises_with_invalid_xai_model (line 782) | def test_agno_register_raises_with_invalid_xai_model(agno_client, mocker): FILE: tests/llm/test_llm_deprecation_warnings.py function memori_instance (line 7) | def memori_instance(mocker): function test_openai_register_shows_deprecation_warning (line 17) | def test_openai_register_shows_deprecation_warning(memori_instance, mock... function test_anthropic_register_shows_deprecation_warning (line 34) | def test_anthropic_register_shows_deprecation_warning(memori_instance, m... function test_google_register_shows_deprecation_warning (line 52) | def test_google_register_shows_deprecation_warning(memori_instance, mock... function test_xai_register_shows_deprecation_warning (line 75) | def test_xai_register_shows_deprecation_warning(memori_instance, mocker): function test_pydantic_ai_register_shows_deprecation_warning (line 92) | def test_pydantic_ai_register_shows_deprecation_warning(memori_instance,... function test_langchain_register_shows_deprecation_warning (line 105) | def test_langchain_register_shows_deprecation_warning(memori_instance, m... function test_agno_register_shows_deprecation_warning (line 118) | def test_agno_register_shows_deprecation_warning(memori_instance, mocker): function test_llm_register_no_deprecation_warning (line 138) | def test_llm_register_no_deprecation_warning(memori_instance, mocker): FILE: tests/llm/test_llm_embeddings.py function test_format_embedding_for_db_mysql (line 22) | def test_format_embedding_for_db_mysql(): function test_format_embedding_for_db_postgresql (line 30) | def test_format_embedding_for_db_postgresql(): function test_format_embedding_for_db_cockroachdb (line 38) | def test_format_embedding_for_db_cockroachdb(): function test_format_embedding_for_db_sqlite (line 46) | def test_format_embedding_for_db_sqlite(): function test_format_embedding_for_db_mongodb (line 54) | def test_format_embedding_for_db_mongodb(mocker): function test_format_embedding_for_db_mongodb_no_bson (line 73) | def test_format_embedding_for_db_mongodb_no_bson(): function test_format_embedding_for_db_oceanbase_uses_pyobvector (line 84) | def test_format_embedding_for_db_oceanbase_uses_pyobvector(mocker): function test_format_embedding_for_db_unknown_dialect (line 100) | def test_format_embedding_for_db_unknown_dialect(): function test_format_embedding_for_db_high_dimensional (line 108) | def test_format_embedding_for_db_high_dimensional(): function test_get_model_caches_model (line 121) | def test_get_model_caches_model(): function test_get_model_different_models (line 137) | def test_get_model_different_models(): function test_embed_texts_single_string (line 153) | def test_embed_texts_single_string(): function test_embed_texts_list_of_strings (line 174) | def test_embed_texts_list_of_strings(): function test_embed_texts_empty_list (line 195) | def test_embed_texts_empty_list(): function test_embed_texts_empty_string (line 205) | def test_embed_texts_empty_string(): function test_embed_texts_filters_empty_strings (line 227) | def test_embed_texts_filters_empty_strings(): function test_embed_texts_chunks_long_text_and_pools (line 249) | def test_embed_texts_chunks_long_text_and_pools(mocker): function test_embed_texts_custom_model (line 280) | def test_embed_texts_custom_model(): function test_embed_texts_model_load_failure (line 294) | def test_embed_texts_model_load_failure(): function test_embed_texts_encode_failure (line 310) | def test_embed_texts_encode_failure(): function test_embed_texts_shape_error_retries_and_pools (line 326) | def test_embed_texts_shape_error_retries_and_pools(mocker): function test_embed_texts_encode_failure_with_dimension_error (line 348) | def test_embed_texts_encode_failure_with_dimension_error(): function test_embed_texts_model_load_runtime_error (line 367) | def test_embed_texts_model_load_runtime_error(): function test_embed_texts_model_load_value_error (line 381) | def test_embed_texts_model_load_value_error(): function test_embed_texts_async_single_string (line 396) | async def test_embed_texts_async_single_string(): function test_embed_texts_async_list (line 417) | async def test_embed_texts_async_list(): function test_embed_texts_async_custom_model (line 439) | async def test_embed_texts_async_custom_model(): function test_embed_texts_uses_tei_remote (line 454) | def test_embed_texts_uses_tei_remote(mocker): function test_embed_texts_tei_token_chunks_and_pools (line 477) | def test_embed_texts_tei_token_chunks_and_pools(mocker): FILE: tests/llm/test_llm_embeddings_bundled.py function test_get_model_downloads_from_huggingface (line 6) | def test_get_model_downloads_from_huggingface(): function test_get_model_caching (line 22) | def test_get_model_caching(): function test_get_model_different_models (line 38) | def test_get_model_different_models(): FILE: tests/llm/test_llm_provider_sdk_version.py function config (line 8) | def config(): function anthropic_client (line 13) | def anthropic_client(config): function google_client (line 18) | def google_client(config): function openai_client (line 23) | def openai_client(config): function xai_client (line 28) | def xai_client(config): function test_anthropic_captures_provider_sdk_version (line 32) | def test_anthropic_captures_provider_sdk_version(anthropic_client, mocker): function test_anthropic_handles_missing_version_gracefully (line 49) | def test_anthropic_handles_missing_version_gracefully(anthropic_client, ... function test_google_captures_provider_sdk_version (line 66) | def test_google_captures_provider_sdk_version(google_client, mocker): function test_google_falls_back_to_importlib_metadata (line 88) | def test_google_falls_back_to_importlib_metadata(google_client, mocker): function test_google_handles_missing_version_gracefully (line 113) | def test_google_handles_missing_version_gracefully(google_client, mocker): function test_openai_captures_provider_sdk_version_from_client (line 136) | def test_openai_captures_provider_sdk_version_from_client(openai_client,... function test_xai_captures_provider_sdk_version (line 152) | def test_xai_captures_provider_sdk_version(xai_client, mocker): function test_xai_handles_missing_version_gracefully (line 168) | def test_xai_handles_missing_version_gracefully(xai_client, mocker): function test_xai_with_completions_captures_provider_sdk_version (line 184) | def test_xai_with_completions_captures_provider_sdk_version(xai_client, ... function test_openai_with_nebius_platform (line 202) | def test_openai_with_nebius_platform(openai_client, mocker): function test_nvidia_with_nim_platform (line 219) | def test_nvidia_with_nim_platform(openai_client, mocker): function test_deepseek_platform (line 236) | def test_deepseek_platform(openai_client, mocker): function test_provider_sdk_version_separate_from_model_version (line 253) | def test_provider_sdk_version_separate_from_model_version(openai_client,... FILE: tests/llm/test_llm_registry.py function test_llm_anthropic (line 18) | def test_llm_anthropic(): function test_llm_bedrock (line 24) | def test_llm_bedrock(): function test_llm_google (line 33) | def test_llm_google(): function test_llm_openai (line 37) | def test_llm_openai(): function test_llm_adapter_raises_for_none_provider (line 41) | def test_llm_adapter_raises_for_none_provider(): function test_llm_adapter_raises_for_unsupported_provider (line 48) | def test_llm_adapter_raises_for_unsupported_provider(): function test_llm_client_raises_for_unsupported_client_type (line 55) | def test_llm_client_raises_for_unsupported_client_type(): function test_llm_client_raises_helpful_error_for_langchain (line 68) | def test_llm_client_raises_helpful_error_for_langchain(): FILE: tests/llm/test_llm_utils.py function test_client_is_bedrock (line 31) | def test_client_is_bedrock(): function test_llm_is_anthropic (line 43) | def test_llm_is_anthropic(): function test_llm_is_bedrock (line 49) | def test_llm_is_bedrock(): function test_llm_is_google (line 59) | def test_llm_is_google(): function test_llm_is_openai (line 75) | def test_llm_is_openai(): function test_provider_is_langchain (line 85) | def test_provider_is_langchain(): function test_provider_is_agno (line 91) | def test_provider_is_agno(): function test_agno_is_openai (line 97) | def test_agno_is_openai(): function test_agno_is_anthropic (line 104) | def test_agno_is_anthropic(): function test_agno_is_google (line 113) | def test_agno_is_google(): function test_agno_is_xai (line 120) | def test_agno_is_xai(): FILE: tests/llm/test_llm_xai_wrappers.py function config (line 10) | def config(): function xai_wrappers (line 15) | def xai_wrappers(config): function test_inject_conversation_history_no_conversation_id (line 19) | def test_inject_conversation_history_no_conversation_id(xai_wrappers): function test_inject_conversation_history_cache_miss_loads_from_session (line 25) | def test_inject_conversation_history_cache_miss_loads_from_session( function test_inject_conversation_history_empty_messages (line 58) | def test_inject_conversation_history_empty_messages(xai_wrappers, config... function test_inject_conversation_history_with_user_messages (line 73) | def test_inject_conversation_history_with_user_messages(xai_wrappers, co... function test_inject_conversation_history_with_assistant_messages (line 96) | def test_inject_conversation_history_with_assistant_messages( function test_inject_conversation_history_with_multiple_messages (line 121) | def test_inject_conversation_history_with_multiple_messages( function test_inject_conversation_history_ignores_unknown_roles (line 149) | def test_inject_conversation_history_ignores_unknown_roles( function test_wrap_chat_methods_already_installed (line 173) | def test_wrap_chat_methods_already_installed(xai_wrappers): function test_wrap_chat_methods_sync (line 183) | def test_wrap_chat_methods_sync(xai_wrappers): function test_wrap_chat_methods_async (line 195) | def test_wrap_chat_methods_async(xai_wrappers): function test_wrap_chat_methods_with_stream (line 207) | def test_wrap_chat_methods_with_stream(xai_wrappers): function test_normalize_role_assistant (line 219) | def test_normalize_role_assistant(xai_wrappers): function test_normalize_role_user (line 226) | def test_normalize_role_user(xai_wrappers): function test_normalize_role_system (line 233) | def test_normalize_role_system(xai_wrappers): function test_normalize_role_unknown (line 240) | def test_normalize_role_unknown(xai_wrappers): function test_normalize_role_without_name_attr (line 247) | def test_normalize_role_without_name_attr(xai_wrappers): function test_build_payload (line 257) | def test_build_payload(xai_wrappers, config): function test_create_sync_sample_wrapper (line 280) | def test_create_sync_sample_wrapper(xai_wrappers, mocker): function test_create_async_sample_wrapper (line 299) | async def test_create_async_sample_wrapper(xai_wrappers, mocker): function test_create_stream_wrapper_with_tuple_items (line 318) | async def test_create_stream_wrapper_with_tuple_items(xai_wrappers, mock... function test_create_stream_wrapper_with_content_items (line 347) | async def test_create_stream_wrapper_with_content_items(xai_wrappers, mo... function test_create_stream_wrapper_without_content (line 376) | async def test_create_stream_wrapper_without_content(xai_wrappers, mocker): FILE: tests/llm/unit_test_objects.py class UnitTestX (line 1) | class UnitTestX: method __init__ (line 2) | def __init__(self): class UnitTestY (line 7) | class UnitTestY: method __init__ (line 8) | def __init__(self): FILE: tests/memory/augmentation/test_aa_payload_unit.py class TestHashId (line 23) | class TestHashId: method test_hash_id_returns_64_chars (line 24) | def test_hash_id_returns_64_chars(self): method test_hash_id_returns_none_for_none (line 30) | def test_hash_id_returns_none_for_none(self): method test_hash_id_returns_none_for_empty_string (line 33) | def test_hash_id_returns_none_for_empty_string(self): method test_hash_id_is_deterministic (line 36) | def test_hash_id_is_deterministic(self): method test_hash_id_different_inputs_different_hashes (line 41) | def test_hash_id_different_inputs_different_hashes(self): class TestDataclassModels (line 47) | class TestDataclassModels: method test_conversation_data_structure (line 48) | def test_conversation_data_structure(self): method test_conversation_data_summary_optional (line 55) | def test_conversation_data_summary_optional(self): method test_entity_data_structure (line 59) | def test_entity_data_structure(self): method test_attribution_data_structure (line 64) | def test_attribution_data_structure(self): method test_meta_data_has_all_required_fields (line 72) | def test_meta_data_has_all_required_fields(self): method test_sdk_data_defaults_to_python (line 82) | def test_sdk_data_defaults_to_python(self): method test_storage_data_defaults (line 86) | def test_storage_data_defaults(self): class TestAugmentationPayloadToDict (line 92) | class TestAugmentationPayloadToDict: method test_payload_has_required_top_level_keys (line 93) | def test_payload_has_required_top_level_keys(self): method test_payload_conversation_structure (line 103) | def test_payload_conversation_structure(self): method test_payload_meta_has_all_required_keys (line 120) | def test_payload_meta_has_all_required_keys(self): method test_payload_attribution_structure (line 151) | def test_payload_attribution_structure(self): method test_payload_llm_structure (line 172) | def test_payload_llm_structure(self): method test_payload_sdk_structure (line 193) | def test_payload_sdk_structure(self): method test_payload_storage_structure (line 204) | def test_payload_storage_structure(self): class TestBuildApiPayload (line 216) | class TestBuildApiPayload: method mock_config (line 218) | def mock_config(self): method augmentation (line 230) | def augmentation(self, mock_config): method test_build_payload_returns_dict (line 238) | def test_build_payload_returns_dict(self, augmentation): method test_build_payload_has_required_keys (line 250) | def test_build_payload_has_required_keys(self, augmentation): method test_build_payload_hashes_entity_id (line 263) | def test_build_payload_hashes_entity_id(self, augmentation): method test_build_payload_hashes_process_id (line 278) | def test_build_payload_hashes_process_id(self, augmentation): method test_build_payload_includes_messages (line 293) | def test_build_payload_includes_messages(self, augmentation): method test_build_payload_includes_summary (line 311) | def test_build_payload_includes_summary(self, augmentation): method test_build_payload_includes_dialect (line 323) | def test_build_payload_includes_dialect(self, augmentation): method test_build_payload_includes_llm_provider (line 335) | def test_build_payload_includes_llm_provider(self, augmentation): method test_build_payload_includes_sdk_info (line 348) | def test_build_payload_includes_sdk_info(self, augmentation): method test_build_payload_includes_framework_provider (line 361) | def test_build_payload_includes_framework_provider(self, augmentation): method test_build_payload_none_entity_id (line 373) | def test_build_payload_none_entity_id(self, augmentation): method test_build_payload_none_process_id (line 385) | def test_build_payload_none_process_id(self, augmentation): class TestPayloadValidator (line 398) | class TestPayloadValidator: method validate_payload_structure (line 399) | def validate_payload_structure(self, payload: dict) -> list[str]: method test_valid_payload_passes_validation (line 473) | def test_valid_payload_passes_validation(self): method test_missing_conversation_fails_validation (line 501) | def test_missing_conversation_fails_validation(self): method test_missing_meta_fails_validation (line 506) | def test_missing_meta_fails_validation(self): method test_unhashed_entity_id_fails_validation (line 511) | def test_unhashed_entity_id_fails_validation(self): class TestProviderSpecificPayloads (line 531) | class TestProviderSpecificPayloads: method make_augmentation (line 533) | def make_augmentation(self): method test_openai_payload (line 552) | def test_openai_payload(self, make_augmentation): method test_anthropic_payload (line 567) | def test_anthropic_payload(self, make_augmentation): method test_google_payload (line 582) | def test_google_payload(self, make_augmentation): method test_bedrock_payload (line 596) | def test_bedrock_payload(self, make_augmentation): method test_xai_payload (line 612) | def test_xai_payload(self, make_augmentation): FILE: tests/memory/augmentation/test_advanced_augmentation.py function config (line 16) | def config(): function augmentation (line 26) | def augmentation(config): function driver (line 31) | def driver(): function augmentation_input (line 41) | def augmentation_input(): function test_process_with_summary_sends_only_last_user_assistant_pair (line 54) | async def test_process_with_summary_sends_only_last_user_assistant_pair( function test_process_without_summary_sends_full_message_history (line 90) | async def test_process_without_summary_sends_full_message_history( function test_process_no_entity_id (line 124) | async def test_process_no_entity_id(augmentation, driver): function test_process_no_conversation_id (line 140) | async def test_process_no_conversation_id(augmentation, driver): function test_build_api_payload_with_system_prompt (line 156) | async def test_build_api_payload_with_system_prompt(augmentation): function test_build_api_payload_without_system_prompt (line 177) | async def test_build_api_payload_without_system_prompt(augmentation): function test_build_api_payload_hashes_ids_consistently (line 198) | async def test_build_api_payload_hashes_ids_consistently(augmentation): function test_get_conversation_summary_success (line 228) | async def test_get_conversation_summary_success(augmentation, driver): function test_get_conversation_summary_no_summary (line 236) | async def test_get_conversation_summary_no_summary(augmentation, driver): function test_get_conversation_summary_exception (line 245) | async def test_get_conversation_summary_exception(augmentation, driver): function test_process_api_response_dict_to_memories (line 254) | async def test_process_api_response_dict_to_memories(augmentation): function test_process_api_response_triples_to_facts (line 275) | async def test_process_api_response_triples_to_facts(augmentation): function test_process_api_response_triples_prefers_content_field (line 309) | async def test_process_api_response_triples_prefers_content_field(augmen... function test_schedule_entity_writes (line 341) | async def test_schedule_entity_writes(augmentation, driver, augmentation... function test_schedule_entity_writes_with_semantic_triples (line 354) | async def test_schedule_entity_writes_with_semantic_triples( function test_schedule_process_writes (line 378) | async def test_schedule_process_writes(augmentation, driver, augmentatio... function test_schedule_conversation_writes (line 390) | async def test_schedule_conversation_writes(augmentation, augmentation_i... function test_schedule_writes_skips_if_no_data (line 403) | async def test_schedule_writes_skips_if_no_data( FILE: tests/memory/augmentation/test_base.py function test_base_augmentation_init_default (line 6) | def test_base_augmentation_init_default(): function test_base_augmentation_init_disabled (line 11) | def test_base_augmentation_init_disabled(): function test_base_augmentation_process_not_implemented (line 17) | async def test_base_augmentation_process_not_implemented(): FILE: tests/memory/augmentation/test_handler.py function test_handle_augmentation_cloud_posts_cloud_payload (line 13) | def test_handle_augmentation_cloud_posts_cloud_payload(mocker): function test_handle_augmentation_non_cloud_enqueues (line 72) | def test_handle_augmentation_non_cloud_enqueues(mocker): function test_handle_augmentation_cloud_logs_error_on_failed_post (line 105) | def test_handle_augmentation_cloud_logs_error_on_failed_post(mocker): function test_handle_augmentation_no_attribution_noops (line 140) | def test_handle_augmentation_no_attribution_noops(mocker): function test_handle_augmentation_cloud_without_executor_posts_inline (line 169) | def test_handle_augmentation_cloud_without_executor_posts_inline(mocker): FILE: tests/memory/augmentation/test_manager.py function test_augmentation_runtime_init (line 13) | def test_augmentation_runtime_init(): function test_manager_init (line 21) | def test_manager_init(): function test_manager_start_sets_max_workers (line 33) | def test_manager_start_sets_max_workers(): function test_manager_start_with_none_conn (line 45) | def test_manager_start_with_none_conn(): function test_manager_start_with_conn (line 56) | def test_manager_start_with_conn(): function test_manager_enqueue_inactive (line 68) | def test_manager_enqueue_inactive(): function test_manager_enqueue_no_conn_factory (line 82) | def test_manager_enqueue_no_conn_factory(): function test_runtime_ensure_started (line 97) | def test_runtime_ensure_started(): function test_manager_process_augmentations_no_augmentations (line 111) | async def test_manager_process_augmentations_no_augmentations(): function test_manager_wait_no_pending_futures (line 132) | def test_manager_wait_no_pending_futures(): function test_manager_wait_with_completed_futures (line 141) | def test_manager_wait_with_completed_futures(): function test_manager_wait_with_timeout (line 158) | def test_manager_wait_with_timeout(): function test_manager_wait_for_db_writer_queue (line 171) | def test_manager_wait_for_db_writer_queue(): FILE: tests/memory/augmentation/test_manager_quota.py function mock_conn_factory (line 15) | def mock_conn_factory(): function augmentation_input (line 20) | def augmentation_input(): function test_quota_error_prevents_subsequent_augmentations (line 30) | def test_quota_error_prevents_subsequent_augmentations( function test_quota_error_does_not_prevent_when_authenticated (line 70) | def test_quota_error_does_not_prevent_when_authenticated(): FILE: tests/memory/augmentation/test_models.py function test_conversation_data_with_summary (line 16) | def test_conversation_data_with_summary(): function test_conversation_data_without_summary (line 27) | def test_conversation_data_without_summary(): function test_model_data_structure (line 37) | def test_model_data_structure(): function test_meta_data_defaults (line 50) | def test_meta_data_defaults(): function test_augmentation_payload_to_dict (line 61) | def test_augmentation_payload_to_dict(): function test_augmentation_payload_with_none_values (line 101) | def test_augmentation_payload_with_none_values(): function test_sdk_data_default_lang (line 135) | def test_sdk_data_default_lang(): function test_storage_data_defaults (line 143) | def test_storage_data_defaults(): function test_hash_id_returns_sha256 (line 151) | def test_hash_id_returns_sha256(): function test_hash_id_is_consistent (line 160) | def test_hash_id_is_consistent(): function test_hash_id_different_inputs (line 170) | def test_hash_id_different_inputs(): function test_hash_id_none_input (line 178) | def test_hash_id_none_input(): function test_hash_id_empty_string (line 185) | def test_hash_id_empty_string(): function test_meta_data_with_hashed_ids (line 192) | def test_meta_data_with_hashed_ids(): function test_augmentation_payload_includes_hashed_ids (line 211) | def test_augmentation_payload_includes_hashed_ids(): FILE: tests/memory/augmentation/test_quota_propagation.py function test_quota_exceeded_error_propagates_for_anonymous_users (line 17) | async def test_quota_exceeded_error_propagates_for_anonymous_users(): function test_other_exceptions_caught_gracefully (line 51) | async def test_other_exceptions_caught_gracefully(): FILE: tests/memory/augmentation/test_registry.py function test_registry_register (line 5) | def test_registry_register(): function test_registry_augmentations (line 20) | def test_registry_augmentations(): FILE: tests/memory/test_conversation_messages.py function test_parse_payload_conversation_messages_stringifies (line 6) | def test_parse_payload_conversation_messages_stringifies(mocker): function test_parse_payload_conversation_messages_uses_registry_when_no_adapter (line 34) | def test_parse_payload_conversation_messages_uses_registry_when_no_adapt... function test_parse_payload_conversation_messages_passthrough_existing_messages (line 51) | def test_parse_payload_conversation_messages_passthrough_existing_messag... function test_parse_payload_conversation_messages_preserves_response_type (line 68) | def test_parse_payload_conversation_messages_preserves_response_type(moc... FILE: tests/memory/test_manager_enterprise_retry.py function test_manager_cloud_retries_until_201 (line 8) | def test_manager_cloud_retries_until_201(mocker): function test_manager_cloud_raises_after_exhausting_attempts (line 26) | def test_manager_cloud_raises_after_exhausting_attempts(mocker): FILE: tests/memory/test_memory_augmentation_db_writer.py class TestWriteTask (line 8) | class TestWriteTask: method test_write_task_execution (line 9) | def test_write_task_execution(self): class TestDbWriterRuntime (line 27) | class TestDbWriterRuntime: method test_enqueue_write_success (line 28) | def test_enqueue_write_success(self): method test_enqueue_write_full_queue (line 43) | def test_enqueue_write_full_queue(self): method test_drain_batches_opens_connection_only_when_work (line 59) | def test_drain_batches_opens_connection_only_when_work(self, mocker): FILE: tests/memory/test_memory_struct.py function test_conversation_configure_from_advanced_augmentation (line 4) | def test_conversation_configure_from_advanced_augmentation(): function test_entity_configure_from_advanced_augmentation (line 19) | def test_entity_configure_from_advanced_augmentation(): function test_process_configure_from_advanced_augmentation (line 51) | def test_process_configure_from_advanced_augmentation(): function test_memories_configure_from_advanced_augmentation (line 64) | def test_memories_configure_from_advanced_augmentation(): FILE: tests/memory/test_memory_struct_triples.py function test_entity_configure_with_triples_field (line 4) | def test_entity_configure_with_triples_field(): function test_entity_configure_with_both_semantic_triples_and_triples (line 29) | def test_entity_configure_with_both_semantic_triples_and_triples(): function test_entity_triples_generates_fact_text (line 58) | def test_entity_triples_generates_fact_text(): function test_entity_triples_prefers_content_field_for_fact_text (line 83) | def test_entity_triples_prefers_content_field_for_fact_text(): function test_entity_triples_with_existing_facts (line 103) | def test_entity_triples_with_existing_facts(): function test_entity_triples_with_missing_fields_skipped (line 125) | def test_entity_triples_with_missing_fields_skipped(): function test_entity_semantic_triples_only_not_added_to_facts (line 148) | def test_entity_semantic_triples_only_not_added_to_facts(): function test_entity_triples_empty_list (line 167) | def test_entity_triples_empty_list(): function test_entity_triples_type_normalization (line 174) | def test_entity_triples_type_normalization(): FILE: tests/memory/test_memory_writer.py function test_execute (line 4) | def test_execute(config, mocker): function test_execute_with_entity_and_process (line 31) | def test_execute_with_entity_and_process(config, mocker): function test_execute_includes_system_messages (line 64) | def test_execute_includes_system_messages(config, mocker): function test_execute_writes_response_type (line 90) | def test_execute_writes_response_type(config, mocker): function test_execute_multiple_turns_ingests_all_messages (line 105) | def test_execute_multiple_turns_ingests_all_messages(config, mocker): FILE: tests/memory/test_recall.py function test_recall_init (line 21) | def test_recall_init(): function test_search_facts_no_storage (line 27) | def test_search_facts_no_storage(): function test_search_facts_no_driver (line 37) | def test_search_facts_no_driver(): function test_search_facts_no_entity_id_in_config (line 48) | def test_search_facts_no_entity_id_in_config(): function test_search_facts_entity_create_returns_none (line 60) | def test_search_facts_entity_create_returns_none(): function test_search_facts_uses_provided_entity_id (line 74) | def test_search_facts_uses_provided_entity_id(): function test_search_facts_success (line 103) | def test_search_facts_success(): function test_search_facts_with_custom_limit (line 152) | def test_search_facts_with_custom_limit(): function test_search_facts_retry_on_operational_error (line 171) | def test_search_facts_retry_on_operational_error(): function test_search_facts_retry_multiple_times (line 197) | def test_search_facts_retry_multiple_times(): function test_search_facts_raises_after_max_retries (line 227) | def test_search_facts_raises_after_max_retries(): function test_search_facts_raises_on_non_restart_error (line 248) | def test_search_facts_raises_on_non_restart_error(): function test_search_facts_returns_empty_on_no_results (line 268) | def test_search_facts_returns_empty_on_no_results(): function test_search_facts_embeds_query_correctly (line 285) | def test_search_facts_embeds_query_correctly(): function test_search_facts_cloud_includes_explicit_limit_in_payload (line 307) | def test_search_facts_cloud_includes_explicit_limit_in_payload(mocker): function test_search_facts_cloud_defaults_to_config_recall_facts_limit (line 329) | def test_search_facts_cloud_defaults_to_config_recall_facts_limit(mocker): function test_search_facts_cloud_uses_none_for_missing_process_id (line 351) | def test_search_facts_cloud_uses_none_for_missing_process_id(mocker): function test_constants (line 372) | def test_constants(): FILE: tests/memory/test_recall_eval_harness.py function _pack_embedding (line 22) | def _pack_embedding(vec: list[float]) -> bytes: class _Case (line 27) | class _Case: class _FakeEntityFactDriver (line 32) | class _FakeEntityFactDriver: method __init__ (line 33) | def __init__(self, *, facts: dict[int, str], embeddings: dict[int, lis... method get_embeddings (line 37) | def get_embeddings(self, entity_id: int, limit: int = 1000): method get_facts_by_ids (line 44) | def get_facts_by_ids(self, fact_ids: list[int]): class _FakeEntityDriver (line 53) | class _FakeEntityDriver: method create (line 54) | def create(self, entity_id: str) -> int: class _FakeStorageDriver (line 59) | class _FakeStorageDriver: method __init__ (line 60) | def __init__(self, entity_fact: _FakeEntityFactDriver): class _FakeStorage (line 65) | class _FakeStorage: method __init__ (line 66) | def __init__(self, driver: _FakeStorageDriver): function _recall_at_k (line 70) | def _recall_at_k(*, cases: list[_Case], results_by_query: dict[str, list... function _mrr_at_k (line 79) | def _mrr_at_k(*, cases: list[_Case], results_by_query: dict[str, list[in... function _ndcg_at_k (line 92) | def _ndcg_at_k(*, cases: list[_Case], results_by_query: dict[str, list[i... function test_recall_eval_harness_reports_expected_metrics (line 109) | def test_recall_eval_harness_reports_expected_metrics(mocker): FILE: tests/storage/adapters/conftest.py function mongodb_conn (line 5) | def mongodb_conn(mocker): FILE: tests/storage/adapters/dbapi/test_dbapi_no_conflicts.py function test_sqlalchemy_session_not_detected_as_dbapi (line 12) | def test_sqlalchemy_session_not_detected_as_dbapi(session): function test_registry_routes_sqlalchemy_to_sqlalchemy_adapter (line 16) | def test_registry_routes_sqlalchemy_to_sqlalchemy_adapter(session): function test_registry_routes_postgres_session_to_sqlalchemy_adapter (line 23) | def test_registry_routes_postgres_session_to_sqlalchemy_adapter(postgres... function test_django_connection_not_detected_as_dbapi (line 30) | def test_django_connection_not_detected_as_dbapi(mocker): function test_registry_routes_django_to_django_adapter (line 37) | def test_registry_routes_django_to_django_adapter(mocker): FILE: tests/storage/adapters/dbapi/test_storage_adapters_dbapi_adapter.py function mock_psycopg2_conn (line 13) | def mock_psycopg2_conn(mocker): function mock_pymysql_conn (line 29) | def mock_pymysql_conn(mocker): function mock_pyobvector_conn (line 45) | def mock_pyobvector_conn(mocker): function mock_sqlite3_conn (line 61) | def mock_sqlite3_conn(mocker): function test_commit_psycopg2 (line 76) | def test_commit_psycopg2(mock_psycopg2_conn): function test_execute_psycopg2 (line 84) | def test_execute_psycopg2(mock_psycopg2_conn): function test_execute_with_binds_psycopg2 (line 92) | def test_execute_with_binds_psycopg2(mock_psycopg2_conn): function test_flush_psycopg2 (line 103) | def test_flush_psycopg2(mock_psycopg2_conn): function test_get_dialect_psycopg2 (line 110) | def test_get_dialect_psycopg2(mock_psycopg2_conn): function test_rollback_psycopg2 (line 115) | def test_rollback_psycopg2(mock_psycopg2_conn): function test_commit_pymysql (line 123) | def test_commit_pymysql(mock_pymysql_conn): function test_execute_pymysql (line 131) | def test_execute_pymysql(mock_pymysql_conn): function test_get_dialect_pymysql (line 139) | def test_get_dialect_pymysql(mock_pymysql_conn): function test_get_dialect_pyobvector (line 144) | def test_get_dialect_pyobvector(mock_pyobvector_conn): function test_rollback_pymysql (line 149) | def test_rollback_pymysql(mock_pymysql_conn): function test_commit_sqlite3 (line 157) | def test_commit_sqlite3(mock_sqlite3_conn): function test_execute_sqlite3 (line 165) | def test_execute_sqlite3(mock_sqlite3_conn): function test_get_dialect_sqlite3 (line 173) | def test_get_dialect_sqlite3(mock_sqlite3_conn): function test_rollback_sqlite3 (line 178) | def test_rollback_sqlite3(mock_sqlite3_conn): function test_execute_closes_cursor_on_exception (line 186) | def test_execute_closes_cursor_on_exception(mock_psycopg2_conn): function test_get_dialect_unknown_raises_error (line 197) | def test_get_dialect_unknown_raises_error(mocker): function test_is_dbapi_connection_psycopg2 (line 211) | def test_is_dbapi_connection_psycopg2(mock_psycopg2_conn): function test_is_dbapi_connection_pymysql (line 215) | def test_is_dbapi_connection_pymysql(mock_pymysql_conn): function test_is_dbapi_connection_pyobvector (line 219) | def test_is_dbapi_connection_pyobvector(mock_pyobvector_conn): function test_is_dbapi_connection_sqlite3 (line 223) | def test_is_dbapi_connection_sqlite3(mock_sqlite3_conn): function test_is_dbapi_connection_rejects_non_dbapi (line 227) | def test_is_dbapi_connection_rejects_non_dbapi(mocker): function test_is_dbapi_connection_rejects_non_callable_methods (line 233) | def test_is_dbapi_connection_rejects_non_callable_methods(mocker): function test_registry_routes_psycopg2_to_dbapi_adapter (line 241) | def test_registry_routes_psycopg2_to_dbapi_adapter(mock_psycopg2_conn): function test_registry_routes_pymysql_to_dbapi_adapter (line 247) | def test_registry_routes_pymysql_to_dbapi_adapter(mock_pymysql_conn): function test_registry_routes_sqlite3_to_dbapi_adapter (line 253) | def test_registry_routes_sqlite3_to_dbapi_adapter(mock_sqlite3_conn): FILE: tests/storage/adapters/django/test_storage_adapters_django_adapter.py function mock_django_postgresql_conn (line 13) | def mock_django_postgresql_conn(mocker): function mock_django_mysql_conn (line 31) | def mock_django_mysql_conn(mocker): function mock_django_sqlite_conn (line 49) | def mock_django_sqlite_conn(mocker): function test_commit_postgresql (line 66) | def test_commit_postgresql(mock_django_postgresql_conn): function test_execute_postgresql (line 74) | def test_execute_postgresql(mock_django_postgresql_conn): function test_execute_with_binds_postgresql (line 82) | def test_execute_with_binds_postgresql(mock_django_postgresql_conn): function test_flush_postgresql (line 93) | def test_flush_postgresql(mock_django_postgresql_conn): function test_get_dialect_postgresql (line 100) | def test_get_dialect_postgresql(mock_django_postgresql_conn): function test_rollback_postgresql (line 105) | def test_rollback_postgresql(mock_django_postgresql_conn): function test_commit_mysql (line 113) | def test_commit_mysql(mock_django_mysql_conn): function test_execute_mysql (line 121) | def test_execute_mysql(mock_django_mysql_conn): function test_get_dialect_mysql (line 129) | def test_get_dialect_mysql(mock_django_mysql_conn): function test_rollback_mysql (line 134) | def test_rollback_mysql(mock_django_mysql_conn): function test_commit_sqlite (line 142) | def test_commit_sqlite(mock_django_sqlite_conn): function test_execute_sqlite (line 150) | def test_execute_sqlite(mock_django_sqlite_conn): function test_get_dialect_sqlite (line 158) | def test_get_dialect_sqlite(mock_django_sqlite_conn): function test_rollback_sqlite (line 163) | def test_rollback_sqlite(mock_django_sqlite_conn): function test_execute_closes_cursor_on_exception (line 171) | def test_execute_closes_cursor_on_exception(mock_django_postgresql_conn): function test_get_dialect_unknown_raises_error (line 182) | def test_get_dialect_unknown_raises_error(mocker): function test_is_django_connection_postgresql (line 196) | def test_is_django_connection_postgresql(mock_django_postgresql_conn): function test_is_django_connection_mysql (line 200) | def test_is_django_connection_mysql(mock_django_mysql_conn): function test_is_django_connection_sqlite (line 204) | def test_is_django_connection_sqlite(mock_django_sqlite_conn): function test_is_django_connection_rejects_non_django (line 208) | def test_is_django_connection_rejects_non_django(mocker): function test_is_django_connection_rejects_non_callable_cursor (line 214) | def test_is_django_connection_rejects_non_callable_cursor(mocker): function test_registry_routes_postgresql_to_django_adapter (line 221) | def test_registry_routes_postgresql_to_django_adapter(mock_django_postgr... function test_registry_routes_mysql_to_django_adapter (line 227) | def test_registry_routes_mysql_to_django_adapter(mock_django_mysql_conn): function test_registry_routes_sqlite_to_django_adapter (line 233) | def test_registry_routes_sqlite_to_django_adapter(mock_django_sqlite_conn): FILE: tests/storage/adapters/sqlalchemy/test_storage_adaptors_sqlalchemy_adapter.py function test_commit (line 5) | def test_commit(session): function test_execute (line 10) | def test_execute(session): function test_flush (line 16) | def test_flush(session): function test_get_dialect (line 21) | def test_get_dialect(session): function test_get_dialect_oceanbase (line 26) | def test_get_dialect_oceanbase(mocker): function test_rollback (line 41) | def test_rollback(session): function test_commit_postgres (line 47) | def test_commit_postgres(postgres_session): function test_execute_postgres (line 52) | def test_execute_postgres(postgres_session): function test_flush_postgres (line 58) | def test_flush_postgres(postgres_session): function test_get_dialect_postgres (line 63) | def test_get_dialect_postgres(postgres_session): function test_rollback_postgres (line 68) | def test_rollback_postgres(postgres_session): function test_mongodb_adapter_execute (line 74) | def test_mongodb_adapter_execute(mongodb_conn): function test_mongodb_adapter_get_dialect (line 87) | def test_mongodb_adapter_get_dialect(mongodb_conn): function test_mongodb_adapter_execute_with_args (line 93) | def test_mongodb_adapter_execute_with_args(mongodb_conn): function test_mongodb_adapter_execute_with_kwargs (line 106) | def test_mongodb_adapter_execute_with_kwargs(mongodb_conn): FILE: tests/storage/cockroachdb/test_storage_cockroachdb_display.py function test_cluster_already_started (line 4) | def test_cluster_already_started(): function test_cluster_was_not_started (line 14) | def test_cluster_was_not_started(): FILE: tests/storage/cockroachdb/test_storage_cockroachdb_files.py function test_storage_dir_exceptions (line 8) | def test_storage_dir_exceptions(): function test_storage_dir_home (line 25) | def test_storage_dir_home(): function test_storage_dir_memori_home (line 30) | def test_storage_dir_memori_home(): function test_cluster_dir (line 35) | def test_cluster_dir(): function test_cluster_id (line 40) | def test_cluster_id(): function test_read_id_no_such_file (line 45) | def test_read_id_no_such_file(): function test_write_id (line 50) | def test_write_id(): function test_write_then_read_id (line 66) | def test_write_then_read_id(): function test_remove_id (line 83) | def test_remove_id(): FILE: tests/storage/drivers/conftest.py function mock_conn (line 7) | def mock_conn(): function mock_single_result (line 17) | def mock_single_result(): function mock_multiple_results (line 29) | def mock_multiple_results(): function mock_empty_result (line 41) | def mock_empty_result(): FILE: tests/storage/drivers/test_mongodb_driver.py function test_driver_initialization (line 19) | def test_driver_initialization(mock_conn): function test_entity_create (line 31) | def test_entity_create(mock_conn): function test_entity_create_existing_record (line 61) | def test_entity_create_existing_record(mock_conn): function test_entity_generates_uuid (line 75) | def test_entity_generates_uuid(mock_conn): function test_process_create (line 94) | def test_process_create(mock_conn): function test_session_create (line 121) | def test_session_create(mock_conn): function test_conversation_initialization (line 151) | def test_conversation_initialization(mock_conn): function test_conversation_create (line 160) | def test_conversation_create(mock_conn): function test_conversation_create_returns_existing_within_timeout (line 189) | def test_conversation_create_returns_existing_within_timeout(mock_conn): function test_conversation_create_new_when_expired (line 215) | def test_conversation_create_new_when_expired(mock_conn): function test_conversation_message_create (line 244) | def test_conversation_message_create(mock_conn): function test_conversation_messages_read (line 267) | def test_conversation_messages_read(mock_conn): function test_conversation_messages_read_empty (line 291) | def test_conversation_messages_read_empty(mock_conn): function test_schema_version_create (line 301) | def test_schema_version_create(mock_conn): function test_schema_version_read (line 316) | def test_schema_version_read(mock_conn): function test_schema_version_read_none (line 334) | def test_schema_version_read_none(mock_conn): function test_schema_version_delete (line 344) | def test_schema_version_delete(mock_conn): function test_schema_initialization (line 358) | def test_schema_initialization(mock_conn): function test_driver_migrations_attribute (line 366) | def test_driver_migrations_attribute(): function test_driver_requires_rollback_on_error_attribute (line 374) | def test_driver_requires_rollback_on_error_attribute(): function test_driver_registry_registration (line 381) | def test_driver_registry_registration(): function test_mongodb_operations_with_datetime (line 389) | def test_mongodb_operations_with_datetime(mock_conn): function test_mongodb_conversation_message_with_datetime (line 408) | def test_mongodb_conversation_message_with_datetime(mock_conn): function test_mongodb_session_with_datetime (line 424) | def test_mongodb_session_with_datetime(mock_conn): function test_entity_fact_create_new_fact (line 443) | def test_entity_fact_create_new_fact(mock_conn, mocker): function test_entity_fact_create_existing_fact (line 489) | def test_entity_fact_create_existing_fact(mock_conn, mocker): function test_entity_fact_create_empty_facts (line 531) | def test_entity_fact_create_empty_facts(mock_conn): function test_entity_fact_create_multiple_facts (line 540) | def test_entity_fact_create_multiple_facts(mock_conn, mocker): function test_entity_fact_create_without_embeddings (line 567) | def test_entity_fact_create_without_embeddings(mock_conn, mocker): function test_entity_fact_get_embeddings (line 591) | def test_entity_fact_get_embeddings(mock_conn): function test_entity_fact_get_embeddings_with_limit (line 621) | def test_entity_fact_get_embeddings_with_limit(mock_conn): function test_entity_fact_get_embeddings_default_limit (line 639) | def test_entity_fact_get_embeddings_default_limit(mock_conn): function test_entity_fact_get_facts_by_ids (line 651) | def test_entity_fact_get_facts_by_ids(mock_conn): function test_entity_fact_get_facts_by_ids_empty (line 686) | def test_entity_fact_get_facts_by_ids_empty(mock_conn): FILE: tests/storage/drivers/test_mysql_driver.py function test_driver_initialization (line 17) | def test_driver_initialization(mock_conn): function test_entity_create (line 28) | def test_entity_create(mock_conn, mock_single_result): function test_entity_generates_uuid (line 51) | def test_entity_generates_uuid(mock_conn, mock_single_result): function test_process_create (line 66) | def test_process_create(mock_conn, mock_single_result): function test_session_create (line 89) | def test_session_create(mock_conn, mock_single_result): function test_conversation_initialization (line 113) | def test_conversation_initialization(mock_conn): function test_conversation_create (line 122) | def test_conversation_create(mock_conn, mock_single_result): function test_conversation_create_returns_existing_within_timeout (line 163) | def test_conversation_create_returns_existing_within_timeout(mock_conn): function test_conversation_create_new_when_expired (line 191) | def test_conversation_create_new_when_expired(mock_conn, mock_single_res... function test_conversation_message_create (line 223) | def test_conversation_message_create(mock_conn): function test_conversation_messages_read (line 245) | def test_conversation_messages_read(mock_conn, mock_multiple_results): function test_conversation_messages_read_empty (line 268) | def test_conversation_messages_read_empty(mock_conn, mock_empty_result): function test_schema_version_create (line 278) | def test_schema_version_create(mock_conn): function test_schema_version_read (line 291) | def test_schema_version_read(mock_conn, mock_single_result): function test_schema_version_delete (line 306) | def test_schema_version_delete(mock_conn): function test_schema_initialization (line 318) | def test_schema_initialization(mock_conn): FILE: tests/storage/drivers/test_oceanbase_driver.py function test_driver_initialization (line 18) | def test_driver_initialization(mock_conn): function test_driver_metadata (line 30) | def test_driver_metadata(): function test_entity_fact_create_uses_formatted_embedding (line 36) | def test_entity_fact_create_uses_formatted_embedding(mock_conn): function test_entity_create (line 65) | def test_entity_create(mock_conn, mock_single_result): function test_entity_generates_uuid (line 86) | def test_entity_generates_uuid(mock_conn, mock_single_result): function test_process_create (line 98) | def test_process_create(mock_conn, mock_single_result): function test_session_create (line 119) | def test_session_create(mock_conn, mock_single_result): function test_conversation_initialization (line 141) | def test_conversation_initialization(mock_conn): function test_conversation_create (line 151) | def test_conversation_create(mock_conn, mock_single_result): function test_conversation_create_returns_existing_within_timeout (line 184) | def test_conversation_create_returns_existing_within_timeout(mock_conn): function test_conversation_create_new_when_expired (line 212) | def test_conversation_create_new_when_expired(mock_conn, mock_single_res... function test_conversation_message_create (line 242) | def test_conversation_message_create(mock_conn): function test_conversation_messages_read (line 262) | def test_conversation_messages_read(mock_conn, mock_multiple_results): function test_conversation_messages_read_empty (line 284) | def test_conversation_messages_read_empty(mock_conn, mock_empty_result): function test_schema_version_create (line 294) | def test_schema_version_create(mock_conn): function test_schema_version_read (line 305) | def test_schema_version_read(mock_conn, mock_single_result): function test_schema_version_delete (line 318) | def test_schema_version_delete(mock_conn): FILE: tests/storage/drivers/test_oracle_driver.py function test_driver_initialization (line 17) | def test_driver_initialization(mock_conn): function test_entity_create (line 28) | def test_entity_create(mock_conn, mock_single_result): function test_entity_generates_uuid (line 53) | def test_entity_generates_uuid(mock_conn, mock_single_result): function test_process_create (line 68) | def test_process_create(mock_conn, mock_single_result): function test_session_create (line 93) | def test_session_create(mock_conn, mock_single_result): function test_conversation_initialization (line 119) | def test_conversation_initialization(mock_conn): function test_conversation_create (line 128) | def test_conversation_create(mock_conn, mock_single_result): function test_conversation_create_returns_existing_within_timeout (line 170) | def test_conversation_create_returns_existing_within_timeout(mock_conn): function test_conversation_create_new_when_expired (line 198) | def test_conversation_create_new_when_expired(mock_conn, mock_single_res... function test_conversation_message_create (line 230) | def test_conversation_message_create(mock_conn): function test_conversation_messages_read (line 252) | def test_conversation_messages_read(mock_conn, mock_multiple_results): function test_conversation_messages_read_empty (line 275) | def test_conversation_messages_read_empty(mock_conn, mock_empty_result): function test_schema_version_create (line 285) | def test_schema_version_create(mock_conn): function test_schema_version_read (line 298) | def test_schema_version_read(mock_conn, mock_single_result): function test_schema_version_delete (line 313) | def test_schema_version_delete(mock_conn): function test_schema_initialization (line 325) | def test_schema_initialization(mock_conn): FILE: tests/storage/drivers/test_postgresql_driver.py function test_driver_initialization (line 17) | def test_driver_initialization(mock_conn): function test_entity_create (line 28) | def test_entity_create(mock_conn, mock_single_result): function test_entity_generates_uuid (line 52) | def test_entity_generates_uuid(mock_conn, mock_single_result): function test_process_create (line 67) | def test_process_create(mock_conn, mock_single_result): function test_session_create (line 91) | def test_session_create(mock_conn, mock_single_result): function test_conversation_initialization (line 116) | def test_conversation_initialization(mock_conn): function test_conversation_create (line 125) | def test_conversation_create(mock_conn, mock_single_result): function test_conversation_create_returns_existing_within_timeout (line 167) | def test_conversation_create_returns_existing_within_timeout(mock_conn): function test_conversation_create_new_when_expired (line 195) | def test_conversation_create_new_when_expired(mock_conn, mock_single_res... function test_conversation_message_create (line 227) | def test_conversation_message_create(mock_conn): function test_conversation_messages_read (line 249) | def test_conversation_messages_read(mock_conn, mock_multiple_results): function test_conversation_messages_read_empty (line 272) | def test_conversation_messages_read_empty(mock_conn, mock_empty_result): function test_schema_version_create (line 282) | def test_schema_version_create(mock_conn): function test_schema_version_read (line 295) | def test_schema_version_read(mock_conn, mock_single_result): function test_schema_version_delete (line 310) | def test_schema_version_delete(mock_conn): function test_schema_initialization (line 322) | def test_schema_initialization(mock_conn): FILE: tests/storage/drivers/test_sqlite_driver.py function test_driver_initialization (line 18) | def test_driver_initialization(mock_conn): function test_entity_create (line 30) | def test_entity_create(mock_conn, mock_single_result): function test_entity_generates_uuid (line 53) | def test_entity_generates_uuid(mock_conn, mock_single_result): function test_process_create (line 70) | def test_process_create(mock_conn, mock_single_result): function test_session_create (line 93) | def test_session_create(mock_conn, mock_single_result): function test_conversation_initialization (line 117) | def test_conversation_initialization(mock_conn): function test_conversation_create (line 126) | def test_conversation_create(mock_conn, mock_single_result): function test_conversation_create_returns_existing_within_timeout (line 167) | def test_conversation_create_returns_existing_within_timeout(mock_conn): function test_conversation_create_new_when_expired (line 195) | def test_conversation_create_new_when_expired(mock_conn, mock_single_res... function test_conversation_message_create (line 227) | def test_conversation_message_create(mock_conn): function test_conversation_messages_read (line 249) | def test_conversation_messages_read(mock_conn, mock_multiple_results): function test_conversation_messages_read_empty (line 273) | def test_conversation_messages_read_empty(mock_conn, mock_empty_result): function test_schema_version_create (line 283) | def test_schema_version_create(mock_conn): function test_schema_version_read (line 296) | def test_schema_version_read(mock_conn, mock_single_result): function test_schema_version_delete (line 311) | def test_schema_version_delete(mock_conn): function test_schema_initialization (line 323) | def test_schema_initialization(mock_conn): function test_entity_fact_create (line 331) | def test_entity_fact_create(mock_conn, mocker): function test_entity_fact_create_empty_facts (line 363) | def test_entity_fact_create_empty_facts(mock_conn): function test_entity_fact_create_without_embeddings (line 372) | def test_entity_fact_create_without_embeddings(mock_conn, mocker): function test_entity_fact_get_embeddings (line 393) | def test_entity_fact_get_embeddings(mock_conn, mock_multiple_results): function test_entity_fact_get_embeddings_default_limit (line 422) | def test_entity_fact_get_embeddings_default_limit(mock_conn, mock_empty_... function test_entity_fact_get_facts_by_ids (line 434) | def test_entity_fact_get_facts_by_ids(mock_conn, mock_multiple_results): function test_entity_fact_get_facts_by_ids_empty (line 472) | def test_entity_fact_get_facts_by_ids_empty(mock_conn): FILE: tests/storage/test_connection.py function test_connection_context_with_none_factory (line 8) | def test_connection_context_with_none_factory(): function test_connection_context_success (line 15) | def test_connection_context_success(): function test_connection_context_exception_in_body (line 46) | def test_connection_context_exception_in_body(): function test_connection_context_close_exception_suppressed (line 67) | def test_connection_context_close_exception_suppressed(): function test_connection_context_commit_exception_propagates (line 87) | def test_connection_context_commit_exception_propagates(): FILE: tests/storage/test_connection_factory.py function test_connection_factory_is_called_eagerly (line 6) | def test_connection_factory_is_called_eagerly(mocker): function test_connection_factory_cached_after_first_call (line 34) | def test_connection_factory_cached_after_first_call(mocker): function test_non_callable_raises_error (line 61) | def test_non_callable_raises_error(): function test_connection_lifecycle_close (line 73) | def test_connection_lifecycle_close(mocker): function test_connection_factory_supports_release_tuple (line 101) | def test_connection_factory_supports_release_tuple(mocker): function test_connection_factory_supports_context_manager (line 119) | def test_connection_factory_supports_context_manager(mocker): FILE: tests/storage/test_storage_builder.py function mock_config (line 14) | def mock_config(): function builder (line 24) | def builder(mock_config): function test_get_supported_dialects (line 29) | def test_get_supported_dialects(builder): function test_get_dialect_family_exact_match (line 40) | def test_get_dialect_family_exact_match(builder): function test_get_dialect_family_no_match (line 48) | def test_get_dialect_family_no_match(builder): function test_requires_rollback_true (line 55) | def test_requires_rollback_true(builder): function test_get_dialect_family_oceanbase (line 61) | def test_get_dialect_family_oceanbase(builder): function test_requires_rollback_oceanbase (line 66) | def test_requires_rollback_oceanbase(builder): function test_requires_rollback_false (line 71) | def test_requires_rollback_false(builder): function test_requires_rollback_unknown_dialect (line 76) | def test_requires_rollback_unknown_dialect(builder): function test_build_unsupported_dialect (line 81) | def test_build_unsupported_dialect(mock_config): function test_build_supported_dialect (line 93) | def test_build_supported_dialect(mock_config): function test_create_data_structures_postgresql_rollback (line 112) | def test_create_data_structures_postgresql_rollback(mock_config): function test_create_data_structures_cockroachdb_rollback (line 133) | def test_create_data_structures_cockroachdb_rollback(mock_config): function test_create_data_structures_mysql_no_rollback (line 151) | def test_create_data_structures_mysql_no_rollback(mock_config): function test_create_data_structures_no_migration_mapping (line 169) | def test_create_data_structures_no_migration_mapping(mock_config): FILE: tests/storage/test_storage_init.py function test_import_optional_module_success (line 4) | def test_import_optional_module_success(): function test_import_optional_module_handles_import_error (line 17) | def test_import_optional_module_handles_import_error(): function test_storage_module_initializes_with_manager_available (line 29) | def test_storage_module_initializes_with_manager_available(): function test_storage_module_has_import_optional_module_function (line 37) | def test_storage_module_has_import_optional_module_function(): FILE: tests/storage/test_storage_manager.py function test_manager_start_sets_cockroachdb_flag_for_cockroachdb (line 7) | def test_manager_start_sets_cockroachdb_flag_for_cockroachdb(): function test_manager_start_sets_cockroachdb_flag_for_postgresql (line 27) | def test_manager_start_sets_cockroachdb_flag_for_postgresql(): function test_manager_start_sets_cockroachdb_flag_for_mysql (line 47) | def test_manager_start_sets_cockroachdb_flag_for_mysql(): function test_manager_start_sets_cockroachdb_flag_for_oceanbase (line 67) | def test_manager_start_sets_cockroachdb_flag_for_oceanbase(): function test_manager_start_sets_cockroachdb_flag_for_mongodb (line 87) | def test_manager_start_sets_cockroachdb_flag_for_mongodb(): function test_manager_start_with_none_conn_does_not_set_flag (line 107) | def test_manager_start_with_none_conn_does_not_set_flag(): FILE: tests/storage/test_storage_registry.py function test_storage_adapter_sqlalchemy (line 13) | def test_storage_adapter_sqlalchemy(session): function test_storage_driver_mysql (line 17) | def test_storage_driver_mysql(session): function test_storage_driver_postgresql (line 23) | def test_storage_driver_postgresql(postgres_session): function test_storage_driver_mariadb (line 30) | def test_storage_driver_mariadb(mocker): function test_storage_driver_cockroachdb (line 41) | def test_storage_driver_cockroachdb(mocker): function test_storage_driver_oceanbase (line 52) | def test_storage_driver_oceanbase(mocker): function test_storage_adapter_raises_for_unsupported_connection (line 61) | def test_storage_adapter_raises_for_unsupported_connection(): function test_storage_driver_raises_for_unsupported_dialect (line 71) | def test_storage_driver_raises_for_unsupported_dialect(mocker): FILE: tests/test_cli.py function mock_config (line 13) | def mock_config(): function test_cli_banner_contains_key_elements (line 19) | def test_cli_banner_contains_key_elements(capsys, mock_config): function test_entrypoint_smoke_run (line 29) | def test_entrypoint_smoke_run(): class TestCliEntrypoint (line 40) | class TestCliEntrypoint: method run_main_with_args (line 41) | def run_main_with_args(self, args): method test_cli_signup_missing_email_shows_error (line 49) | def test_cli_signup_missing_email_shows_error(self, capsys): method test_cli_no_args_shows_branding (line 56) | def test_cli_no_args_shows_branding(self, capsys): method test_help_variations_show_all_commands (line 71) | def test_help_variations_show_all_commands(self, args, capsys): method test_invalid_command_shows_help (line 81) | def test_invalid_command_shows_help(self, capsys): method test_branding_displayed (line 89) | def test_branding_displayed(self, capsys): method test_cockroachdb_missing_subcommand_shows_usage (line 96) | def test_cockroachdb_missing_subcommand_shows_usage(self, capsys): method test_cockroachdb_cluster_start_dispatches_correctly (line 103) | def test_cockroachdb_cluster_start_dispatches_correctly( FILE: tests/test_config.py function test_is_test_mode (line 6) | def test_is_test_mode(): function test_reset_cache (line 19) | def test_reset_cache(): function test_augmentation_default (line 34) | def test_augmentation_default(): function test_storage_initialization (line 39) | def test_storage_initialization(): function test_recall_env_overrides (line 46) | def test_recall_env_overrides(monkeypatch): FILE: tests/test_init.py function test_cloud_false_when_conn_provided (line 7) | def test_cloud_false_when_conn_provided(mocker): function test_cloud_true_when_no_conn (line 18) | def test_cloud_true_when_no_conn(monkeypatch): function test_cloud_raises_error_when_no_api_key (line 26) | def test_cloud_raises_error_when_no_api_key(monkeypatch): function test_cloud_false_when_connection_string_set (line 35) | def test_cloud_false_when_connection_string_set(monkeypatch, mocker): function test_attribution_exceptions (line 53) | def test_attribution_exceptions(mocker): function test_new_session (line 71) | def test_new_session(mocker): function test_set_session (line 89) | def test_set_session(mocker): function test_set_session_resets_cache (line 102) | def test_set_session_resets_cache(mocker): function test_embed_texts_uses_config_defaults (line 119) | def test_embed_texts_uses_config_defaults(mocker): function test_recall_defaults_to_config_limit_in_cloud (line 141) | def test_recall_defaults_to_config_limit_in_cloud(monkeypatch, mocker): FILE: tests/test_legacy_package_warning.py function test_warn_if_legacy_memorisdk_not_installed (line 11) | def test_warn_if_legacy_memorisdk_not_installed(): function test_warn_if_legacy_memorisdk_installed (line 28) | def test_warn_if_legacy_memorisdk_installed(): function test_warning_message_content (line 48) | def test_warning_message_content(): function test_legacy_warning_class_is_user_warning (line 68) | def test_legacy_warning_class_is_user_warning(): function test_warn_function_imported_in_init (line 75) | def test_warn_function_imported_in_init(): function test_no_warning_when_only_memori_installed (line 87) | def test_no_warning_when_only_memori_installed(): FILE: tests/test_llm_auto_registration.py function memori_instance (line 12) | def memori_instance(mocker): function test_llm_register_raises_if_provider_cannot_be_determined (line 22) | def test_llm_register_raises_if_provider_cannot_be_determined( function test_llm_register_auto_detects_openai_client (line 41) | def test_llm_register_auto_detects_openai_client(memori_instance, mocker): function test_llm_register_auto_detects_anthropic_client (line 60) | def test_llm_register_auto_detects_anthropic_client(memori_instance, moc... function test_llm_register_auto_detects_google_genai_client (line 80) | def test_llm_register_auto_detects_google_genai_client(memori_instance, ... function test_llm_register_auto_detects_google_generativeai_client (line 105) | def test_llm_register_auto_detects_google_generativeai_client(memori_ins... function test_llm_register_auto_detects_xai_client (line 130) | def test_llm_register_auto_detects_xai_client(memori_instance, mocker): function test_llm_register_auto_detects_pydantic_ai_client (line 149) | def test_llm_register_auto_detects_pydantic_ai_client(memori_instance, m... function test_llm_register_returns_memori_instance (line 164) | def test_llm_register_returns_memori_instance(memori_instance, mocker): function test_llm_register_allows_chaining (line 182) | def test_llm_register_allows_chaining(memori_instance, mocker): function test_llm_register_handles_multiple_registrations (line 204) | def test_llm_register_handles_multiple_registrations(memori_instance, mo... function test_llm_register_agno_openai_chat (line 225) | def test_llm_register_agno_openai_chat(memori_instance, mocker): function test_llm_register_agno_claude (line 238) | def test_llm_register_agno_claude(memori_instance, mocker): function test_llm_register_langchain_chatopenai (line 251) | def test_llm_register_langchain_chatopenai(memori_instance, mocker): function test_llm_register_raises_when_mixing_client_and_framework (line 267) | def test_llm_register_raises_when_mixing_client_and_framework(memori_ins... function test_llm_register_raises_when_mixing_agno_and_langchain (line 279) | def test_llm_register_raises_when_mixing_agno_and_langchain(memori_insta... function test_llm_register_raises_when_no_arguments (line 293) | def test_llm_register_raises_when_no_arguments(memori_instance): FILE: tests/test_network.py function api (line 22) | def api(): function config (line 28) | def config(): class TestApiRetryRecoverable (line 32) | class TestApiRetryRecoverable: method test_is_retry_returns_true_for_5xx_errors (line 33) | def test_is_retry_returns_true_for_5xx_errors(self): method test_is_retry_returns_false_for_non_5xx_errors (line 39) | def test_is_retry_returns_false_for_non_5xx_errors(self): class TestApiInitialization (line 46) | class TestApiInitialization: method test_init_uses_default_api_key_and_base_url (line 47) | def test_init_uses_default_api_key_and_base_url(self): method test_init_uses_custom_subdomain_base_url (line 57) | def test_init_uses_custom_subdomain_base_url(self): method test_init_uses_custom_base_url (line 67) | def test_init_uses_custom_base_url(self): method test_init_uses_staging_when_test_mode_enabled (line 75) | def test_init_uses_staging_when_test_mode_enabled(self): method test_init_uses_staging_subdomain_when_test_mode_enabled (line 87) | def test_init_uses_staging_subdomain_when_test_mode_enabled(self): method test_init_uses_production_when_test_mode_disabled (line 99) | def test_init_uses_production_when_test_mode_disabled(self): class TestApiUrl (line 112) | class TestApiUrl: method test_url_construction (line 113) | def test_url_construction(self, api): method test_url_with_empty_route (line 116) | def test_url_with_empty_route(self, api): class TestApiHeaders (line 120) | class TestApiHeaders: method test_headers_without_api_key (line 121) | def test_headers_without_api_key(self, api): method test_headers_with_api_key (line 129) | def test_headers_with_api_key(self, api): class TestApiPost (line 136) | class TestApiPost: method test_post_success (line 137) | def test_post_success(self, api, mocker): method test_post_raises_http_error (line 152) | def test_post_raises_http_error(self, api, mocker): class TestApiPostAsync (line 164) | class TestApiPostAsync: method test_post_async_success (line 166) | async def test_post_async_success(self, api, mocker): method test_post_async_with_retry_on_5xx_error (line 175) | async def test_post_async_with_retry_on_5xx_error(self, api, mocker): method test_post_async_raises_on_4xx_error (line 210) | async def test_post_async_raises_on_4xx_error(self, api): method test_post_async_raises_after_max_retries (line 232) | async def test_post_async_raises_after_max_retries(self, api): class TestApiAugmentation (line 255) | class TestApiAugmentation: method test_augmentation_async_success (line 257) | async def test_augmentation_async_success(self, api, mocker): method test_augmentation_async_includes_storage_in_payload (line 293) | async def test_augmentation_async_includes_storage_in_payload(self, ap... method test_augmentation_async_mysql_dialect (line 337) | async def test_augmentation_async_mysql_dialect(self, api, mocker): class TestApiPostAsyncGenericException (line 378) | class TestApiPostAsyncGenericException: method test_post_async_retries_on_generic_exception (line 380) | async def test_post_async_retries_on_generic_exception(self, api): method test_post_async_raises_generic_exception_after_max_retries (line 411) | async def test_post_async_raises_generic_exception_after_max_retries(s... class TestApiSession (line 430) | class TestApiSession: method test_session_creates_session_with_retry_adapter (line 431) | def test_session_creates_session_with_retry_adapter(self, api): class TestApiQuotaEnforcement (line 447) | class TestApiQuotaEnforcement: method test_augmentation_async_raises_quota_exceeded_with_api_message (line 449) | async def test_augmentation_async_raises_quota_exceeded_with_api_messa... method test_augmentation_async_raises_quota_exceeded_with_default_message (line 475) | async def test_augmentation_async_raises_quota_exceeded_with_default_m... method test_augmentation_async_raises_quota_exceeded_when_json_fails (line 505) | async def test_augmentation_async_raises_quota_exceeded_when_json_fail... method test_augmentation_async_returns_empty_dict_for_authenticated_429 (line 533) | async def test_augmentation_async_returns_empty_dict_for_authenticated... method test_augmentation_async_raises_validation_error_for_422 (line 556) | async def test_augmentation_async_raises_validation_error_for_422(self... method test_augmentation_async_raises_request_rejected_error_for_433 (line 582) | async def test_augmentation_async_raises_request_rejected_error_for_43... method test_augmentation_async_raises_client_error_for_other_4xx (line 608) | async def test_augmentation_async_raises_client_error_for_other_4xx(se... method test_augmentation_async_raises_helpful_message_on_ssl_error (line 634) | async def test_augmentation_async_raises_helpful_message_on_ssl_error(... method test_augmentation_async_raises_other_errors_for_anonymous (line 655) | async def test_augmentation_async_raises_other_errors_for_anonymous(se... method test_is_anonymous_returns_true_without_api_key (line 681) | def test_is_anonymous_returns_true_without_api_key(self, api): method test_is_anonymous_returns_false_with_api_key (line 686) | def test_is_anonymous_returns_false_with_api_key(self, api): FILE: tests/test_search.py class _MappingRow (line 26) | class _MappingRow(Mapping[str, object]): method __init__ (line 27) | def __init__(self, data: dict[str, object]) -> None: method __getitem__ (line 30) | def __getitem__(self, key: str) -> object: method __iter__ (line 33) | def __iter__(self) -> Iterator[str]: method __len__ (line 36) | def __len__(self) -> int: function test_parse_embedding_from_bytes_postgresql (line 40) | def test_parse_embedding_from_bytes_postgresql(): function test_parse_embedding_from_memoryview_postgresql (line 47) | def test_parse_embedding_from_memoryview_postgresql(): function test_parse_embedding_from_json_string_mysql (line 54) | def test_parse_embedding_from_json_string_mysql(): function test_parse_embedding_from_list_mongodb (line 61) | def test_parse_embedding_from_list_mongodb(): function test_parse_embedding_from_numpy_array (line 67) | def test_parse_embedding_from_numpy_array(): function test_parse_embedding_maintains_float32_dtype (line 73) | def test_parse_embedding_maintains_float32_dtype(): function test_find_similar_embeddings_basic (line 80) | def test_find_similar_embeddings_basic(): function test_find_similar_embeddings_cosine_similarity (line 94) | def test_find_similar_embeddings_cosine_similarity(): function test_find_similar_embeddings_empty_list (line 110) | def test_find_similar_embeddings_empty_list(): function test_find_similar_embeddings_limit_larger_than_embeddings (line 115) | def test_find_similar_embeddings_limit_larger_than_embeddings(): function test_find_similar_embeddings_limit_smaller_than_embeddings (line 123) | def test_find_similar_embeddings_limit_smaller_than_embeddings(): function test_find_similar_embeddings_skips_malformed (line 136) | def test_find_similar_embeddings_skips_malformed(): function test_find_similar_embeddings_all_malformed (line 150) | def test_find_similar_embeddings_all_malformed(): function test_find_similar_embeddings_dimension_mismatch (line 161) | def test_find_similar_embeddings_dimension_mismatch(): function test_find_similar_embeddings_mixed_dimensions (line 172) | def test_find_similar_embeddings_mixed_dimensions(): function test_find_similar_embeddings_mixed_formats (line 185) | def test_find_similar_embeddings_mixed_formats(): function test_find_similar_embeddings_returns_similarity_scores (line 198) | def test_find_similar_embeddings_returns_similarity_scores(): function test_find_similar_embeddings_high_dimensional (line 208) | def test_find_similar_embeddings_high_dimensional(): function test_search_entity_facts_success (line 221) | def test_search_entity_facts_success(): function test_search_entity_facts_no_embeddings (line 253) | def test_search_entity_facts_no_embeddings(): function test_search_entity_facts_no_similar_results (line 271) | def test_search_entity_facts_no_similar_results(): function test_search_entity_facts_respects_limit (line 290) | def test_search_entity_facts_respects_limit(): function test_search_entity_facts_returns_required_keys (line 312) | def test_search_entity_facts_returns_required_keys(): function test_search_entity_facts_handles_missing_content (line 337) | def test_search_entity_facts_handles_missing_content(): function test_search_entity_facts_maintains_similarity_order (line 360) | def test_search_entity_facts_maintains_similarity_order(): function test_search_entity_facts_can_rerank_with_query_text (line 388) | def test_search_entity_facts_can_rerank_with_query_text(mocker): function test_search_entity_facts_with_different_db_formats (line 418) | def test_search_entity_facts_with_different_db_formats(): function test_search_entity_facts_accepts_mapping_rows_for_content (line 444) | def test_search_entity_facts_accepts_mapping_rows_for_content(mocker): function test_search_facts_candidates_success (line 476) | def test_search_facts_candidates_success(): function test_search_facts_candidates_can_rerank_with_query_text (line 501) | def test_search_facts_candidates_can_rerank_with_query_text(): FILE: tests/test_utils.py function test_merge_chunk (line 4) | def test_merge_chunk(): function test_bytes_to_json (line 12) | def test_bytes_to_json(): function test_generate_uniq (line 37) | def test_generate_uniq():