X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/7de4d3febf0dd39eac67ed682ee9e0083fed2db7..55f0fc7026f9f95101f881768aece40d9c50773b:/pock diff --git a/pock b/pock index 46cde4d..a980cbe 100644 --- a/pock +++ b/pock @@ -38,6 +38,10 @@ import catacomb as C ###-------------------------------------------------------------------------- ### Utilities. +def _excval(): + """Return the most recent exception object.""" + return SYS.exc_info()[1] + class ExpectedError (Exception): """ I represent an expected error, which should be reported in a friendly way. @@ -239,7 +243,7 @@ class Sieve (object): n = (limit - 2)/2 sievesz = (n + me._NBIT - 1)/me._NBIT me._sievemax = sievesz*me._NBIT - me._bits = n*[0] + me._bits = sievesz*[0] ## This is standard Sieve of Eratosthenes. For each index i: if ## bit i is clear, then p = 2 i + 3 is prime, so set the bits @@ -603,7 +607,7 @@ def check(pp, line): if p.nbits != nb: raise ExpectedError('check failed: nbits(%s) = %d /= %d' % \ (label, p.nbits, nb)) - if VERBOSITY: print ';; %s = %d [%d]' % (label, p, nb) + if VERBOSITY: print(';; %s = %d [%d]' % (label, p, nb)) def setsievebits(pp, line): """ @@ -662,7 +666,7 @@ class PrimeProof (object): ## If the label is already taken then we have a problem. if step.label in me._steps: - raise ValueError('duplicate label `%s\'' % step.label) + raise ExpectedError('duplicate label `%s\'' % step.label) ## Store the proof step. me._pmap[step.p] = step.label @@ -715,8 +719,9 @@ class PrimeProof (object): if step is not None: me.addstep(step) lastp = step.p - except ExpectedError, e: - raise ExpectedError('%s:%d: %s' % (file.name, lno, e.message)) + except ExpectedError: + raise ExpectedError('%s:%d: %s' % + (file.name, lno, _excval().message)) return lastp ###-------------------------------------------------------------------------- @@ -1004,20 +1009,20 @@ def __main__(): ## Prepare an option parser. op = OP.OptionParser( usage = '''\ -pock [-qv] CMD ARGS... +pock [-qv] [-s SIEVEBITS] CMD ARGS... gen NBITS ll NBITS NSUBBITS - [check] [FILE]''', + check [FILE]''', description = 'Generate or verify certified prime numbers.') op.add_option('-v', '--verbose', dest = 'verbosity', action = 'count', default = 1, - help = 'Print mysterious runes while looking for prime numbers.') + help = 'print mysterious runes while looking for prime numbers') op.add_option('-q', '--quiet', dest = 'quietude', action = 'count', default = 0, - help = 'be quiet while looking for prime numbers.') + help = 'be quiet while looking for prime numbers') op.add_option('-s', '--sievebits', dest = 'sievebits', type = 'int', default = 32, - help = 'Size (in bits) of largest small prime.') + help = 'size (in bits) of largest small prime') opts, argv = op.parse_args() VERBOSITY = opts.verbosity - opts.quietude p = ProgressReporter() @@ -1059,7 +1064,7 @@ pock [-qv] CMD ARGS... if __name__ == '__main__': prog = OS.path.basename(argv[0]) try: __main__() - except ExpectedError, e: exit('%s: %s' % (prog, e.message)) - except IOError, e: exit('%s: %s' % (prog, e)) + except ExpectedError: exit('%s: %s' % (prog, _excval().message)) + except IOError: exit('%s: %s' % (prog, _excval())) ###----- That's all, folks --------------------------------------------------