skip to navigation
skip to content

Not Logged In

project_runpy 0.3.1

Helper utilities for Python projects

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.

 
File Type Py Version Uploaded on Size
project_runpy-0.3.1-py2.py3-none-any.whl (md5) Python Wheel 2.7 2014-08-18 7KB
project_runpy-0.3.1.tar.gz (md5) Source 2014-08-18 8KB
  • Downloads (All Versions):
  • 7 downloads in the last day
  • 101 downloads in the last week
  • 460 downloads in the last month