merge dag and devel branches
authorRobert Bradshaw <robertwb@math.washington.edu>
Wed, 13 Aug 2008 03:57:43 +0000 (20:57 -0700)
committerRobert Bradshaw <robertwb@math.washington.edu>
Wed, 13 Aug 2008 03:57:43 +0000 (20:57 -0700)
15 files changed:
1  2 
Cython/Compiler/Buffer.py
Cython/Compiler/CmdLine.py
Cython/Compiler/Code.py
Cython/Compiler/ExprNodes.py
Cython/Compiler/Lexicon.py
Cython/Compiler/Main.py
Cython/Compiler/ModuleNode.py
Cython/Compiler/Nodes.py
Cython/Compiler/ParseTreeTransforms.py
Cython/Compiler/Parsing.py
Cython/Compiler/PyrexTypes.py
Cython/Compiler/Scanning.py
Cython/Compiler/Symtab.py
Cython/Compiler/Tests/TestBuffer.py
Cython/StringIOTree.py

index 6361e6196a75e303aed7b958e7790b30ed6d700f,45cb8196b2afe96315b68d140f0503fe046aa650..caeb12f60aadd64ca0b7cf4a5afb0e6ce6438e88
@@@ -5,17 -5,14 +5,22 @@@ from Cython.Compiler.ExprNodes import 
  from Cython.Compiler.TreeFragment import TreeFragment
  from Cython.Utils import EncodedString
  from Cython.Compiler.Errors import CompileError
 +import Interpreter
  import PyrexTypes
- from sets import Set as set
+ try:
+     set
+ except NameError:
+     from sets import Set as set
  import textwrap
 +
 +# Code cleanup ideas:
 +# - One could be more smart about casting in some places
 +# - Start using CCodeWriters to generate utility functions
 +# - Create a struct type per ndim rather than keeping loose local vars
 +
 +
  def dedent(text, reindent=0):
      text = textwrap.dedent(text)
      if reindent > 0:
index c218fce40b295eefd09218b038676323dc2426e0,c149f3552e783d2917f4289b497bc37623179cc6..52f76080e86c90a7a20da3d71ec2713dbea8b895
@@@ -34,10 -35,9 +35,10 @@@ Options
                                   are searched from)
  
    -D, --no-docstrings            Remove docstrings.
-   -a, --annotate                 Produce an colorized version of the source.
+   -a, --annotate                 Produce a colorized HTML version of the source.
    --convert-range                Convert for loops using range() function to for...from loops. 
    --cplus                        Output a c++ rather than c file.
 +  -O, --option <name>=<value>[,<name=value,...] Overrides an optimization/code generation option
  """
  #The following experimental options are supported only on MacOSX:
  #  -C, --compile    Compile generated .c file to .o file
index 803d0c8556d1f68ed7a2b35b09ddbe5ce1706737,1cbde366a664d7272673f18df9b0f6b3e54631f8..9010f4fbfd34d77c9351f5da1c2b4f5d97a28729
@@@ -10,18 -10,12 +10,21 @@@ from PyrexTypes import py_object_type, 
  from TypeSlots import method_coexist
  from Scanning import SourceDescriptor
  from Cython.StringIOTree import StringIOTree
- from sets import Set as set
+ try:
+     set
+ except NameError:
+     from sets import Set as set
  
 -class FunctionContext(object):
 +class FunctionState(object):
 +    # return_label     string          function return point label
 +    # error_label      string          error catch point label
 +    # continue_label   string          loop continue point label
 +    # break_label      string          loop break point label
 +    # return_from_error_cleanup_label string
 +    # label_counter    integer         counter for naming labels
 +    # in_try_finally   boolean         inside try of try...finally
 +    # exc_vars         (string * 3)    exception variables for reraise, or None
 +
      # Not used for now, perhaps later
      def __init__(self, names_taken=set()):
          self.names_taken = names_taken
@@@ -513,9 -257,14 +516,15 @@@ class CCodeWriter(object)
          self.write("/* %s */\n" % self.marker[1])
          self.last_marker_line = self.marker[0]
          self.marker = None
 +        return self
  
+     def put_safe(self, code):
+         # put code, but ignore {}
+         self.write(code)
+         self.bol = 0
      def put(self, code):
+         fix_indent = False
          dl = code.count("{") - code.count("}")
          if dl < 0:
              self.level += dl
          self.bol = 0
          if dl > 0:
              self.level += dl
-         elif dl == 0 and code.startswith('}'):
+         elif fix_indent:
              self.level += 1
 +        return self
  
      def increase_indent(self):
          self.level = self.level + 1
Simple merge
index 8fe3724ff974f90115a7ceaa3f8e58de474ef4cc,e3f1be9ad1d8165b139fbad0069b4511bc72d98c..60c5bd884f85ecb97bbeeaf9b0d54e72908d19b7
@@@ -64,9 -64,9 +64,10 @@@ def make_lexicon()
      two_hex = hexdigit + hexdigit
      four_hex = two_hex + two_hex
      escapeseq = Str("\\") + (two_oct | three_oct | two_hex |
-                              Str('u') + four_hex | Str('x') + two_hex | AnyChar)
+                              Str('u') + four_hex | Str('x') + two_hex |
+                              Str('U') + four_hex + four_hex | AnyChar)
      
 +
      deco = Str("@")
      bra = Any("([{")
      ket = Any(")]}")
index 79aee18a7ab1c594f22316336fc18df08a442631,55b031e1025fcbe318f08cc6894a5a90a4d71117..7d68ded109687ef900322b725e7d90840e732e07
@@@ -477,19 -407,9 +479,12 @@@ def create_default_resultobj(compilatio
          else:
              c_suffix = ".c"
          result.c_file = Utils.replace_suffix(source_desc.filename, c_suffix)
-     # The below doesn't make any sense? Why is it there?
-     c_stat = None
-     if result.c_file:
-         try:
-             c_stat = os.stat(result.c_file)
-         except EnvironmentError:
-             pass
      return result
  
 -def run_pipeline(source, context, options, full_module_name = None):
 +def run_pipeline(source, options, full_module_name = None):
 +    # Set up context
 +    context = Context(options.include_path, options.pragma_overrides)
 +
      # Set up source object
      cwd = os.getcwd()
      source_desc = FileSourceDescriptor(os.path.join(cwd, source))
@@@ -614,9 -533,10 +609,7 @@@ def compile_single(source, options, ful
      Always compiles a single file; does not perform timestamp checking or
      recursion.
      """
 -    context = Context(options.include_path)
 -    return run_pipeline(source, context, options, full_module_name)
 -#    context = Context(options.include_path)
 -#    return context.compile(source, options, full_module_name)
 +    return run_pipeline(source, options, full_module_name)
