Airbrake Python

Overview

airbrake-python

Note. Python 3.4+ are advised to use new Airbrake Python notifier which supports async API and code hunks. Python 2.7 users should continue to use this notifier.

Airbrake integration for python that quickly and easily plugs into your existing code.

import airbrake

logger = airbrake.getLogger()

try:
    1/0
except Exception:
    logger.exception("Bad math.")

airbrake-python is used most effectively through its logging handler, and uses the Airbrake V3 API for error reporting.

install

To install airbrake-python, run:

$ pip install -U airbrake

setup

The easiest way to get set up is with a few environment variables:

export AIRBRAKE_API_KEY=*****
export AIRBRAKE_PROJECT_ID=12345
export AIRBRAKE_ENVIRONMENT=dev

and you're done!

Otherwise, you can instantiate your AirbrakeHandler by passing these values as arguments to the getLogger() helper:

import airbrake

logger = airbrake.getLogger(api_key=*****, project_id=12345)

try:
    1/0
except Exception:
    logger.exception("Bad math.")

By default, airbrake will catch and send uncaught exceptions. To avoid this behvaiour, use the send_uncaught_exc option: logger = airbrake.getLogger(api_key=*****, project_id=12345, send_uncaught_exc=False)

setup for Airbrake On-Premise and other compatible back-ends (e.g. Errbit)

Airbrake Enterprise and self-hosted alternatives, such as Errbit, provide a compatible API.

