Skip to content

Instantly share code, notes, and snippets.

View blakev's full-sized avatar
🎯
Focusing

Blake VandeMerwe blakev

🎯
Focusing
View GitHub Profile
@blakev
blakev / filters.py
Last active July 22, 2022 04:23
Django admin.ModelAdmin `list_filter` meta type classes for relative time and boolean values
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
# >>
# vidangel-backend, 2022
# Blake VandeMerwe <[email protected]>
# <<
import re
from datetime import timedelta
@blakev
blakev / base_query_validator.py
Created July 19, 2021 22:29
FastAPI Query parameter fixer/validators
from inspect import signature
from http import HTTPStatus
from logging import getLogger
from functools import wraps, partial
from typing import Dict, Callable, TypeVar, Optional
from fastapi import HTTPException
from fastapi.params import Query
T = TypeVar('T')
@blakev
blakev / display.py
Created May 2, 2021 00:45
Simple Python3 "driver" for the WaveShare PoE Pi HAT with LCD display.
import time
from typing import Optional, List
from PIL import Image
from PIL import ImageDraw
from PIL import ImageOps
from PIL import ImageFont
from smbus import SMBus
@blakev
blakev / r-pihole_top10.txt
Last active May 8, 2022 20:50
/r/pihole's Top 10 blocklist. 2020-04-07
# Compilation of r/pihole User's Top-10 blocked domains.
ssl-bbcsmarttv.2cnt.net
tlx.3lift.com
graph.accountkit.com
app.adjust.com
ib.adnxs.com
fls-na.amazon.com
mads.amazon.com
unagi-na.amazon.com
import timeit
print(timeit.Timer("'+'.join([str(x) for x in range(10000)])").repeat(3, 1000))
print(timeit.Timer("'+'.join(map(str, range(10000)))").repeat(3, 1000))
# [1.843802978983149, 1.838354193023406, 1.8291272450005636]
# [1.4447947760345414, 1.442527316045016, 1.4384180280612782]
@blakev
blakev / gist.py
Last active September 26, 2017 22:57
Are we running in a docker container? (Python)
import os
import subprocess
def in_container():
# type: () -> bool
""" Determines if we're running in an lxc/docker container. """
out = subprocess.check_output('cat /proc/1/sched', shell=True)
out = out.decode('utf-8').lower()
checks = [
'docker' in out,
@blakev
blakev / only_if.py
Created July 19, 2017 19:55
Dinking around with decorators
import time
import json
import random
from functools import wraps
def only_if(condition, args_=None, *, pass_value=False, cache=False):
_fn = condition if callable(condition) else lambda: condition
if args_ is None:
@blakev
blakev / slack_handler.py
Last active November 30, 2022 16:18
Python logging handler for publishing to a slack channel.
import os
import time
import json
import socket
import logging
from slacker import Slacker, Error as SlackerError
class SlackChannelHandler(logging.Handler):
@blakev
blakev / cc_extras.py
Created November 17, 2016 02:39
cookiecutter helper function that will replace |FILENAME,filter,filter,..| patterns with the contents of FILENAME, each line being applied with filters.
import os
import re
RE_CONTENT = re.compile(r'(\|[\w\.\,]+\|)', re.I)
fns = {
'blockquote': lambda s: '> ' + s,
'code': lambda s: ' ' + s,
'comment': lambda s: '# {}'.format(s).rstrip() + '\n',
'list': lambda s: ' - ' + s
@blakev
blakev / scratch.py
Last active July 1, 2016 17:25
selenium scratch on dynamic page objects
import string
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
CSS = By.CSS_SELECTOR
def split_case(n):
ret = []