Skip to content

Instantly share code, notes, and snippets.

@lambda-fairy
Created October 2, 2012 00:07
Show Gist options
  • Save lambda-fairy/3815333 to your computer and use it in GitHub Desktop.
Save lambda-fairy/3815333 to your computer and use it in GitHub Desktop.
Treasure Chest GUI
#!/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