Skip to content

Instantly share code, notes, and snippets.

@numberoverzero
numberoverzero / tracemod.py
Last active August 29, 2015 14:18
Clear frames from a traceback - Python 3
# Haven't figured out how to modify tracebacks yet, since traceback.tb_next
# is read-only. I don't want to go the proxy route that jinja did, because
# while it's brilliant (as usual) it's not clean. See `_init_ugly_crap`
# Reference: https://github.com/mitsuhiko/jinja2/blob/master/jinja2/debug.py
# This is what I'd LIKE to be able to do:
internal_code = set()
@numberoverzero
numberoverzero / Preferences.sublime-settings
Last active January 31, 2016 08:01
sublime text user settings
{
"always_show_minimap_viewport": true,
"auto_complete_delay": 200,
"bold_folder_labels": true,
"caret_extra_width": 1,
"color_scheme": "Packages/Bubububububad and Boneyfied Color Schemes/Boneyfied.tmTheme",
"draw_minimap_border": true,
"ensure_newline_at_eof_on_save": true,
"file_exclude_patterns":
[
@numberoverzero
numberoverzero / retry.py
Created April 29, 2015 17:20
requests retries
import functools
import time
import requests
DEFAULT_MAX_ATTEMPTS = 4
DEFAULT_BACKOFF_COEFF = 50.0
def default_backoff_func(operation, attempts):
''' attempts is the number of calls so far that have failed '''
@numberoverzero
numberoverzero / gist:a2bb50011c64e20823c0
Last active February 15, 2016 23:43
Installed sublime packages
git
gitgutter
package control
sidebarenhancements
sublimelinter
sublimelinter-flake8
sublimelinter-jshint
theme - sodareloaded
sass
@numberoverzero
numberoverzero / CleanTwitchHomepage.user.js
Last active September 21, 2016 10:00
Clean up the twitch homepage to get to the shit I care about faster
// ==UserScript==
// @name CleanTwitchHomepage
// @namespace https://numberoverzero.com
// @description clean up the twitch homepage to get to the shit I care about
// @include http://www.twitch.tv/
// @include https://www.twitch.tv/
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @version 2
// @grant GM_addStyle
@numberoverzero
numberoverzero / async_value.py
Created July 6, 2015 02:50
Variable that can be `await`ed on to reach a certain value, without blocking an event loop
import asyncio
missing = object()
class Value:
'''
Simple class that enables `await value.wait_for(foo)` to wait until the
variable is set to the expected value, without blocking the event loop.
Loosely modeled after asyncio.Event and asyncio.Condition
@numberoverzero
numberoverzero / boto3_retry.py
Created July 8, 2015 21:48
Exponential backoff retries
import botocore
import boto3
import functools
import time
DEFAULT_BACKOFF_COEFF = 50.0
DEFAULT_MAX_ATTEMPTS = 4
MAX_BATCH_SIZE = 25
RETRYABLE_ERRORS = [
@numberoverzero
numberoverzero / query_boto3.py
Last active December 14, 2016 15:39
Query on an involved table, using boto3
import arrow
import boto3
import uuid
dynamodb = boto3.client('dynamodb')
some_id = uuid.uuid4()
some_time = arrow.now()
request = {
'ConsistentRead': False,
@numberoverzero
numberoverzero / query_bloop.py
Last active June 21, 2016 02:16
Query on a complex model, using bloop
import arrow
import uuid
some_id = uuid.uuid4()
some_time = arrow.now()
q = engine.query(Model) \
.forward(True).consistent(True) \
.key((Model.name == some_id) & (Model.date == some_time)) \
.filter(Model.joined == "today") \
@numberoverzero
numberoverzero / conditional_save.py
Last active August 29, 2015 14:25
conditional saves in bloop
user = User(id='foobar', email='foobar@domain.com')
# Standard save, hoping we've got a unique id...
engine.save(user)
# Adding a condition
expect = User.id.is_(None)
engine.save(user, condition=expect)