Helper utilities for Python projects
Project description
Generic helpers I wish existed or am constantly copying into my Python projects.
env
Get information about your environment variables.
.get(key, ...)
You can use env.get as a drop-in replacement for os.environ.get. It acts the same but is smarter about types and has extra magic for ENVIRONMENT based settings:
from project_runpy import env env.get('DATABASE_URL') # get an environment variable env.get('DATABASE_URL', 'sqlite:///:memory:') # provide a default env.get('DEBUG', True) # default can be bool env.get('WORKERS', 10) # default can be other types too, like int env.get('DEBUG', True, type_func=bool) # explicitly get bool
If additional kwargs are specified, they will become the default if ENVIRONMENT matches the key:
from project_runpy import env env.get('WORKERS', 10, DEV=1) # if ENVIRONMENT == DEV: default = 1 env.get('DEBUG', FALSE, type_func=bool, TEST=False) # combine it
.require(key, ...)
If you want to be extra strict/cautious, you can raise an exception if the environment variable was not set by using .require instead of .get.
Demo:
>>> from project_runpy import env >>> env.require('SHIRTSNSHOES') ImproperlyConfigured: Environment variable not found: SHIRTSNSHOES
ColorizingStreamHandler
Logging handler that produces colorized console output
Usage:
import logging from project_runpy import ColorizingStreamHandler logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) logger.addHandler(ColorizingStreamHandler())
Django:
LOGGING = { ... 'handlers': { ... 'console': { 'level': 'DEBUG', 'class': 'project_runpy.ColorizingStreamHandler', }, }, ... }
ReadableSqlFilter
A logging filter designed to make the django.db.backends console output more readable. This is an alternate to Django Debug Toolbar’s SQL panel (which, you should be using too)
Turns:
(0.002) SELECT "tx_elevators_building"."id", "tx_elevators_building"."elbi", "tx_elevators_building"."name_1", "tx_elevators_building"."name_2", "tx_elevators_building"."address_1", "tx_elevators_building"."address_2", "tx_elevators_building"."city", "tx_elevators_building"."zip_code", "tx_elevators_building"."county", "tx_elevators_building"."owner", "tx_elevators_building"."contact", "tx_elevators_building"."latitude", "tx_elevators_building"."longitude" FROM "tx_elevators_building" LIMIT 21; args=()
Into:
(0.002) SELECT ... FROM "tx_elevators_building" LIMIT 21; args=()
To install, edit your Django settings:
LOGGING = { ... 'filters': { 'readable_sql': { '()': 'project_runpy.ReadableSqlFilter', }, }, 'loggers': { 'django.db.backends': { 'filters': ['readable_sql'], ... }, }, ... }
About
Inspired by dj-settings-helpers, ansistrm.py, and tornado’s define.
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
Hashes for project_runpy-0.3.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6353ae92d02522855c95253f92d564f45f826ade22f60c1f713a4b5c315f3e70 |
|
MD5 | c3603a3c87b1a5a6ee651fdfddddde34 |
|
BLAKE2b-256 | 42b6ae7217aa0e7799bf8318bf5e6138bfdfd1af01f06dd751e3fe6e7d5a8cae |