- #    context = Context(options.include_path)
- #    return context.compile(source, options, full_module_name)
  
  
  def compile_multiple(sources, options):
                  if verbose:
                      sys.stderr.write("Compiling %s\n" % source)
  
-                 result = context.compile(source, options)
-                 # Compiling multiple sources in one context doesn't quite
-                 # work properly yet.
 -                result = run_pipeline(source, context, options)
++                result = run_pipeline(source, options)
                  results.add(source, result)
              processed.add(source)
              if recursive:
Simple merge
Simple merge
index 833f9bdd470cef760607bfad02e20358fadb2330,a775f7661ded67a3f5fd5c1cf20ad869e776cafa..2840390931abffccb962e21bb80d11d08c186001
@@@ -5,8 -5,10 +5,11 @@@ from Cython.Compiler.ExprNodes import 
  from Cython.Compiler.TreeFragment import TreeFragment
  from Cython.Utils import EncodedString
  from Cython.Compiler.Errors import CompileError
- from sets import Set as set
+ try:
+     set
+ except NameError:
+     from sets import Set as set
 +import copy
  
  class NormalizeTree(CythonTransform):
      """
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 4178b108f45e051926ed1c5e7b6ee6414fa56b2b,9e9b31b228aaf79a22b9658fb6ffcce1d15a725a..5d07a5c8faa8966d64c4977ae2b40e98e5e271ee
@@@ -81,29 -55,15 +78,13 @@@ EXAMPLE
  >>> d.write('alpha\n')
  >>> b.write('gamma\n')
  >>> c.write('beta\n')
- >>> print b.getvalue()
- second
- alpha
- beta
- gamma
- <BLANKLINE>
+ >>> b.getvalue().split()
+ ['second', 'alpha', 'beta', 'gamma']
 -
 +>>> i = StringIOTree()
 +>>> d.insert(i)
 +>>> i.write('inserted\n')
  >>> out = StringIO()
  >>> a.copyto(out)
- >>> print out.getvalue()
- first
- second
- alpha
- inserted
- beta
- gamma
- third
- <BLANKLINE>
- """
-             
- if __name__ == "__main__":
-     import doctest
-     doctest.testmod()
+ >>> out.getvalue().split()
 -['first', 'second', 'alpha', 'beta', 'gamma', 'third']
 -"""
 -            
 -if __name__ == "__main__":
 -    import doctest
 -    doctest.testmod()
++['first', 'second', 'alpha', 'inserted', 'beta', 'gamma', 'third']
++"""