Skip to main content

Useful Python Tidbits

Project description

Ever find yourself copying and pasting small chunks of Python code between a bunch of your projects? The goal of this library is to reduce or eliminate that problem.

Yes, I realize that’s never going to happen. Contributions are very appreciated though, let’s see how close we can get.

Latest PyPI Version CircleCI Test Status Code Coverage Python Version Support

Installation

$ pip install --upgrade tidbits

Note that in an effort to keep this library generalized, optional dependencies are not included, ie. for the Sentry integration you will still need to

$ pip install raven

Usage

GCloud

> requires python-json-logger

Have you ever run an app on Google Cloud and wondered why all your logs were marked as errors, regardless of log level? Well, most likely you weren’t formatting them correctly – Google Cloud expects JSON logs with “severity” rather than “levelname”, which you can set with:

from tidbits.gcloud.log import get_handler

logging.getLogger().addHandler(get_handler())
# or, even better, set all your loggers at once with tidbits.log

Log

Ever had to configure the loggers of all of your dependencies? This one’s for you.

from tidbits.log import get_all_loggers
from tidbits.log import get_all_base_loggers
from tidbits.log import set_handler
from tidbits.log import set_loglevel

import requests

get_all_loggers()
# ['requests', 'urllib3', 'urllib3.connection', 'urllib3.connectionpool', 'urllib3.poolmanager', 'urllib3.response', 'urllib3.util', 'urllib3.util.retry']

get_all_base_loggers()
# ['requests', 'urllib3']

set_handler(myCoolHandler)
# all loggers use this (and only this) handler

set_loglevel(debug=True)
# sets logging.getLogger() to DEBUG and all others to INFO
set_loglevel(debug=False)
# sets logging.getLogger() to INFO and all others to WARNING

Integrations

> requires raven

Do you use Sentry? I do. And every single project I use it in contains the same block for configuring it from the SENTRY_DSN environment variable and the same block for instrumenting the error logger.

from tidbits.integration.sentry import SENTRY
from tidbits.integration.sentry import instrument_logger

try:
    {}['missing_key']
except Exception:
    # damn, I totally didn't expect an error here, better send it to Sentry
    SENTRY.captureException()

# creates events in Sentry for each error log
instrument_logger(level=logging.Error)

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

tidbits-0.2.1.tar.gz (4.3 kB view hashes)

Uploaded Source

Built Distribution

tidbits-0.2.1-py2.py3-none-any.whl (7.9 kB view hashes)

Uploaded Python 2 Python 3

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