Skip to main content

Helper utilities for Python projects

Project description

https://github.com/crccheck/project_runpy/actions/workflows/ci.yaml/badge.svg?branch=master

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

project_runpy-1.1.2.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

project_runpy-1.1.2-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

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

Hashes for project_runpy-1.1.2.tar.gz
Algorithm Hash digest
SHA256 898f64d4417be57e04df6143630e2694b79347576a35bbc8d02b30812b7d7f1f
MD5 1744e1239b57d4a540605239283417ee
BLAKE2b-256 e45d593a226a1b822f8959443d94638c22e33ec77fae92466bcf3129c3d47f79

See more details on using hashes here.

File details

Details for the file project_runpy-1.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for project_runpy-1.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 707e66b0215139aff15d85c16df87d8620d09d31bd55cd1bb7444c093151ef3a
MD5 eae92539312eed278eb902fd1c0d39dd
BLAKE2b-256 ac859f4e72c42a231bc87573d43407e2ba89daef11f33266ad2823173a3f173f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page