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 toAPP_ENVIRONMENT→REFLEX_ENV_MODE→NODE_ENV→ENVIRONMENT
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 clientsync_force_client: Sync client that ignores origin cache headersasync_client: Default async clientasync_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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
413c12c5aca653d5ff792505025cfbd768519654bf76b1804fabbf307d812b25
|
|
| MD5 |
91f8983de5cd0737884a9cabd7d7ffc3
|
|
| BLAKE2b-256 |
bcfa3108dd8aa1a6ff32aacd08997ebe648db267b1af25192613c87dd029e765
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccee7a38281b9cb54a7e1cc499f1f533458355d9bb1d15963d13b63cefa63e8a
|
|
| MD5 |
3d1d135634136ba8890a547f01e802ba
|
|
| BLAKE2b-256 |
217a70bbabafaa02cf2e2466eb0db2433bf92dfade46760e676b6b5196ea9c80
|