1313except ImportError :
1414 pass
1515
16+ from .message_types import message_types
17+
1618StringFormat = b'\x00 \x00 '
1719BinaryFormat = b'\x00 \x01 '
1820
@@ -115,8 +117,7 @@ def dict_message_repr(self):
115117
116118class WireMessage (Message ):
117119 def __init__ (self , typ_data ):
118- type = bytes (type )[0 ]
119- self .type = typ_data [0 ]
120+ self .type = message_types [typ_data [0 ][0 ]]
120121 self .data = typ_data [1 ]
121122
122123 def serialize (self ):
@@ -131,7 +132,7 @@ def parse(typ, data):
131132 len (data ), ulong .unpack (data [1 :5 ])[0 ] + 1
132133 )
133134 )
134- return typ ((data [0 ], data [5 :]))
135+ return typ ((data [0 : 1 ], data [5 :]))
135136
136137class EmptyMessage (Message ):
137138 'An abstract message that is always empty'
@@ -152,7 +153,7 @@ def parse(typ, data):
152153
153154class Notify (Message ):
154155 'Asynchronous notification message'
155- type = b'A'
156+ type = message_types [ b'A' [ 0 ]]
156157 __slots__ = ('pid' , 'relation' , 'parameter' )
157158
158159 def __init__ (self , pid , relation , parameter = b'' ):
@@ -174,7 +175,7 @@ def parse(typ, data):
174175class ShowOption (Message ):
175176 """ShowOption(name, value)
176177 GUC variable information from backend"""
177- type = b'S'
178+ type = message_types [ b'S' [ 0 ]]
178179 __slots__ = ('name' , 'value' )
179180
180181 def __init__ (self , name , value ):
@@ -190,7 +191,7 @@ def parse(typ, data):
190191
191192class Complete (StringMessage ):
192193 'Command completion message.'
193- type = b'C'
194+ type = message_types [ b'C' [ 0 ]]
194195 __slots__ = ()
195196
196197 @classmethod
@@ -216,49 +217,49 @@ def extract_command(self):
216217
217218class Null (EmptyMessage ):
218219 'Null command'
219- type = b'I'
220+ type = message_types [ b'I' [ 0 ]]
220221 __slots__ = ()
221222NullMessage = Message .__new__ (Null )
222223Null .SingleInstance = NullMessage
223224
224225class NoData (EmptyMessage ):
225226 'Null command'
226- type = b'n'
227+ type = message_types [ b'n' [ 0 ]]
227228 __slots__ = ()
228229NoDataMessage = Message .__new__ (NoData )
229230NoData .SingleInstance = NoDataMessage
230231
231232class ParseComplete (EmptyMessage ):
232233 'Parse reaction'
233- type = b'1'
234+ type = message_types [ b'1' [ 0 ]]
234235 __slots__ = ()
235236ParseCompleteMessage = Message .__new__ (ParseComplete )
236237ParseComplete .SingleInstance = ParseCompleteMessage
237238
238239class BindComplete (EmptyMessage ):
239240 'Bind reaction'
240- type = b'2'
241+ type = message_types [ b'2' [ 0 ]]
241242 __slots__ = ()
242243BindCompleteMessage = Message .__new__ (BindComplete )
243244BindComplete .SingleInstance = BindCompleteMessage
244245
245246class CloseComplete (EmptyMessage ):
246247 'Close statement or Portal'
247- type = b'3'
248+ type = message_types [ b'3' [ 0 ]]
248249 __slots__ = ()
249250CloseCompleteMessage = Message .__new__ (CloseComplete )
250251CloseComplete .SingleInstance = CloseCompleteMessage
251252
252253class Suspension (EmptyMessage ):
253254 'Portal was suspended, more tuples for reading'
254- type = b's'
255+ type = message_types [ b's' [ 0 ]]
255256 __slots__ = ()
256257SuspensionMessage = Message .__new__ (Suspension )
257258Suspension .SingleInstance = SuspensionMessage
258259
259260class Ready (Message ):
260261 'Ready for new query'
261- type = b'Z'
262+ type = message_types [ b'Z' [ 0 ]]
262263 __slots__ = ('xact_state' ,)
263264
264265 def __init__ (self , data ):
@@ -269,7 +270,7 @@ def serialize(self):
269270
270271class Notice (Message , dict ):
271272 """Notification message"""
272- type = b'N'
273+ type = message_types [ b'N' [ 0 ]]
273274 _dtm = {
274275 b'S' : 'severity' ,
275276 b'C' : 'code' ,
@@ -322,12 +323,12 @@ def parse(typ, data):
322323
323324class Error (Notice ):
324325 """Incoming error"""
325- type = b'E'
326+ type = message_types [ b'E' [ 0 ]]
326327 __slots__ = ()
327328
328329class FunctionResult (Message ):
329330 """Function result value"""
330- type = b'V'
331+ type = message_types [ b'V' [ 0 ]]
331332 __slots__ = ('result' ,)
332333
333334 def __init__ (self , datum ):
@@ -353,7 +354,7 @@ def parse(typ, data):
353354
354355class AttributeTypes (TupleMessage ):
355356 """Tuple attribute types"""
356- type = b't'
357+ type = message_types [ b't' [ 0 ]]
357358 __slots__ = ()
358359
359360 def serialize (self ):
@@ -369,7 +370,7 @@ def parse(typ, data):
369370
370371class TupleDescriptor (TupleMessage ):
371372 """Tuple description"""
372- type = b'T'
373+ type = message_types [ b'T' [ 0 ]]
373374 struct = Struct ("!LhLhlh" )
374375 __slots__ = ()
375376
@@ -401,7 +402,7 @@ def parse(typ, data):
401402
402403class Tuple (TupleMessage ):
403404 """Incoming tuple"""
404- type = b'D'
405+ type = message_types [ b'D' [ 0 ]]
405406 __slots__ = ()
406407
407408 def serialize (self ):
@@ -437,7 +438,7 @@ def parse(typ, data):
437438
438439class KillInformation (Message ):
439440 'Backend cancellation information'
440- type = b'K'
441+ type = message_types [ b'K' [ 0 ]]
441442 struct = Struct ("!LL" )
442443 __slots__ = ('pid' , 'key' )
443444
@@ -562,7 +563,7 @@ def parse(typ, data):
562563
563564class Authentication (Message ):
564565 """Authentication(request, salt)"""
565- type = b'R'
566+ type = message_types [ b'R' [ 0 ]]
566567 __slots__ = ('request' , 'salt' )
567568
568569 def __init__ (self , request , salt ):
@@ -578,38 +579,38 @@ def parse(typ, data):
578579
579580class Password (StringMessage ):
580581 'Password supplement'
581- type = b'p'
582+ type = message_types [ b'p' [ 0 ]]
582583 __slots__ = ('data' ,)
583584
584585class Disconnect (EmptyMessage ):
585586 'Close the connection'
586- type = b'X'
587+ type = message_types [ b'X' [ 0 ]]
587588 __slots__ = ()
588589DisconnectMessage = Message .__new__ (Disconnect )
589590Disconnect .SingleInstance = DisconnectMessage
590591
591592class Flush (EmptyMessage ):
592593 'Flush'
593- type = b'H'
594+ type = message_types [ b'H' [ 0 ]]
594595 __slots__ = ()
595596FlushMessage = Message .__new__ (Flush )
596597Flush .SingleInstance = FlushMessage
597598
598599class Synchronize (EmptyMessage ):
599600 'Synchronize'
600- type = b'S'
601+ type = message_types [ b'S' [ 0 ]]
601602 __slots__ = ()
602603SynchronizeMessage = Message .__new__ (Synchronize )
603604Synchronize .SingleInstance = SynchronizeMessage
604605
605606class Query (StringMessage ):
606607 """Execute the query with the given arguments"""
607- type = b'Q'
608+ type = message_types [ b'Q' [ 0 ]]
608609 __slots__ = ('data' ,)
609610
610611class Parse (Message ):
611612 """Parse a query with the specified argument types"""
612- type = b'P'
613+ type = message_types [ b'P' [ 0 ]]
613614 __slots__ = ('name' , 'statement' , 'argtypes' )
614615
615616 def __init__ (self , name , statement , argtypes ):
@@ -645,7 +646,7 @@ class Bind(Message):
645646 rformats, # Result formats; Sequence of BinaryFormat or StringFormat.
646647 )
647648 """
648- type = b'B'
649+ type = message_types [ b'B' [ 0 ]]
649650 __slots__ = ('name' , 'statement' , 'aformats' , 'arguments' , 'rformats' )
650651
651652 def __init__ (self , name , statement , aformats , arguments , rformats ):
@@ -704,7 +705,7 @@ def parse(typ, message_data):
704705
705706class Execute (Message ):
706707 """Fetch results from the specified Portal"""
707- type = b'E'
708+ type = message_types [ b'E' [ 0 ]]
708709 __slots__ = ('name' , 'max' )
709710
710711 def __init__ (self , name , max = 0 ):
@@ -721,7 +722,7 @@ def parse(typ, data):
721722
722723class Describe (StringMessage ):
723724 """Describe a Portal or Prepared Statement"""
724- type = b'D'
725+ type = message_types [ b'D' [ 0 ]]
725726 __slots__ = ('data' ,)
726727
727728 def serialize (self ):
@@ -738,16 +739,16 @@ def parse(typ, data):
738739 return super ().parse (data [1 :])
739740
740741class DescribeStatement (Describe ):
741- subtype = b'S'
742+ subtype = message_types [ b'S' [ 0 ]]
742743 __slots__ = ('data' ,)
743744
744745class DescribePortal (Describe ):
745- subtype = b'P'
746+ subtype = message_types [ b'P' [ 0 ]]
746747 __slots__ = ('data' ,)
747748
748749class Close (StringMessage ):
749750 """Generic Close"""
750- type = b'C'
751+ type = message_types [ b'C' [ 0 ]]
751752 __slots__ = ()
752753
753754 def serialize (self ):
@@ -765,17 +766,17 @@ def parse(typ, data):
765766
766767class CloseStatement (Close ):
767768 """Close the specified Statement"""
768- subtype = b'S'
769+ subtype = message_types [ b'S' [ 0 ]]
769770 __slots__ = ()
770771
771772class ClosePortal (Close ):
772773 """Close the specified Portal"""
773- subtype = b'P'
774+ subtype = message_types [ b'P' [ 0 ]]
774775 __slots__ = ()
775776
776777class Function (Message ):
777778 """Execute the specified function with the given arguments"""
778- type = b'F'
779+ type = message_types [ b'F' [ 0 ]]
779780 __slots__ = ('oid' , 'aformats' , 'arguments' , 'rformat' )
780781
781782 def __init__ (self , oid , aformats , args , rformat = StringFormat ):
@@ -847,16 +848,16 @@ def parse(typ, data):
847848
848849class CopyToBegin (CopyBegin ):
849850 """Begin copying to"""
850- type = b'H'
851+ type = message_types [ b'H' [ 0 ]]
851852 __slots__ = ('format' , 'formats' )
852853
853854class CopyFromBegin (CopyBegin ):
854855 """Begin copying from"""
855- type = b'G'
856+ type = message_types [ b'G' [ 0 ]]
856857 __slots__ = ('format' , 'formats' )
857858
858859class CopyData (Message ):
859- type = b'd'
860+ type = message_types [ b'd' [ 0 ]]
860861 __slots__ = ('data' ,)
861862
862863 def __init__ (self , data ):
@@ -870,11 +871,11 @@ def parse(typ, data):
870871 return typ (data )
871872
872873class CopyFail (StringMessage ):
873- type = b'f'
874+ type = message_types [ b'f' [ 0 ]]
874875 __slots__ = ('data' ,)
875876
876877class CopyDone (EmptyMessage ):
877- type = b'c'
878+ type = message_types [ b'c' [ 0 ]]
878879 __slots__ = ('data' ,)
879880CopyDoneMessage = Message .__new__ (CopyDone )
880881CopyDone .SingleInstance = CopyDoneMessage
0 commit comments