1919import ctypes
2020
2121from pyignite .constants import RHF_TOPOLOGY_CHANGED , RHF_ERROR
22- from pyignite .connection import Connection
2322from pyignite .datatypes import AnyDataObject , Bool , Int , Long , String , StringArray , Struct
2423from pyignite .queries .op_codes import OP_SUCCESS
2524from pyignite .stream import READ_BACKWARD
@@ -30,6 +29,7 @@ class Response:
3029 following = attr .ib (type = list , factory = list )
3130 protocol_version = attr .ib (type = tuple , factory = tuple )
3231 _response_header = None
32+ _response_class_name = 'Response'
3333
3434 def __attrs_post_init__ (self ):
3535 # replace None with empty list
@@ -88,19 +88,16 @@ def parse(self, stream):
8888 else :
8989 self ._parse_success (stream , fields )
9090
91- response_class = self ._create_response_class (stream , header_class , fields )
92- stream .seek (init_pos + ctypes .sizeof (response_class ))
93- return self ._create_response_class (stream , header_class , fields )
94-
95- def _create_response_class (self , stream , header_class , fields : list ):
9691 response_class = type (
97- 'Response' ,
92+ self . _response_class_name ,
9893 (header_class ,),
9994 {
10095 '_pack_' : 1 ,
10196 '_fields_' : fields ,
10297 }
10398 )
99+
100+ stream .seek (init_pos + ctypes .sizeof (response_class ))
104101 return response_class
105102
106103 def _parse_success (self , stream , fields : list ):
@@ -130,6 +127,7 @@ class SQLResponse(Response):
130127 """
131128 include_field_names = attr .ib (type = bool , default = False )
132129 has_cursor = attr .ib (type = bool , default = False )
130+ _response_class_name = 'SQLResponse'
133131
134132 def fields_or_field_count (self ):
135133 if self .include_field_names :
@@ -182,17 +180,6 @@ def _parse_success(self, stream, fields: list):
182180 ('more' , ctypes .c_byte ),
183181 ]
184182
185- def _create_response_class (self , stream , header_class , fields : list ):
186- final_class = type (
187- 'SQLResponse' ,
188- (header_class ,),
189- {
190- '_pack_' : 1 ,
191- '_fields_' : fields ,
192- }
193- )
194- return final_class
195-
196183 def to_python (self , ctype_object , * args , ** kwargs ):
197184 if getattr (ctype_object , 'status_code' , 0 ) == 0 :
198185 result = {
0 commit comments