You can configure a different endpoint than the default (https://api.airbrake.io) by either:

  • Setting an environment variable:
export AIRBRAKE_HOST=https://self-hosted.errbit.example.com/
  • Or passing a host argument to the getLogger() helper:
import airbrake

logger = airbrake.getLogger(api_key=*****, project_id=12345, host="https://self-hosted.errbit.example.com/")

adding the AirbrakeHandler to your existing logger

import logging

import airbrake

yourlogger = logging.getLogger(__name__)
yourlogger.addHandler(airbrake.AirbrakeHandler())

by default, the AirbrakeHandler only handles logs level ERROR (40) and above

Additional Options

More options are available to configure this library.

For example, you can set the environment to add more context to your errors. One way is by setting the AIRBRAKE_ENVIRONMENT env var.

export AIRBRAKE_ENVIRONMENT=staging

Or you can set it more explicitly when you instantiate the logger.

import airbrake

logger = airbrake.getLogger(api_key=*****, project_id=12345, environment='production')

The available options are:

  • environment, defaults to env var AIRBRAKE_ENVIRONMENT
  • host, defaults to env var AIRBRAKE_HOST or https://api.airbrake.io
  • root_directory, defaults to None
  • timeout, defaults to 5. (Number of seconds before each request times out)
  • send_uncaught_exc, defaults to True (Whether or not to send uncaught exceptions)

giving your exceptions more context

import airbrake

logger = airbrake.getLogger()

def bake(**goods):
    try:
        temp = goods['temperature']
    except KeyError as exc:
        logger.error("No temperature defined!", extra=goods)

Setting severity

[Severity][what-is-severity] allows categorizing how severe an error is. By default, it's set to error. To redefine severity, simply build_notice with the needed severity value. For example:

notice = airbrake.build_notice(exception, severity="critical")
airbrake.notify(notice)

Using this library without a logger

You can create an instance of the notifier directly, and send errors inside exception blocks.

from airbrake.notifier import Airbrake

ab = Airbrake(project_id=1234, api_key='fake')

try:
    amazing_code()
except ValueError as e:
    ab.notify(e)
except:
    # capture all other errors
    ab.capture()

Running Tests Manually

Create your environment and install the test requirements

virtualenv venv
source venv/bin/activate
pip install .
python setup.py test

To run via nose (unit/integration tests):

source venv/bin/activate
pip install -r ./test-requirements.txt
source venv/bin/activate
nosetests

Run all tests, including multi-env syntax, and coverage tests.

pip install tox
tox -v --recreate

It's suggested to make sure tox will pass, as CI runs this. tox needs to pass before any PRs are merged.


The airbrake.io api docs used to implement airbrake-python are here: https://airbrake.io/docs/api/

[[what-is-severity]: https://airbrake.io/docs/airbrake-faq/what-is-severity/]

Comments
  • Add local variables at each backtrace line.

    Add local variables at each backtrace line.

    Note: This is a question I got from Adam Easterling via Support.


    One thing that I frequently find myself wanting is a stack trace that includes local variables at each stack frame. In Python, all that information is there -- however, it looks like your API doesn't have a place for this information.

    I asked Codebase for your API documentation, and they directed me to version 2.3, https://help.airbrake.io/kb/api-2/notifier-api-version-23

    */notice/error/backtrace/line*
    
    Required. This element can occur more than once. Each line element 
    describes one code location or frame in the backtrace when the error 
    occurred, and requires @file and @number attributes. If the location 
    includes a method or function, the @method attribute should be used. 
    

    Notice, there's not really a place to include local variables at each backtrace line.

    @vmihailenco Could we add this into V3? https://help.airbrake.io/kb/api-2/notifier-api-v3

    opened by benarent 17
  • packaging and CI refactor

    packaging and CI refactor

    Among other things, this change adds a circle.yml file so we can start testing airbrake-python using CircleCI which is free for open source projects like this one.

    The python versions I have configured for testing are:

    • 2.7.9
    • 2.7.10
    • 3.3.3
    • 3.4.3
    • 3.5.0

    I have a passing CircleCI build on my fork against the code in this pull request: https://circleci.com/gh/samstav/airbrake-python/12

    opened by stavxyz 10
  • Duck type traceback type

    Duck type traceback type

    Easier to create fake tracebacks for custom logging. If you want to create a traceback that has a custom / modified trace, airbrake will not treat it accordingly since it does a type check against types.TracebackType. This is overly cautionary since the object is just handed off to methods in the traceback module which work appropriately on duck-typed object

    Inspired by this stack overflow question: http://stackoverflow.com/questions/13210436/get-full-traceback

    opened by pfhayes 7
  • Silence the stderr git warning when running from a non-git directory

    Silence the stderr git warning when running from a non-git directory

    When running from a non-git directory the process will print fatal: Not a git repository (or any of the parent directories): .git to stderr once every minute or so. In our case we use a carefully packaged Docker container which excludes the git directory to keep the sizes smaller. This pull request silences that warning and maintains the same functionality (returning None)

    A test was also added to reproduce the issue while troubleshooting, though it was unable to capture the existing subprocess stderr so could not assert there will not be a regression. The new test will, however, display the fatal: Not a git repository (or any of the parent directories): .git warning when running test tests if there is a regression in the future.

    opened by mzsanford 5
  • Don't fail when 'extra' in log records contain non JSON serializable objects

    Don't fail when 'extra' in log records contain non JSON serializable objects

    Hi! It's me again.

    I plugged the Airbrake handler to the logging of an existing django project, and noticed that airbrake notifications were not being sent after triggering errors in the webapp. The reason was that Django, when logging errors, sends along information in the extra argument that is not any of the basic JSON types (basically every object except string, int, list, dict, etc).

    This was causing a TypeError('X is not JSON serializable') in notifier.py when executing json.dumps(payload)

    The purpose of this PR, is to use repr(object) for any param that is not JSON serializable.

    Notice that this scenario might be pretty common also outside the context of Django.

    Tests and linters green: https://circleci.com/gh/argos83/airbrake-python/11

    opened by argos83 5
  • V1.1.0 updates

    V1.1.0 updates

    Some long needed updates. Improves usability and leverages more of the datapoints available through the airbrake error reporting API. Includes a helper for fetching a logger object, pre-configured with an AirbrakeHandler, and many other improvements.

    Updated the README to reflect the simplified interface.

    opened by stavxyz 5
  • Set TLS verify

    Set TLS verify

    I set up Errbit in AWS and made the endpoint private for testing, then access the endpoint from EKS. I know we should always verify TLS, but as for especially testing, we should have an option to skip verification. Could you consider merging this feature?

    opened by dtaniwaki 4
  • describeexctipn for airbrake?

    describeexctipn for airbrake?

    How would i add airbrake code with logger i already added this

    import airbrake
    logger = airbrake.getLogger(api_key=myapikeyishiddenforprivacy:), project_id=234209)
    now i at the end of my game starter i have this
    autoRun = ConfigVariableBool('toontown-auto-run', 1)
    if autoRun:
        try:
            base.run()
        except SystemExit:
            raise
        except:
            print describeException()
            raise
    

    now how would i add logger.exception properly after describeexception so i report crashes to airbrake every time a person who plays my game crashes :)

    opened by MichaelGDev48 4
  • Asyncio support?

    Asyncio support?

    Hi thanks for good tool and battery!

    Asyncio/aiohttp stack is rapidly growing in usage and it will be really nice if library add support for async transport.

    If you consider it as an addition i can create PR.

    opened by hzlmn 3
  • Support for Python logging.config.fileConfig

    Support for Python logging.config.fileConfig

    Hi

    I'm rather new to logging with Python (and Pyramid in particular). How do I configure the logging facility to use Airbrake?

    According to 16.8. logging.config of the Python 3 library a config file should contain this:

    ...
    [handlers]
    keys = ..., airbrake
    
    [logger_myapp]
    level = <something>
    handlers = airbrake
    ...
    
    [handler_airbrake]
    class = 
    args = 
    level = 
    

    Now, what value should class, args and level take? I could think of these but I have no clue if they'd even make sense syntactically:

    [handler_airbrake]
    # Because it implementes the Python handler interface?
    class = airbrake.handler.AirbrakeHandler
    # Don't know, just guessing
    args = {'airbrake':None, 'level':NOTSET, 'project_id': 'myapp', 'api_key': myairbrakekey }
    # Delegate decision over log level to logger. For convenience only
    level = NOTSET
    
    opened by lusitania 3
  • Fix commit hash retrieval.

    Fix commit hash retrieval.

    Before, the commit hash looks like "b'8cfe34106cc8ade9da14c932523b9c5e62c0c295'" Now it looks like '8cfe34106cc8ade9da14c932523b9c5e62c0c295'

    opened by JThinkable 2
  • Make sure capture() does not drop stack frames

    Make sure capture() does not drop stack frames

    In the following example flask app, we have a report that using capture() will not report the appropriate handlers that raised the error (when running on uwsgi). Using notify() solved this problem.

    from flask import Flask, jsonify
    from airbrake.notifier import Airbrake
    
    app = Flask(__name__)
    ab = Airbrake(project_id=2, api_key='5a00a5340e6cac4def2262adb4ded8a4', host="http://getexceptional.me.ab")
    
    @app.errorhandler(Exception)
    def handle_error(e):
        ab.notify(e)
        return jsonify(error=str(e)), 500
    
    @app.route('/hello')
    def hello_world():
        raise Exception("Hello world failed")
        return 'Hello, World!'
    
    @app.route('/ping')
    def ping():
        raise Exception("ping failed")
        return 'Ping!'
    
    if __name__ == '__main__':
        app.run()
    
    opened by zachgoldstein 0
  • Notice.py initialiser should use str in message

    Notice.py initialiser should use str in message

    From https://github.com/airbrake/airbrake-python/pull/76#discussion_r113081044

    I think what I'm really trying to say is, if I did something silly/wrong like pass a string to Notice as the exception argument, then I would expect it to either 1) fail or 2) end up as the error message (or _somewhere) in airbrake.

    When passed a string, I think the initialiser should use that in the error message. More generally, we could probably clean up __init__ in notice.py so that it's more clear what it's doing.

    enhancement 
    opened by zachgoldstein 5
  • Add failback for stacktraces from exceptions

    Add failback for stacktraces from exceptions

    Right now we don't pick up stacktraces from bare exceptions. I think we should make an effort to do this, even though there is no guarantee that sys.exc_info() will pick up anything. In python 3.5+ we have exception.__traceback__, so we should also use this if it's available. This will also simplify some of the work in integrations.

    enhancement 
    opened by zachgoldstein 1
  • Add regex for filtering keys

    Add regex for filtering keys

    As mentioned in https://github.com/airbrake/airbrake-python/pull/67#discussion_r105037391. We have this in the ruby notifier, and we should add it here as well.

    enhancement 
    opened by zachgoldstein 0
