Skip to main content

OSBot-Utils

Current Release Python Type-Safe Caching codecov

A comprehensive Python utility toolkit providing Type-Safe primitives, decorators, caching layers, HTML/AST helpers, SQLite tooling, SSH execution, LLM request pipelines, tracing, and more — all designed to accelerate building robust, maintainable automation and integration code.


✨ Key Features

  • 🛡️ Type-Safe First: Strongly typed primitives (Safe_Str, Safe_Int, Safe_Float, etc.) with validation and sanitization
  • ⚡ Multi-layer Caching: In-memory, per-instance, pickle-on-disk, temp-file, and request/response caches
  • 🗂️ Rich Utilities: Helpers for HTML parsing/rendering, AST inspection, SSH/SCP execution, SQLite schema management, and more
  • 🧠 LLM Support: Structured request builders, OpenAI API integration, schema enforcement, and persistent cache
  • 🔍 Tracing & Debugging: Full function call tracing with configurable depth, locals capture, and pretty output
  • 🧪 Testing Utilities: Temp SQLite DBs, mockable caches, and easy test helpers

📦 Installation

pip install osbot-utils

From source:

pip install git+https://github.com/owasp-sbot/OSBot-Utils.git@dev

🚀 Quick Start

Using Type-Safe Primitives

from osbot_utils.type_safe.primitives.safe_str.Safe_Str import Safe_Str

class Username(Safe_Str):
    max_length = 20

print(Username("alice"))  # 'alice'
print(Username("invalid username!"))  # 'invalid_username_'

Simple In-Memory Caching

from osbot_utils.decorators.methods.cache_on_self import cache_on_self

class DataFetcher:
    @cache_on_self
    def fetch(self, x):
        print("Fetching…")
        return x * 2

fetcher = DataFetcher()
fetcher.fetch(10)  # Calls method
fetcher.fetch(10)  # Returns cached result

HTML Parsing

from osbot_utils.helpers.html.transformers.Html__To__Html_Dict import html_to_dict

html_code = "<html><body><h1>Hello</h1></body></html>"
print(html_to_dict(html_code))

SQLite Dynamic Table

from osbot_utils.helpers.sqlite.Temp_Sqlite__Table import Temp_Sqlite__Table

with Temp_Sqlite__Table() as table:
    table.row_schema = type("Row", (), {"name": str, "age": int})
    table.create()
    table.add_row_and_commit(name="Alice", age=30)
    print(table.rows())

LLM Request Execution

from osbot_utils.helpers.llms.builders.LLM_Request__Builder__Open_AI import LLM_Request__Builder__Open_AI
from osbot_utils.helpers.llms.actions.LLM_Request__Execute import LLM_Request__Execute

builder = LLM_Request__Builder__Open_AI()
builder.set__model__gpt_4o().add_message__user("Say hi in JSON")

executor = LLM_Request__Execute(request_builder=builder)
response = executor.execute(builder.llm_request())
print(response.response_data)

🏗️ Architecture

OSBot-Utils is organized into core Type-Safe foundations with layered utilities for different domains:

┌──────────────────────────────────────────────┐
│                 Your Code                     │
│  ┌───────────┐  ┌─────────────┐  ┌──────────┐ │
│  │ Type-Safe │  │  Decorators │  │  Helpers │ │
│  │ Primitives│  │  & Caching  │  │ (HTML,   │ │
│  │           │  │             │  │  AST,   │ │
│  │           │  │             │  │  SQLite)│ │
│  └───────────┘  └─────────────┘  └──────────┘ │
└──────────────────────────┬───────────────────┘
                           │
┌──────────────────────────▼───────────────────┐
│                OSBot-Utils                    │
│  ┌────────────────────────────────────────┐  │
│  │       Type-Safe Core Classes           │  │
│  │  Validation / Sanitization / Defaults  │  │
│  └────────────────────────────────────────┘  │
│  ┌────────────────────────────────────────┐  │
│  │    Caching Layers & Decorators         │  │
│  │  @cache, @cache_on_self, pickle, tmp   │  │
│  └────────────────────────────────────────┘  │
│  ┌────────────────────────────────────────┐  │
│  │ Domain Helpers                          │ │
│  │ HTML, AST, SSH, LLMs, SQLite, Tracing   │ │
│  └────────────────────────────────────────┘  │
└──────────────────────────────────────────────┘

📚 Key Modules

  • helpers/safe_* — Type-Safe primitives for validated strings, ints, floats
  • decorators/methods — Caching, exception capture, timing, validation
  • helpers/html — HTML ↔ dict ↔ tag classes
  • helpers/ast — Python AST parsing, visiting, merging
  • helpers/sqlite — High-level SQLite APIs, schema generation, temp DBs
  • helpers/ssh — SSH/SCP execution with caching
  • helpers/llms — LLM request/response handling with caching
  • helpers/trace — Function call tracing with configurable output

🎯 Benefits

For Developers

  • Strong runtime type validation with Type-Safe classes
  • Consistent patterns for caching and decorators
  • Rich helper library to avoid reinventing the wheel

For Production

  • Deterministic caching with persistence options
  • Safe, validated data structures at integration boundaries
  • Lightweight, dependency-minimal utilities

For Teams

  • Standardized approach to cross-cutting concerns (logging, tracing, caching)
  • Modular helpers to fit many contexts (CLI, web apps, serverless)

🤝 Contributing

Pull requests are welcome! Check existing patterns in /helpers and /decorators for style guidance.


📄 License

Licensed under the Apache 2.0 License.

Metadata

Release files for osbot-utils 3.75.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for osbot-utils 3.75.0
File Size Uploaded
osbot_utils-3.75.0.tar.gz 365.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for osbot-utils 3.75.0
File Interpreter ABI Platform
osbot_utils-3.75.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.0 MB

