Created
October 2, 2012 00:07
-
-
Save lambda-fairy/3815333 to your computer and use it in GitHub Desktop.
Treasure Chest GUI
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
""" | |
---------------- | |
Treasure Chest | |
---------------- | |
\ ^__^ | |
\ (oo)\_______ | |
(__)\ )\/\ | |
||----w | | |
|| || | |
:Author: Chris Wong | |
:Version: 2012-10-01T23:21:58 | |
This is an implementation of the simple board game, **Treasure Chest**, | |
packed into a single file. | |
The full source code for this program is available at: | |
https://github.com/lfairy/treasure-chest | |
""" | |
sources = """ | |
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 | |
""" | |
entry = """ | |
from treasurelib import gui; gui.main() | |
""" | |
#!/bin/echo This is a template file, and is not supposed to be run directly -- | |
# Bootstrap code ripped mercilessly from py.test :) | |
# Two variables should be defined above: | |
# + sources: a base64 encoded, zlib compressed, pickled dictionary | |
# mapping file names to source strings | |
# + entry: a string containing the code to run | |
import sys | |
import base64 | |
import zlib | |
try: | |
from cStringIO import StringIO | |
except ImportError: | |
from io import StringIO | |
class DictImporter(object): | |
def __init__(self, sources): | |
self.sources = sources | |
def find_module(self, name, path=None): | |
# print "find_module:", name | |
fullname = name.replace('.', '/') | |
if fullname + '.py' in self.sources: | |
return self | |
if fullname + '/__init__.py' in self.sources: | |
return self | |
return None | |
def load_module(self, name): | |
# print "load_module:", name | |
fullname = name.replace('.', '/') | |
from types import ModuleType | |
try: | |
s = self.sources[fullname + '.py'] | |
is_pkg = False | |
except KeyError: | |
s = self.sources[fullname + '/__init__.py'] | |
is_pkg = True | |
co = compile(s, fullname, 'exec') | |
module = sys.modules.setdefault(name, ModuleType(name)) | |
module.__file__ = "%s/%s" % (__file__, fullname) | |
module.__loader__ = self | |
if is_pkg: | |
module.__path__ = [fullname] | |
do_exec(co, module.__dict__) | |
return sys.modules[name] | |
def get_source(self, name): | |
fullname = name.replace('.', '/') | |
res = self.sources.get(fullname + '.py') | |
if res is None: | |
res = self.sources.get(name + '/__init__.py') | |
return res | |
def override_open(sources): | |
def open_(name, mode='r'): | |
mode = mode.replace('b', '') | |
if mode != 'r': | |
raise ValueError("only mode 'r' is supported, not '%s'" % mode) | |
else: | |
return StringIO(sources[name]) | |
return open_ | |
if __name__ == "__main__": | |
if sys.version_info >= (3, 0): | |
exec("def do_exec(co, loc): exec(co, loc)\n") | |
import pickle | |
sources = sources.encode("ascii") # ensure bytes | |
sources = pickle.loads(zlib.decompress(base64.decodebytes(sources))) | |
else: | |
import cPickle as pickle | |
exec("def do_exec(co, loc): exec co in loc\n") | |
sources = pickle.loads(zlib.decompress(base64.decodestring(sources))) | |
# sources = {'duck.py': 'def quack():\n print("Quack, I say.")'} | |
importer = DictImporter(sources) | |
sys.meta_path.append(importer) | |
locals_ = locals().copy() | |
locals_['open'] = override_open(sources) | |
# entry = "import duck; print(open('duck.py').read()); duck.quack()" | |
do_exec(entry, locals_) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment