Some cleanup in the Tools directory.

This commit is contained in:
Florent Xicluna 2012-07-07 17:03:54 +02:00
parent 61ea12c9a0
commit c20740109d
8 changed files with 53 additions and 49 deletions

View File

@ -10,7 +10,6 @@ ccbench, a Python concurrency benchmark.
import time import time
import os import os
import sys import sys
import functools
import itertools import itertools
import threading import threading
import subprocess import subprocess

View File

@ -46,38 +46,38 @@ class LifeBoard:
self.state = {} self.state = {}
self.scr = scr self.scr = scr
Y, X = self.scr.getmaxyx() Y, X = self.scr.getmaxyx()
self.X, self.Y = X-2, Y-2-1 self.X, self.Y = X - 2, Y - 2 - 1
self.char = char self.char = char
self.scr.clear() self.scr.clear()
# Draw a border around the board # Draw a border around the board
border_line = '+'+(self.X*'-')+'+' border_line = '+' + (self.X * '-') + '+'
self.scr.addstr(0, 0, border_line) self.scr.addstr(0, 0, border_line)
self.scr.addstr(self.Y+1, 0, border_line) self.scr.addstr(self.Y + 1, 0, border_line)
for y in range(0, self.Y): for y in range(0, self.Y):
self.scr.addstr(1+y, 0, '|') self.scr.addstr(1 + y, 0, '|')
self.scr.addstr(1+y, self.X+1, '|') self.scr.addstr(1 + y, self.X + 1, '|')
self.scr.refresh() self.scr.refresh()
def set(self, y, x): def set(self, y, x):
"""Set a cell to the live state""" """Set a cell to the live state"""
if x<0 or self.X<=x or y<0 or self.Y<=y: if x < 0 or self.X <= x or y < 0 or self.Y <= y:
raise ValueError("Coordinates out of range %i,%i"% (y, x)) raise ValueError("Coordinates out of range %i,%i" % (y, x))
self.state[x,y] = 1 self.state[x, y] = 1
def toggle(self, y, x): def toggle(self, y, x):
"""Toggle a cell's state between live and dead""" """Toggle a cell's state between live and dead"""
if x < 0 or self.X <= x or y < 0 or self.Y <= y: if x < 0 or self.X <= x or y < 0 or self.Y <= y:
raise ValueError("Coordinates out of range %i,%i"% (y, x)) raise ValueError("Coordinates out of range %i,%i" % (y, x))
if (x, y) in self.state: if (x, y) in self.state:
del self.state[x, y] del self.state[x, y]
self.scr.addch(y+1, x+1, ' ') self.scr.addch(y + 1, x + 1, ' ')
else: else:
self.state[x, y] = 1 self.state[x, y] = 1
if curses.has_colors(): if curses.has_colors():
# Let's pick a random color! # Let's pick a random color!
self.scr.attrset(curses.color_pair(random.randrange(1, 7))) self.scr.attrset(curses.color_pair(random.randrange(1, 7)))
self.scr.addch(y+1, x+1, self.char) self.scr.addch(y + 1, x + 1, self.char)
self.scr.attrset(0) self.scr.attrset(0)
self.scr.refresh() self.scr.refresh()
@ -88,43 +88,46 @@ class LifeBoard:
def display(self, update_board=True): def display(self, update_board=True):
"""Display the whole board, optionally computing one generation""" """Display the whole board, optionally computing one generation"""
M,N = self.X, self.Y M, N = self.X, self.Y
if not update_board: if not update_board:
for i in range(0, M): for i in range(0, M):
for j in range(0, N): for j in range(0, N):
if (i,j) in self.state: if (i, j) in self.state:
self.scr.addch(j+1, i+1, self.char) self.scr.addch(j + 1, i + 1, self.char)
else: else:
self.scr.addch(j+1, i+1, ' ') self.scr.addch(j + 1, i + 1, ' ')
self.scr.refresh() self.scr.refresh()
return return
d = {} d = {}
self.boring = 1 self.boring = 1
for i in range(0, M): for i in range(0, M):
L = range( max(0, i-1), min(M, i+2) ) L = range(max(0, i - 1), min(M, i + 2))
for j in range(0, N): for j in range(0, N):
s = 0 s = 0
live = (i,j) in self.state live = (i, j) in self.state
for k in range( max(0, j-1), min(N, j+2) ): for k in range(max(0, j - 1), min(N, j + 2)):
for l in L: for l in L:
if (l,k) in self.state: if (l, k) in self.state:
s += 1 s += 1
s -= live s -= live
if s == 3: if s == 3:
# Birth # Birth
d[i,j] = 1 d[i, j] = 1
if curses.has_colors(): if curses.has_colors():
# Let's pick a random color! # Let's pick a random color!
self.scr.attrset(curses.color_pair( self.scr.attrset(curses.color_pair(
random.randrange(1, 7))) random.randrange(1, 7)))
self.scr.addch(j+1, i+1, self.char) self.scr.addch(j + 1, i + 1, self.char)
self.scr.attrset(0) self.scr.attrset(0)
if not live: self.boring = 0 if not live:
elif s == 2 and live: d[i,j] = 1 # Survival self.boring = 0
elif s == 2 and live:
# Survival
d[i, j] = 1
elif live: elif live:
# Death # Death
self.scr.addch(j+1, i+1, ' ') self.scr.addch(j + 1, i + 1, ' ')
self.boring = 0 self.boring = 0
self.state = d self.state = d
self.scr.refresh() self.scr.refresh()
@ -135,16 +138,17 @@ class LifeBoard:
for i in range(0, self.X): for i in range(0, self.X):
for j in range(0, self.Y): for j in range(0, self.Y):
if random.random() > 0.5: if random.random() > 0.5:
self.set(j,i) self.set(j, i)
def erase_menu(stdscr, menu_y): def erase_menu(stdscr, menu_y):
"Clear the space where the menu resides" "Clear the space where the menu resides"
stdscr.move(menu_y, 0) stdscr.move(menu_y, 0)
stdscr.clrtoeol() stdscr.clrtoeol()
stdscr.move(menu_y+1, 0) stdscr.move(menu_y + 1, 0)
stdscr.clrtoeol() stdscr.clrtoeol()
def display_menu(stdscr, menu_y): def display_menu(stdscr, menu_y):
"Display the menu of possible keystroke commands" "Display the menu of possible keystroke commands"
erase_menu(stdscr, menu_y) erase_menu(stdscr, menu_y)
@ -154,15 +158,16 @@ def display_menu(stdscr, menu_y):
stdscr.attrset(curses.color_pair(1)) stdscr.attrset(curses.color_pair(1))
stdscr.addstr(menu_y, 4, stdscr.addstr(menu_y, 4,
'Use the cursor keys to move, and space or Enter to toggle a cell.') 'Use the cursor keys to move, and space or Enter to toggle a cell.')
stdscr.addstr(menu_y+1, 4, stdscr.addstr(menu_y + 1, 4,
'E)rase the board, R)andom fill, S)tep once or C)ontinuously, Q)uit') 'E)rase the board, R)andom fill, S)tep once or C)ontinuously, Q)uit')
stdscr.attrset(0) stdscr.attrset(0)
def keyloop(stdscr): def keyloop(stdscr):
# Clear the screen and display the menu of keys # Clear the screen and display the menu of keys
stdscr.clear() stdscr.clear()
stdscr_y, stdscr_x = stdscr.getmaxyx() stdscr_y, stdscr_x = stdscr.getmaxyx()
menu_y = (stdscr_y-3)-1 menu_y = (stdscr_y - 3) - 1
display_menu(stdscr, menu_y) display_menu(stdscr, menu_y)
# If color, then initialize the color pairs # If color, then initialize the color pairs
@ -179,16 +184,16 @@ def keyloop(stdscr):
curses.mousemask(curses.BUTTON1_CLICKED) curses.mousemask(curses.BUTTON1_CLICKED)
# Allocate a subwindow for the Life board and create the board object # Allocate a subwindow for the Life board and create the board object
subwin = stdscr.subwin(stdscr_y-3, stdscr_x, 0, 0) subwin = stdscr.subwin(stdscr_y - 3, stdscr_x, 0, 0)
board = LifeBoard(subwin, char=ord('*')) board = LifeBoard(subwin, char=ord('*'))
board.display(update_board=False) board.display(update_board=False)
# xpos, ypos are the cursor's position # xpos, ypos are the cursor's position
xpos, ypos = board.X//2, board.Y//2 xpos, ypos = board.X // 2, board.Y // 2
# Main loop: # Main loop:
while True: while True:
stdscr.move(1+ypos, 1+xpos) # Move the cursor stdscr.move(1 + ypos, 1 + xpos) # Move the cursor
c = stdscr.getch() # Get a keystroke c = stdscr.getch() # Get a keystroke
if 0 < c < 256: if 0 < c < 256:
c = chr(c) c = chr(c)
@ -224,15 +229,21 @@ def keyloop(stdscr):
board.display(update_board=False) board.display(update_board=False)
elif c in 'Ss': elif c in 'Ss':
board.display() board.display()
else: pass # Ignore incorrect keys else:
elif c == curses.KEY_UP and ypos > 0: ypos -= 1 # Ignore incorrect keys
elif c == curses.KEY_DOWN and ypos < board.Y-1: ypos += 1 pass
elif c == curses.KEY_LEFT and xpos > 0: xpos -= 1 elif c == curses.KEY_UP and ypos > 0:
elif c == curses.KEY_RIGHT and xpos < board.X-1: xpos += 1 ypos -= 1
elif c == curses.KEY_DOWN and ypos + 1 < board.Y:
ypos += 1
elif c == curses.KEY_LEFT and xpos > 0:
xpos -= 1
elif c == curses.KEY_RIGHT and xpos + 1 < board.X:
xpos += 1
elif c == curses.KEY_MOUSE: elif c == curses.KEY_MOUSE:
mouse_id, mouse_x, mouse_y, mouse_z, button_state = curses.getmouse() mouse_id, mouse_x, mouse_y, mouse_z, button_state = curses.getmouse()
if (mouse_x > 0 and mouse_x < board.X+1 and if (mouse_x > 0 and mouse_x < board.X + 1 and
mouse_y > 0 and mouse_y < board.Y+1): mouse_y > 0 and mouse_y < board.Y + 1):
xpos = mouse_x - 1 xpos = mouse_x - 1
ypos = mouse_y - 1 ypos = mouse_y - 1
board.toggle(ypos, xpos) board.toggle(ypos, xpos)

