Completed
Branch master (477316)
by Michael
08:56
created

thrift.protocol.TBase   A

Complexity

Total Complexity 15

Size/Duplication

Total Lines 82
Duplicated Lines 48.78 %

Importance

Changes 0
Metric Value
wmc 15
eloc 50
dl 40
loc 82
rs 10
c 0
b 0
f 0

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
#
2
# Licensed to the Apache Software Foundation (ASF) under one
3
# or more contributor license agreements. See the NOTICE file
4
# distributed with this work for additional information
5
# regarding copyright ownership. The ASF licenses this file
6
# to you under the Apache License, Version 2.0 (the
7
# "License"); you may not use this file except in compliance
8
# with the License. You may obtain a copy of the License at
9
#
10
#   http://www.apache.org/licenses/LICENSE-2.0
11
#
12
# Unless required by applicable law or agreed to in writing,
13
# software distributed under the License is distributed on an
14
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
# KIND, either express or implied. See the License for the
16
# specific language governing permissions and limitations
17
# under the License.
18
#
19
20
from thrift.Thrift import *
21
from thrift.protocol import TBinaryProtocol
22
from thrift.transport import TTransport
23
24
try:
25
  from thrift.protocol import fastbinary
26
except:
27
  fastbinary = None
28
29
30
class TBase(object):
31
  __slots__ = []
32
33
  def __repr__(self):
34
    L = ['%s=%r' % (key, getattr(self, key))
35
              for key in self.__slots__]
36
    return '%s(%s)' % (self.__class__.__name__, ', '.join(L))
37
38
  def __eq__(self, other):
39
    if not isinstance(other, self.__class__):
40
      return False
41
    for attr in self.__slots__:
42
      my_val = getattr(self, attr)
43
      other_val = getattr(other, attr)
44
      if my_val != other_val:
45
        return False
46
    return True
47
48
  def __ne__(self, other):
49
    return not (self == other)
50
51
  def read(self, iprot):
52
    if (iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and
53
        isinstance(iprot.trans, TTransport.CReadableTransport) and
54
        self.thrift_spec is not None and
55
        fastbinary is not None):
56
      fastbinary.decode_binary(self,
57
                               iprot.trans,
58
                               (self.__class__, self.thrift_spec))
59
      return
60
    iprot.readStruct(self, self.thrift_spec)
61
62
  def write(self, oprot):
63
    if (oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and
64
        self.thrift_spec is not None and
65
        fastbinary is not None):
66
      oprot.trans.write(
67
        fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
68
      return
69
    oprot.writeStruct(self, self.thrift_spec)
70
71
72
class TExceptionBase(Exception):
73
  # old style class so python2.4 can raise exceptions derived from this
74
  #  This can't inherit from TBase because of that limitation.
75
  __slots__ = []
76
77
  __repr__ = TBase.__repr__.__func__
78
  __eq__ = TBase.__eq__.__func__
79
  __ne__ = TBase.__ne__.__func__
80
  read = TBase.read.__func__
81
  write = TBase.write.__func__
82