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.4.tar.gz (20.7 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.4-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tm_utilities-0.1.4.tar.gz
  • Upload date:
  • Size: 20.7 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.4.tar.gz
Algorithm Hash digest
SHA256 f769643716c076fc3b449f600b567666018b3c7061cec80a21acb7849381b37c
MD5 9521fc4057430fc50ae8d194f2214a0e
BLAKE2b-256 15f13b771bd8422f31be4a68fc74b81acedbcf7766eb61d15109adf753bfa143

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tm_utilities-0.1.4-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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4239b5c06bb1e060f867e6f59d8f57a3cbd34fcd9a450168dee0b2aae74d2e1b
MD5 6832b6fe1396b82386851888c1a9d1a3
BLAKE2b-256 f6ba0942926099d2189c9e32f58e70f73c1eb398029d8a0a072a643d06c7bf9c

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