Helper utilities for Python projects
Project description
Generic helpers I wish existed or am constantly copying into my Python projects. This is also my test project for random processes.
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 output more readable in local dev. This is an alternate to Django Debug Toolbar’s SQL panel (which, you should be using too) and adds feedback for queries outside HTML. This will slow down your dev server, but it’s a tradeoff for getting faster feedback for optimizing your queries.
Django compatibility: Django >= 2.0
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
And when you have many queries, they all line up nicely in your terminal.
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
File details
Details for the file project_runpy-1.1.2.tar.gz
.
File metadata
- Download URL: project_runpy-1.1.2.tar.gz
- Upload date:
- Size: 17.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 898f64d4417be57e04df6143630e2694b79347576a35bbc8d02b30812b7d7f1f |
|
MD5 | 1744e1239b57d4a540605239283417ee |
|
BLAKE2b-256 | e45d593a226a1b822f8959443d94638c22e33ec77fae92466bcf3129c3d47f79 |
File details
Details for the file project_runpy-1.1.2-py3-none-any.whl
.
File metadata
- Download URL: project_runpy-1.1.2-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 707e66b0215139aff15d85c16df87d8620d09d31bd55cd1bb7444c093151ef3a |
|
MD5 | eae92539312eed278eb902fd1c0d39dd |
|
BLAKE2b-256 | ac859f4e72c42a231bc87573d43407e2ba89daef11f33266ad2823173a3f173f |