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.0.tar.gz (6.8 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.0-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: wardy_utils-0.5.0.tar.gz
  • Upload date:
  • Size: 6.8 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.0.tar.gz
Algorithm Hash digest
SHA256 413c12c5aca653d5ff792505025cfbd768519654bf76b1804fabbf307d812b25
MD5 91f8983de5cd0737884a9cabd7d7ffc3
BLAKE2b-256 bcfa3108dd8aa1a6ff32aacd08997ebe648db267b1af25192613c87dd029e765

See more details on using hashes here.

File details

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

File metadata

  • Download URL: wardy_utils-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 8.2 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ccee7a38281b9cb54a7e1cc499f1f533458355d9bb1d15963d13b63cefa63e8a
MD5 3d1d135634136ba8890a547f01e802ba
BLAKE2b-256 217a70bbabafaa02cf2e2466eb0db2433bf92dfade46760e676b6b5196ea9c80

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