Releases(v2.2.0)
  • v2.2.0(Jun 17, 2021)

    Commits

    d970443 :heavy_minus_sign: Update lint for tls verify :small_blue_diamond: Daisuke Taniwaki 59c6fbe :heavy_minus_sign: Utilize requests session to apply the verify setting throughout the instance lifecycle :small_blue_diamond: Daisuke Taniwaki 174f92b :heavy_minus_sign: Set tls verify :small_blue_diamond: Daisuke Taniwaki 9c6083d :heavy_minus_sign: Remove arthur python jpg. Use current Airbrake logo :small_blue_diamond: Patrick Humpal 6f910ae :heavy_minus_sign: Deprecate use of Python3.4 :small_blue_diamond: Patrick Humpal


    https://pypi.python.org/pypi/airbrake/2.2.0

    Source code(tar.gz)
    Source code(zip)
  • v2.1.2(Mar 5, 2019)

    Commits

    c0d83a0 :heavy_minus_sign: Update Airbrake api endpoint :small_blue_diamond: Patrick Humpal


    https://pypi.python.org/pypi/airbrake/2.1.2

    Source code(tar.gz)
    Source code(zip)
  • v2.1.1(Mar 5, 2019)

    Commits

    45a2c74 :heavy_minus_sign: Upgrade requests :small_blue_diamond: Patrick Humpal 713df8e :heavy_minus_sign: Fix pyenv for CircleCI builds 🔹 Patrick Humpal


    https://pypi.python.org/pypi/airbrake/2.1.1

    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Aug 3, 2017)

    Commits

    e1ab851 :heavy_minus_sign: Send uncaught exceptions by default :small_blue_diamond: Zach Goldstein 629a421 :heavy_minus_sign: Move 'severity' field from errors[] to context :small_blue_diamond: tuttieee 6efe49e :heavy_minus_sign: Silence the stderr git warning when running from a non-git directory :small_blue_diamond: mzsanford c9ad35b :heavy_minus_sign: Accept unicode error messages :small_blue_diamond: sirdodger


    https://pypi.python.org/pypi/airbrake/2.1.0

    Source code(tar.gz)
    Source code(zip)
  • v2.0.0(Mar 27, 2017)

    Commits

    2c8a114 :heavy_minus_sign: Remove hardcoded test version use :small_blue_diamond: Zach Goldstein d06327f :heavy_minus_sign: Bump major version to 2.0.0 :small_blue_diamond: Zach Goldstein 44bebd1 :heavy_minus_sign: Add capture decorator :small_blue_diamond: Zach Goldstein 963688e :heavy_minus_sign: Add error severity and integrate into logging :small_blue_diamond: Zach Goldstein 51b9303 :heavy_minus_sign: Set default root_directory (#68) :small_blue_diamond: Zach Goldstein 60af090 :heavy_minus_sign: Add user data to context payload (#70) :small_blue_diamond: Zach Goldstein f8b055f :heavy_minus_sign: Set the git revision in deploys if it's available locally (#64) :small_blue_diamond: Zach Goldstein ff2cdde :heavy_minus_sign: Add list-based filters (white/black) :small_blue_diamond: Zach Goldstein 2a5c267 :heavy_minus_sign: Add convenience method capture () for most recent exception :small_blue_diamond: Zach Goldstein bbfb031 :heavy_minus_sign: Feature/add separate notice obj :small_blue_diamond: Zach Goldstein 1f9fbc1 :heavy_minus_sign: Add timeout :small_blue_diamond: Zach Goldstein cb9c3e8 :heavy_minus_sign: Add readme notes for running tests manually :small_blue_diamond: Zach Goldstein 99ba7e9 :heavy_minus_sign: Add hostname to context and allow env override :small_blue_diamond: Zach Goldstein 7ac77ff :heavy_minus_sign: Upgrade to use v4 deploy endpoint fix :small_blue_diamond: Zach Goldstein


    https://pypi.python.org/pypi/airbrake/2.0.0

    Source code(tar.gz)
    Source code(zip)
  • v1.3.3(Jun 9, 2016)

    Commits

    2502c91 :heavy_minus_sign: bump to 1.3.3 for notify fix :small_blue_diamond: Sam Stavinoha fbc78dc :heavy_minus_sign: Fix Airbrake.notify regression :small_blue_diamond: Lars Butler


    https://pypi.python.org/pypi/airbrake/1.3.3

    Source code(tar.gz)
    Source code(zip)
  • v1.3.2(Apr 13, 2016)

    Commits

    c806a27 :heavy_minus_sign: bump to version 1.3.2 for traceback duck-typing :small_blue_diamond: Sam Stavinoha 6a5b9b9 :heavy_minus_sign: Fix tests, lint :small_blue_diamond: Patrick Hayes 34c93ac :heavy_minus_sign: Traceback tests :small_blue_diamond: Patrick Hayes b96e425 :heavy_minus_sign: Duck type traceback type :small_blue_diamond: Patrick Hayes


    https://pypi.python.org/pypi/airbrake/1.3.2

    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Apr 4, 2016)

    Commits

    887dd41 :heavy_minus_sign: call JSONEncoder.default(o) if repr(o) raises an exception :small_blue_diamond: Seba 12b9519 :heavy_minus_sign: Comment about inline pylint disable :small_blue_diamond: Sebastian Tello 0577541 :heavy_minus_sign: Moved pylint disable comment inline :small_blue_diamond: Seba 1d7b191 :heavy_minus_sign: Don't fail when 'extra' in log records contain non JSON serializable objects :small_blue_diamond: Seba 5421b8c :heavy_minus_sign: @phumpal README.md suggestions :small_blue_diamond: Sebastian Tello fa231cf :heavy_minus_sign: fixed: E704 multiple statements on one line :small_blue_diamond: Seba 3c90a20 :heavy_minus_sign: Fixed: E501 line too long :small_blue_diamond: Seba 13c0a7a :heavy_minus_sign: Fix: E731 do not assign a lambda expression, use a def :small_blue_diamond: Seba fa2f35e :heavy_minus_sign: Link to errbit in readme doc :small_blue_diamond: Sebastian Tello fb849f2 :heavy_minus_sign: fixed version increment :small_blue_diamond: Sebastian Tello ac6345e :heavy_minus_sign: Added support to Airbrake alternatives by accepting a base uri :small_blue_diamond: Sebastian Tello e50ca3b :heavy_minus_sign: bump version to 1.2.1 :small_blue_diamond: Sam Stavinoha bac97df :heavy_minus_sign: add python 3.3 to classifiers :small_blue_diamond: Sam Stavinoha a708b26 :heavy_minus_sign: linting import order :small_blue_diamond: Sam Stavinoha e472eef :heavy_minus_sign: libraries shouldnt do this :small_blue_diamond: Sam Stavinoha 266634b :heavy_minus_sign: wheeeeels :small_blue_diamond: Sam Stavinoha ff0c571 :heavy_minus_sign: custom exceptions :small_blue_diamond: Sam Stavinoha a777b5f :heavy_minus_sign: nosetests dont run real_test.py :small_blue_diamond: Sam Stavinoha ea2db99 :heavy_minus_sign: pass gates :small_blue_diamond: Sam Stavinoha dcad4ec :heavy_minus_sign: level-up testing and CI config :small_blue_diamond: Sam Stavinoha be8dec3 :heavy_minus_sign: fixup pkg metadata and setup.py :small_blue_diamond: Sam Stavinoha 949f184 :heavy_minus_sign: update and pin requirements :small_blue_diamond: Sam Stavinoha 0fdadcd :heavy_minus_sign: Fixing arguments erroneously given as kw-parameter :small_blue_diamond: lusitania


    https://pypi.python.org/pypi/airbrake/1.3.1

    Source code(tar.gz)
    Source code(zip)
  • v1.1.4(Aug 2, 2015)

    Commits:

    c038b31 :heavy_minus_sign: Signature change as proposed in issue #16 :small_blue_diamond: lusitania 4d25174 :heavy_minus_sign: Py3 exception logging, issue #17 :small_blue_diamond: lusitania 2a11ea0 :heavy_minus_sign: Revert "Py3 exception logging, issue #17" :small_blue_diamond: lusitania ef6dd58 :heavy_minus_sign: Py3 exception logging, issue #17 :small_blue_diamond: lusitania 2f30619 :heavy_minus_sign: Updated setuptools classifiers :small_blue_diamond: lusitania 29aa385 :heavy_minus_sign: Py3 changes, Py2 backwards compatibility fix :small_blue_diamond: lusitania 19d8764 :heavy_minus_sign: Don't overwrite a custom message :small_blue_diamond: Yoriyasu Yano 7eda24a :heavy_minus_sign: Checking the Logger for existing AirbrakeHandlers. :small_blue_diamond: John Keyes 11c2b1f :heavy_minus_sign: Splitting requirements. :small_blue_diamond: John Keyes 6938b55 :heavy_minus_sign: Ensuring an Airbrake logger doesn't have multiple AirbrakeHandlers. :small_blue_diamond: John Keyes 60a2858 :heavy_minus_sign: Adding requirements.txt :small_blue_diamond: John Keyes 0824715 :heavy_minus_sign: Adding support to pass session and environment via extra parameters. :small_blue_diamond: John Keyes


    https://pypi.python.org/pypi/airbrake/1.1.4

    Source code(tar.gz)
    Source code(zip)
  • v1.1.3(Aug 20, 2014)

  • v1.1.2(Aug 13, 2014)

  • v1.1.1(Aug 13, 2014)

