Skip to content

Instantly share code, notes, and snippets.

View akaptur's full-sized avatar

Allison Kaptur akaptur

View GitHub Profile
@akaptur
akaptur / gist:d8348c21e93d61ec9397
Created September 29, 2014 19:12
recursion limit checker
# 2.7
if (tstate->recursion_depth > recursion_limit) {
--tstate->recursion_depth;
PyErr_Format(PyExc_RuntimeError,
"maximum recursion depth exceeded%s",
where);
return -1;
# 3.4
def write_block(names, next_name, f):
for depth, func_name in enumerate(names):
f.write("\n" + " " * depth + "def %s():" % func_name)
f.write("\n" + " " * (depth + 1) + "%s()" % next_name)
for depth, func_name in reversed(list(enumerate(names[1:]))):
f.write("\n" + " " * (depth + 1) + "%s()" % func_name)
f.write("\n") # for readability ;)
def write_chained_functions(total_functions):
with open('/usr/share/dict/words','r') as name_file:
fn_names = [line.strip() for line in name_file.readlines()]
first_name = fn_names[0]
last_name = fn_names[total_functions]
fn_names = iter(fn_names)
with open("empty_chain.py", 'w') as f:
name = next(fn_names)
following_name = next(fn_names)
for _ in range(total_functions):
@akaptur
akaptur / gist:bb7981515824b79c96e3
Created September 10, 2014 18:48
bash caching, viewed with `type`
byterun_env ⚲ type python
python is /usr/local/bin/python
byterun_env ⚲ source bin/activate
(byterun_env)byterun_env ⚲ type python
python is /Users/afk/Dropbox/python/byterun_env/bin/python
(byterun_env)byterun_env ⚲ python
Python 2.7.6 (default, Feb 11 2014, 18:46:41)
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
@akaptur
akaptur / collections.py
Created July 30, 2014 14:01
Named tuples from Python's Lib/collections.py
################################################################################
### namedtuple
################################################################################
_class_template = '''\
class {typename}(tuple):
'{typename}({arg_list})'
__slots__ = ()
@akaptur
akaptur / gist:6ca2347bf250bfd4f87a
Created July 25, 2014 19:59
error message from generator bug in byterun
FAIL: test_generator_from_generator2 (tests.test_functions.TestGenerators)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/afk/Dropbox/python/byterun_env/byterun/tests/test_functions.py", line 239, in test_generator_from_generator2
""")
File "/Users/afk/Dropbox/python/byterun_env/byterun/tests/vmtest.py", line 86, in assert_ok
self.assert_same_exception(vm_exc, py_exc)
File "/Users/afk/Dropbox/python/byterun_env/byterun/tests/vmtest.py", line 96, in assert_same_exception
self.assertEqual(str(e1), str(e2))
nose.proxy.AssertionError: AssertionError: "unsupported operand type(s) for *: 'NoneType' and 'NoneType'" != 'None'
@akaptur
akaptur / gist:9137899
Created February 21, 2014 16:45
Class variables vs. instance variables in python
>>> class Test(object):
... var = 7
... def __init__(self):
... self.ivar = 2
...
>>> t = Test()
>>> s = Test()
>>> t.__dict__
{'ivar': 2}
>>> t.var
>>> class Thing(object):
... def __init__(self, name, description):
... self.name = name
... self.desc = description
...
>>> b = Thing('box', 'empty')
>>> c = Thing('cat', 'fuzzy')
>>> collection = {'box': b, 'cat' : c}
>>> collection['box']
<__main__.Thing object at 0x1073a2150>
@akaptur
akaptur / gist:7217177
Created October 29, 2013 15:45
Possible misunderstanding of how `cause` interacts with context manager silencing in python 3
>>> class FalseContext(object):
... def __enter__(self):
... l.append('i')
... return self
... def __exit__(self, exc_type, exc_val, exc_tb):
... l.append('o')
... return False
...
>>> class TrueContext(object):
... def __enter__(self):
@akaptur
akaptur / gist:7173535
Created October 26, 2013 19:28
Example output of tox on byterun, passing a command to nosetest
(byterun_env)byterun [assorted-fixes $%] ⚲ tox -- tests.test_basic:TestIt
GLOB sdist-make: /Users/afk/Dropbox/python/byterun_env/byterun/setup.py
py27 inst-nodeps: /Users/afk/Dropbox/python/byterun_env/byterun/.tox/dist/Byterun-1.0.zip
py27 runtests: commands[0] | nosetests tests.test_basic:TestIt
..........................
----------------------------------------------------------------------
Ran 26 tests in 0.280s
OK
py33 inst-nodeps: /Users/afk/Dropbox/python/byterun_env/byterun/.tox/dist/Byterun-1.0.zip