[PEAK] trying to run peak-rules on python3

PJ Eby pje at telecommunity.com
Wed Mar 27 13:03:18 EDT 2013

On Wed, Mar 27, 2013 at 9:07 AM, Hervé Coatanhay
<herve.coatanhay at gmail.com> wrote:
> Ok so I had to remove Predicates.txt form the list of files in
> test_rules.py.

Looks like you've got a lot of work ahead of you.  Lots of stuff is
shallow failures due to reprs, tests not being in Python 3 syntax
(e.g. "print" statements), sorting issues in Python 3 (you can't
compare None to other types), lack of "long" type, set repr being {}
instead of ([]) as in Python 2, etc.

The good news is that a few small changes will fix a lot of errors in
that log.  The bad news is that you must make the changes first,
because these shallow problems are preventing the tests from showing
us what the *real* problems are.

I did however spot one thing that looks like a real problem: it
appears that BytecodeAssembler's use of .tostring() calls should
change to .tobytes(), because the __code__ attribute in Python 3 is a
bytestring.  I think this is causing most of the errors in

A few other things I found:

* It appears the codegen module isn't fully importing; it should
export a Repr, but doesn't.  It'd be good to get the actual error
message, if any.
* It appears that certain SLICE_* opcodes have gone away in Python 3;
don't know what they're replaced with.
* Don't bother trying to fix the README and DESIGN errors, or the ones
in test_rules itself; they are all being caused by a lower-level
failure, probably in the peak.rules.criteria, .indexing, .codegen, or
.predicates modules, if not BytecodeAssembler itself.

Good luck.  ;-)

(Btw, It would probably be a good idea to send the next log to a paste
website rather than attaching it, given the size of these things.)

More information about the PEAK mailing list