Owner
Airbrake
Visibility into your Application's Health
Airbrake
Tethered downgrade 64-bit iDevices vulnerable to checkm8

ra1nstorm Tethered downgrade 64-bit iDevices vulnerable to checkm8 Since the purpose of this tool is to tethered downgrade a device, after restoring p

mini_exploit 65 Nov 08, 2022
Toppr Os Auto Class Joiner

Toppr Os Auto Class Joiner Toppr os is a irritating platform to work with especially for students it takes a while and is problematic most of the time

1 Dec 18, 2021
Reconhecimento de voz, em português, com python

Speech_recognizer Reconhecimento de voz, em português, com python O ato de falar nada mais é que criar vibrações no ar. Por meio de um conversor analó

Marcus Vinícius Ribeiro Andrade 1 Dec 14, 2021
Sathal's Python Projects Repository

Sathal's Python Projects Repository Purpose and Motivation I come from a mainly C Programming Language background and have previous classroom experien

Sam 1 Oct 20, 2021
For when you really need to rank things

Comparisonator For when you really need to rank things. Do you know that feeling when there's this urge deep within you that tells you to compare thin

Maciej Wilczyński 1 Nov 01, 2021
A simple and convenient build-and-run system for C and C++.

smake Smake is a simple and convenient build-and-run system for C and C++ projects. Why make another build system? CMake and GNU Make are great build

