Skip to content

Instantly share code, notes, and snippets.

View christabor's full-sized avatar
😅
I may be slow to respond.

Chris Tabor christabor

😅
I may be slow to respond.
View GitHub Profile
@christabor
christabor / pkgutil_analysis.py
Last active January 7, 2021 23:45
A quick script to analyze python package code structure
View pkgutil_analysis.py
"""Generate a report about the meta information of a pckage.
This includes its children modules,
functions, classes, arg/kwarg count, etc.
"""
import ast
import inspect
import os
import pkgutil
import sys
@christabor
christabor / plant_reproduction_exp.py
Created February 26, 2018 05:01
plant type reproduction automata experiment
View plant_reproduction_exp.py
from random import choice
types = ['sporophyte', 'gametophyte']
class Plant(object):
def __init__(self, type=None):
self.type = type or choice(types)
@christabor
christabor / wrapped_ctxmgr.py
Created January 25, 2018 21:33
decorators/ctxmgrs
View wrapped_ctxmgr.py
from contextlib import contextmanager
def to_mgr(fn):
fn.__converted__ = True
@contextmanager
def fn2(*args, **kwargs):
try:
fn(*args, **kwargs)
@christabor
christabor / Principles.md
Last active March 9, 2019 06:34
Bret Victor principles
View Principles.md

Articles and their respective points

GLOBAL

  • Interactivity
  • Direct manipulation
  • Intuition
  • See the data, see the changes

===============================================================================

@christabor
christabor / fields_science_combinatorics.py
Last active June 19, 2019 03:28
generated-scientifc-fields-results
View fields_science_combinatorics.py
# -*- coding: UTF-8 -*-
"""Scientific branches."""
from itertools import permutations
from random import choice
branches = {
"Acarology": "study of mites",
"Aceology": "science of remedies, or of therapeutics; iamatology.",
"Acology": "study of medical remedies",
@christabor
christabor / flask_fsm.py
Created July 12, 2017 05:38
Flask Finite State Machine PoC
View flask_fsm.py
"""FSM abstraction in python for flask.
==========================
Requirements:
1. Transition from/to steps
2. Only allow certain transitions
3. Reset FSM once in a certain position (stopping state)
E.g. a form that may then save to a DB and then
@christabor
christabor / bookmarks_inverted_index.py
Last active April 8, 2021 17:38
Make your chrome bookmarks into a searchable, tokenized inverted index
View bookmarks_inverted_index.py
"""Tokenize bookmark titles and create an inverted index."""
import re
import os
import sys
from pprint import pprint as ppr
from collections import Counter, defaultdict
from pyquery import PyQuery as pq
@christabor
christabor / advanced_decorators.py
Created June 9, 2017 05:45
Advanced decorator builder / customization
View advanced_decorators.py
"""
Exploring some ideas around customizable decorators that derive default
values from a config or instance.
"""
from functools import wraps
# Simple customizable decorator.
@christabor
christabor / descriptor_test.py
Created June 6, 2017 21:58
Instrumentation through descriptors
View descriptor_test.py
from pprint import pprint as ppr
from collections import defaultdict
from datetime import datetime as dt
class Db(object):
def default_obj(self):
return dict(
last_modified=None,
@christabor
christabor / crazyfmt.py
Last active May 15, 2017 00:10
Crazy str formatting
View crazyfmt.py
print('-' * 80)
for x in range(10):
print('{num}: {:.>{pad1}d} {:.>{pad2}d} {:.>{pad3}d} {:.>{pad4}d}'.format(x ** 2, x ** 3, x ** 4, x ** 5, num=x, pad1=10, pad2=20, pad3=30, pad4=40))
class Kaboom(object):
def __format__(self, format):
if format == 'explode':
return '*' * 80