Release files / osbot_utils-3.75.0.tar.gz

Download URL osbot_utils-3.75.0.tar.gz
Size 365.1 kB
Tags Source
SHA-256 checksum
How to use checksums
cedbd44a6093a25e2ae1852edf822706163273819f4d4c91b31be2d7e7b61673
BLAKE2b-256 checksum
How to use checksums
1c970342d2c68ccfc74ab1f3285a8d1de847de13cadc9d9ae58bcfc64cbdbac8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / osbot_utils-3.75.0-py3-none-any.whl

Download URL osbot_utils-3.75.0-py3-none-any.whl
Size 662.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
784d45c959be216210bb3de07cfc3c309644073a8c0fe656e71dbfb45a294968
BLAKE2b-256 checksum
How to use checksums
61df4960b491af1d8bc92f3bb9b04310a88698784f8feae976970b6e28d6e491
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.2.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

3.75.0 This release

2 release files

3.72.0

2 release files

3.71.0

2 release files

3.70.0

2 release files

3.63.0

2 release files

3.62.0

2 release files

3.61.0

2 release files

3.60.0

2 release files

3.59.0

2 release files

3.58.0

2 release files

3.57.0

2 release files

3.56.0

2 release files

3.48.0

2 release files

3.47.0

2 release files

3.46.0

2 release files

3.45.0

2 release files

3.44.0

2 release files

3.43.0

2 release files

3.42.0

2 release files

3.41.0

2 release files

3.40.0

2 release files

3.39.0

2 release files

3.38.0

2 release files

3.37.0

2 release files

3.36.0

2 release files

3.35.0

2 release files

3.34.0

2 release files

3.33.0

2 release files

3.32.0

2 release files

3.31.0

2 release files

3.30.0

2 release files

3.29.0

2 release files

3.28.0

2 release files

3.27.0

2 release files

3.26.0

2 release files

3.22.0

2 release files

3.21.0

2 release files

3.20.0

2 release files

3.19.0

2 release files

3.11.0

2 release files

3.10.0

2 release files

3.9.0

2 release files

3.8.0

2 release files

3.7.0

2 release files

3.6.0

2 release files

3.5.0

2 release files

3.4.0

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.0

2 release files

2.93.0

2 release files

2.92.0

2 release files

2.91.0

2 release files

2.85.0

2 release files

2.84.0

2 release files

2.83.0

2 release files

2.82.0

2 release files

2.81.0

2 release files

2.80.0

2 release files

2.79.0

2 release files

2.78.0

2 release files

2.77.0

2 release files

2.76.0

2 release files

2.75.0

2 release files

2.74.0

2 release files

2.73.0

2 release files

2.71.0

2 release files

2.70.0

2 release files

2.69.0

2 release files

2.65.0

2 release files

2.64.0

2 release files

2.62.0

2 release files

2.61.0

2 release files

2.60.0

2 release files

2.59.0

2 release files

2.58.0

2 release files

2.55.0

2 release files

2.54.0

2 release files

2.53.0

2 release files

2.52.0

2 release files

2.51.0

2 release files

2.48.0

2 release files

2.47.0

2 release files

2.46.0

2 release files

2.45.0

2 release files

2.44.0

2 release files

2.43.0

2 release files

2.42.0

2 release files

2.41.0

2 release files

2.40.0

2 release files

2.39.0

2 release files

2.38.0

2 release files

2.37.0

2 release files

2.36.0

2 release files

2.35.0

2 release files

2.34.0

2 release files

2.30.0

2 release files

2.29.0

2 release files

2.28.0

2 release files

2.27.0

2 release files

2.26.0

2 release files

2.25.0

2 release files

2.24.0

2 release files

2.23.0

2 release files

2.20.0

2 release files

2.19.0

2 release files

2.18.0

2 release files

2.17.0

2 release files

2.16.0

2 release files

2.15.0

2 release files

2.14.0

2 release files

2.13.0

2 release files

2.12.0

2 release files

2.11.0

2 release files

2.10.0

2 release files

2.9.0

2 release files

2.8.0

2 release files

2.7.0

2 release files

2.6.0

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.0

2 release files

1.95.0

2 release files

1.94.0

2 release files

1.93.0

2 release files

1.92.0

2 release files

1.91.0

2 release files

1.90.0

2 release files

1.89.0

2 release files

1.88.0

2 release files

1.84.0

2 release files

1.83.0

2 release files

1.82.0

2 release files

1.81.0

2 release files

1.80.0

2 release files

1.79.0

2 release files

1.78.0

2 release files

1.77.0

2 release files

1.69.0

2 release files

1.68.0

2 release files

1.67.0

2 release files

1.66.0

2 release files

1.65.0

2 release files

1.64.0

2 release files

1.63.0

2 release files

1.62.0

2 release files

1.61.0

2 release files

1.60.0

2 release files

1.59.0

2 release files

1.58.0

2 release files

1.46.0

2 release files

1.45.0

2 release files

1.44.0

2 release files

1.43.0

2 release files

1.42.0

2 release files

1.38.0

2 release files

1.37.0

2 release files

1.36.0

2 release files

1.35.0

2 release files

1.31.0

2 release files

1.30.0

2 release files

1.29.0

2 release files

1.28.0

2 release files

1.27.0

2 release files

1.26.0

2 release files

1.17.0

2 release files

1.16.0

2 release files

1.15.0

2 release files

1.13.0

2 release files

1.11.0

2 release files

1.10.0

2 release files

1.7.7

2 release files

1.7.1

2 release files

1.7.0

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page