Skip to content

Instantly share code, notes, and snippets.

@cleichner
Created October 27, 2013 00:09
Show Gist options
  • Save cleichner/7176206 to your computer and use it in GitHub Desktop.
Save cleichner/7176206 to your computer and use it in GitHub Desktop.
This eats nearly everything that it interacts with.
'''
Null module:
Responds to all actions and requests for members with a null object.
For example, this code will execute the debugging tools in development, but
won't do anything in production.
if environment == development:
import ExpensiveDebugging
else:
import null as ExpensiveDebugging
dev_tool = ExpensiveDebugging.tool()
with dev_tool(code) as d:
for line in d:
analyze(line)
'''
import sys
class Null(object):
def __init__(self, *args, **kwargs):
pass
def __getattr__(self, key):
return self
def __setattr__(self, key, value):
return self
def __call__(self, *args, **kwargs):
return self
def __str__(self):
return "null"
def __repr__(self):
return "null"
def __lt__(self, other):
return self
def __le__(self, other):
return self
def __eq__(self, other):
return self
def __ne__(self, other):
return self
def __gt__(self, other):
return self
def __ge__(self, other):
return self
def __hash__(self):
return 0
def __nonzero__(self):
return False
def __delattr__(self, name):
pass
def __len__(self):
return 0
def __concat__(self, other):
return self
def __getitem__(self, key):
return self
def __setitem__(self, key, value):
return self
def __delitem__(self, key):
return self
def __iter__(self):
return iter([])
def __reversed__(self):
return iter([])
def __contains__(self, item):
return False
def __add__(self, other):
return self
def __sub__(self, other):
return self
def __mul__(self, other):
return self
def __floordiv__(self, other):
return self
def __mod__(self, other):
return self
def __divmod__(self, other):
return self
def __pow__(self, other, modulo):
return self
def __lshift__(self, other):
return self
def __rshift__(self, other):
return self
def __and__(self, other):
return self
def __xor__(self, other):
return self
def __or__(self, other):
return self
def __div__(self, other):
return self
def __truediv__(self, other):
return self
def __radd__(self, other):
return self
def __rsub__(self, other):
return self
def __rmul__(self, other):
return self
def __rdiv__(self, other):
return self
def __rtruediv__(self, other):
return self
def __rfloordiv__(self, other):
return self
def __rmod__(self, other):
return self
def __rdivmod__(self, other):
return self
def __rpow__(self, other):
return self
def __rlshift__(self, other):
return self
def __rrshift__(self, other):
return self
def __rand__(self, other):
return self
def __rxor__(self, other):
return self
def __ror__(self, other):
return self
def __iadd__(self, other):
return self
def __isub__(self, other):
return self
def __imul__(self, other):
return self
def __idiv__(self, other):
return self
def __itruediv__(self, other):
return self
def __ifloordiv__(self, other):
return self
def __imod__(self, other):
return self
def __ipow__(self, other, modulo):
return self
def __ilshift__(self, other):
return self
def __irshift__(self, other):
return self
def __iand__(self, other):
return self
def __ixor__(self, other):
return self
def __ior__(self, other):
return self
def __neg__(self):
return self
def __pos__(self):
return self
def __abs__(self):
return self
def __invert__(self):
return self
def __complex__(self):
return 0
def __int__(self):
return 0
def __long__(self):
return 0L
def __float__(self):
return 0.0
def __oct__(self):
return '0'
def __hex__(self):
return '0x0'
def __index__(self):
return self
def __coerce__(self, other):
return self
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, traceback):
return False
sys.modules[__name__] = Null()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment