Skip to content

Instantly share code, notes, and snippets.

Louis Warren louisswarren

Block or report user

Report or block louisswarren

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
milesrout /
Created Mar 26, 2018
Gives the characters of any literary work
louisswarren /
Last active Jun 1, 2017
A clarinet is a pipe with a reed; reads from a named pipe.
#!/usr/bin/env python3
import os
import sys
import textwrap
import time
def usage():
Usage: {} <pipepath>
louisswarren /
Last active Sep 18, 2017
Lazily evaluated dictionary generator
class LazyDict:
'''Use a 2-tuple generator as a lazily-evaluated dictionary.'''
def __init__(self, gen):
self.gen = gen
self.dict = {}
def _generate_to(self, key):
while key not in self.dict:
found_key, found_val = next(self.gen)
self.dict[found_key] = found_val
louisswarren /
Created May 15, 2017
Search for a file and open it with xdg-open
#!/usr/bin/env python3
import re
import subprocess
import sys
if len(sys.argv) < 2:
print("Usage: {} <findregex> [pythonregex]...")
import builtins
def testable(f):
def run_test(test):
args = {name: value for (name, value) in test.__annotations__.items()
if name != 'return'}
assert f(**args) == test.__annotations__['return']
return test
f.test = run_test
louisswarren /
Last active Feb 5, 2018
Batch rename files using your editor
#!/usr/bin/env python3
import os
import subprocess
import tempfile
EDITOR = os.environ.get('EDITOR', 'vim')
def input_new_names(old_names):
with tempfile.NamedTemporaryFile(suffix='.tmp') as fname_file:
louisswarren /
Last active May 11, 2017
Play audio from a youtube search in the terminal
#!/usr/bin/env python3
from os import system
from sys import argv
# Example:
# foo bar baz
# calls youtube-dl 'ytsearch:foo bar baz' --max-downloads 1 -o - | cvlc - --no-video
call_str = 'youtube-dl "ytsearch:{}" --max-downloads 1 -o -'
call_str += ' | cvlc - --no-video --play-and-exit'
louisswarren /
Last active May 24, 2018
Generate passwords which are easy to type
# Generate passwords which can be typed without using any finger to press two
# different keys in a row.
# For each finger, write the letters *you* type with that finger.
finger_classes = [
import functools
def accumulate(accum_type):
def outer_wrapper(f):
def inner_wrapper(*args, **kwds):
return accum_type(iter(f(*args, **kwds)))
return inner_wrapper
return outer_wrapper
You can’t perform that action at this time.