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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
15d2e7066cef639ee81b36acf7f810609e34c5181ed16a45a670628f699108a9
|
|
| MD5 |
2b94df9b2866e0ccf8e05e000097fcef
|
|
| BLAKE2b-256 |
6560b2cb946df48c7a009c5fe74ded56404dde94c8261a24a19a639009017391
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b3dfa0d7059d6a9cf5977b66ce09486e0f8fbc137039f4e645c23a96513d0ac
|
|
| MD5 |
8d4a35f40afaa181579bee41abb1ac86
|
|
| BLAKE2b-256 |
4278d5bdb86caf3efb0b3bad7d1e00ebdfcaefde22802288339eb825f42cf133
|