Skip to content

Instantly share code, notes, and snippets.

@nhoad
nhoad / cpycpy.py
Created February 3, 2016 07:55
CPyCPy
import cffi
ffi = cffi.FFI()
ffi.cdef('int PyDict_DelItemString(void *, const char *key);')
lib = ffi.dlopen('libpython3.so')
d = {'foo': 'bar'}
print('before', d)
d_p = ffi.cast('void*', id(d))
lib.PyDict_DelItemString(d_p, ffi.new('char[]', b'foo'))
from unittest import mock
class AttributeTrackMock(mock.Mock):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.attr_accesses = []
def __getattr__(self, attr):
res = super().__getattr__(attr)
self.attr_accesses.append(res)
@nhoad
nhoad / code.py
Last active August 29, 2015 14:18
asynchronous object initialisation
import asyncio
class AsyncInitMeta(type):
@asyncio.coroutine
def __call__(cls, *args, **kwargs):
self = cls.__new__(cls)
yield from self.__init__(*args, **kwargs)
return self
@nhoad
nhoad / jake
Created February 25, 2015 03:48
jake!
#!/usr/bin/env python2
import argparse
import contextlib
import logging
import re
import os
import sys
import types
from overload import overload
@overload
def hello(name: str):
print('Hello, %s!' % name)
@overload
def hello(name: int):
@nhoad
nhoad / gist:8966377
Last active March 2, 2023 09:30
Async stdio with asyncio
import os
import asyncio
import sys
from asyncio.streams import StreamWriter, FlowControlMixin
reader, writer = None, None
@asyncio.coroutine
def stdio(loop=None):
@nhoad
nhoad / gist:6128860
Last active December 20, 2015 12:09
The horror of collections.OrderedDict
>>> f.keys()
[]
>>> f._OrderedDict__root[0][0][0][0][0][0][0][0][0][0]
[[...], [...], None]
>>> f._OrderedDict__root[0][1][0][1][0][1][0][1][0][1][0]
[[...], [...], None]