Skip to main content

General Utilities

Project description

Wardy Utils

Wardy Utils is a collection of general-purpose utilities designed to simplify and enhance your Python scripting experience. This library provides reusable components that can be integrated into your projects to save time and effort.

Installation

pip install wardy-utils

The base package only includes pydantic-settings. Install extras for additional functionality:

# Logging with Loguru
pip install wardy-utils[log]

# HTTP client with caching
pip install wardy-utils[web]

# Both
pip install wardy-utils[log,web]

Features

Logging (wardy-utils[log])

Flexible logging setup using Loguru, with optional Logfire integration for cloud logging and metrics.

Key features:

  • Simple setup for rotating file and stderr logging
  • Intercepts standard Python logging and redirects to Loguru
  • Optional Logfire integration for cloud log aggregation
  • Automatic instrumentation of available libraries (system-metrics, psycopg, httpx, sqlalchemy, redis, asyncpg)

Basic usage:

from wardy_utils.log import configure_logging, logger

# Set up logging to both stderr and a rotating file
configure_logging("myapp")

logger.info("Hello from Loguru!")

# Standard logging is also intercepted:
import logging
logging.warning("This will also go to Loguru!")

With Logfire cloud logging:

from wardy_utils.log import configure_logging, logger

# service_name is required when using Logfire
configure_logging("myapp", service_name="my-service")

logger.info("This goes to Logfire too!")

Set WARDY_UTILS_LOG_LOGFIRE_TOKEN to enable Logfire. You must have logfire installed separately:

pip install logfire[system-metrics,psycopg,httpx]  # with desired extras

Customization:

configure_logging(
    "myapp",
    service_name="my-service",  # Required for Logfire
    standard_format="[{time}] {level} - {message}",
    detail_format="{time} {file}:{line} {level} {message}",
    log_rotation="1 day",
    log_retention="7 days",
)

Environment variables:

Variable Description Default
WARDY_UTILS_LOG_LOGFIRE_TOKEN Token for Logfire cloud logging (disabled)

HTTP Client (wardy-utils[web])

A high-level HTTP client built on httpx and hishel with built-in caching.

Basic usage:

from wardy_utils.web import cached_client

client = cached_client()
response = client.get("https://example.com")
print(response.text)

Pre-configured singletons:

from wardy_utils.web import sync_client, async_client

# Sync client with default settings
response = sync_client.get("https://example.com")

# Or use async
async def fetch():
    response = await async_client.get("https://example.com")

Available singletons:

  • sync_client: Default sync client
  • sync_force_client: Sync client that ignores origin cache headers
  • async_client: Default async client
  • async_force_client: Async client that ignores origin cache headers

Environment variables:

Variable Description Default
WARDY_UTILS_WEB_CACHE_DIR Directory for the sqlite cache file In-memory
WARDY_UTILS_WEB_CACHE_FILENAME Filename for the sqlite cache file wardy_cache.db
WARDY_UTILS_WEB_CACHE_TTL Cache TTL in seconds 1800 (30 min)
WARDY_UTILS_WEB_TIMEOUT Request timeout in seconds 45
WARDY_UTILS_WEB_FORCE_CACHE If truthy, ignore origin cache-control headers Disabled
WARDY_UTILS_WEB_HTTP2 Enable or disable HTTP/2 Enabled

Proxy support: The client inherits proxy settings from standard http_proxy, https_proxy, and all_proxy environment variables.

Requirements

  • Python 3.13 or higher

License

This project is licensed under the MIT License.

Author

Created by Wardy Email: wardy3+gitlab@gmail.com

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

wardy_utils-0.4.1.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

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

wardy_utils-0.4.1-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file wardy_utils-0.4.1.tar.gz.

File metadata

  • Download URL: wardy_utils-0.4.1.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.23 {"installer":{"name":"uv","version":"0.9.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for wardy_utils-0.4.1.tar.gz
Algorithm Hash digest
SHA256 2c9d692cb120afc72e771a75ddc8e2f445d2de365ec1c2c6613ea52d2d6654d4
MD5 cba6d1854793d480a18554f145fd82cb
BLAKE2b-256 207739f926b9e32470bafa8eed158bee433b7fbd50e2621492e4f73b032ac83b

See more details on using hashes here.

File details

Details for the file wardy_utils-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: wardy_utils-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.23 {"installer":{"name":"uv","version":"0.9.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for wardy_utils-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2f08dbfb66ce6e59ea1cdb059d6de83b03360a5eb9a8ddefbd061c9ec66d886e
MD5 baf39ef2b0503c5a8784cb56c8bc077d
BLAKE2b-256 f0b91062b2f0aa1f198f7cff94131beb2690acf606570a333a09d761196cd95c

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