Venkataram Edavamadathil Sivaram 18 Nov 13, 2022
python for windows extensions

This is the readme for the Python for Win32 (pywin32) extensions source code. See CHANGES.txt for recent changes. 'setup.py' is a standard distutils

27 Dec 08, 2022
This is friendlist update tools & old idz clon & follower idz clon etc

This is friendlist update tools & old idz clon & follower idz clon etc

MAHADI HASAN AFRIDI 1 Jan 15, 2022
Launcher program to select which version of the Q-Sys software to launch.

QSC-QSYS Launcher Launcher program to select which version of the Q-Sys software to launch. Instructions To use the application simply save the "Q-Sys

Zach Lisko 2 Sep 28, 2022
Calculatrix is a project where I'll create plenty of calculators in a lot of differents languages

Calculatrix What is Calculatrix ? Calculatrix is a project where I'll create plenty of calculators in a lot of differents languages. I know this sound

1 Jun 14, 2022
Turn a raspberry pi into a Bluetooth Midi device

PiBluetoothMidSetup This will change serveral system wide packages/configurations Do not run this on your primary machine or anything you don't know h

MyLab6 40 Sep 19, 2022
Este software fornece interface gráfica para o escputil e tem por finalidade testar e fazer limpeza no cabeçote de impressão....

