Home / File/ _sql_record_manager.py — langchain Source File

_sql_record_manager.py — langchain Source File

Architecture documentation for _sql_record_manager.py, a python file in the langchain codebase. 12 imports, 0 dependents.

File python LangChainCore ApiManagement 12 imports 2 functions 2 classes

Entity Profile

Dependency Diagram

graph LR
  8bffe3e4_4cad_6b21_a587_b60824b34a04["_sql_record_manager.py"]
  be45a0bb_0276_f8f1_f985_55cddb92c224["contextlib"]
  8bffe3e4_4cad_6b21_a587_b60824b34a04 --> be45a0bb_0276_f8f1_f985_55cddb92c224
  3758d9e7_689d_2230_c1f6_9b1cae9079f1["decimal"]
  8bffe3e4_4cad_6b21_a587_b60824b34a04 --> 3758d9e7_689d_2230_c1f6_9b1cae9079f1
  02f66451_d2a9_e7c3_9765_c3a7594721ad["uuid"]
  8bffe3e4_4cad_6b21_a587_b60824b34a04 --> 02f66451_d2a9_e7c3_9765_c3a7594721ad
  2bf6d401_816d_d011_3b05_a6114f55ff58["collections.abc"]
  8bffe3e4_4cad_6b21_a587_b60824b34a04 --> 2bf6d401_816d_d011_3b05_a6114f55ff58
  feec1ec4_6917_867b_d228_b134d0ff8099["typing"]
  8bffe3e4_4cad_6b21_a587_b60824b34a04 --> feec1ec4_6917_867b_d228_b134d0ff8099
  c87d84ce_5de8_c4e0_0401_9d833b75d4b7["langchain_core.indexing"]
  8bffe3e4_4cad_6b21_a587_b60824b34a04 --> c87d84ce_5de8_c4e0_0401_9d833b75d4b7
  f2cae492_a0a2_8b08_1f22_922412f7713a["sqlalchemy"]
  8bffe3e4_4cad_6b21_a587_b60824b34a04 --> f2cae492_a0a2_8b08_1f22_922412f7713a
  1ae470fa_226e_c331_31d5_71c07bd0d0c8["sqlalchemy.engine"]
  8bffe3e4_4cad_6b21_a587_b60824b34a04 --> 1ae470fa_226e_c331_31d5_71c07bd0d0c8
  9bbb7dee_019d_9a3b_93b3_50aeaa0e4c05["sqlalchemy.ext.asyncio"]
  8bffe3e4_4cad_6b21_a587_b60824b34a04 --> 9bbb7dee_019d_9a3b_93b3_50aeaa0e4c05
  b724a7e0_e92d_451a_6902_21824d58f1c5["sqlalchemy.orm"]
  8bffe3e4_4cad_6b21_a587_b60824b34a04 --> b724a7e0_e92d_451a_6902_21824d58f1c5
  06d94bb8_d95e_f9e3_5323_f0d124025a9b["sqlalchemy.dialects.sqlite"]
  8bffe3e4_4cad_6b21_a587_b60824b34a04 --> 06d94bb8_d95e_f9e3_5323_f0d124025a9b
  d746a325_d015_2634_4244_11ca718faf25["sqlalchemy.dialects.postgresql"]
  8bffe3e4_4cad_6b21_a587_b60824b34a04 --> d746a325_d015_2634_4244_11ca718faf25
  style 8bffe3e4_4cad_6b21_a587_b60824b34a04 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Implementation of a record management layer in SQLAlchemy.

The management layer uses SQLAlchemy to track upserted records.

Currently, this layer only works with SQLite; hopwever, should be adaptable
to other SQL implementations with minimal effort.

Currently, includes an implementation that uses SQLAlchemy which should
allow it to work with a variety of SQL as a backend.

* Each key is associated with an updated_at field.
* This filed is updated whenever the key is updated.
* Keys can be listed based on the updated at field.
* Keys can be deleted.
"""

import contextlib
import decimal
import uuid
from collections.abc import AsyncGenerator, Generator, Sequence
from typing import Any

from langchain_core.indexing import RecordManager
from sqlalchemy import (
    Column,
    Float,
    Index,
    String,
    UniqueConstraint,
    and_,
    create_engine,
    delete,
    select,
    text,
)
from sqlalchemy.engine import URL, Engine
from sqlalchemy.ext.asyncio import (
    AsyncEngine,
    AsyncSession,
    create_async_engine,
)
from sqlalchemy.orm import Query, Session, declarative_base, sessionmaker

try:
    from sqlalchemy.ext.asyncio import async_sessionmaker
except ImportError:
    # dummy for sqlalchemy < 2
    async_sessionmaker = type("async_sessionmaker", (type,), {})  # type: ignore[assignment,misc]

Base = declarative_base()


class UpsertionRecord(Base):  # type: ignore[valid-type,misc]
    """Table used to keep track of when a key was last updated."""

    # ATTENTION:
    # Prior to modifying this table, please determine whether
    # we should create migrations for this table to make sure
    # users do not experience data loss.
    __tablename__ = "upsertion_record"
// ... (473 more lines)

Domain

Subdomains

Dependencies

  • collections.abc
  • contextlib
  • decimal
  • langchain_core.indexing
  • sqlalchemy
  • sqlalchemy.dialects.postgresql
  • sqlalchemy.dialects.sqlite
  • sqlalchemy.engine
  • sqlalchemy.ext.asyncio
  • sqlalchemy.orm
  • typing
  • uuid

Frequently Asked Questions

What does _sql_record_manager.py do?
_sql_record_manager.py is a source file in the langchain codebase, written in python. It belongs to the LangChainCore domain, ApiManagement subdomain.
What functions are defined in _sql_record_manager.py?
_sql_record_manager.py defines 2 function(s): async_sessionmaker, sqlalchemy.
What does _sql_record_manager.py depend on?
_sql_record_manager.py imports 12 module(s): collections.abc, contextlib, decimal, langchain_core.indexing, sqlalchemy, sqlalchemy.dialects.postgresql, sqlalchemy.dialects.sqlite, sqlalchemy.engine, and 4 more.
Where is _sql_record_manager.py in the architecture?
_sql_record_manager.py is located at libs/langchain/langchain_classic/indexes/_sql_record_manager.py (domain: LangChainCore, subdomain: ApiManagement, directory: libs/langchain/langchain_classic/indexes).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free