imported added files of Pyrex 0.9.6.2
authorStefan Behnel <scoder@users.berlios.de>
Thu, 11 Oct 2007 06:10:20 +0000 (08:10 +0200)
committerStefan Behnel <scoder@users.berlios.de>
Thu, 11 Oct 2007 06:10:20 +0000 (08:10 +0200)
Cython/Compiler/Builtin.py [new file with mode: 0644]
Cython/Distutils/extension.py [new file with mode: 0644]
Cython/DistutilsOld/__init__.py [new file with mode: 0644]
Cython/DistutilsOld/build_ext.py [new file with mode: 0644]
Cython/Mac/setup.py [new file with mode: 0644]

diff --git a/Cython/Compiler/Builtin.py b/Cython/Compiler/Builtin.py
new file mode 100644 (file)
index 0000000..b3e50c4
--- /dev/null
@@ -0,0 +1,91 @@
+#
+#   Pyrex - Builtin Definitions
+#
+
+from Symtab import BuiltinScope
+from TypeSlots import Signature
+
+builtin_function_table = [
+    # name,        args,   return,  C API func,           has py equiv = True
+    ('abs',        "O",    "O",     "PyNumber_Absolute"),
+    #('chr',       "",     "",      ""),
+    #('cmp', "",   "",     "",      ""), # int PyObject_Cmp(PyObject *o1, PyObject *o2, int *result)
+    #('compile',   "",     "",      ""), # PyObject* Py_CompileString( char *str, char *filename, int start)
+    ('delattr',    "OO",   "r",     "PyObject_DelAttr"),
+    ('dir',        "O",    "O",     "PyObject_Dir"),
+    ('divmod',     "OO",   "O",     "PyNumber_Divmod"),
+    #('eval',      "",     "",      ""),
+    #('execfile',  "",     "",      ""),
+    #('filter',    "",     "",      ""),
+    ('getattr',    "OO",   "O",     "PyObject_GetAttr"),
+    ('hasattr',    "OO",   "i",     "PyObject_HasAttr"),
+    ('hash',       "O",    "i",     "PyObject_Hash"),
+    #('hex',       "",     "",      ""),
+    #('id',        "",     "",      ""),
+    #('input',     "",     "",      ""),
+    ('intern',     "s",    "O",     "PyString_InternFromString"),
+    ('isinstance', "OO",   "i",     "PyObject_IsInstance"),
+    ('issubclass', "OO",   "i",     "PyObject_IsSubclass"),
+    ('iter',       "O",    "O",     "PyObject_GetIter"),
+    ('len',        "O",    "Z",     "PyObject_Length"),
+    #('map',       "",     "",      ""),
+    #('max',       "",     "",      ""),
+    #('min',       "",     "",      ""),
+    #('oct',       "",     "",      ""),
+    # Not worth doing open, when second argument would become mandatory
+    #('open',       "ss",   "O",     "PyFile_FromString"),
+    #('ord',       "",     "",      ""),
+    ('pow',        "OOO",  "O",     "PyNumber_Power"),
+    #('range',     "",     "",      ""),
+    #('raw_input', "",     "",      ""),
+    #('reduce',    "",     "",      ""),
+    ('reload',     "O",    "O",     "PyImport_ReloadModule"),
+    ('repr',       "O",    "O",     "PyObject_Repr"),
+    #('round',     "",     "",      ""),
+    ('setattr',    "OOO",  "r",     "PyObject_SetAttr"),
+    #('sum',       "",     "",      ""),
+    #('unichr',    "",     "",      ""),
+    #('unicode',   "",     "",      ""),
+    #('vars',      "",     "",      ""),
+    #('zip',       "",     "",      ""),
+    #  Can't do these easily until we have builtin type entries.
+    #('typecheck',  "OO",   "i",     "PyObject_TypeCheck", False),
+    #('issubtype',  "OO",   "i",     "PyType_IsSubtype",   False),
+]
+
+# Builtin types
+#  bool
+#  buffer
+#  classmethod
+#  dict
+#  enumerate
+#  file
+#  float
+#  int
+#  list
+#  long
+#  object
+#  property
+#  slice
+#  staticmethod
+#  super
+#  str
+#  tuple
+#  type
+#  xrange
+
+builtin_scope = BuiltinScope()
+
+def declare_builtin_func(name, args, ret, cname, py_equiv = 1):
+    sig = Signature(args, ret)
+    type = sig.function_type()
+    builtin_scope.declare_builtin_cfunction(name, type, cname, py_equiv)
+
+def init_builtin_funcs():
+    for desc in builtin_function_table:
+        declare_builtin_func(*desc)
+
+def init_builtins():
+    init_builtin_funcs()
+
+init_builtins()
diff --git a/Cython/Distutils/extension.py b/Cython/Distutils/extension.py
new file mode 100644 (file)
index 0000000..bb30cc1
--- /dev/null
@@ -0,0 +1,79 @@
+"""Pyrex.Distutils.extension
+
+Provides a modified Extension class, that understands hou to describe
+Pyrex extension modules in setup scripts."""
+
+__revision__ = "$Id:$"
+
+import os, string, sys
+from types import *
+import distutils.extension as _Extension
+
+try:
+    import warnings
+except ImportError:
+    warnings = None
+
+class Extension(_Extension.Extension):
+    _Extension.Extension.__doc__ + \
+    """pyrex_include_dirs : [string]
+        list of directories to search for Pyrex header files (.pxd) (in
+        Unix form for portability)
+    pyrex_create_listing_file : boolean
+        write pyrex error messages to a listing (.lis) file.
+    pyrex_cplus : boolean
+        use the C++ compiler for compiling and linking.
+    pyrex_c_in_temp : boolean
+        put generated C files in temp directory.
+    pyrex_gen_pxi : boolean
+        generate .pxi file for public declarations
+    """
+
+    # When adding arguments to this constructor, be sure to update
+    # user_options.extend in build_ext.py.
+    def __init__ (self, name, sources,
+            include_dirs = None,
+            define_macros = None,
+            undef_macros = None,
+            library_dirs = None,
+            libraries = None,
+            runtime_library_dirs = None,
+            extra_objects = None,
+            extra_compile_args = None,
+            extra_link_args = None,
+            export_symbols = None,
+            swig_opts = None,
+            depends = None,
+            language = None,
+            pyrex_include_dirs = None,
+            pyrex_create_listing = 0,
+            pyrex_cplus = 0,
+            pyrex_c_in_temp = 0,
+            pyrex_gen_pxi = 0,
+            **kw):
+
+        _Extension.Extension.__init__(self, name, sources,
+            include_dirs = include_dirs,
+            define_macros = define_macros,
+            undef_macros = undef_macros,
+            library_dirs = library_dirs,
+            libraries = libraries,
+            runtime_library_dirs = runtime_library_dirs,
+            extra_objects = extra_objects,
+            extra_compile_args = extra_compile_args,
+            extra_link_args = extra_link_args,
+            export_symbols = export_symbols,
+            swig_opts = swig_opts,
+            depends = depends,
+            language = language,
+            **kw)
+
+        self.pyrex_include_dirs = pyrex_include_dirs or []
+        self.pyrex_create_listing = pyrex_create_listing
+        self.pyrex_cplus = pyrex_cplus
+        self.pyrex_c_in_temp = pyrex_c_in_temp
+        self.pyrex_gen_pxi = pyrex_gen_pxi
+
+# class Extension
+
+read_setup_file = _Extension.read_setup_file
diff --git a/Cython/DistutilsOld/__init__.py b/Cython/DistutilsOld/__init__.py
new file mode 100644 (file)
index 0000000..5033ac0
--- /dev/null
@@ -0,0 +1,22 @@
+# July 2002, Graham Fawcett
+
+#
+
+# this hack was inspired by the way Thomas Heller got py2exe
+
+# to appear as a distutil command
+
+#
+
+# we replace distutils.command.build_ext with our own version
+
+# and keep the old one under the module name _build_ext,
+
+# so that *our* build_ext can make use of it.
+
+
+
+from build_ext import build_ext
+
+
+
diff --git a/Cython/DistutilsOld/build_ext.py b/Cython/DistutilsOld/build_ext.py
new file mode 100644 (file)
index 0000000..95c0a74
--- /dev/null
@@ -0,0 +1,63 @@
+# Subclasses disutils.command.build_ext,
+# replacing it with a Pyrex version that compiles pyx->c
+# before calling the original build_ext command.
+# July 2002, Graham Fawcett
+# Modified by Darrell Gallion <dgallion1@yahoo.com>
+# to allow inclusion of .c files along with .pyx files.
+# Pyrex is (c) Greg Ewing.
+
+import distutils.command.build_ext
+#import Pyrex.Compiler.Main
+from Pyrex.Compiler.Main import CompilationOptions, default_options, compile
+from Pyrex.Compiler.Errors import PyrexError
+from distutils.dep_util import newer
+import os
+import sys
+
+def replace_suffix(path, new_suffix):
+    return os.path.splitext(path)[0] + new_suffix
+
+class build_ext (distutils.command.build_ext.build_ext):
+
+    description = "compile Pyrex scripts, then build C/C++ extensions (compile/link to build directory)"
+
+    def finalize_options (self):
+        distutils.command.build_ext.build_ext.finalize_options(self)
+
+        # The following hack should no longer be needed.
+        if 0:
+            # compiling with mingw32 gets an "initializer not a constant" error
+            # doesn't appear to happen with MSVC!
+            # so if we are compiling with mingw32,
+            # switch to C++ mode, to avoid the problem
+            if self.compiler == 'mingw32':
+                self.swig_cpp = 1
+
+    def swig_sources (self, sources, extension = None):
+        if not self.extensions:
+            return
+
+        # collect the names of the source (.pyx) files
+        pyx_sources = []
+        pyx_sources = [source for source in sources if source.endswith('.pyx')]
+        other_sources = [source for source in sources if not source.endswith('.pyx')]
+
+        #suffix = self.swig_cpp and '.cpp' or '.c'
+        suffix = '.c'
+        for pyx in pyx_sources:
+            # should I raise an exception if it doesn't exist?
+            if os.path.exists(pyx):
+                source = pyx
+                target = replace_suffix(source, suffix)
+                if newer(source, target) or self.force:
+                    self.pyrex_compile(source)
+
+        return [replace_suffix(src, suffix) for src in pyx_sources] + other_sources
+
+    def pyrex_compile(self, source):
+        options = CompilationOptions(default_options,
+            include_path = self.include_dirs)
+        result = compile(source, options)
+        if result.num_errors <> 0:
+            sys.exit(1)
+
diff --git a/Cython/Mac/setup.py b/Cython/Mac/setup.py
new file mode 100644 (file)
index 0000000..f0da28e
--- /dev/null
@@ -0,0 +1,12 @@
+#
+#   Setup file for compiling _Filemodule_patched.c
+#
+
+from distutils.core import setup
+from distutils.extension import Extension
+
+setup(
+    ext_modules = [
+        Extension("_File", ["_Filemodule_patched.c"])
+    ]
+)