Skip to content

Instantly share code, notes, and snippets.

from collections import Mapping, namedtuple
def choices(fields):
'''Create a tuple-like instance appropriate for Django's ``Field.choices``.
Additionally the returned instance also supports attribute access by field name.
Example usage::
>>> t = choices(enumerate(['abc', 'pqr', 'xyz']))
@gsakkis
gsakkis / gist:631306
Created October 17, 2010 21:17
Replace classmethod with descriptor
diff --git a/django/views/generic/base.py b/django/views/generic/base.py
--- a/django/views/generic/base.py
+++ b/django/views/generic/base.py
@@ -9,6 +9,39 @@
logger = getLogger('django.request')
+class AsViewDescriptor(object):
+ def __get__(self, instance, cls):
+ if instance is not None:
@gsakkis
gsakkis / gist:866301
Created March 11, 2011 18:10
Dumbo remote debugging
import os, sys
class Winpdb(object):
'''Embed a Winpdb server.
If you have to tunnel to connect remotely from the Winpdb client, run:
ssh -C -N -f -L 51000:localhost:51000 $SERVER_HOST
@gsakkis
gsakkis / bincounthist.py
Created April 21, 2011 20:46
automatic binning for integer data histograms
import sys
from itertools import groupby
from operator import itemgetter
def bincount_histogram(nums, num_bins=sys.maxint, min_bin_count=1):
num_bins = max(num_bins, 1)
min_bin_count = max(min_bin_count, 1)
# initialize the bins of width=1
bin_edges, counts = [], []
@gsakkis
gsakkis / benchmark.py
Created October 3, 2011 21:36
Slope One
import sys, csv, time
from collections import defaultdict
from itertools import islice
import orig_slopeone, slopeone, numpy_slopeone
classes = [
orig_slopeone.SlopeOne,
#orig_slopeone.SlopeOneNumpy, # XXX: dog slow
slopeone.SlopeOne,
import pkgutil
def recursive_import(package):
for imp, name, ispkg in pkgutil.walk_packages(package.__path__, package.__name__ + '.'):
yield __import__(name, fromlist=[name])
@gsakkis
gsakkis / insert.py
Created October 2, 2012 19:48
SQLAlchemy identity map order
import random
from sqlalchemy import Column, ForeignKey, Integer, String, create_engine
from sqlalchemy.exc import IntegrityError
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class Author(Base):
__tablename__ = 'author'

Keybase proof

I hereby claim:

  • I am gsakkis on github.
  • I am gsakkis (https://keybase.io/gsakkis) on keybase.
  • I have a public key whose fingerprint is 83E7 7BB2 98CA A4EC 9556 B0C1 66D2 9747 83C4 C52F

To claim this, I am signing this object:

@gsakkis
gsakkis / test_quantize.py
Created March 12, 2012 09:11
Python decimal rounding behavior
-2.695
reduced by ROUND_UP, ROUND_FLOOR, ROUND_HALF_UP, ROUND_HALF_EVEN
increased by ROUND_DOWN, ROUND_05UP, ROUND_CEILING, ROUND_HALF_DOWN
-2.669, -2.699
reduced by ROUND_UP, ROUND_FLOOR, ROUND_HALF_UP, ROUND_HALF_DOWN, ROUND_HALF_EVEN
increased by ROUND_DOWN, ROUND_05UP, ROUND_CEILING
-2.665
reduced by ROUND_UP, ROUND_FLOOR, ROUND_HALF_UP
increased by ROUND_DOWN, ROUND_05UP, ROUND_CEILING, ROUND_HALF_DOWN, ROUND_HALF_EVEN
-2.661, -2.691