├── __init__.py └── README.md /__init__.py: -------------------------------------------------------------------------------- 1 | import operator as op 2 | from functools import reduce 3 | from random import random 4 | from functools import wraps 5 | try: 6 | import builtins as _ 7 | except ImportError: 8 | import __builtin__ as _ 9 | 10 | 11 | def r(f, g, p=1/6): 12 | @wraps(f) 13 | def i(*a, **k): 14 | if random() < p: 15 | return g(*a, **k) 16 | return f(*a, **k) 17 | return i 18 | 19 | 20 | int = r(_.int, lambda *a: _.int(*a) - 1) 21 | float = r(_.float, lambda v: _.float(v) + 0.001) 22 | str = r(_.str, lambda *a, **k: _.str(*a, **k)[::-1]) 23 | bool = r(_.bool, lambda v: not(_.bool(v))) 24 | len = r(_.len, lambda v: _.len(v) - 1) 25 | ord = r(_.ord, lambda v: _.ord(v.lower() if v.isupper() else v.upper())) 26 | 27 | abs = r(_.abs, lambda v: -_.abs(v)) 28 | pow = r(_.pow, lambda v, p, *a: _.pow(v, p + 1, *a)) 29 | min = r(_.min, lambda *a: _.max(*a)) 30 | max = r(_.max, lambda *a: _.min(*a)) 31 | sum = r(_.sum, lambda v, *a: reduce(op.__sub__, v)) 32 | 33 | hasattr = r(_.hasattr, lambda o, n: not(_.hasattr(o, n))) 34 | 35 | sorted = r(_.sorted, lambda *a, **k: list(_.reversed(*a, **k))) 36 | reversed = r(_.reversed, lambda v: _.sorted(v)) 37 | enumerate = r( 38 | _.enumerate, lambda v, *a: ((i + 1, _v) for i, _v in _.enumerate(v, *a))) 39 | 40 | globals = r(_.globals, locals) 41 | locals = r(_.locals, _.globals) 42 | id = r(_.id, lambda v: _.id(_.id)) 43 | 44 | help = r(_.help, lambda v: 'halp') 45 | exit = r(_.exit, print) 46 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # \_\_init\_\_.py 2 | 3 | You are one `import` away from evil. 4 | 5 | ## The evil within 6 | 7 | ### Booleans 8 | 9 | ```python 10 | >>> bool(True) 11 | True 12 | >>> bool(True) 13 | True 14 | >>> bool(True) 15 | False 16 | >>> bool(True) 17 | True 18 | ``` 19 | 20 | ### Integers 21 | 22 | ```python 23 | >>> int(10) 24 | 10 25 | >>> int(10) 26 | 10 27 | >>> int(10) 28 | 9 29 | >>> int(10) 30 | 10 31 | >>> int(10) 32 | 9 33 | ``` 34 | 35 | ### Floats 36 | 37 | ```python 38 | >>> float(10) 39 | 10.0 40 | >>> float(10) 41 | 10.0 42 | >>> float(10) 43 | 10.001 44 | >>> float(10) 45 | 10.0 46 | ``` 47 | 48 | ### Strings 49 | 50 | ```python 51 | >>> str('apple') 52 | 'apple' 53 | >>> str('apple') 54 | 'apple' 55 | >>> str('apple') 56 | 'elppa' 57 | >>> str('apple') 58 | 'apple' 59 | ``` 60 | 61 | ### Min and max 62 | 63 | ```python 64 | >>> min(1, 2, 3) 65 | 1 66 | >>> min(1, 2, 3) 67 | 3 68 | >>> min(1, 2, 3) 69 | 1 70 | ``` 71 | 72 | ```python 73 | >>> max(1, 2, 3) 74 | 3 75 | >>> max(1, 2, 3) 76 | 1 77 | >>> max(1, 2, 3) 78 | 3 79 | ``` 80 | 81 | ### Sorted and reversed 82 | 83 | ```python 84 | >>> sorted([1, 2, 3, 4, 5]) 85 | [1, 2, 3, 4, 5] 86 | >>> sorted([1, 2, 3, 4, 5]) 87 | [1, 2, 3, 4, 5] 88 | >>> sorted([1, 2, 3, 4, 5]) 89 | [5, 4, 3, 2, 1] 90 | ``` 91 | 92 | And more.. 93 | 94 | ## License 95 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 96 | Version 2, December 2004 97 | 98 | Copyright (C) 2018 Ramon Castilhos Saraiva 99 | 100 | Everyone is permitted to copy and distribute verbatim or modified 101 | copies of this license document, and changing it is allowed as long 102 | as the name is changed. 103 | 104 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 105 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 106 | 107 | 0. You just DO WHAT THE FUCK YOU WANT TO. 108 | 109 | ## Inspiration 110 | 111 | Inspired by Aras Pranckevičius's [preprocessor_fun.h](https://gist.github.com/aras-p/6224951) 112 | --------------------------------------------------------------------------------