View File

@ -812,7 +812,6 @@ class SheetGUI:
def test_basic(): def test_basic():
"Basic non-gui self-test." "Basic non-gui self-test."
import os
a = Sheet() a = Sheet()
for x in range(1, 11): for x in range(1, 11):
for y in range(1, 11): for y in range(1, 11):

View File

@ -163,7 +163,6 @@ import time
import getopt import getopt
import token import token
import tokenize import tokenize
import operator
__version__ = '1.5' __version__ = '1.5'

View File

@ -1,8 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# This file should be kept compatible with both Python 2.6 and Python >= 3.0. # This file should be kept compatible with both Python 2.6 and Python >= 3.0.
import functools
import hashlib
import itertools import itertools
import os import os
import platform import platform

View File

@ -1,6 +1,5 @@
"Usage: unparse.py <path to source file>" "Usage: unparse.py <path to source file>"
import sys import sys
import math
import ast import ast
import tokenize import tokenize
import io import io

View File

@ -35,7 +35,9 @@ NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
WITH THE USE OR PERFORMANCE OF THIS SOFTWARE ! WITH THE USE OR PERFORMANCE OF THIS SOFTWARE !
""" """
import sys, time, operator, platform import sys
import time
import platform
from CommandLine import * from CommandLine import *
try: try:
@ -962,8 +964,6 @@ python pybench.py -s p25.pybench -c p21.pybench
bench.name = reportfile bench.name = reportfile
pickle.dump(bench,f) pickle.dump(bench,f)
f.close() f.close()
except IOError as reason:
print('* Error opening/writing reportfile')
except IOError as reason: except IOError as reason:
print('* Error opening/writing reportfile %s: %s' % ( print('* Error opening/writing reportfile %s: %s' % (
reportfile, reportfile,

View File

@ -32,7 +32,6 @@ import sys
import zipfile import zipfile
from textwrap import dedent from textwrap import dedent
from operator import itemgetter
SCRIPT = sys.argv[0] SCRIPT = sys.argv[0]
VERSION = "3.2" VERSION = "3.2"