Metadata-Version: 2.0 Name: MacroPy Version: 1.0.3 Summary: Macros for Python: Quasiquotes, Case Classes, LINQ and more! Home-page: https://github.com/lihaoyi/macropy Author: Li Haoyi, Justin Holmgren Author-email: haoyi.sg@gmail.com, justin.holmgren@gmail.com License: MIT Platform: UNKNOWN Classifier: Programming Language :: Python :: 2.7 Provides-Extra: js_snippets Requires-Dist: pjs; extra == 'js_snippets' Requires-Dist: selenium; extra == 'js_snippets' Provides-Extra: pinq Requires-Dist: SQLAlchemy; extra == 'pinq' Provides-Extra: pyxl Requires-Dist: pyxl; extra == 'pyxl' MacroPy is an implementation of Macros in the Python Programming Language. MacroPy provides a mechanism for user-defined functions (macros) to perform transformations on the abstract syntax tree(AST) of Python code at module import time. This is an easy way to modify the semantics of a python program Python like you've never seen before ------------------------------------ MacroPy allows you to create constructs which are impossible to have in normal python code, such as: Tracing ``````` .. code:: python with trace: sum([x + 5 for x in range(3)]) # sum([x + 5 for x in range(3)]) # range(3) -> [0, 1, 2] # x + 5 -> 5 # x + 5 -> 6 # x + 5 -> 7 # [x + 5 for x in range(3)] -> [5, 6, 7] # sum([x + 5 for x in range(3)]) -> 18 Quick Lambdas ````````````` .. code:: python print map(f[_[0]], ['omg', 'wtf', 'bbq']) # ['o', 'w', 'b'] print reduce(f[_ + _], ['omg', 'wtf', 'bbq']) # 'omgwtfbbq Case Classes ```````````` .. code:: python @case class Point(x, y): pass p = Point(1, 2) print str(p) #Point(1, 2) print p.x #1 print p.y #2 print Point(1, 2) == Point(1, 2) # True And more! All this runs perfectly on vanilla Python 2.7 or PyPy 2.0. For more details, see the `GitHub page `_. or ask in the `Google Group `_.