]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
py3king
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 30 Jan 2009 01:15:05 +0000 (01:15 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 30 Jan 2009 01:15:05 +0000 (01:15 +0000)
19 files changed:
lib/sqlalchemy/dialects/sqlite/base.py
lib/sqlalchemy/dialects/sqlite/pysqlite.py
lib/sqlalchemy/engine/base.py
lib/sqlalchemy/orm/collections.py
lib/sqlalchemy/orm/evaluator.py
lib/sqlalchemy/orm/identity.py
lib/sqlalchemy/sql/compiler.py
lib/sqlalchemy/sql/expression.py
lib/sqlalchemy/sql/operators.py
lib/sqlalchemy/util.py
sa2to3.py
test/base/utils.py
test/dialect/mysql.py
test/ext/compiler.py
test/orm/collection.py
test/orm/mapper.py
test/orm/utils.py
test/testlib/compat.py
test/testlib/engines.py

index bb297bc7dc3fd4042e6c94d65545ef0371cba322..b8a1d7d71df2b9071574397dbaef471310ec5172 100644 (file)
@@ -31,7 +31,7 @@ from sqlalchemy.engine import default
 from sqlalchemy import types as sqltypes
 from sqlalchemy import util
 from sqlalchemy.sql import compiler, functions as sql_functions
-from types import NoneType
+from sqlalchemy.util import NoneType
 
 class NumericMixin(object):
     def bind_processor(self, dialect):
index b4b9ca33d0a4da47858f0a7cc7d84ad371b51b29..9183bfbe89d16690e391fb71a0a3fc5fbc567b28 100644 (file)
@@ -109,7 +109,6 @@ from sqlalchemy import schema, exc, pool
 from sqlalchemy.engine import default
 from sqlalchemy import types as sqltypes
 from sqlalchemy import util
-from types import NoneType
 
 class SQLite_pysqliteExecutionContext(default.DefaultExecutionContext):
     def post_exec(self):
index 9479f7d853d0d0eb3a3bf8fa9e081adf062eeb62..e0ade2c8d36d642abd96139e5b4382506850acc6 100644 (file)
@@ -1485,9 +1485,11 @@ class ResultProxy(object):
         for i, item in enumerate(metadata):
             colname = item[0]
 
+            # Py2K
             if self.dialect.description_encoding:
                 colname = colname.decode(self.dialect.description_encoding)
-
+            # end Py2K
+            
             if '.' in colname:
                 # sqlite will in some circumstances prepend table name to colnames, so strip
                 origname = colname
index 5638a7e4a517ea3214856055f1eeed715d27a34c..5903d349276ffe4aba0addc932b64c00ac0b019a 100644 (file)
@@ -978,7 +978,8 @@ def _list_decorators():
                 fn(self, index)
         _tidy(__delitem__)
         return __delitem__
-
+    
+    # Py2K
     def __setslice__(fn):
         def __setslice__(self, start, end, values):
             for value in self[start:end]:
@@ -995,7 +996,8 @@ def _list_decorators():
             fn(self, start, end)
         _tidy(__delslice__)
         return __delslice__
-
+    # end Py2K
+    
     def extend(fn):
         def extend(self, iterable):
             for value in iterable:
index 03955afa8a50dbce9718c59f28aa9936e5703e98..8628c8a239d84ac2d50bf34dd2cda301a72d0f64 100644 (file)
@@ -7,7 +7,11 @@ class UnevaluatableError(Exception):
     pass
 
 _straight_ops = set(getattr(operators, op)
-                    for op in ('add', 'mul', 'sub', 'div', 'mod', 'truediv',
+                    for op in ('add', 'mul', 'sub', 
+                                # Py2K
+                                'div',
+                                # end Py2K 
+                                'mod', 'truediv',
                                'lt', 'le', 'ne', 'gt', 'ge', 'eq'))
 
 
index 0753ea991f40bf8b9611b7108eeca9fea53bd55f..43642728b8103c5566c428061501b88cba27dd8a 100644 (file)
@@ -149,7 +149,12 @@ class WeakInstanceDict(IdentityMap):
         return list(self.itervalues())
 
     def all_states(self):
+        # Py3K
+        # return list(dict.values(self))
+        
+        # Py2K
         return dict.values(self)
+        # end Py2K
     
     def prune(self):
         return 0
index 216c0a76b23a18e73c82f90f6db752c2742b12bd..38935ea2903dcd300a39e59ad3995586e0dc3451 100644 (file)
@@ -64,7 +64,9 @@ OPERATORS =  {
     operators.add : '+',
     operators.mul : '*',
     operators.sub : '-',
+    # Py2K
     operators.div : '/',
+    # end Py2K
     operators.mod : '%',
     operators.truediv : '/',
     operators.lt : '<',
index 5812c434b2b71a218930d542142109997dad86a2..c7a1dddc9d9dcccabe0e8218a95062deff39de91 100644 (file)
@@ -1399,7 +1399,9 @@ class _CompareMixin(ColumnOperators):
         operators.add : (__operate,),
         operators.mul : (__operate,),
         operators.sub : (__operate,),
+        # Py2K
         operators.div : (__operate,),
+        # end Py2K
         operators.mod : (__operate,),
         operators.truediv : (__operate,),
         operators.lt : (__compare, operators.ge),
index d28a6e0f5ecad485facee9922f4d1d37b76d71ab..7ab37dfaf88da46ada9d5a360a783e3c2527f944 100644 (file)
@@ -4,8 +4,13 @@
 """Defines operators used in SQL expressions."""
 
 from operator import (
-    and_, or_, inv, add, mul, sub, div, mod, truediv, lt, le, ne, gt, ge, eq
+    and_, or_, inv, add, mul, sub, mod, truediv, lt, le, ne, gt, ge, eq
     )
+    
+# Py2K
+from operator import (div,)
+# end Py2K
+
 from sqlalchemy.util import symbol
 
 
@@ -88,7 +93,9 @@ _largest = symbol('_largest')
 _PRECEDENCE = {
     from_: 15,
     mul: 7,
+    # Py2K
     div: 7,
+    # end Py2K
     mod: 7,
     add: 6,
     sub: 6,
index ccb9b9459df52f905994acb57428daa68fc79380..a474a9e58bebacf38a1bd0adc1b68970d988d2a1 100644 (file)
@@ -11,7 +11,7 @@ types = __import__('types')
 from sqlalchemy import exc
 
 try:
-    import thread, threading
+    import thread as thread, threading as threading
     from threading import local as ThreadLocal
 except ImportError:
     import dummy_thread as thread
@@ -41,6 +41,8 @@ else:
 
 EMPTY_SET = frozenset()
 
+NoneType = type(None)
+
 if py3k:
     import pickle
 else:
@@ -677,7 +679,7 @@ class OrderedProperties(object):
         return self._data.keys()
 
     def has_key(self, key):
-        return self._data.has_key(key)
+        return key in self._data
 
     def clear(self):
         self._data.clear()
index 9c657c6d4c25506c3b0fe0d37bb3ec4d036b5779..705eb22f3c63fabe5d66b16bebedb7a2d375efa9 100644 (file)
--- a/sa2to3.py
+++ b/sa2to3.py
@@ -18,7 +18,7 @@ from lib2to3 import main, refactor
 import re
 
 py3k_pattern = re.compile(r'\s*# Py3K')
-comment_pattern = re.compile(r'(\s*)#(.*)')
+comment_pattern = re.compile(r'(\s*)#(?! ?Py2K)(.*)')
 py2k_pattern = re.compile(r'\s*# Py2K')
 end_py2k_pattern = re.compile(r'\s*# end Py2K')
 
@@ -44,7 +44,12 @@ def preprocess(data):
             if m:
                 yield "%s%s" % m.group(1, 2)
             else:
-                yield line
+                m = py2k_pattern.match(line)
+                if m:
+                    for line in consume_py2k():
+                        yield line
+                else:
+                    yield line
                 break
     
     def consume_py2k():
@@ -57,7 +62,16 @@ def preprocess(data):
 
     return "\n".join(consume_normal())
 
-refactor_string = main.StdoutRefactoringTool.refactor_string
-main.StdoutRefactoringTool.refactor_string = lambda s, data, name: refactor_string(s, preprocess(data), name)
+old_refactor_string = main.StdoutRefactoringTool.refactor_string
+
+def refactor_string(self, data, name):
+    newdata = preprocess(data)
+    tree = old_refactor_string(self, newdata, name)
+    if tree:
+        if newdata != data:
+            tree.was_changed = True
+    return tree
+    
+main.StdoutRefactoringTool.refactor_string = refactor_string
 
 main.main("lib2to3.fixes")
index 0b7762b7d6b81eb55c37ed9d642e38a97c802d93..aed1d0a6f4cf41ca84a106d6fbd24813873f66a4 100644 (file)
@@ -363,6 +363,10 @@ class DictlikeIteritemsTest(unittest.TestCase):
 
 
 class DuckTypeCollectionTest(TestBase):
+    # Py3K
+    #pass
+    
+    # Py2K
     def test_sets(self):
         import sets
         class SetLike(object):
@@ -385,7 +389,7 @@ class DuckTypeCollectionTest(TestBase):
             is_(util.duck_type_collection(type_), None)
             instance = type_()
             is_(util.duck_type_collection(instance), None)
-
+    # end Py2K
 
 class ArgInspectionTest(TestBase):
     def test_get_cls_kwargs(self):
index ad16de89a33b6d00d6fe0a6f8419d1ead25d40a7..3d6964606c1c816a6d731e9d466a81e4e733ee07 100644 (file)
@@ -1,5 +1,4 @@
 import testenv; testenv.configure_for_tests()
-import sets
 from sqlalchemy import *
 from sqlalchemy import sql, exc
 from sqlalchemy.dialects.mysql import base as mysql
index 057ebe6b8e9938aacb9ced49d95c4ec5c3c3818a..0d1d220abf17ac55b24ef11313f7e0492e7bec46 100644 (file)
@@ -117,15 +117,16 @@ class UserDefinedTest(TestBase, AssertsCompiledSQL):
         self.assert_compile(DropThingy(),
             "DROP THINGY"
         )
-
+        
+        from sqlalchemy.dialects.postgres import base
         self.assert_compile(AddThingy(),
             "ADD SPECIAL PG THINGY",
-            dialect=create_engine('postgres://', _initialize=False).dialect
+            dialect=base.dialect()
         )
 
         self.assert_compile(DropThingy(),
             "DROP THINGY",
-            dialect=create_engine('postgres://', _initialize=False).dialect
+            dialect=base.dialect()
         )
         
         
index 23f643597ac2529dc4a1ba44ea7a01f78a6b546c..3d48f1d76226cc4e52b322bec97810e245b2f743 100644 (file)
@@ -198,7 +198,8 @@ class CollectionsTest(_base.ORMTest):
             direct.remove(e)
             control.remove(e)
             assert_eq()
-
+        
+        # Py2K
         if hasattr(direct, '__setslice__'):
             values = [creator(), creator()]
             direct[0:1] = values
@@ -242,7 +243,8 @@ class CollectionsTest(_base.ORMTest):
             del direct[:]
             del control[:]
             assert_eq()
-
+        # end Py2K
+        
         if hasattr(direct, 'extend'):
             values = [creator(), creator(), creator()]
 
index f1f5f4a472112db743e238a232a7bf5a363535f0..25fef774191e2ea99f9dc99e57e2073376f9bcec 100644 (file)
@@ -828,6 +828,7 @@ class MapperTest(_fixtures.FixtureTest):
     @testing.resolve_artifact_names
     def test_comparable_column(self):
         class MyComparator(sa.orm.properties.ColumnProperty.Comparator):
+            __hash__ = None
             def __eq__(self, other):
                 # lower case comparison
                 return func.lower(self.__clause_element__()) == func.lower(other)
index 52c055110ca0fcc094147a5e4610c74d52f9b4f9..d545964c72336167fe71a4d67e4239b39d4e9d7c 100644 (file)
@@ -37,8 +37,13 @@ class ExtensionCarrierTest(TestBase):
 
         assert 'populate_instance' not in carrier
         carrier.append(interfaces.MapperExtension)
+        
+        # Py3K
+        #assert 'populate_instance' not in carrier
+        # Py2K
         assert 'populate_instance' in carrier
-
+        # end Py2K
+        
         assert carrier.interface
         for m in carrier.interface:
             assert getattr(interfaces.MapperExtension, m)
@@ -83,7 +88,10 @@ class AliasedClassTest(TestBase):
         alias = aliased(Point)
 
         assert Point.zero
+        # Py2K
+        # TODO: what is this testing ??
         assert not getattr(alias, 'zero')
+        # end Py2K
 
     def test_classmethods(self):
         class Point(object):
@@ -150,9 +158,17 @@ class AliasedClassTest(TestBase):
                 self.func = func
             def __get__(self, instance, owner):
                 if instance is None:
+                    # Py3K
+                    #args = (self.func, owner)
+                    # Py2K
                     args = (self.func, owner, owner.__class__)
+                    # end Py2K
                 else:
+                    # Py3K
+                    #args = (self.func, instance)
+                    # Py2K
                     args = (self.func, instance, owner)
+                    # end Py2K
                 return types.MethodType(*args)
 
         class PropertyDescriptor(object):
index 73eb2d651fe5b6ef91cf88f4054a93972d4a768c..3fb1131af9e2eac712cc3baf9438e87d0ed6b9e1 100644 (file)
@@ -12,8 +12,5 @@ def _function_named(fn, newname):
                           fn.func_defaults, fn.func_closure)
     return fn
 
-try:
-    callable = __builtin__.callable
-except NameError:
-    def callable(fn): return hasattr(fn, '__call__')
+from sqlalchemy.util import callable
 
index 4f8811e45a82443792320aed776207ef33ce8ea3..e295e4fbadd6da48d54b1ece13ab53cae74074b0 100644 (file)
@@ -171,9 +171,16 @@ class ReplayableSession(object):
     Natives = set([getattr(types, t)
                    for t in dir(types) if not t.startswith('_')]). \
                    difference([getattr(types, t)
+                            # Py3K
+                            #for t in ('FunctionType', 'BuiltinFunctionType',
+                            #          'MethodType', 'BuiltinMethodType',
+                            #          'LambdaType', )])
+                            
+                            # Py2K
                                for t in ('FunctionType', 'BuiltinFunctionType',
                                          'MethodType', 'BuiltinMethodType',
                                          'LambdaType', 'UnboundMethodType',)])
+                            # end Py2K
     def __init__(self):
         self.buffer = deque()