PrinterTools O que é PrinterTools? PrinterTools é uma ferramenta gráfica que usa o escputil para testar e fazer limpeza de cabeçote de impressão em si

Elizeu Barbosa Abreu 1 Dec 21, 2021
Implementation of the Folders📂 esoteric programming language, a language with no code and just folders.

Folders.py Folders is an esoteric programming language, created by Daniel Temkin in 2015, which encodes the program entirely into the directory struct

Sina Khalili 425 Dec 17, 2022
Automatização completa do site https://blaze.com

PyBlaze Pyblaze possibilita o acesso a api do site blaze utilizando python, retornando os últimos resultados de crashs e doubles. Agora também é possí

Cleiton Leonel 24 Dec 30, 2022
An AI-powered device to stop people from stealing my packages.

Package Theft Prevention Device An AI-powered device to stop people from stealing my packages. Installation To install on a raspberry pi, clone the re

rydercalmdown 157 Nov 24, 2022
This repo holds custom callback plugin, so your Ansible could write everything in the PostgreSQL database.

English What is it? This is callback plugin that dumps most of the Ansible internal state to the external PostgreSQL database. What is this for? If yo

Sergey Pechenko 19 Oct 21, 2022
Here You will Find CodeChef Challenge Solutions

Here You will Find CodeChef Challenge Solutions

kanishk kashyap 1 Sep 03, 2022
Beatsaber for Python

beatsaber Beatsaber for Python It was automatically generated with mkpylib. If you're reading this message, it m

Shawn Presser 3 Jul 30, 2021
This is a Docker-based pipeline for preparing sextractor-ready multiwavelength images

Pipeline for creating NB422-detected (ODI) catalog The repository contains a Docker-based pipeline for preprocessing observational data. The pipeline

1 Sep 01, 2022
Final Fantasy XIV Auto House Clicker

Final Fantasy XIV Auto House Clicker

KanameS 0 Mar 31, 2022