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 defaults to the current working directory name
configure_logging("my-app")

# Or specify explicitly
configure_logging("my-app", service_name="my-app", environment="prod")

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:

from wardy_utils.log import configure_logging, LogConfig

config = LogConfig(
    file_level="INFO",
    standard_format="[{time}] {level} - {message}",
    detail_format="{time} {file}:{line} {level} {message}",
    rotation="1 hour",
    retention="14 days",
)

configure_logging("my-app", service_name="my-app", config=config)

Environment variables:

Variable Description Default
WARDY_UTILS_LOG_LOGFIRE_TOKEN Token for Logfire cloud logging (disabled)
WARDY_UTILS_LOG_LOGFIRE_SERVICE_NAME Service name for Logfire (cwd name)
WARDY_UTILS_LOG_LOGFIRE_ENVIRONMENT Environment name for Logfire (cascaded)

Cascade behavior when not explicitly set:

  • LOGFIRE_SERVICE_NAME: Falls back to the current working directory name (e.g. beer-cloud)
  • LOGFIRE_ENVIRONMENT: Falls back to APP_ENVIRONMENTREFLEX_ENV_MODENODE_ENVENVIRONMENT

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.14 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.5.2.tar.gz (7.0 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.5.2-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: wardy_utils-0.5.2.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","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.5.2.tar.gz
Algorithm Hash digest
SHA256 168d92eaf3f2537d6e6fa9c673f483da7f8de17cdc502c8a8cef95fc19a70a93
MD5 82fb47fa4c70e2ad9df0cd19d39f2553
BLAKE2b-256 12e0b0e04d6240dd7046286aec9ea3c19d81f1203d9c6dc396c5311832bd58a2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: wardy_utils-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","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.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5452959f85ea35887a0c6512b1dff4938869373ba386e06e695d2bf668cf3642
MD5 0d26c0363253deb3936e950e4f4a789b
BLAKE2b-256 148347556aefbe8803abc9d50028519ffcc09d07a19fdf2bb6b14d2788ac2e06

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