Skip to main content

A Python utility library providing reusable service wrappers for MongoDB, SQL (ODBC), logging, and vector store operations.

Project description

tm-utility

A Python utility library providing reusable service wrappers for MongoDB, SQL (ODBC), logging, and vector store operations.


Installation

pip install tm-utility

Modules

logger

Structured file + console logger with IST timezone and daily log rotation.

from tm_utility.loggerService import logger, logger_title, LOG_DIR, DEBUG

logger.info("Application started")
logger.debug("Debug details")

logger_title("My Section")  # prints a formatted section banner

Logs are saved under ./logs/<Mon_YYYY>/<DD-MM-YYYY>.log by default.


mongoService

MongoDB connection wrapper built on pymongo.

from tm_utility.mongoService import MongoService

# Uses MONGODB_URI and MONGODB_DB env vars by default
mongo = MongoService()

col = mongo.collection("my_collection")
col.insert_one({"key": "value"})

mongo.close()

Environment variables:

Variable Default Description
MONGODB_URI mongodb://localhost:27017 MongoDB connection URI
MONGODB_DB Database name

Rulebook

Store and retrieve LLM instruction rules.

# Save a rulebook (string or dict or list)
mongo.insert_rulebook("Always respond in formal English.", rulebook_id="default")
mongo.insert_rulebook({"rulebook": "Be concise.", "version": 1}, rulebook_id="v2")

# Fetch rulebook documents
docs = mongo.get_rulebook(rulebook_id="default")

# Get a ready-to-use prompt string
prompt = mongo.rulebook_prompt(rulebook_id="default")
# → "Incorporate the following rules into your reasoning:\nAlways respond in formal English."

Session History

Save, retrieve, append, search, and delete conversation history per user.

# Save a new session (creates session_id automatically)
result = mongo.save_user_history(
    user_id="user_123",
    messages=[
        {"role": "user", "content": "Hello"},
        {"role": "assistant", "content": "Hi! How can I help?"},
    ],
    title="First chat",
    tags=["onboarding"],
)

# Append messages to an existing session
mongo.append_user_history(
    user_id="user_123",
    session_id=result["session_id"],
    messages={"role": "user", "content": "Follow-up question"},
)

# Fetch one session
session = mongo.get_user_history_session(user_id="user_123", session_id="<session_id>")

# Fetch all sessions for a user (newest first)
sessions = mongo.fetch_user_history(user_id="user_123", limit=20, offset=0)

# Search message content
results = mongo.search_user_history(user_id="user_123", query="refund policy")

# Delete a session
mongo.delete_user_history(user_id="user_123", session_id="<session_id>")

sqlService

Generic ODBC SQL service wrapper using pyodbc.

from tm_utility.sqlService import SQLService

# Via connection string
sql = SQLService(connection_string="DSN=mydsn;UID=user;PWD=pass")

# Or via individual params
sql = SQLService(driver="ODBC Driver 17 for SQL Server", server="localhost", database="mydb", uid="user", pwd="pass")

rows = sql.query("SELECT * FROM my_table WHERE id = ?", params=[1])
sql.close()

Environment variable:

Variable Description
ODBC_CONNECTION_STRING Full ODBC connection string

Rulebook

# Save a rulebook
sql.insert_rulebook("Always respond in formal English.", rulebook_id="default")
sql.insert_rulebook({"rulebook": "Be concise."}, rulebook_id="v2")

# Fetch rulebook rows
docs = sql.get_rulebook(rulebook_id="default")

# Get a ready-to-use prompt string
prompt = sql.rulebook_prompt(rulebook_id="default")

Session History

# Save a session
sql.save_user_history(
    user_id="user_123",
    messages=[
        {"role": "user", "content": "Hello"},
        {"role": "assistant", "content": "Hi!"},
    ],
    title="First chat",
)

# Append to an existing session
sql.append_user_history(
    user_id="user_123",
    session_id="<session_id>",
    messages={"role": "user", "content": "Another message"},
)

# Fetch one session
session = sql.get_user_history_session(user_id="user_123", session_id="<session_id>")

# Fetch all sessions for a user
sessions = sql.fetch_user_history(user_id="user_123", limit=20, offset=0)

# Search message content
results = sql.search_user_history(user_id="user_123", query="refund policy")

# Delete a session
sql.delete_user_history(user_id="user_123", session_id="<session_id>")

vectorstore

Ingest documents (PDF, DOCX) using ChromaDB embeddings.

from tm_utility.vectorstore import ingest_document, retrieve

# Ingest a single file or a folder
ingest_document(
    file_path="./docs/manual.pdf",
    metadata=False, #[Optional] default - True
    embedding_mode="chunk",   # "chunk" | "page" | "file"
    chroma_path="./chroma_db",
    chunk_size=1000, #[Optional] default = 1000
    chunk_overlap=200, #[Optional] default = 200
)

Retrieve documents (PDF, DOCX) using ChromaDB embeddings.

from tm_utility.vectorstore import retrieve

# Retrieve relevant chunks
results = retrieve(
    query="What is the refund policy?",
    chroma_path="./chroma_db", #[Optional] default = ./chroma_db
    top_k=5, #[Optional] default = 5
)

for r in results:
    print(r["score"], r["content"])

Supported file types: .pdf, .docx

Embedding modes:

Mode Description
chunk Splits document into overlapping text chunks
page One embedding per page
file Single embedding for the entire file

Environment Variables Summary

Variable Module Description
MONGODB_URI mongoService MongoDB connection URI
MONGODB_DB mongoService MongoDB database name
ODBC_CONNECTION_STRING sqlService ODBC connection string

Authors

Vidit Sood, Rahul Sharma, Anikait Kapoor


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tm_utilities-0.1.5.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tm_utilities-0.1.5-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file tm_utilities-0.1.5.tar.gz.

File metadata

  • Download URL: tm_utilities-0.1.5.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for tm_utilities-0.1.5.tar.gz
Algorithm Hash digest
SHA256 15d2e7066cef639ee81b36acf7f810609e34c5181ed16a45a670628f699108a9
MD5 2b94df9b2866e0ccf8e05e000097fcef
BLAKE2b-256 6560b2cb946df48c7a009c5fe74ded56404dde94c8261a24a19a639009017391

See more details on using hashes here.

File details

Details for the file tm_utilities-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: tm_utilities-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 20.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for tm_utilities-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0b3dfa0d7059d6a9cf5977b66ce09486e0f8fbc137039f4e645c23a96513d0ac
MD5 8d4a35f40afaa181579bee41abb1ac86
BLAKE2b-256 4278d5bdb86caf3efb0b3bad7d1e00ebdfcaefde22802288339eb825f42cf133

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page