On Apr 25, 2008, at 10:11 AM, Stefan Behnel wrote:
> Hi,
>
> I just checked in a little fix to allow running cython directly
> on .py files
> (instead of requiring .pyx files). That gave me the idea of
> actually running
> it on Cython itself, since people have been complaining from time
> to time that
> the compiler is slow for certain sources.
>
> There are a couple of things in the sources that do not compile, I
> attached a
> log. Some of them should get fixed in the sources (like tuples in
> function
> signatures, which go away in Py3), but some also show stuff that
> Cython does
> not currently support, so there are things to implement.
>
> It would be cool if we could get Cython into compiling itself. I
> think that's
> a target worth going for, and I'm close to believing that it's not
> far away at
> all.
That would be very cool, and it's something I've been thinking about
too. Most of the stuff that is broken is on our todo list already.
- Robert
>
> Stefan
> Compiling Cython/Plex/Actions.py
> Compiling Cython/Plex/DFA.py
> Compiling Cython/Plex/Errors.py
> Compiling Cython/Plex/__init__.py
> Compiling Cython/Plex/Lexicons.py
> Compiling Cython/Plex/Machines.py
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> return tuple(result)
>
> def ranges_to_string(self, range_list):
> return string.join(map(self.range_to_string, range_list), ",")
>
> def range_to_string(self, (c1, c2)):
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Plex/
> Machines.py:261:31: Declarator should be empty
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> return tuple(result)
>
> def ranges_to_string(self, range_list):
> return string.join(map(self.range_to_string, range_list), ",")
>
> def range_to_string(self, (c1, c2)):
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Plex/
> Machines.py:261:31: Expected ')'
> Compiling Cython/Plex/Regexps.py
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> RE, starting at |initial_state| and ending at |final_state|.
> If |match_bol| is true, the RE must be able to match at the
> beginning of a line. If nocase is true, upper and lower case
> letters should be treated as equivalent.
> """
> raise exceptions.UnimplementedMethod("%s.build_machine not
> implemented" %
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Plex/
> Regexps.py:125:24: undeclared name not builtin: exceptions
> Compiling Cython/Plex/Scanners.py
> Compiling Cython/Plex/test_tm.py
> Compiling Cython/Plex/Timing.py
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> import os
> from sys import platform, exit, stderr
>
> if platform == 'mac':
> import MacOS
> def time():
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Plex/
> Timing.py:10:2: def statement not allowed here
> Compiling Cython/Plex/Traditional.py
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> #
> # Traditional Regular Expression Syntax
> #
> #=====================================================================
> ==
>
> from Regexps import *
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Plex/
> Traditional.py:9:20: 'import *' not supported
> Compiling Cython/Plex/Transitions.py
> Compiling Cython/Compiler/Annotate.py
> Compiling Cython/Compiler/Builtin.py
> Compiling Cython/Compiler/CmdLine.py
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> # specified (ie Module.SubModule.factory) and the
> containing module
> # will be imported. This option can be repeated
> to add more transforms,
> # transforms for the same phase will be used in
> the order they are given.
>
> def bad_usage():
> print >>sys.stderr, usage
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> CmdLine.py:50:10: 'print >>' not yet implemented
> Compiling Cython/Compiler/Code.py
> Compiling Cython/Compiler/ControlFlow.py
> Compiling Cython/Compiler/DebugFlags.py
> Compiling Cython/Compiler/Errors.py
> Compiling Cython/Compiler/ExprNodes.py
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> '**': operator.pow,
> '>>': operator.rshift,
> '-': operator.sub,
> #'/': operator.truediv,
> '^': operator.xor,
> 'in': lambda x, y: x in y,
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> ExprNodes.py:2900:10: Expected an identifier or literal
> Compiling Cython/Compiler/__init__.py
> Compiling Cython/Compiler/Lexicon.py
> Compiling Cython/Compiler/Main.py
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> # Cython Top Level
> #
>
> import os, sys, re, codecs
> if sys.version_info[:2] < (2, 2):
> print >>sys.stderr, "Sorry, Cython requires Python 2.2 or later"
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> Main.py:7:10: 'print >>' not yet implemented
> Compiling Cython/Compiler/ModuleNode.py
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> if entry.defined_in_pxd:
> return 1
> return 0
>
> def generate_h_code(self, env, options, result):
> def h_entries(entries, pxd = 0):
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> ModuleNode.py:63:8: def statement not allowed here
> Compiling Cython/Compiler/Naming.py
> Compiling Cython/Compiler/Nodes.py
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> if attrnames is None:
> raise InternalError("Children access not implemented
> for %s" % \
> self.__class__.__name__)
> for name in attrnames:
> a = AttributeAccessor(self, name)
> yield a
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> Nodes.py:134:18: Syntax error in simple statement list
> Compiling Cython/Compiler/Options.py
> Compiling Cython/Compiler/Parsing.py
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> if kind != 'c':
> strings = [value]
> while s.sy == 'BEGIN_STRING':
> next_kind, next_value = p_string_literal(s)
> if next_kind == 'c':
> self.error(
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> Parsing.py:526:20: undeclared name not builtin: self
> Compiling Cython/Compiler/PyrexTypes.py
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> "bhilL?fd?", # explicitly signed
> )
>
> sign_words = ("unsigned ", "", "signed ")
>
> def __init__(self, rank, signed = 1, pymemberdef_typecode = None):
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> PyrexTypes.py:356:36: Empty declarator
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> typedef_flag = 0
> to_py_function = "PyInt_FromLong"
> from_py_function = "__pyx_PyInt_AsLong"
> exception_value = -1
>
> def __init__(self, rank, signed, pymemberdef_typecode = None,
> is_returncode = 0):
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> PyrexTypes.py:391:35: Empty declarator
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> widest_type = type2
> else:
> widest_type = type1
> return widest_type
>
> def simple_c_type(signed, longness, name):
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> PyrexTypes.py:1106:24: Empty declarator
> Compiling Cython/Compiler/Scanning.py
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> from Cython.Plex import Scanner
> from Cython.Plex.Errors import UnrecognizedInput
> from Errors import CompileError, error
> from Lexicon import string_prefixes, make_lexicon
>
> plex_version = getattr(Plex, '_version', None)
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> Scanning.py:20:22: Call with wrong number of arguments (expected 2,
> got 3)
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> # Try to open pickled lexicon file and verify that
> # it matches the source file. Returns the opened
> # file if successful, otherwise None. ???
> f = None
> result = None
> if os.path.exists(lexicon_pickle):
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> Scanning.py:64:36: undeclared name not builtin: lexicon_pickle
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> # file if successful, otherwise None. ???
> f = None
> result = None
> if os.path.exists(lexicon_pickle):
> try:
> f = open(lexicon_pickle, "rb")
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> Scanning.py:66:35: undeclared name not builtin: lexicon_pickle
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> else:
> print("Lexicon hash mismatch:") ###
> print(" expected " + expected_hash) ###
> print(" got " + actual_hash) ###
> except IOError, e:
> print("Warning: Unable to read pickled lexicon " +
> lexicon_pickle)
>
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> Scanning.py:76:77: undeclared name not builtin: lexicon_pickle
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> f.close()
> return result
>
> def try_to_unpickle_lexicon():
> global lexicon, lexicon_pickle, lexicon_hash
> dir = os.path.dirname(__file__)
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> Scanning.py:84:34: undeclared name not builtin: __file__
> Compiling Cython/Compiler/Symtab.py
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> import re
> from Errors import warning, error, InternalError
> import Options
> import Naming
> import PyrexTypes
> from PyrexTypes import *
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> Symtab.py:10:23: 'import *' not supported
> Compiling Cython/Compiler/Transform.py
>
> Error converting Pyrex file to C:
> ------------------------------------------------------------
> ...
> def process_node(self, node, name):
> """Override this method to process nodes. name specifies
> which kind of relation the
> parent has with child. This method should always return the
> node which the parent
> should use for this relation, which can either be the same
> node, None to remove
> the node, or a different node."""
> raise InternalError("Not implemented")
> ^
> ------------------------------------------------------------
>
> /home/sbehnel/source/Python/cython/cython-work/Cython/Compiler/
> Transform.py:60:27: undeclared name not builtin: InternalError
> Compiling Cython/Compiler/TypeSlots.py
> Compiling Cython/Compiler/Version.py
> _______________________________________________
> Cython-dev mailing list
> [email protected]
> http://codespeak.net/mailman/listinfo/cython-dev
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev