Преглед изворни кода

HUE-8737 [beeswax] Futurize apps/beeswax for Python 3.5

Ying Chen пре 6 година
родитељ
комит
ebbca95860
28 измењених фајлова са 639 додато и 574 уклоњено
  1. 43 41
      apps/beeswax/gen-py/TCLIService/TCLIService.py
  2. 2 1
      apps/beeswax/gen-py/TCLIService/constants.py
  3. 105 103
      apps/beeswax/gen-py/TCLIService/ttypes.py
  4. 32 29
      apps/beeswax/gen-py/fb303/FacebookService.py
  5. 2 1
      apps/beeswax/gen-py/fb303/constants.py
  6. 1 0
      apps/beeswax/gen-py/fb303/ttypes.py
  7. 114 111
      apps/beeswax/gen-py/hive_metastore/ThriftHiveMetastore.py
  8. 2 1
      apps/beeswax/gen-py/hive_metastore/constants.py
  9. 115 113
      apps/beeswax/gen-py/hive_metastore/ttypes.py
  10. 24 23
      apps/beeswax/src/beeswax/api.py
  11. 2 1
      apps/beeswax/src/beeswax/common.py
  12. 6 3
      apps/beeswax/src/beeswax/conf.py
  13. 18 13
      apps/beeswax/src/beeswax/create_table.py
  14. 2 1
      apps/beeswax/src/beeswax/create_table_tests.py
  15. 9 7
      apps/beeswax/src/beeswax/data_export.py
  16. 6 3
      apps/beeswax/src/beeswax/design.py
  17. 2 1
      apps/beeswax/src/beeswax/forms.py
  18. 2 1
      apps/beeswax/src/beeswax/hive_site.py
  19. 9 8
      apps/beeswax/src/beeswax/management/commands/beeswax_install_examples.py
  20. 2 1
      apps/beeswax/src/beeswax/management/commands/close_queries.py
  21. 2 1
      apps/beeswax/src/beeswax/management/commands/close_sessions.py
  22. 9 7
      apps/beeswax/src/beeswax/models.py
  23. 13 11
      apps/beeswax/src/beeswax/server/dbms.py
  24. 6 5
      apps/beeswax/src/beeswax/server/hive_metastore_server.py
  25. 40 35
      apps/beeswax/src/beeswax/server/hive_server2_lib.py
  26. 10 6
      apps/beeswax/src/beeswax/test_base.py
  27. 40 28
      apps/beeswax/src/beeswax/tests.py
  28. 21 19
      apps/beeswax/src/beeswax/views.py

+ 43 - 41
apps/beeswax/gen-py/TCLIService/TCLIService.py

@@ -1,3 +1,4 @@
+from __future__ import absolute_import
 #
 # Autogenerated by Thrift Compiler (0.9.3)
 #
@@ -6,9 +7,10 @@
 #  options string: py:new_style
 #
 
+from builtins import object
 from thrift.Thrift import TType, TMessageType, TException, TApplicationException
 import logging
-from ttypes import *
+from .ttypes import *
 from thrift.Thrift import TProcessor
 from thrift.transport import TTransport
 from thrift.protocol import TBinaryProtocol, TProtocol
@@ -1268,7 +1270,7 @@ class OpenSession_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1333,7 +1335,7 @@ class OpenSession_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1399,7 +1401,7 @@ class CloseSession_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1464,7 +1466,7 @@ class CloseSession_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1530,7 +1532,7 @@ class GetInfo_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1595,7 +1597,7 @@ class GetInfo_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1661,7 +1663,7 @@ class ExecuteStatement_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1726,7 +1728,7 @@ class ExecuteStatement_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1792,7 +1794,7 @@ class GetTypeInfo_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1857,7 +1859,7 @@ class GetTypeInfo_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1923,7 +1925,7 @@ class GetCatalogs_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1988,7 +1990,7 @@ class GetCatalogs_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2054,7 +2056,7 @@ class GetSchemas_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2119,7 +2121,7 @@ class GetSchemas_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2185,7 +2187,7 @@ class GetTables_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2250,7 +2252,7 @@ class GetTables_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2316,7 +2318,7 @@ class GetTableTypes_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2381,7 +2383,7 @@ class GetTableTypes_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2447,7 +2449,7 @@ class GetColumns_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2512,7 +2514,7 @@ class GetColumns_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2578,7 +2580,7 @@ class GetFunctions_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2643,7 +2645,7 @@ class GetFunctions_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2709,7 +2711,7 @@ class GetOperationStatus_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2774,7 +2776,7 @@ class GetOperationStatus_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2840,7 +2842,7 @@ class CancelOperation_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2905,7 +2907,7 @@ class CancelOperation_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2971,7 +2973,7 @@ class CloseOperation_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3036,7 +3038,7 @@ class CloseOperation_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3102,7 +3104,7 @@ class GetResultSetMetadata_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3167,7 +3169,7 @@ class GetResultSetMetadata_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3233,7 +3235,7 @@ class FetchResults_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3298,7 +3300,7 @@ class FetchResults_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3364,7 +3366,7 @@ class GetDelegationToken_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3429,7 +3431,7 @@ class GetDelegationToken_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3495,7 +3497,7 @@ class CancelDelegationToken_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3560,7 +3562,7 @@ class CancelDelegationToken_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3626,7 +3628,7 @@ class RenewDelegationToken_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3691,7 +3693,7 @@ class RenewDelegationToken_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3757,7 +3759,7 @@ class GetLog_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3822,7 +3824,7 @@ class GetLog_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):

+ 2 - 1
apps/beeswax/gen-py/TCLIService/constants.py

@@ -1,3 +1,4 @@
+from __future__ import absolute_import
 #
 # Autogenerated by Thrift Compiler (0.9.3)
 #
@@ -7,7 +8,7 @@
 #
 
 from thrift.Thrift import TType, TMessageType, TException, TApplicationException
-from ttypes import *
+from .ttypes import *
 
 PRIMITIVE_TYPES = set([
     0,

+ 105 - 103
apps/beeswax/gen-py/TCLIService/ttypes.py

@@ -6,6 +6,8 @@
 #  options string: py:new_style
 #
 
+from builtins import range
+from builtins import object
 from thrift.Thrift import TType, TMessageType, TException, TApplicationException
 
 from thrift.transport import TTransport
@@ -448,7 +450,7 @@ class TTypeQualifierValue(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -484,7 +486,7 @@ class TTypeQualifiers(object):
         if ftype == TType.MAP:
           self.qualifiers = {}
           (_ktype1, _vtype2, _size0 ) = iprot.readMapBegin()
-          for _i4 in xrange(_size0):
+          for _i4 in range(_size0):
             _key5 = iprot.readString()
             _val6 = TTypeQualifierValue()
             _val6.read(iprot)
@@ -505,7 +507,7 @@ class TTypeQualifiers(object):
     if self.qualifiers is not None:
       oprot.writeFieldBegin('qualifiers', TType.MAP, 1)
       oprot.writeMapBegin(TType.STRING, TType.STRUCT, len(self.qualifiers))
-      for kiter7,viter8 in self.qualifiers.items():
+      for kiter7,viter8 in list(self.qualifiers.items()):
         oprot.writeString(kiter7)
         viter8.write(oprot)
       oprot.writeMapEnd()
@@ -526,7 +528,7 @@ class TTypeQualifiers(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -607,7 +609,7 @@ class TPrimitiveTypeEntry(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -674,7 +676,7 @@ class TArrayTypeEntry(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -756,7 +758,7 @@ class TMapTypeEntry(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -792,7 +794,7 @@ class TStructTypeEntry(object):
         if ftype == TType.MAP:
           self.nameToTypePtr = {}
           (_ktype10, _vtype11, _size9 ) = iprot.readMapBegin()
-          for _i13 in xrange(_size9):
+          for _i13 in range(_size9):
             _key14 = iprot.readString()
             _val15 = iprot.readI32()
             self.nameToTypePtr[_key14] = _val15
@@ -812,7 +814,7 @@ class TStructTypeEntry(object):
     if self.nameToTypePtr is not None:
       oprot.writeFieldBegin('nameToTypePtr', TType.MAP, 1)
       oprot.writeMapBegin(TType.STRING, TType.I32, len(self.nameToTypePtr))
-      for kiter16,viter17 in self.nameToTypePtr.items():
+      for kiter16,viter17 in list(self.nameToTypePtr.items()):
         oprot.writeString(kiter16)
         oprot.writeI32(viter17)
       oprot.writeMapEnd()
@@ -833,7 +835,7 @@ class TStructTypeEntry(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -869,7 +871,7 @@ class TUnionTypeEntry(object):
         if ftype == TType.MAP:
           self.nameToTypePtr = {}
           (_ktype19, _vtype20, _size18 ) = iprot.readMapBegin()
-          for _i22 in xrange(_size18):
+          for _i22 in range(_size18):
             _key23 = iprot.readString()
             _val24 = iprot.readI32()
             self.nameToTypePtr[_key23] = _val24
@@ -889,7 +891,7 @@ class TUnionTypeEntry(object):
     if self.nameToTypePtr is not None:
       oprot.writeFieldBegin('nameToTypePtr', TType.MAP, 1)
       oprot.writeMapBegin(TType.STRING, TType.I32, len(self.nameToTypePtr))
-      for kiter25,viter26 in self.nameToTypePtr.items():
+      for kiter25,viter26 in list(self.nameToTypePtr.items()):
         oprot.writeString(kiter25)
         oprot.writeI32(viter26)
       oprot.writeMapEnd()
@@ -910,7 +912,7 @@ class TUnionTypeEntry(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -977,7 +979,7 @@ class TUserDefinedTypeEntry(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1113,7 +1115,7 @@ class TTypeEntry(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1149,7 +1151,7 @@ class TTypeDesc(object):
         if ftype == TType.LIST:
           self.types = []
           (_etype30, _size27) = iprot.readListBegin()
-          for _i31 in xrange(_size27):
+          for _i31 in range(_size27):
             _elem32 = TTypeEntry()
             _elem32.read(iprot)
             self.types.append(_elem32)
@@ -1189,7 +1191,7 @@ class TTypeDesc(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1300,7 +1302,7 @@ class TColumnDesc(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1336,7 +1338,7 @@ class TTableSchema(object):
         if ftype == TType.LIST:
           self.columns = []
           (_etype37, _size34) = iprot.readListBegin()
-          for _i38 in xrange(_size34):
+          for _i38 in range(_size34):
             _elem39 = TColumnDesc()
             _elem39.read(iprot)
             self.columns.append(_elem39)
@@ -1376,7 +1378,7 @@ class TTableSchema(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1441,7 +1443,7 @@ class TBoolValue(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1506,7 +1508,7 @@ class TByteValue(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1571,7 +1573,7 @@ class TI16Value(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1636,7 +1638,7 @@ class TI32Value(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1701,7 +1703,7 @@ class TI64Value(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1766,7 +1768,7 @@ class TDoubleValue(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1831,7 +1833,7 @@ class TStringValue(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1981,7 +1983,7 @@ class TColumnValue(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2017,7 +2019,7 @@ class TRow(object):
         if ftype == TType.LIST:
           self.colVals = []
           (_etype44, _size41) = iprot.readListBegin()
-          for _i45 in xrange(_size41):
+          for _i45 in range(_size41):
             _elem46 = TColumnValue()
             _elem46.read(iprot)
             self.colVals.append(_elem46)
@@ -2057,7 +2059,7 @@ class TRow(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2096,7 +2098,7 @@ class TBoolColumn(object):
         if ftype == TType.LIST:
           self.values = []
           (_etype51, _size48) = iprot.readListBegin()
-          for _i52 in xrange(_size48):
+          for _i52 in range(_size48):
             _elem53 = iprot.readBool()
             self.values.append(_elem53)
           iprot.readListEnd()
@@ -2147,7 +2149,7 @@ class TBoolColumn(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2186,7 +2188,7 @@ class TByteColumn(object):
         if ftype == TType.LIST:
           self.values = []
           (_etype58, _size55) = iprot.readListBegin()
-          for _i59 in xrange(_size55):
+          for _i59 in range(_size55):
             _elem60 = iprot.readByte()
             self.values.append(_elem60)
           iprot.readListEnd()
@@ -2237,7 +2239,7 @@ class TByteColumn(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2276,7 +2278,7 @@ class TI16Column(object):
         if ftype == TType.LIST:
           self.values = []
           (_etype65, _size62) = iprot.readListBegin()
-          for _i66 in xrange(_size62):
+          for _i66 in range(_size62):
             _elem67 = iprot.readI16()
             self.values.append(_elem67)
           iprot.readListEnd()
@@ -2327,7 +2329,7 @@ class TI16Column(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2366,7 +2368,7 @@ class TI32Column(object):
         if ftype == TType.LIST:
           self.values = []
           (_etype72, _size69) = iprot.readListBegin()
-          for _i73 in xrange(_size69):
+          for _i73 in range(_size69):
             _elem74 = iprot.readI32()
             self.values.append(_elem74)
           iprot.readListEnd()
@@ -2417,7 +2419,7 @@ class TI32Column(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2456,7 +2458,7 @@ class TI64Column(object):
         if ftype == TType.LIST:
           self.values = []
           (_etype79, _size76) = iprot.readListBegin()
-          for _i80 in xrange(_size76):
+          for _i80 in range(_size76):
             _elem81 = iprot.readI64()
             self.values.append(_elem81)
           iprot.readListEnd()
@@ -2507,7 +2509,7 @@ class TI64Column(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2546,7 +2548,7 @@ class TDoubleColumn(object):
         if ftype == TType.LIST:
           self.values = []
           (_etype86, _size83) = iprot.readListBegin()
-          for _i87 in xrange(_size83):
+          for _i87 in range(_size83):
             _elem88 = iprot.readDouble()
             self.values.append(_elem88)
           iprot.readListEnd()
@@ -2597,7 +2599,7 @@ class TDoubleColumn(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2636,7 +2638,7 @@ class TStringColumn(object):
         if ftype == TType.LIST:
           self.values = []
           (_etype93, _size90) = iprot.readListBegin()
-          for _i94 in xrange(_size90):
+          for _i94 in range(_size90):
             _elem95 = iprot.readString()
             self.values.append(_elem95)
           iprot.readListEnd()
@@ -2687,7 +2689,7 @@ class TStringColumn(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2726,7 +2728,7 @@ class TBinaryColumn(object):
         if ftype == TType.LIST:
           self.values = []
           (_etype100, _size97) = iprot.readListBegin()
-          for _i101 in xrange(_size97):
+          for _i101 in range(_size97):
             _elem102 = iprot.readString()
             self.values.append(_elem102)
           iprot.readListEnd()
@@ -2777,7 +2779,7 @@ class TBinaryColumn(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2941,7 +2943,7 @@ class TColumn(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2988,7 +2990,7 @@ class TRowSet(object):
         if ftype == TType.LIST:
           self.rows = []
           (_etype107, _size104) = iprot.readListBegin()
-          for _i108 in xrange(_size104):
+          for _i108 in range(_size104):
             _elem109 = TRow()
             _elem109.read(iprot)
             self.rows.append(_elem109)
@@ -2999,7 +3001,7 @@ class TRowSet(object):
         if ftype == TType.LIST:
           self.columns = []
           (_etype113, _size110) = iprot.readListBegin()
-          for _i114 in xrange(_size110):
+          for _i114 in range(_size110):
             _elem115 = TColumn()
             _elem115.read(iprot)
             self.columns.append(_elem115)
@@ -3054,7 +3056,7 @@ class TRowSet(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3107,7 +3109,7 @@ class TStatus(object):
         if ftype == TType.LIST:
           self.infoMessages = []
           (_etype121, _size118) = iprot.readListBegin()
-          for _i122 in xrange(_size118):
+          for _i122 in range(_size118):
             _elem123 = iprot.readString()
             self.infoMessages.append(_elem123)
           iprot.readListEnd()
@@ -3181,7 +3183,7 @@ class TStatus(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3263,7 +3265,7 @@ class THandleIdentifier(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3331,7 +3333,7 @@ class TSessionHandle(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3442,7 +3444,7 @@ class TOperationHandle(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3502,7 +3504,7 @@ class TOpenSessionReq(object):
         if ftype == TType.MAP:
           self.configuration = {}
           (_ktype126, _vtype127, _size125 ) = iprot.readMapBegin()
-          for _i129 in xrange(_size125):
+          for _i129 in range(_size125):
             _key130 = iprot.readString()
             _val131 = iprot.readString()
             self.configuration[_key130] = _val131
@@ -3534,7 +3536,7 @@ class TOpenSessionReq(object):
     if self.configuration is not None:
       oprot.writeFieldBegin('configuration', TType.MAP, 4)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.configuration))
-      for kiter132,viter133 in self.configuration.items():
+      for kiter132,viter133 in list(self.configuration.items()):
         oprot.writeString(kiter132)
         oprot.writeString(viter133)
       oprot.writeMapEnd()
@@ -3558,7 +3560,7 @@ class TOpenSessionReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3620,7 +3622,7 @@ class TOpenSessionResp(object):
         if ftype == TType.MAP:
           self.configuration = {}
           (_ktype135, _vtype136, _size134 ) = iprot.readMapBegin()
-          for _i138 in xrange(_size134):
+          for _i138 in range(_size134):
             _key139 = iprot.readString()
             _val140 = iprot.readString()
             self.configuration[_key139] = _val140
@@ -3652,7 +3654,7 @@ class TOpenSessionResp(object):
     if self.configuration is not None:
       oprot.writeFieldBegin('configuration', TType.MAP, 4)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.configuration))
-      for kiter141,viter142 in self.configuration.items():
+      for kiter141,viter142 in list(self.configuration.items()):
         oprot.writeString(kiter141)
         oprot.writeString(viter142)
       oprot.writeMapEnd()
@@ -3678,7 +3680,7 @@ class TOpenSessionResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3746,7 +3748,7 @@ class TCloseSessionReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3814,7 +3816,7 @@ class TCloseSessionResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -3944,7 +3946,7 @@ class TGetInfoValue(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -4027,7 +4029,7 @@ class TGetInfoReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -4111,7 +4113,7 @@ class TGetInfoResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -4167,7 +4169,7 @@ class TExecuteStatementReq(object):
         if ftype == TType.MAP:
           self.confOverlay = {}
           (_ktype144, _vtype145, _size143 ) = iprot.readMapBegin()
-          for _i147 in xrange(_size143):
+          for _i147 in range(_size143):
             _key148 = iprot.readString()
             _val149 = iprot.readString()
             self.confOverlay[_key148] = _val149
@@ -4200,7 +4202,7 @@ class TExecuteStatementReq(object):
     if self.confOverlay is not None:
       oprot.writeFieldBegin('confOverlay', TType.MAP, 3)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.confOverlay))
-      for kiter150,viter151 in self.confOverlay.items():
+      for kiter150,viter151 in list(self.confOverlay.items()):
         oprot.writeString(kiter150)
         oprot.writeString(viter151)
       oprot.writeMapEnd()
@@ -4230,7 +4232,7 @@ class TExecuteStatementReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -4312,7 +4314,7 @@ class TExecuteStatementResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -4380,7 +4382,7 @@ class TGetTypeInfoReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -4462,7 +4464,7 @@ class TGetTypeInfoResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -4530,7 +4532,7 @@ class TGetCatalogsReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -4612,7 +4614,7 @@ class TGetCatalogsResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -4706,7 +4708,7 @@ class TGetSchemasReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -4788,7 +4790,7 @@ class TGetSchemasResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -4857,7 +4859,7 @@ class TGetTablesReq(object):
         if ftype == TType.LIST:
           self.tableTypes = []
           (_etype155, _size152) = iprot.readListBegin()
-          for _i156 in xrange(_size152):
+          for _i156 in range(_size152):
             _elem157 = iprot.readString()
             self.tableTypes.append(_elem157)
           iprot.readListEnd()
@@ -4916,7 +4918,7 @@ class TGetTablesReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -4998,7 +5000,7 @@ class TGetTablesResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -5066,7 +5068,7 @@ class TGetTableTypesReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -5148,7 +5150,7 @@ class TGetTableTypesResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -5268,7 +5270,7 @@ class TGetColumnsReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -5350,7 +5352,7 @@ class TGetColumnsResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -5459,7 +5461,7 @@ class TGetFunctionsReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -5541,7 +5543,7 @@ class TGetFunctionsResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -5609,7 +5611,7 @@ class TGetOperationStatusReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -5729,7 +5731,7 @@ class TGetOperationStatusResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -5797,7 +5799,7 @@ class TCancelOperationReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -5865,7 +5867,7 @@ class TCancelOperationResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -5933,7 +5935,7 @@ class TCloseOperationReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -6001,7 +6003,7 @@ class TCloseOperationResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -6069,7 +6071,7 @@ class TGetResultSetMetadataReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -6151,7 +6153,7 @@ class TGetResultSetMetadataResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -6262,7 +6264,7 @@ class TFetchResultsReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -6357,7 +6359,7 @@ class TFetchResultsResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -6455,7 +6457,7 @@ class TGetDelegationTokenReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -6536,7 +6538,7 @@ class TGetDelegationTokenResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -6619,7 +6621,7 @@ class TCancelDelegationTokenReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -6687,7 +6689,7 @@ class TCancelDelegationTokenResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -6770,7 +6772,7 @@ class TRenewDelegationTokenReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -6838,7 +6840,7 @@ class TRenewDelegationTokenResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -6906,7 +6908,7 @@ class TGetLogReq(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -6989,7 +6991,7 @@ class TGetLogResp(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):

+ 32 - 29
apps/beeswax/gen-py/fb303/FacebookService.py

@@ -1,3 +1,4 @@
+from __future__ import absolute_import
 #
 # Autogenerated by Thrift Compiler (0.9.3)
 #
@@ -6,9 +7,11 @@
 #  options string: py:new_style
 #
 
+from builtins import range
+from builtins import object
 from thrift.Thrift import TType, TMessageType, TException, TApplicationException
 import logging
-from ttypes import *
+from .ttypes import *
 from thrift.Thrift import TProcessor
 from thrift.transport import TTransport
 from thrift.protocol import TBinaryProtocol, TProtocol
@@ -794,7 +797,7 @@ class getName_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -858,7 +861,7 @@ class getName_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -904,7 +907,7 @@ class getVersion_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -968,7 +971,7 @@ class getVersion_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1014,7 +1017,7 @@ class getStatus_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1078,7 +1081,7 @@ class getStatus_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1124,7 +1127,7 @@ class getStatusDetails_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1188,7 +1191,7 @@ class getStatusDetails_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1234,7 +1237,7 @@ class getCounters_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1269,7 +1272,7 @@ class getCounters_result(object):
         if ftype == TType.MAP:
           self.success = {}
           (_ktype1, _vtype2, _size0 ) = iprot.readMapBegin()
-          for _i4 in xrange(_size0):
+          for _i4 in range(_size0):
             _key5 = iprot.readString()
             _val6 = iprot.readI64()
             self.success[_key5] = _val6
@@ -1289,7 +1292,7 @@ class getCounters_result(object):
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.MAP, 0)
       oprot.writeMapBegin(TType.STRING, TType.I64, len(self.success))
-      for kiter7,viter8 in self.success.items():
+      for kiter7,viter8 in list(self.success.items()):
         oprot.writeString(kiter7)
         oprot.writeI64(viter8)
       oprot.writeMapEnd()
@@ -1308,7 +1311,7 @@ class getCounters_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1373,7 +1376,7 @@ class getCounter_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1437,7 +1440,7 @@ class getCounter_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1515,7 +1518,7 @@ class setOption_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1561,7 +1564,7 @@ class setOption_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1626,7 +1629,7 @@ class getOption_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1690,7 +1693,7 @@ class getOption_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1736,7 +1739,7 @@ class getOptions_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1771,7 +1774,7 @@ class getOptions_result(object):
         if ftype == TType.MAP:
           self.success = {}
           (_ktype10, _vtype11, _size9 ) = iprot.readMapBegin()
-          for _i13 in xrange(_size9):
+          for _i13 in range(_size9):
             _key14 = iprot.readString()
             _val15 = iprot.readString()
             self.success[_key14] = _val15
@@ -1791,7 +1794,7 @@ class getOptions_result(object):
     if self.success is not None:
       oprot.writeFieldBegin('success', TType.MAP, 0)
       oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.success))
-      for kiter16,viter17 in self.success.items():
+      for kiter16,viter17 in list(self.success.items()):
         oprot.writeString(kiter16)
         oprot.writeString(viter17)
       oprot.writeMapEnd()
@@ -1810,7 +1813,7 @@ class getOptions_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1875,7 +1878,7 @@ class getCpuProfile_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1939,7 +1942,7 @@ class getCpuProfile_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -1985,7 +1988,7 @@ class aliveSince_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2049,7 +2052,7 @@ class aliveSince_result(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2095,7 +2098,7 @@ class reinitialize_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):
@@ -2141,7 +2144,7 @@ class shutdown_args(object):
 
   def __repr__(self):
     L = ['%s=%r' % (key, value)
-      for key, value in self.__dict__.iteritems()]
+      for key, value in self.__dict__.items()]
     return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
 
   def __eq__(self, other):

+ 2 - 1
apps/beeswax/gen-py/fb303/constants.py

@@ -1,3 +1,4 @@
+from __future__ import absolute_import
 #
 # Autogenerated by Thrift Compiler (0.9.3)
 #
@@ -7,5 +8,5 @@
 #
 
 from thrift.Thrift import TType, TMessageType, TException, TApplicationException
-from ttypes import *
+from .ttypes import *
 

+ 1 - 0
apps/beeswax/gen-py/fb303/ttypes.py

@@ -6,6 +6,7 @@
 #  options string: py:new_style
 #
 
+from builtins import object
 from thrift.Thrift import TType, TMessageType, TException, TApplicationException
 
 from thrift.transport import TTransport

Разлика између датотеке није приказан због своје велике величине
+ 114 - 111
apps/beeswax/gen-py/hive_metastore/ThriftHiveMetastore.py


+ 2 - 1
apps/beeswax/gen-py/hive_metastore/constants.py

@@ -1,3 +1,4 @@
+from __future__ import absolute_import
 #
 # Autogenerated by Thrift Compiler (0.9.3)
 #
@@ -7,7 +8,7 @@
 #
 
 from thrift.Thrift import TType, TMessageType, TException, TApplicationException
-from ttypes import *
+from .ttypes import *
 
 DDL_TIME = "transient_lastDdlTime"
 HIVE_FILTER_FIELD_OWNER = "hive_filter_field_owner__"

Разлика између датотеке није приказан због своје велике величине
+ 115 - 113
apps/beeswax/gen-py/hive_metastore/ttypes.py


+ 24 - 23
apps/beeswax/src/beeswax/api.py

@@ -15,6 +15,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from builtins import zip
 import logging
 import json
 import re
@@ -60,9 +61,9 @@ def error_handler(view_fn):
   def decorator(request, *args, **kwargs):
     try:
       return view_fn(request, *args, **kwargs)
-    except Http404, e:
+    except Http404 as e:
       raise e
-    except Exception, e:
+    except Exception as e:
       LOG.exception('error in %s' % view_fn)
 
       if not hasattr(e, 'message') or not e.message:
@@ -129,7 +130,7 @@ def _autocomplete(db, database=None, table=None, column=None, nested=None, query
           db = dbms.get(db.client.user, query_server, cluster=cluster)
 
         col_options = db.get_table_describe(database, table.name)
-        extra_col_options = dict([(col[0], dict(zip(col_options.cols(), col))) for col in col_options.rows()])
+        extra_col_options = dict([(col[0], dict(list(zip(col_options.cols(), col)))) for col in col_options.rows()])
 
         for col_props in cols_extended:
           col_props.update(extra_col_options.get(col_props['name'], {}))
@@ -153,10 +154,10 @@ def _autocomplete(db, database=None, table=None, column=None, nested=None, query
             response['sample'] = sample['rows']
       else:
         raise Exception('Could not find column `%s`.`%s`.`%s`' % (database, table, column))
-  except (QueryServerTimeoutException, TTransportException), e:
+  except (QueryServerTimeoutException, TTransportException) as e:
     response['code'] = 503
     response['error'] = e.message
-  except Exception, e:
+  except Exception as e:
     LOG.warn('Autocomplete data fetching error: %s' % e)
     response['code'] = 500
     response['error'] = e.message
@@ -228,16 +229,16 @@ def watch_query_refresh_json(request, id):
       close_operation(request, id)
       query_history = db.execute_next_statement(query_history, request.POST.get('query-query'))
       handle, state = _get_query_handle_and_state(query_history)
-  except QueryServerException, ex:
+  except QueryServerException as ex:
     raise ex
-  except Exception, ex:
+  except Exception as ex:
     LOG.exception(ex)
     handle, state = _get_query_handle_and_state(query_history)
 
   try:
     start_over = request.POST.get('log-start-over') == 'true'
     log = db.get_log(handle, start_over=start_over)
-  except Exception, ex:
+  except Exception as ex:
     log = str(ex)
 
   jobs = parse_out_jobs(log)
@@ -353,7 +354,7 @@ def execute(request, design_id=None):
               else:
                 return execute_directly(request, query, design, query_server, parameters=parameters)
 
-            except Exception, ex:
+            except Exception as ex:
               db = dbms.get(request.user, query_server)
               error_message, log = expand_exception(ex, db)
               response['message'] = error_message
@@ -376,7 +377,7 @@ def execute(request, design_id=None):
         'file_resources': query_form.file_resources.errors,
         'functions': query_form.functions.errors,
       }
-  except RuntimeError, e:
+  except RuntimeError as e:
     response['message']= str(e)
 
   return JsonResponse(response)
@@ -408,7 +409,7 @@ def save_query_design(request, design_id=None):
         'functions': query_form.functions.errors,
         'saveform': query_form.saveform.errors,
       }
-  except RuntimeError, e:
+  except RuntimeError as e:
     response['message'] = str(e)
 
   return JsonResponse(response)
@@ -455,8 +456,8 @@ def cancel_query(request, query_history_id):
       db.cancel_operation(query_history.get_handle())
       query_history.set_to_expired()
       response['status'] = 0
-    except Exception, e:
-      response['message'] = unicode(e)
+    except Exception as e:
+      response['message'] = str(e)
 
   return JsonResponse(response)
 
@@ -499,7 +500,7 @@ def save_results_hdfs_directory(request, query_history_id):
         response['success_url'] = '/filebrowser/view=%s' % target_dir
         query_history = db.insert_query_into_directory(query_history, target_dir)
         response['watch_url'] = reverse(get_app_name(request) + ':api_watch_query_refresh_json', kwargs={'id': query_history.id})
-      except Exception, ex:
+      except Exception as ex:
         error_msg, log = expand_exception(ex, db)
         response['message'] = _('The result could not be saved: %s.') % error_msg
         response['status'] = -3
@@ -545,7 +546,7 @@ def save_results_hdfs_file(request, query_history_id):
 
       try:
         handle, state = _get_query_handle_and_state(query_history)
-      except Exception, ex:
+      except Exception as ex:
         response['message'] = _('Cannot find query handle and state: %s') % str(query_history)
         response['status'] = -2
         return JsonResponse(response)
@@ -565,7 +566,7 @@ def save_results_hdfs_file(request, query_history_id):
         response['path'] = target_file
         response['success_url'] = '/filebrowser/view=%s' % target_file
         response['watch_url'] = reverse(get_app_name(request) + ':api_watch_query_refresh_json', kwargs={'id': query_history.id})
-      except Exception, ex:
+      except Exception as ex:
         error_msg, log = expand_exception(ex, db)
         response['message'] = _('The result could not be saved: %s.') % error_msg
         response['status'] = -3
@@ -608,7 +609,7 @@ def save_results_hive_table(request, query_history_id):
       try:
         handle, state = _get_query_handle_and_state(query_history)
         result_meta = db.get_results_metadata(handle)
-      except Exception, ex:
+      except Exception as ex:
         response['message'] = _('Cannot find query handle and state: %s') % str(query_history)
         response['status'] = -2
         return JsonResponse(response)
@@ -621,14 +622,14 @@ def save_results_hive_table(request, query_history_id):
         response['path'] = form.cleaned_data['target_table']
         response['success_url'] = reverse('metastore:describe_table', kwargs={'database': form.target_database, 'table': form.cleaned_data['target_table']})
         response['watch_url'] = reverse(get_app_name(request) + ':api_watch_query_refresh_json', kwargs={'id': query_history.id})
-      except Exception, ex:
+      except Exception as ex:
         error_msg, log = expand_exception(ex, db)
         response['message'] = _('The result could not be saved: %s.') % error_msg
         response['status'] = -3
 
     else:
       response['status'] = 1
-      response['message'] = '\n'.join(form.errors.values()[0])
+      response['message'] = '\n'.join(list(form.errors.values())[0])
 
   return JsonResponse(response)
 
@@ -833,7 +834,7 @@ def get_session(request, session_id=None):
   if session is not None:
     properties = json.loads(session.properties)
     # Redact passwords
-    for key, value in properties.items():
+    for key, value in list(properties.items()):
       if 'password' in key.lower():
         properties[key] = '*' * len(value)
 
@@ -876,7 +877,7 @@ def describe_table(request, database, table):
   try:
     from metastore.views import describe_table as metastore_describe_table
     return metastore_describe_table(request, database, table)
-  except Exception, e:
+  except Exception as e:
     LOG.exception('Describe table failed')
     raise PopupException(_('Problem accessing table metadata'), detail=e)
 
@@ -922,13 +923,13 @@ def get_query_form(request):
       query_server = dbms.get_query_server_config(get_app_name(request))
       db = dbms.get(request.user, query_server)
       databases = [(database, database) for database in db.get_databases()]
-    except StructuredThriftTransportException, e:
+    except StructuredThriftTransportException as e:
       # If Thrift exception was due to failed authentication, raise corresponding message
       if 'TSocket read 0 bytes' in str(e) or 'Error validating the login' in str(e):
         raise PopupException(_('Failed to authenticate to query server, check authentication configurations.'), detail=e)
       else:
         raise e
-  except Exception, e:
+  except Exception as e:
     raise PopupException(_('Unable to access databases, Query Server or Metastore may be down.'), detail=e)
 
   if not databases:

+ 2 - 1
apps/beeswax/src/beeswax/common.py

@@ -18,6 +18,7 @@
 """
 Common utils for beeswax.
 """
+from __future__ import print_function
 
 import re
 import time
@@ -56,7 +57,7 @@ def timing(fn):
     time1 = time.time()
     ret = fn(*args, **kwargs)
     time2 = time.time()
-    print '%s elapsed time: %0.3f ms' % (fn.func_name, (time2-time1)*1000.0)
+    print('%s elapsed time: %0.3f ms' % (fn.__name__, (time2-time1)*1000.0))
     return ret
   return decorator
 

+ 6 - 3
apps/beeswax/src/beeswax/conf.py

@@ -15,6 +15,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from __future__ import division
+from builtins import str
+from past.utils import old_div
 import logging
 import os.path
 import sys
@@ -180,7 +183,7 @@ DOWNLOAD_CELL_LIMIT = Config(
 
 def get_deprecated_download_cell_limit():
   """Get the old default"""
-  return DOWNLOAD_CELL_LIMIT.get() / 100 if DOWNLOAD_CELL_LIMIT.get() > 0 else DOWNLOAD_CELL_LIMIT.get()
+  return old_div(DOWNLOAD_CELL_LIMIT.get(), 100) if DOWNLOAD_CELL_LIMIT.get() > 0 else DOWNLOAD_CELL_LIMIT.get()
 
 DOWNLOAD_ROW_LIMIT = Config(
   key='download_row_limit',
@@ -314,14 +317,14 @@ def config_validator(user):
         if handle:
           server.fetch(handle, rows=100)
           server.close(handle)
-    except StructuredThriftTransportException, e:
+    except StructuredThriftTransportException as e:
       if 'Error validating the login' in str(e):
         msg = 'Failed to authenticate to HiveServer2, check authentication configurations.'
         LOG.exception(msg)
         res.append((NICE_NAME, _(msg)))
       else:
         raise e
-  except Exception, e:
+  except Exception as e:
     msg = "The application won't work without a running HiveServer2."
     LOG.exception(msg)
     res.append((NICE_NAME, _(msg)))

+ 18 - 13
apps/beeswax/src/beeswax/create_table.py

@@ -16,6 +16,11 @@
 # limitations under the License.
 
 
+from __future__ import division
+from builtins import str
+from builtins import range
+from builtins import object
+from past.utils import old_div
 import csv
 import gzip
 import json
@@ -154,7 +159,7 @@ def import_wizard(request, database='default'):
       cancel_s3_column_def = request.POST.get('cancel_create')  # Step 3 -> 2
 
       # Exactly one of these should be True
-      if len(filter(None, (do_s2_auto_delim, do_s2_user_delim, do_s3_column_def, do_hive_create, cancel_s2_user_delim, cancel_s3_column_def))) != 1:
+      if len([_f for _f in (do_s2_auto_delim, do_s2_user_delim, do_s3_column_def, do_hive_create, cancel_s2_user_delim, cancel_s3_column_def) if _f]) != 1:
         raise PopupException(_('Invalid form submission'))
 
       if not do_s2_auto_delim:
@@ -184,7 +189,7 @@ def import_wizard(request, database='default'):
           elif load_data == 'EXTERNAL':
             if not request.fs.isdir(path):
               raise PopupException(_('Path location must refer to a directory if "Create External Table" is selected.'))
-        except (IOError, S3FileSystemException), e:
+        except (IOError, S3FileSystemException) as e:
           raise PopupException(_('Path location "%s" is invalid: %s') % (path, e))
 
         delim_is_auto = True
@@ -226,7 +231,7 @@ def import_wizard(request, database='default'):
         try:
           fields_list_for_json = list(fields_list)
           if fields_list_for_json:
-            fields_list_for_json[0] = map(lambda a: re.sub('[^\w]', '', a), fields_list_for_json[0]) # Cleaning headers
+            fields_list_for_json[0] = [re.sub('[^\w]', '', a) for a in fields_list_for_json[0]] # Cleaning headers
           apps_list = _get_apps(request.user, '')
           return render('import_wizard_define_columns.mako', request, {
             'apps': apps_list,
@@ -240,7 +245,7 @@ def import_wizard(request, database='default'):
             'database': database,
             'databases': databases
           })
-        except Exception, e:
+        except Exception as e:
           raise PopupException(_("The selected delimiter is creating an un-even number of columns. Please make sure you don't have empty columns."), detail=e)
 
       #
@@ -269,7 +274,7 @@ def import_wizard(request, database='default'):
         )
         try:
           return _submit_create_and_load(request, proposed_query, table_name, path, load_data, database=database)
-        except QueryServerException, e:
+        except QueryServerException as e:
           raise PopupException(_('The table could not be created.'), detail=e.message)
   else:
     s1_file_form = CreateByImportFileForm()
@@ -322,7 +327,7 @@ def _delim_preview(fs, file_form, encoding, file_types, delimiters):
     file_obj = fs.open(path)
     delim, file_type, fields_list = _parse_fields(path, file_obj, encoding, file_types, delimiters)
     file_obj.close()
-  except IOError, ex:
+  except IOError as ex:
     msg = "Failed to open file '%s': %s" % (path, ex)
     LOG.exception(msg)
     raise PopupException(msg)
@@ -332,7 +337,7 @@ def _delim_preview(fs, file_form, encoding, file_types, delimiters):
   delimiter_0 = delim
   delimiter_1 = ''
   # If custom delimiter
-  if not filter(lambda val: val[0] == delim, TERMINATOR_CHOICES):
+  if not [val for val in TERMINATOR_CHOICES if val[0] == delim]:
     delimiter_0 = '__other__'
     delimiter_1 = delim
 
@@ -396,11 +401,11 @@ def _readfields(lines, delimiters):
     if min(len_list) == 1:
       return 0
 
-    avg_n_fields = sum(len_list) / n_lines
+    avg_n_fields = old_div(sum(len_list), n_lines)
     sq_of_exp = avg_n_fields * avg_n_fields
 
     len_list_sq = [l * l for l in len_list]
-    exp_of_sq = sum(len_list_sq) / n_lines
+    exp_of_sq = old_div(sum(len_list_sq), n_lines)
     var = exp_of_sq - sq_of_exp
     # Favour more fields
     return (1000.0 / (var + 1)) + avg_n_fields
@@ -439,7 +444,7 @@ def _peek_file(fs, file_form):
     file_head = file_obj.read(IMPORT_PEEK_SIZE)
     file_obj.close()
     return (path, file_head)
-  except IOError, ex:
+  except IOError as ex:
     msg = _("Failed to open file '%(path)s': %(error)s.") % {'path': path, 'error': ex}
     LOG.exception(msg)
     raise PopupException(msg)
@@ -458,7 +463,7 @@ class GzipFileReader(object):
     except IOError:
       return None
     try:
-      return unicode(data, encoding, errors='replace').splitlines()[:IMPORT_PEEK_NLINES]
+      return str(data, encoding, errors='replace').splitlines()[:IMPORT_PEEK_NLINES]
     except UnicodeError:
       return None
 
@@ -474,7 +479,7 @@ class TextFileReader(object):
     """readlines(fileobj, encoding) -> list of lines"""
     try:
       data = fileobj.read(IMPORT_PEEK_SIZE)
-      return unicode(data, encoding, errors='replace').splitlines()[:IMPORT_PEEK_NLINES]
+      return str(data, encoding, errors='replace').splitlines()[:IMPORT_PEEK_NLINES]
     except UnicodeError:
       return None
 
@@ -504,7 +509,7 @@ def load_after_create(request, database):
 
   try:
     return execute_directly(request, query, on_success_url=on_success_url)
-  except Exception, e:
+  except Exception as e:
     message = 'The table data could not be loaded'
     LOG.exception(message)
     detail = e.message if hasattr(e, 'message') and e.message else None

+ 2 - 1
apps/beeswax/src/beeswax/create_table_tests.py

@@ -15,6 +15,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from builtins import object
 import logging
 
 from nose.tools import assert_equal, assert_true, assert_raises
@@ -26,7 +27,7 @@ from beeswax.forms import _clean_terminator
 LOG = logging.getLogger(__name__)
 
 
-class TestCreateTable():
+class TestCreateTable(object):
 
   def test_custom_delimiter(self):
     # Any thing is good

+ 9 - 7
apps/beeswax/src/beeswax/data_export.py

@@ -15,6 +15,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from builtins import str
+from builtins import object
 import json
 import logging
 import math
@@ -81,7 +83,7 @@ def upload(path, handle, user, db, fs, max_rows=-1, max_bytes=-1):
     fs.do_as_user(user.username, fs.append, path, dataset.csv)
 
 
-class DataAdapter:
+class DataAdapter(object):
 
   def __init__(self, db, handle=None, max_rows=-1, start_over=True, max_bytes=-1, store_data_type_in_header=False):
     self.handle = handle
@@ -113,27 +115,27 @@ class DataAdapter:
     size += 2 # CSV \r\n at the end of row
     for col in row:
       col_type = type(col)
-      if col_type == types.IntType:
+      if col_type == int:
         if col == 0:
           size += 1
         elif col < 0:
           size += int(math.log10(-1 * col)) + 2
         else:
           size += int(math.log10(col)) + 1
-      elif col_type == types.StringType:
+      elif col_type == bytes:
         size += len(col)
-      elif col_type == types.FloatType:
+      elif col_type == float:
         size += len(str(col))
-      elif col_type == types.BooleanType:
+      elif col_type == bool:
         size += 4
-      elif col_type == types.NoneType:
+      elif col_type == type(None):
         size += 4
       else:
         size += len(str(col))
 
     return size
 
-  def next(self):
+  def __next__(self):
     results = self.db.fetch(self.handle, start_over=self.start_over, rows=self.fetch_size)
     if self.first_fetched:
       self.first_fetched = False

+ 6 - 3
apps/beeswax/src/beeswax/design.py

@@ -19,11 +19,14 @@
 The HQLdesign class can (de)serialize a design to/from a QueryDict.
 """
 
+from future import standard_library
+standard_library.install_aliases()
+from builtins import object
 import json
 import logging
 import os
 import re
-import urlparse
+import urllib.parse
 
 import django.http
 from django import forms
@@ -150,7 +153,7 @@ class HQLdesign(object):
   def loads(data):
     """Returns an HQLdesign from the serialized form"""
     dic = json.loads(data)
-    dic = dict(map(lambda k: (str(k), dic.get(k)), dic.keys()))
+    dic = dict([(str(k), dic.get(k)) for k in list(dic.keys())])
     if dic['VERSION'] != SERIALIZATION_VERSION:
       LOG.error('Design version mismatch. Found %s; expect %s' % (dic['VERSION'], SERIALIZATION_VERSION))
 
@@ -190,7 +193,7 @@ class HQLdesign(object):
     configuration = []
 
     for f in self.file_resources:
-      if not urlparse.urlsplit(f['path']).scheme:
+      if not urllib.parse.urlsplit(f['path']).scheme:
         scheme = get_hdfs().fs_defaultfs
       else:
         scheme = ''

+ 2 - 1
apps/beeswax/src/beeswax/forms.py

@@ -15,6 +15,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from builtins import chr
 from django import forms
 from django.utils.translation import ugettext as _, ugettext_lazy as _t
 from django.core.validators import MinValueValidator, MaxValueValidator
@@ -351,7 +352,7 @@ class CreateByImportDelimForm(forms.Form):
     delimiter = self.cleaned_data.get('delimiter')
     if delimiter.isdigit():
       try:
-        unichr(int(delimiter))
+        chr(int(delimiter))
         return int(delimiter)
       except ValueError:
         raise forms.ValidationError(_('Delimiter value must be smaller than 65533.'))

+ 2 - 1
apps/beeswax/src/beeswax/hive_site.py

@@ -19,6 +19,7 @@
 Helper for reading hive-site.xml
 """
 
+from builtins import str
 import errno
 import logging
 import os.path
@@ -177,7 +178,7 @@ def _parse_hive_site():
   _HIVE_SITE_PATH = os.path.join(beeswax.conf.HIVE_CONF_DIR.get(), 'hive-site.xml')
   try:
     data = file(_HIVE_SITE_PATH, 'r').read()
-  except IOError, err:
+  except IOError as err:
     if err.errno != errno.ENOENT:
       LOG.error('Cannot read from "%s": %s' % (_HIVE_SITE_PATH, err))
       return

+ 9 - 8
apps/beeswax/src/beeswax/management/commands/beeswax_install_examples.py

@@ -15,6 +15,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from builtins import object
 import logging
 import os
 import pwd
@@ -68,7 +69,7 @@ class Command(BaseCommand):
       sample_user = install_sample_user()
       self._install_queries(sample_user, app_name)
       self._install_tables(user, app_name, db_name, tables)
-    except Exception, ex:
+    except Exception as ex:
       exception = ex
 
     Document.objects.sync()
@@ -96,7 +97,7 @@ class Command(BaseCommand):
       table = SampleTable(table_dict, app_name, db_name)
       try:
         table.install(django_user)
-      except Exception, ex:
+      except Exception as ex:
         raise InstallException(_('Could not install table: %s') % ex)
 
   def _install_queries(self, django_user, app_name):
@@ -106,13 +107,13 @@ class Command(BaseCommand):
 
     # Filter design list to app-specific designs
     app_type = HQL if app_name == 'beeswax' else IMPALA
-    design_list = filter(lambda d: int(d['type']) == app_type, design_list)
+    design_list = [d for d in design_list if int(d['type']) == app_type]
 
     for design_dict in design_list:
       design = SampleQuery(design_dict)
       try:
         design.install(django_user)
-      except Exception, ex:
+      except Exception as ex:
         raise InstallException(_('Could not install query: %s') % ex)
 
 
@@ -135,7 +136,7 @@ class SampleTable(object):
     # Sanity check
     self._data_dir = beeswax.conf.LOCAL_EXAMPLES_DATA_DIR.get()
     if self.partition_files:
-      for partition_spec, filename in self.partition_files.items():
+      for partition_spec, filename in list(self.partition_files.items()):
         filepath = os.path.join(self._data_dir, filename)
         self.partition_files[partition_spec] = filepath
         self._check_file_contents(filepath)
@@ -147,7 +148,7 @@ class SampleTable(object):
   def install(self, django_user):
     if self.create(django_user):
       if self.partition_files:
-        for partition_spec, filepath in self.partition_files.items():
+        for partition_spec, filepath in list(self.partition_files.items()):
           self.load_partition(django_user, partition_spec, filepath)
       else:
         self.load(django_user)
@@ -177,7 +178,7 @@ class SampleTable(object):
           LOG.error(msg)
           raise InstallException(msg)
         return True
-      except Exception, ex:
+      except Exception as ex:
         msg = _('Error creating table %(table)s: %(error)s.') % {'table': self.name, 'error': ex}
         LOG.error(msg)
         raise InstallException(msg)
@@ -278,7 +279,7 @@ class SampleTable(object):
         msg = _('Error loading table %(table)s: Operation timeout.') % {'table': self.name}
         LOG.error(msg)
         raise InstallException(msg)
-    except QueryServerException, ex:
+    except QueryServerException as ex:
       msg = _('Error loading table %(table)s: %(error)s.') % {'table': self.name, 'error': ex}
       LOG.error(msg)
       raise InstallException(msg)

+ 2 - 1
apps/beeswax/src/beeswax/management/commands/close_queries.py

@@ -15,6 +15,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from builtins import str
 import logging
 from datetime import datetime,  timedelta
 
@@ -81,7 +82,7 @@ class Command(BaseCommand):
 
         query.last_state = QueryHistory.STATE.expired.value
         query.save()
-      except Exception, e:
+      except Exception as e:
         if 'None' in str(e) or 'Invalid OperationHandle' in str(e):
           already_closed_queries += 1
           query.last_state = QueryHistory.STATE.expired.value

+ 2 - 1
apps/beeswax/src/beeswax/management/commands/close_sessions.py

@@ -15,6 +15,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from builtins import str
 import logging
 from datetime import datetime,  timedelta
 
@@ -74,7 +75,7 @@ class Command(BaseCommand):
       try:
         session = dbms.get(user=session.owner).close_session(session)
         closed += 1
-      except Exception, e:
+      except Exception as e:
         skipped += 1
         self.stdout.write('Session with ID %d could not be closed: %s' % (session.id, str(e)))
 

+ 9 - 7
apps/beeswax/src/beeswax/models.py

@@ -15,6 +15,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from builtins import range
+from builtins import object
 import base64
 import datetime
 import json
@@ -44,7 +46,7 @@ QUERY_SUBMISSION_TIMEOUT = datetime.timedelta(0, 60 * 60)               # 1 hour
 # Constants for DB fields, hue ini
 BEESWAX = 'beeswax'
 HIVE_SERVER2 = 'hiveserver2'
-QUERY_TYPES = (HQL, IMPALA, RDBMS, SPARK) = range(4)
+QUERY_TYPES = (HQL, IMPALA, RDBMS, SPARK) = list(range(4))
 
 class QueryHistory(models.Model):
   """
@@ -88,7 +90,7 @@ class QueryHistory(models.Model):
   extra = models.TextField(default='{}')                   # Json fields for extra properties
   is_cleared = models.BooleanField(default=False)
 
-  class Meta:
+  class Meta(object):
     ordering = ['-submission_date']
 
   @staticmethod
@@ -229,7 +231,7 @@ class HiveServerQueryHistory(QueryHistory):
 
   node_type = HIVE_SERVER2
 
-  class Meta:
+  class Meta(object):
     proxy = True
 
   def get_handle(self):
@@ -279,7 +281,7 @@ class SavedQuery(models.Model):
 
   doc = GenericRelation(Document, related_query_name='hql_doc')
 
-  class Meta:
+  class Meta(object):
     ordering = ['-mtime']
 
   def get_design(self):
@@ -330,7 +332,7 @@ class SavedQuery(models.Model):
     """
     try:
       design = SavedQuery.objects.get(id=id)
-    except SavedQuery.DoesNotExist, err:
+    except SavedQuery.DoesNotExist as err:
       msg = _('Cannot retrieve query id %(id)s.') % {'id': id}
       raise err
 
@@ -394,7 +396,7 @@ class SessionManager(models.Manager):
       if filter_open:
         q = q.filter(status_code=0)
       return q.latest("last_used")
-    except Session.DoesNotExist, e:
+    except Session.DoesNotExist as e:
       return None
 
   def get_n_sessions(self, user, n, application='beeswax', filter_open=True):
@@ -429,7 +431,7 @@ class Session(models.Model):
     return json.loads(self.properties) if self.properties else {}
 
   def get_formatted_properties(self):
-    return [dict({'key': key, 'value': value}) for key, value in self.get_properties().items()]
+    return [dict({'key': key, 'value': value}) for key, value in list(self.get_properties().items())]
 
   def __str__(self):
     return '%s %s' % (self.owner, self.last_used)

+ 13 - 11
apps/beeswax/src/beeswax/server/dbms.py

@@ -15,6 +15,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from builtins import str
+from builtins import object
 import logging
 import re
 import threading
@@ -254,7 +256,7 @@ class HiveServer2Dbms(object):
 
   def alter_database(self, database, properties):
     hql = 'ALTER database `%s` SET DBPROPERTIES (' % database
-    hql += ', '.join(["'%s'='%s'" % (k, v) for k, v in properties.items()])
+    hql += ', '.join(["'%s'='%s'" % (k, v) for k, v in list(properties.items())])
     hql += ');'
 
     timeout = SERVER_CONN_TIMEOUT.get()
@@ -299,7 +301,7 @@ class HiveServer2Dbms(object):
   def get_table(self, database, table_name):
     try:
       return self.client.get_table(database, table_name)
-    except QueryServerException, e:
+    except QueryServerException as e:
       LOG.debug("Seems like %s.%s could be a Kudu table" % (database, table_name))
       if 'java.lang.ClassNotFoundException' in e.message and [prop for prop in self.get_table_properties(database, table_name, property_name='storage_handler').rows() if 'KuduStorageHandler' in prop[0]]:
         query_server = get_query_server_config('impala')
@@ -327,7 +329,7 @@ class HiveServer2Dbms(object):
     elif comment is not None:
       hql += " SET TBLPROPERTIES ('comment' = '%s')" % comment
     elif tblproperties:
-      hql += " SET TBLPROPERTIES (%s)" % ' ,'.join("'%s' = '%s'" % (k, v) for k, v in tblproperties.items())
+      hql += " SET TBLPROPERTIES (%s)" % ' ,'.join("'%s' = '%s'" % (k, v) for k, v in list(tblproperties.items()))
 
     timeout = SERVER_CONN_TIMEOUT.get()
     query = hql_query(hql)
@@ -798,11 +800,11 @@ class HiveServer2Dbms(object):
         LOG.debug("Moved results from %s to %s" % (result_meta.table_dir, table_loc))
         request.info(request, _('Saved query results as new table %(table)s.') % {'table': target_table})
         query_history.save_state(QueryHistory.STATE.expired)
-      except Exception, ex:
+      except Exception as ex:
         query = hql_query('DROP TABLE `%s`' % target_table)
         try:
           self.execute_and_wait(query)
-        except Exception, double_trouble:
+        except Exception as double_trouble:
           LOG.exception('Failed to drop table "%s" as well: %s' % (target_table, double_trouble))
         raise ex
       url = format_preserving_redirect(request, reverse('metastore:index'))
@@ -849,7 +851,7 @@ class HiveServer2Dbms(object):
     LOG.warning(msg)
     try:
       self.cancel_operation(handle)
-    except Exception, e:
+    except Exception as e:
       msg = "Failed to cancel query."
       LOG.warning(msg)
       self.close_operation(handle)
@@ -906,7 +908,7 @@ class HiveServer2Dbms(object):
       if not handle.is_valid():
         msg = _("Server returning invalid handle for query id %(id)d [%(query)s]...") % {'id': query_history.id, 'query': query[:40]}
         raise QueryServerException(msg)
-    except QueryServerException, ex:
+    except QueryServerException as ex:
       LOG.exception(ex)
       # Kind of expected (hql compile/syntax error, etc.)
       if hasattr(ex, 'handle') and ex.handle:
@@ -1044,7 +1046,7 @@ class HiveServer2Dbms(object):
     return self.client.get_default_configuration(include_hadoop)
 
 
-class Table:
+class Table(object):
   """
   Represents the metadata of a Hive Table.
   """
@@ -1053,7 +1055,7 @@ class Table:
     return location_to_url(self.path_location)
 
 
-class DataTable:
+class DataTable(object):
   """
   Represents the data of a Hive Table.
 
@@ -1062,7 +1064,7 @@ class DataTable:
   pass
 
 
-class SubQueryTable:
+class SubQueryTable(object):
 
   def __init__(self, db, query):
     self.query = query
@@ -1090,7 +1092,7 @@ def expand_exception(exc, db, handle=None):
       log = db.get_log(exc)
     else:
       log = ''
-  except Exception, e:
+  except Exception as e:
     # Always show something, even if server has died on the job.
     log = _("Could not retrieve logs: %s." % e)
 

+ 6 - 5
apps/beeswax/src/beeswax/server/hive_metastore_server.py

@@ -15,6 +15,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from builtins import object
 import logging
 import re
 import thrift
@@ -100,7 +101,7 @@ class HiveDataTable(DataTable):
 
 
 
-class HiveMetastoreClient:
+class HiveMetastoreClient(object):
 
   def __init__(self, query_server, user):
     self.user = user
@@ -214,11 +215,11 @@ class HiveMetastoreClient:
         self._decode_map(sd.parameters)
 
       def _encode_map(self, mapp):
-        for key, value in mapp.iteritems():
+        for key, value in mapp.items():
           mapp[key] = smart_str(value, strings_only=True)
 
       def _decode_map(self, mapp):
-        for key, value in mapp.iteritems():
+        for key, value in mapp.items():
           mapp[key] = force_unicode(value, strings_only=True, errors='replace')
 
       def create_database(self, name, description):
@@ -289,7 +290,7 @@ class HiveMetastoreClient:
     return UnicodeMetastoreClient(client)
 
 
-class EmptyResultCompatible:
+class EmptyResultCompatible(object):
   def __init__(self):
     self.data_table = type('Col', (object,), {'cols': self.cols})
     self.rows = lambda: []
@@ -307,7 +308,7 @@ class EmptyResultCompatible:
     return []
 
 
-class MockFinishedOperation():
+class MockFinishedOperation(object):
   def __init__(self):
     self.operationState = TOperationState.FINISHED_STATE
 

+ 40 - 35
apps/beeswax/src/beeswax/server/hive_server2_lib.py

@@ -15,12 +15,17 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from builtins import next
+from builtins import filter
+from builtins import map
+from builtins import str
+from builtins import object
 import logging
 import itertools
 import json
 import re
 
-from itertools import imap, izip
+
 from operator import itemgetter
 
 from django.utils.translation import ugettext as _
@@ -110,7 +115,7 @@ class HiveServerTable(Table):
     rows = self.describe
     col_row_index = 1
     try:
-      cols = map(itemgetter('col_name'), rows[col_row_index:])
+      cols = list(map(itemgetter('col_name'), rows[col_row_index:]))
       if cols.index('') == 0: # TEZ starts at 1 vs Hive, Impala starts at 2
         col_row_index = col_row_index + 1
         cols.pop(0)
@@ -125,8 +130,8 @@ class HiveServerTable(Table):
   def _get_partition_column(self):
     rows = self.describe
     try:
-      col_row_index = map(itemgetter('col_name'), rows).index('# Partition Information') + 3
-      end_cols_index = map(itemgetter('col_name'), rows[col_row_index:]).index('')
+      col_row_index = list(map(itemgetter('col_name'), rows)).index('# Partition Information') + 3
+      end_cols_index = list(map(itemgetter('col_name'), rows[col_row_index:])).index('')
       return rows[col_row_index:][:end_cols_index]
     except:
       # Impala does not have it
@@ -141,7 +146,7 @@ class HiveServerTable(Table):
     rows = self.describe
     col_row_index = 2
     try:
-      end_cols_index = map(itemgetter('col_name'), rows[col_row_index:]).index('')
+      end_cols_index = list(map(itemgetter('col_name'), rows[col_row_index:])).index('')
     except ValueError as e:
       end_cols_index = 5000
       LOG.warn('Could not guess end column index, so defaulting to %s: %s' (end_cols_index, e))
@@ -156,8 +161,8 @@ class HiveServerTable(Table):
   def stats(self):
     try:
       rows = self.properties
-      col_row_index = map(itemgetter('col_name'), rows).index('Table Parameters:') + 1
-      end_cols_index = map(itemgetter('data_type'), rows[col_row_index:]).index(None)
+      col_row_index = list(map(itemgetter('col_name'), rows)).index('Table Parameters:') + 1
+      end_cols_index = list(map(itemgetter('data_type'), rows[col_row_index:])).index(None)
       return rows[col_row_index:][:end_cols_index]
     except:
       LOG.exception('Table stats could not be retrieved')
@@ -166,7 +171,7 @@ class HiveServerTable(Table):
   @property
   def storage_details(self):
     rows = self.properties
-    col_row_index = map(itemgetter('col_name'), rows).index('Storage Desc Params:') + 1
+    col_row_index = list(map(itemgetter('col_name'), rows)).index('Storage Desc Params:') + 1
     return rows[col_row_index:][:col_row_index + 2]
 
   @property
@@ -205,7 +210,7 @@ class HiveServerTable(Table):
     return self._details
 
 
-class HiveServerTRowSet2:
+class HiveServerTRowSet2(object):
   def __init__(self, row_set, schema):
     self.row_set = row_set
     self.rows = row_set.rows
@@ -221,22 +226,22 @@ class HiveServerTRowSet2:
     rs = HiveServerTRow2(self.row_set.columns, self.schema)
     cols = [rs.full_col(name) for name in col_names]
 
-    for cols_row in itertools.izip(*cols):
-      cols_rows.append(dict(itertools.izip(col_names, cols_row)))
+    for cols_row in zip(*cols):
+      cols_rows.append(dict(zip(col_names, cols_row)))
 
     return cols_rows
 
   def __iter__(self):
     return self
 
-  def next(self):
+  def __next__(self):
     if self.row_set.columns:
       return HiveServerTRow2(self.row_set.columns, self.schema)
     else:
       raise StopIteration
 
 
-class HiveServerTRow2:
+class HiveServerTRow2(object):
   def __init__(self, cols, schema):
     self.cols = cols
     self.schema = schema
@@ -250,7 +255,7 @@ class HiveServerTRow2:
     return HiveServerTColumnValue2(self.cols[pos]).val # Return the full column and its values
 
   def _get_col_position(self, column_name):
-    return filter(lambda (i, col): col.columnName == column_name, enumerate(self.schema.columns))[0][0]
+    return filter(lambda i_col1: i_col1[1].columnName == column_name, enumerate(self.schema.columns))[0][0]
 
   def fields(self):
     try:
@@ -259,7 +264,7 @@ class HiveServerTRow2:
       raise StopIteration
 
 
-class HiveServerTColumnValue2:
+class HiveServerTColumnValue2(object):
   def __init__(self, tcolumn_value):
     self.column_value = tcolumn_value
 
@@ -309,7 +314,7 @@ class HiveServerTColumnValue2:
     if bytestring == '' or re.match('^(\x00)+$', bytestring): # HS2 has just \x00 or '', Impala can have \x00\x00...
       return values
     else:
-      _values = [None if is_null else value for value, is_null in itertools.izip(values, cls.mark_nulls(values, bytestring))]
+      _values = [None if is_null else value for value, is_null in zip(values, cls.mark_nulls(values, bytestring))]
       if len(values) != len(_values): # HS2 can have just \x00\x01 instead of \x00\x01\x00...
         _values.extend(values[len(_values):])
       return _values
@@ -342,7 +347,7 @@ class HiveServerDataTable(DataTable):
 
 
 
-class HiveServerTTableSchema:
+class HiveServerTTableSchema(object):
   def __init__(self, columns, schema):
     self.columns = columns
     self.schema = schema
@@ -363,7 +368,7 @@ class HiveServerTTableSchema:
     return HiveServerTColumnDesc(self.columns[pos]).val
 
   def _get_col_position(self, column_name):
-    return filter(lambda (i, col): col.columnName == column_name, enumerate(self.schema.columns))[0][0]
+    return filter(lambda i_col2: i_col2[1].columnName == column_name, enumerate(self.schema.columns))[0][0]
 
 
 if hasattr(beeswax_conf.THRIFT_VERSION, 'get') and beeswax_conf.THRIFT_VERSION.get() >= 7:
@@ -371,7 +376,7 @@ if hasattr(beeswax_conf.THRIFT_VERSION, 'get') and beeswax_conf.THRIFT_VERSION.g
   HiveServerTRowSet = HiveServerTRowSet2
 else:
   # Deprecated. To remove in Hue 4.
-  class HiveServerTRow:
+  class HiveServerTRow(object):
     def __init__(self, row, schema):
       self.row = row
       self.schema = schema
@@ -381,12 +386,12 @@ else:
       return HiveServerTColumnValue(self.row.colVals[pos]).val
 
     def _get_col_position(self, column_name):
-      return filter(lambda (i, col): col.columnName == column_name, enumerate(self.schema.columns))[0][0]
+      return filter(lambda i_col: i_col[1].columnName == column_name, enumerate(self.schema.columns))[0][0]
 
     def fields(self):
       return [HiveServerTColumnValue(field).val for field in self.row.colVals]
 
-  class HiveServerTRowSet:
+  class HiveServerTRowSet(object):
     def __init__(self, row_set, schema):
       self.row_set = row_set
       self.rows = row_set.rows
@@ -409,14 +414,14 @@ else:
     def __iter__(self):
       return self
 
-    def next(self):
+    def __next__(self):
       if self.rows:
         return HiveServerTRow(self.rows.pop(0), self.schema)
       else:
         raise StopIteration
 
 
-class HiveServerTColumnValue:
+class HiveServerTColumnValue(object):
   def __init__(self, tcolumn_value):
     self.column_value = tcolumn_value
 
@@ -438,7 +443,7 @@ class HiveServerTColumnValue:
       return self.column_value.stringVal.value
 
 
-class HiveServerTColumnDesc:
+class HiveServerTColumnDesc(object):
   def __init__(self, column):
     self.column = column
 
@@ -471,7 +476,7 @@ class HiveServerTColumnDesc:
         return ttype.userDefinedTypeEntry
 
 
-class HiveServerClient:
+class HiveServerClient(object):
   HS2_MECHANISMS = {
       'KERBEROS': 'GSSAPI',
       'NONE': 'PLAIN',
@@ -578,7 +583,7 @@ class HiveServerClient:
     else:
       hive_mechanism = hive_site.get_hiveserver2_authentication()
       if hive_mechanism not in HiveServerClient.HS2_MECHANISMS:
-        raise Exception(_('%s server authentication not supported. Valid are %s.') % (hive_mechanism, HiveServerClient.HS2_MECHANISMS.keys()))
+        raise Exception(_('%s server authentication not supported. Valid are %s.') % (hive_mechanism, list(HiveServerClient.HS2_MECHANISMS.keys())))
       use_sasl = hive_mechanism in ('KERBEROS', 'NONE', 'LDAP', 'PAM')
       mechanism = HiveServerClient.HS2_MECHANISMS[hive_mechanism]
       impersonation_enabled = hive_site.hiveserver2_impersonation_enabled()
@@ -834,7 +839,7 @@ class HiveServerClient:
     try:
       (desc_results, desc_schema), operation_handle = self.execute_statement(query, max_rows=10000, orientation=TFetchOrientation.FETCH_NEXT)
       self.close_operation(operation_handle)
-    except Exception, e:
+    except Exception as e:
       ex_string = str(e)
       if 'cannot find field' in ex_string: # Workaround until Hive 2.0 and HUE-3751
         (desc_results, desc_schema), operation_handle = self.execute_statement('USE `%s`' % database)
@@ -986,7 +991,7 @@ class HiveServerClient:
     if beeswax_conf.THRIFT_VERSION.get() >= 7:
       lines = res.results.columns[0].stringVal.values
     else:
-      lines = imap(lambda r: r.colVals[0].stringVal.value, res.results.rows)
+      lines = list(map(lambda r: r.colVals[0].stringVal.value, res.results.rows))
 
     return '\n'.join(lines)
 
@@ -1006,7 +1011,7 @@ class HiveServerClient:
       req = TGetLogReq(operationHandle=operation_handle)
       res = self.call(self._client.GetLog, req)
       return res.log
-    except Exception, e:
+    except Exception as e:
       if 'Invalid query handle' in str(e):
         message = 'Invalid query handle'
         LOG.error('%s: %s' % (message, e))
@@ -1046,7 +1051,7 @@ class HiveServerClient:
 
         # Format partition key and values into Hive format: [key1=val1/key2=value2]
         for values in partition_values:
-          zipped_parts = izip(partition_keys, values)
+          zipped_parts = zip(partition_keys, values)
           partitions_formatted.append(['/'.join(['%s=%s' % (str(part[0]), str(part[1])) for part in zipped_parts if all(part)])])
 
         partitions = [PartitionValueCompatible(partition, table) for partition in partitions_formatted]
@@ -1113,7 +1118,7 @@ class HiveServerTableCompatible(HiveServerTable):
   ]
 
 
-class ResultCompatible:
+class ResultCompatible(object):
 
   def __init__(self, data_table):
     self.data_table = data_table
@@ -1133,7 +1138,7 @@ class ResultCompatible:
     return [{'name': col.name, 'type': col.type, 'comment': col.comment} for col in self.data_table.cols()]
 
 
-class PartitionKeyCompatible:
+class PartitionKeyCompatible(object):
 
   def __init__(self, name, type, comment):
     self.name = name
@@ -1150,7 +1155,7 @@ class PartitionKeyCompatible:
     return 'PartitionKey(name:%s, type:%s, comment:%s)' % (self.name, self.type, self.comment)
 
 
-class PartitionValueCompatible:
+class PartitionValueCompatible(object):
 
   def __init__(self, partition_row, table, properties=None):
     self.partition_keys = table.partition_keys
@@ -1176,13 +1181,13 @@ class PartitionValueCompatible:
     return partition_spec
 
 
-class ExplainCompatible:
+class ExplainCompatible(object):
 
   def __init__(self, data_table):
     self.textual = '\n'.join([line[0] for line in data_table.rows()])
 
 
-class ResultMetaCompatible:
+class ResultMetaCompatible(object):
 
   def __init__(self):
     self.in_tablename = True

+ 10 - 6
apps/beeswax/src/beeswax/test_base.py

@@ -17,6 +17,10 @@
 # limitations under the License.
 #
 
+from builtins import str
+from builtins import chr
+from builtins import range
+from builtins import object
 import atexit
 import json
 import logging
@@ -129,13 +133,13 @@ def get_shared_beeswax_server(db_name='default'):
       while not started and time.time() - start <= 60:
         try:
           db.open_session(user)
-        except StructuredThriftTransportException, e:
+        except StructuredThriftTransportException as e:
           LOG.exception('Failed to open Hive Server session')
 
           # Don't loop if we had an authentication error.
           if 'Bad status: 3' in e.message:
             raise
-        except Exception, e:
+        except Exception as e:
           LOG.exception('Failed to open Hive Server session')
         else:
           started = True
@@ -192,7 +196,7 @@ def _start_mini_hs2(cluster):
   if _SHARED_HIVE_SERVER_PROCESS is None:
     p = _start_server(cluster)
     LOG.info("started")
-    cluster.fs.do_as_superuser(cluster.fs.chmod, '/tmp', 01777)
+    cluster.fs.do_as_superuser(cluster.fs.chmod, '/tmp', 0o1777)
 
     _SHARED_HIVE_SERVER_PROCESS = p
     def kill():
@@ -514,7 +518,7 @@ class BeeswaxSampleProvider(object):
     """
     cls.cluster.fs.setuser(cls.cluster.superuser)
     f = cls.cluster.fs.open(filename, "w")
-    for x in xrange(256):
+    for x in range(256):
       f.write("%d\t0x%x\n" % (x, x))
     f.close()
 
@@ -528,8 +532,8 @@ class BeeswaxSampleProvider(object):
     """
     cls.cluster.fs.setuser(cls.cluster.superuser)
     f = cls.cluster.fs.open(filename, "w")
-    for x in xrange(256):
-      f.write("%d\t%s\n" % (x, unichr(x).encode(encoding)))
+    for x in range(256):
+      f.write("%d\t%s\n" % (x, chr(x).encode(encoding)))
     f.close()
 
   @classmethod

+ 40 - 28
apps/beeswax/src/beeswax/tests.py

@@ -16,7 +16,14 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import cStringIO
+from future import standard_library
+standard_library.install_aliases()
+from builtins import next
+from builtins import map
+from builtins import str
+from builtins import chr
+from builtins import range
+from builtins import object
 import gzip
 import json
 import logging
@@ -26,6 +33,7 @@ import re
 import shutil
 import socket
 import string
+import sys
 import tempfile
 import threading
 
@@ -85,6 +93,10 @@ from beeswax.server.hive_server2_lib import HiveServerClient,\
 from beeswax.test_base import BeeswaxSampleProvider, is_hive_on_spark, get_available_execution_engines
 from beeswax.hive_site import get_metastore, hiveserver2_jdbc_url
 
+if sys.version_info[0] > 2:
+  from io import StringIO as string_io
+else:
+  from cStringIO import StringIO as string_io
 
 LOG = logging.getLogger(__name__)
 
@@ -444,25 +456,25 @@ for x in sys.stdin:
     query = hql_query(hql)
     try:
       self.db.execute_and_wait(query)
-    except QueryServerException, bex:
+    except QueryServerException as bex:
       assert_equal(bex.errorCode, 40000)
       assert_equal(bex.SQLState, "42000")
 
 
   def test_fetch_configuration(self):
-    class MockClient:
+    class MockClient(object):
       """Check if sent fetch correctly supports start_over."""
       def __init__(self, support_start_over):
         self.support_start_over = support_start_over
 
       def fetch(self, query_id, start_over, fetch_size):
         assert_equal(self.support_start_over, start_over)
-        class Result: pass
+        class Result(object): pass
         res = Result()
         res.ready = False
         return res
 
-    class ConfigVariable:
+    class ConfigVariable(object):
       def __init__(self, **entries):
         self.__dict__.update(entries)
 
@@ -557,7 +569,7 @@ for x in sys.stdin:
     if is_live_cluster():
       raise SkipTest('HUE-2884: Skipping test because we cannot guarantee live cluster supports utf8')
 
-    query = u"SELECT foo FROM `%(db)s`.`test_utf8` WHERE bar='%(val)s'" % {'val': unichr(200), 'db': self.db_name}
+    query = u"SELECT foo FROM `%(db)s`.`test_utf8` WHERE bar='%(val)s'" % {'val': chr(200), 'db': self.db_name}
     response = _make_query(self.client, query, settings=[('hive.explain.user', 'false')], submission_type="Explain")
     explanation = json.loads(response.content)['explanation']
     assert_true('STAGE DEPENDENCIES:' in explanation, explanation)
@@ -570,15 +582,15 @@ for x in sys.stdin:
     raise SkipTest
 
     # Selecting from utf-8 table should get correct result
-    query = u"SELECT * FROM `%(db)s`.`test_utf8` WHERE bar='%(val)s'" % {'val': unichr(200), 'db': self.db_name}
+    query = u"SELECT * FROM `%(db)s`.`test_utf8` WHERE bar='%(val)s'" % {'val': chr(200), 'db': self.db_name}
     response = _make_query(self.client, query, wait=True, database=self.db_name)
-    assert_equal(["200", unichr(200)], response.context[0]["results"][0], "selecting from utf-8 table should get correct result")
+    assert_equal(["200", chr(200)], response.context[0]["results"][0], "selecting from utf-8 table should get correct result")
 
     csv = get_csv(self.client, response)
-    assert_equal('"200","%s"' % (unichr(200).encode('utf-8'),), csv.split()[1])
+    assert_equal('"200","%s"' % (chr(200).encode('utf-8'),), csv.split()[1])
 
     # Selecting from latin1 table should not blow up
-    query = u"SELECT * FROM `%(db)s`.`test_latin1` WHERE bar='%(val)s'" % {'val': unichr(200), 'db': self.db_name}
+    query = u"SELECT * FROM `%(db)s`.`test_latin1` WHERE bar='%(val)s'" % {'val': chr(200), 'db': self.db_name}
     response = _make_query(self.client, query, wait=True, database=self.db_name)
     assert_true('results' in response.context, "selecting from latin1 table should not blow up")
 
@@ -598,7 +610,7 @@ for x in sys.stdin:
       result_holder[i] = response
       lock.release()
       LOG.info("Finished: " + str(i))
-    except Exception, e:
+    except Exception as e:
       LOG.exception("Saw exception in child thread: %s" % e)
 
 
@@ -953,7 +965,7 @@ for x in sys.stdin:
     assert_equal(resp.status_code, 302)
 
     # Delete designs
-    design_ids = map(str, designs.values_list('id', flat=True))
+    design_ids = list(map(str, designs.values_list('id', flat=True)))
     resp = cli.get('/beeswax/delete_designs', {u'designs_selection': design_ids})
     assert_true('Delete design(s)' in resp.content, resp.content)
     #@TODO@: Prakash fix this test
@@ -1212,7 +1224,7 @@ for x in sys.stdin:
       # Check that data is right. The SELECT may not give us the whole table.
       resp = _make_query(self.client, 'SELECT * FROM %s' % target_tbl, wait=True, local=False, database=self.db_name)
       content = fetch_query_result_data(self.client, resp)
-      for i in xrange(90):
+      for i in range(90):
         assert_equal([i, '0x%x' % (i,)], content['results'][i])
 
     TARGET_TBL_ROOT = 'test_copy'
@@ -1444,7 +1456,7 @@ for x in sys.stdin:
       lines = [ delim.join(row) for row in raw_fields ]
       data = '\n'.join(lines)
       if do_gzip:
-        sio = cStringIO.StringIO()
+        sio = string_io()
         gzdat = gzip.GzipFile(fileobj=sio, mode='wb')
         gzdat.write(data)
         gzdat.close()
@@ -1569,7 +1581,7 @@ for x in sys.stdin:
     content = json.loads(resp.content)
     watch_url = content['query_history']['watch_url']
 
-    class MockResponse():
+    class MockResponse(object):
       def __init__(self, content):
         self.content = json.dumps(content)
 
@@ -2036,7 +2048,7 @@ for x in sys.stdin:
       resp = self.client.get(reverse("beeswax:get_settings"))
       json_resp = json.loads(resp.content)
       assert_equal(0, json_resp['status'])
-      assert_equal(2, len(json_resp['settings'].items()), json_resp)
+      assert_equal(2, len(list(json_resp['settings'].items())), json_resp)
       assert_true('hive.execution.engine' in json_resp['settings'])
       assert_true('mapreduce.job.queuename' in json_resp['settings'])
     finally:
@@ -2093,7 +2105,7 @@ def test_import_gzip_reader():
   """Test the gzip reader in create table"""
   # Make gzipped data
   data = file(__file__).read()
-  data_gz_sio = cStringIO.StringIO()
+  data_gz_sio = string_io()
   gz = gzip.GzipFile(fileobj=data_gz_sio, mode='wb')
   gz.write(data)
   gz.close()
@@ -2494,7 +2506,7 @@ class MockHiveServerTableForPartitions(HiveServerTable):
 
 
 
-class TestHiveServer2API():
+class TestHiveServer2API(object):
 
   def test_parsing_partition_values(self):
     table = MockHiveServerTable()
@@ -2661,7 +2673,7 @@ class TestHiveServer2API():
     assert_false(data is HiveServerTColumnValue2.set_nulls(data, nulls))
 
 
-class MockDbms:
+class MockDbms(object):
 
   def __init__(self, client, server_type):
     pass
@@ -2891,7 +2903,7 @@ class TestWithMockedServer(object):
   def test_search_designs(self):
     # Create 20 (DEFAULT_PAGE_SIZE) queries to fill page 1, plus a target query for page 2
     page_1 = []
-    for i in xrange(1, 21):
+    for i in range(1, 21):
       response = _make_query(self.client, 'SELECT', submission_type='Save', name='My Name %d' % i, desc='My Description')
       content = json.loads(response.content)
       query_id = content['design_id']
@@ -2960,7 +2972,7 @@ class TestWithMockedServer(object):
     assert_false(design_id in design_ids, json_resp)
 
 
-class TestDesign():
+class TestDesign(object):
 
   def test_hql_resource(self):
     design = hql_query('SELECT')
@@ -3040,7 +3052,7 @@ def test_hiveserver2_get_security():
       hive_site._HIVE_SITE_DICT.pop(hive_site._CNF_HIVESERVER2_AUTHENTICATION, None)
 
 
-class MockClient():
+class MockClient(object):
 
   def __init__(self):
     self.open_session_args = None
@@ -3470,9 +3482,9 @@ def test_sasl_auth_in_large_download():
   table_info = {'db': 'default', 'table_name': 'dummy_'+random_generator().lower()}
   drop_sql = "DROP TABLE IF EXISTS %(db)s.%(table_name)s" % table_info
   create_sql = "CREATE TABLE IF NOT EXISTS %(db)s.%(table_name)s (w0 CHAR(8),w1 CHAR(8),w2 CHAR(8),w3 CHAR(8),w4 CHAR(8),w5 CHAR(8),w6 CHAR(8),w7 CHAR(8),w8 CHAR(8),w9 CHAR(8))" % table_info
-  hql = cStringIO.StringIO()
+  hql = string_io()
   hql.write("INSERT INTO %(db)s.%(table_name)s VALUES " % (table_info))
-  for i in xrange(max_rows-1):
+  for i in range(max_rows-1):
     w = random_generator(size=7)
     hql.write("('%s0','%s1','%s2','%s3','%s4','%s5','%s6','%s7','%s8','%s9')," % (w,w,w,w,w,w,w,w,w,w))
   w = random_generator(size=7)
@@ -3488,7 +3500,7 @@ def test_sasl_auth_in_large_download():
     query = hql_query(hql.getvalue())
     handle = db.execute_and_wait(query, timeout_sec=300)
     hql.close()
-  except Exception, ex:
+  except Exception as ex:
     failed = True
 
   # Big table creation (data upload) is successful
@@ -3504,7 +3516,7 @@ def test_sasl_auth_in_large_download():
     query = hql_query(hql)
     handle = db.execute_and_wait(query)
     results = db.fetch(handle, True, max_rows-20)
-  except QueryServerException, ex:
+  except QueryServerException as ex:
     if 'Invalid OperationHandle' in ex.message and 'EXECUTE_STATEMENT' in ex.message:
       failed = True
   except:
@@ -3518,7 +3530,7 @@ def test_sasl_auth_in_large_download():
     query = hql_query(hql)
     handle = db.execute_and_wait(query)
     results = db.fetch(handle, True, max_rows)
-  except QueryServerException, ex:
+  except QueryServerException as ex:
     if 'Invalid OperationHandle' in ex.message and 'EXECUTE_STATEMENT' in ex.message:
       failed = True
   except:
@@ -3536,7 +3548,7 @@ def test_sasl_auth_in_large_download():
   try:
     query = hql_query(hql)
     handle = db.execute_and_wait(query)
-  except QueryServerException, ex:
+  except QueryServerException as ex:
     if 'Invalid OperationHandle' in ex.message and 'EXECUTE_STATEMENT' in ex.message:
       failed = True
   except:

+ 21 - 19
apps/beeswax/src/beeswax/views.py

@@ -15,6 +15,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from builtins import next
+from builtins import str
 import json
 import logging
 import re
@@ -155,11 +157,11 @@ def delete_design(request):
     ids = request.POST.getlist('designs_selection')
     designs = dict([(design_id, authorized_get_design(request, design_id, owner_only=True)) for design_id in ids])
 
-    if None in designs.values():
-      LOG.error('Cannot delete non-existent design(s) %s' % ','.join([key for key, name in designs.items() if name is None]))
+    if None in list(designs.values()):
+      LOG.error('Cannot delete non-existent design(s) %s' % ','.join([key for key, name in list(designs.items()) if name is None]))
       return list_designs(request)
 
-    for design in designs.values():
+    for design in list(designs.values()):
       if request.POST.get('skipTrash', 'false') == 'false':
         design.doc.get().send_to_trash()
       else:
@@ -175,11 +177,11 @@ def restore_design(request):
     ids = request.POST.getlist('designs_selection')
     designs = dict([(design_id, authorized_get_design(request, design_id)) for design_id in ids])
 
-    if None in designs.values():
-      LOG.error('Cannot restore non-existent design(s) %s' % ','.join([key for key, name in designs.items() if name is None]))
+    if None in list(designs.values()):
+      LOG.error('Cannot restore non-existent design(s) %s' % ','.join([key for key, name in list(designs.items()) if name is None]))
       return list_designs(request)
 
-    for design in designs.values():
+    for design in list(designs.values()):
       design.doc.get().restore_from_trash()
     return redirect(reverse(get_app_name(request) + ':list_designs'))
   else:
@@ -396,7 +398,7 @@ def download(request, id, format, user_agent=None):
     LOG.debug('Download results for query %s: [ %s ]' % (query_history.server_id, query_history.query))
 
     return data_export.download(query_history.get_handle(), format, db, user_agent=user_agent)
-  except Exception, e:
+  except Exception as e:
     if not hasattr(e, 'message') or not e.message:
       message = e
     else:
@@ -428,7 +430,7 @@ def execute_query(request, design_id=None, query_history_id=None):
           action = 'watch-results'
       else:
         action = 'editor-results'
-    except QueryServerException, e:
+    except QueryServerException as e:
       if 'Invalid query handle' in e.message or 'Invalid OperationHandle' in e.message:
         query_history.save_state(QueryHistory.STATE.expired)
         LOG.warn("Invalid query handle", exc_info=sys.exc_info())
@@ -478,7 +480,7 @@ def view_results(request, id, first_row=0):
 
   It understands the ``context`` GET parameter. (See execute_query().)
   """
-  first_row = long(first_row)
+  first_row = int(first_row)
   start_over = (first_row == 0)
   results = type('Result', (object,), {
                 'rows': 0,
@@ -519,7 +521,7 @@ def view_results(request, id, first_row=0):
       log = db.get_log(handle)
       columns = results.data_table.cols()
 
-  except Exception, ex:
+  except Exception as ex:
     LOG.exception('error fetching results')
 
     fetch_error = True
@@ -590,7 +592,7 @@ def configuration(request):
   if session:
     properties = json.loads(session.properties)
     # Redact passwords
-    for key, value in properties.items():
+    for key, value in list(properties.items()):
       if 'password' in key.lower():
         properties[key] = '*' * len(value)
   else:
@@ -612,7 +614,7 @@ def install_examples(request):
       db_name = request.POST.get('db_name', 'default')
       beeswax.management.commands.beeswax_install_examples.Command().handle(app_name=app_name, db_name=db_name, user=request.user)
       response['status'] = 0
-    except Exception, err:
+    except Exception as err:
       LOG.exception(err)
       response['message'] = str(err)
   else:
@@ -657,7 +659,7 @@ def query_done_cb(request, server_id):
 
     user.email_user(subject, body)
     message['message'] = 'sent'
-  except Exception, ex:
+  except Exception as ex:
     msg = "Failed to send query completion notification via e-mail: %s" % (ex)
     LOG.error(msg)
     message['message'] = msg
@@ -843,7 +845,7 @@ def _list_designs(user, querydict, page_size, prefix="", is_trashed=False):
 
   # Design type
   d_type = querydict.get(prefix + 'type')
-  if d_type and d_type in SavedQuery.TYPES_MAPPING.keys():
+  if d_type and d_type in list(SavedQuery.TYPES_MAPPING.keys()):
     db_queryset = db_queryset.filter(extra=str(SavedQuery.TYPES_MAPPING[d_type]))
 
   # Text search
@@ -859,7 +861,7 @@ def _list_designs(user, querydict, page_size, prefix="", is_trashed=False):
     else:
       sort_dir, sort_attr = '', sort_key
 
-    if not SORT_ATTR_TRANSLATION.has_key(sort_attr):
+    if sort_attr not in SORT_ATTR_TRANSLATION:
       LOG.warn('Bad parameter to list_designs: sort=%s' % (sort_key,))
       sort_dir, sort_attr = DEFAULT_SORT
   else:
@@ -955,7 +957,7 @@ def parse_out_jobs(log, engine='mr', with_state=False):
 def _copy_prefix(prefix, base_dict):
   """Copy keys starting with ``prefix``"""
   querydict = QueryDict(None, mutable=True)
-  for key, val in base_dict.iteritems():
+  for key, val in base_dict.items():
     if key.startswith(prefix):
       querydict[key] = val
   return querydict
@@ -1007,7 +1009,7 @@ def _list_query_history(user, querydict, page_size, prefix=""):
   # Design type
   d_type = querydict.get(prefix + 'type')
   if d_type:
-    if d_type not in SavedQuery.TYPES_MAPPING.keys():
+    if d_type not in list(SavedQuery.TYPES_MAPPING.keys()):
       LOG.warn('Bad parameter to list_query_history: type=%s' % (d_type,))
     else:
       db_queryset = db_queryset.filter(design__type=SavedQuery.TYPES_MAPPING[d_type])
@@ -1024,7 +1026,7 @@ def _list_query_history(user, querydict, page_size, prefix=""):
     if sort_key[0] == '-':
       sort_dir, sort_attr = '-', sort_key[1:]
 
-    if not SORT_ATTR_TRANSLATION.has_key(sort_attr):
+    if sort_attr not in SORT_ATTR_TRANSLATION:
       LOG.warn('Bad parameter to list_query_history: sort=%s' % (sort_key,))
       sort_dir, sort_attr = DEFAULT_SORT
   else:
@@ -1074,7 +1076,7 @@ def _update_query_state(query_history):
       if state_enum is None:
         # Error was logged at the source
         return False
-    except Exception, e:
+    except Exception as e:
       LOG.error(e)
       state_enum = models.QueryHistory.STATE.failed
     query_history.save_state(state_enum)

Неке датотеке нису приказане због велике количине промена