# HG changeset patch # User Neil Muller # Date 1336293144 -7200 # Node ID c90a6586cd66c50f0c5dee8f623c9da5fae9ed98 # Parent d0de8832774b51f23b096dd3f4a9094ce8d11387 PEP8-ify skellington (because) diff -r d0de8832774b -r c90a6586cd66 create-upload.py --- a/create-upload.py Sat May 05 13:52:29 2012 +0200 +++ b/create-upload.py Sun May 06 10:32:24 2012 +0200 @@ -20,7 +20,7 @@ if len(sys.argv) != 2: print '''Usage: python %s -eg. python %s my_cool_game-1.0'''%(sys.argv[0], sys.argv[0]) +eg. python %s my_cool_game-1.0''' % (sys.argv[0], sys.argv[0]) sys.exit() base = sys.argv[1] @@ -36,6 +36,7 @@ package.write(name, os.path.join(base, name)) package.write('run_game.py', os.path.join(base, 'run_game.pyw')) + # utility for adding subdirectories def add_files(generator): for dirpath, dirnames, filenames in generator: @@ -44,10 +45,13 @@ dirnames.remove(name) for name in filenames: - if name.startswith('.'): continue + if name.startswith('.'): + continue suffix = os.path.splitext(name)[1] - if suffix in ('.pyc', '.pyo'): continue - if name[0] == '.': continue + if suffix in ('.pyc', '.pyo'): + continue + if name[0] == '.': + continue filename = os.path.join(dirpath, name) package.write(filename, os.path.join(base, filename)) diff -r d0de8832774b -r c90a6586cd66 gamelib/data.py --- a/gamelib/data.py Sat May 05 13:52:29 2012 +0200 +++ b/gamelib/data.py Sun May 06 10:32:24 2012 +0200 @@ -10,15 +10,16 @@ data_py = os.path.abspath(os.path.dirname(__file__)) data_dir = os.path.normpath(os.path.join(data_py, '..', 'data')) + def filepath(filename): '''Determine the path to a file in the data directory. ''' return os.path.join(data_dir, filename) + def load(filename, mode='rb'): '''Open a file in the data directory. "mode" is passed as the second arg to open(). ''' return open(os.path.join(data_dir, filename), mode) - diff -r d0de8832774b -r c90a6586cd66 gamelib/main.py --- a/gamelib/main.py Sat May 05 13:52:29 2012 +0200 +++ b/gamelib/main.py Sun May 06 10:32:24 2012 +0200 @@ -8,6 +8,7 @@ import data + def main(): print "Hello from your game's main()" print data.load('sample.txt').read() diff -r d0de8832774b -r c90a6586cd66 pyweek-upload.py --- a/pyweek-upload.py Sat May 05 13:52:29 2012 +0200 +++ b/pyweek-upload.py Sun May 06 10:32:24 2012 +0200 @@ -3,7 +3,14 @@ Handles authentication and gives upload progress feedback. ''' -import sys, os, httplib, cStringIO, socket, time, getopt +import sys +import os +import httplib +import cStringIO +import socket +import time +import getopt + class Upload: def __init__(self, filename): @@ -13,6 +20,7 @@ sep_boundary = '\n--' + boundary end_boundary = sep_boundary + '--' + def mimeEncode(data, sep_boundary=sep_boundary, end_boundary=end_boundary): '''Take the mapping of data and construct the body of a multipart/form-data message with it using the indicated boundaries. @@ -20,16 +28,17 @@ ret = cStringIO.StringIO() for key, value in data.items(): # handle multiple entries for the same name - if type(value) != type([]): value = [value] + if type(value) != type([]): + value = [value] for value in value: ret.write(sep_boundary) if isinstance(value, Upload): - ret.write('\nContent-Disposition: form-data; name="%s"'%key) + ret.write('\nContent-Disposition: form-data; name="%s"' % key) filename = os.path.basename(value.filename) - ret.write('; filename="%s"\n\n'%filename) + ret.write('; filename="%s"\n\n' % filename) value = open(os.path.join(value.filename), "rb").read() else: - ret.write('\nContent-Disposition: form-data; name="%s"'%key) + ret.write('\nContent-Disposition: form-data; name="%s"' % key) ret.write("\n\n") value = str(value) ret.write(str(value)) @@ -38,11 +47,12 @@ ret.write(end_boundary) return ret.getvalue() + class Progress: def __init__(self, info, data): self.info = info self.tosend = len(data) - self.total = self.tosend/1024 + self.total = self.tosend / 1024 self.data = cStringIO.StringIO(data) self.start = self.now = time.time() self.sent = 0 @@ -51,12 +61,13 @@ self.steptimes = [] self.display() - def __iter__(self): return self + def __iter__(self): + return self def next(self): self.num += 1 if self.sent >= self.tosend: - print self.info, 'done', ' '*(75-len(self.info)-6) + print self.info, 'done', ' ' * (75 - len(self.info) - 6) sys.stdout.flush() raise StopIteration @@ -78,7 +89,7 @@ self.steptimes.pop() steptime = sum(self.steptimes) / len(self.steptimes) self.now = now - eta = steptime * ((self.total - self.num)/self.stepsize) + eta = steptime * ((self.total - self.num) / self.stepsize) # tell it like it is (or might be) if now - self.start > 3: @@ -87,17 +98,18 @@ M = M % 60 S = eta % 60 if self.total: - s = '%s %2d%% (ETA %02d:%02d:%02d)'%(self.info, + s = '%s %2d%% (ETA %02d:%02d:%02d)' % (self.info, self.num * 100. / self.total, H, M, S) else: - s = '%s 0%% (ETA %02d:%02d:%02d)'%(self.info, H, M, S) + s = '%s 0%% (ETA %02d:%02d:%02d)' % (self.info, H, M, S) elif self.total: - s = '%s %2d%%'%(self.info, self.num * 100. / self.total) + s = '%s %2d%%' % (self.info, self.num * 100. / self.total) else: - s = '%s %d done'%(self.info, self.num) - sys.stdout.write(s + ' '*(75-len(s)) + '\r') + s = '%s %d done' % (self.info, self.num) + sys.stdout.write(s + ' ' * (75 - len(s)) + '\r') sys.stdout.flush() + class progressHTTPConnection(httplib.HTTPConnection): def progress_send(self, str): """Send `str' to the server.""" @@ -116,18 +128,22 @@ raise p.display() + class progressHTTP(httplib.HTTP): + _connection_class = progressHTTPConnection + def _setup(self, conn): httplib.HTTP._setup(self, conn) self.progress_send = self._conn.progress_send + def http_request(data, server, port, url): h = progressHTTP(server, port) data = mimeEncode(data) h.putrequest('POST', url) - h.putheader('Content-type', 'multipart/form-data; boundary=%s'%boundary) + h.putheader('Content-type', 'multipart/form-data; boundary=%s' % boundary) h.putheader('Content-length', str(len(data))) h.putheader('Host', server) h.endheaders() @@ -140,8 +156,10 @@ response = f.read().strip() f.close() - print '%s %s'%(errcode, errmsg) - if response: print response + print '%s %s' % (errcode, errmsg) + if response: + print response + def usage(): print '''This program is to be used to upload files to the PyWeek system. @@ -178,15 +196,24 @@ optional = {} url = None for opt, arg in optlist: - if opt == '-u': data['user'] = arg - elif opt == '-p': data['password'] = arg - elif opt == '-s': optional['is_screenshot'] = 'yes' - elif opt == '-f': optional['is_final'] = 'yes' - elif opt == '-d': data['description'] = arg - elif opt == '-c': data['content_file'] = Upload(arg) - elif opt == '-e': url = '/e/%s/oup/'%arg - elif opt == '-h': host = arg - elif opt == '-P': port = int(arg) + if opt == '-u': + data['user'] = arg + elif opt == '-p': + data['password'] = arg + elif opt == '-s': + optional['is_screenshot'] = 'yes' + elif opt == '-f': + optional['is_final'] = 'yes' + elif opt == '-d': + data['description'] = arg + elif opt == '-c': + data['content_file'] = Upload(arg) + elif opt == '-e': + url = '/e/%s/oup/' % arg + elif opt == '-h': + host = arg + elif opt == '-P': + port = int(arg) if len(data) < 4 or url is None: print 'Required argument missing' @@ -195,4 +222,3 @@ data.update(optional) http_request(data, host, port, url) -