apache-iotdb 2.0.2__py3-none-any.whl → 2.0.4.dev0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. {apache_iotdb-2.0.2.dist-info → apache_iotdb-2.0.4.dev0.dist-info}/METADATA +6 -6
  2. {apache_iotdb-2.0.2.dist-info → apache_iotdb-2.0.4.dev0.dist-info}/RECORD +34 -22
  3. {apache_iotdb-2.0.2.dist-info → apache_iotdb-2.0.4.dev0.dist-info}/WHEEL +1 -1
  4. iotdb/Session.py +158 -184
  5. iotdb/SessionPool.py +3 -1
  6. iotdb/template/MeasurementNode.py +1 -1
  7. iotdb/template/Template.py +3 -3
  8. iotdb/thrift/common/ttypes.py +18 -1
  9. iotdb/thrift/confignode/IConfigNodeRPCService.py +28290 -0
  10. iotdb/thrift/confignode/__init__.py +1 -0
  11. iotdb/thrift/confignode/constants.py +14 -0
  12. iotdb/thrift/confignode/ttypes.py +17249 -0
  13. iotdb/thrift/datanode/IDataNodeRPCService.py +17960 -0
  14. iotdb/thrift/datanode/MPPDataExchangeService.py +1071 -0
  15. iotdb/thrift/datanode/__init__.py +1 -0
  16. iotdb/thrift/datanode/constants.py +14 -0
  17. iotdb/thrift/datanode/ttypes.py +10920 -0
  18. iotdb/tsfile/utils/tsblock_serde.py +266 -0
  19. iotdb/utils/Field.py +30 -5
  20. iotdb/utils/NumpyTablet.py +1 -1
  21. iotdb/utils/SessionDataSet.py +43 -24
  22. iotdb/utils/Tablet.py +1 -1
  23. iotdb/utils/{IoTDBConnectionException.py → exception.py} +20 -0
  24. iotdb/utils/iotdb_rpc_dataset.py +406 -0
  25. iotdb/utils/rpc_utils.py +110 -0
  26. tests/integration/tablet_performance_comparison.py +3 -1
  27. tests/integration/test_new_data_types.py +6 -6
  28. tests/integration/test_tablemodel_query.py +476 -0
  29. iotdb/utils/IoTDBRpcDataSet.py +0 -463
  30. {apache_iotdb-2.0.2.dist-info → apache_iotdb-2.0.4.dev0.dist-info}/entry_points.txt +0 -0
  31. {apache_iotdb-2.0.2.dist-info → apache_iotdb-2.0.4.dev0.dist-info}/top_level.txt +0 -0
  32. /iotdb/tsfile/common/constant/{TsFileConstant.py → tsfile_constant.py} +0 -0
  33. /iotdb/tsfile/utils/{DateUtils.py → date_utils.py} +0 -0
  34. /iotdb/tsfile/utils/{Pair.py → pair.py} +0 -0
  35. /iotdb/tsfile/utils/{ReadWriteIOUtils.py → read_write_io_utils.py} +0 -0
iotdb/Session.py CHANGED
@@ -20,15 +20,15 @@ import logging
20
20
  import random
21
21
  import sys
22
22
  import struct
23
- import time
24
23
  import warnings
25
24
  from thrift.protocol import TBinaryProtocol, TCompactProtocol
26
25
  from thrift.transport import TSocket, TTransport
26
+ from tzlocal import get_localzone_name
27
27
 
28
28
  from iotdb.utils.SessionDataSet import SessionDataSet
29
29
  from .template.Template import Template
30
30
  from .template.TemplateQueryType import TemplateQueryType
31
- from .thrift.common.ttypes import TEndPoint, TSStatus
31
+ from .thrift.common.ttypes import TEndPoint
32
32
  from .thrift.rpc.IClientRPCService import (
33
33
  Client,
34
34
  TSCreateTimeseriesReq,
@@ -59,21 +59,19 @@ from .thrift.rpc.ttypes import (
59
59
  TSLastDataQueryReq,
60
60
  TSInsertStringRecordsOfOneDeviceReq,
61
61
  )
62
- from .tsfile.utils.DateUtils import parse_date_to_int
63
- from .utils.IoTDBConnectionException import IoTDBConnectionException
62
+ from .tsfile.utils.date_utils import parse_date_to_int
63
+ from .utils import rpc_utils
64
+ from .utils.exception import IoTDBConnectionException, RedirectException
64
65
 
65
66
  logger = logging.getLogger("IoTDB")
66
67
  warnings.simplefilter("always", DeprecationWarning)
67
68
 
68
69
 
69
70
  class Session(object):
70
- SUCCESS_STATUS = 200
71
- MULTIPLE_ERROR = 302
72
- REDIRECTION_RECOMMEND = 400
73
71
  DEFAULT_FETCH_SIZE = 5000
74
72
  DEFAULT_USER = "root"
75
73
  DEFAULT_PASSWORD = "root"
76
- DEFAULT_ZONE_ID = time.strftime("%z")
74
+ DEFAULT_ZONE_ID = get_localzone_name()
77
75
  RETRY_NUM = 3
78
76
  SQL_DIALECT = "tree"
79
77
 
@@ -114,6 +112,7 @@ class Session(object):
114
112
  self.__use_ssl = use_ssl
115
113
  self.__ca_certs = ca_certs
116
114
  self.__connection_timeout_in_ms = connection_timeout_in_ms
115
+ self.__time_precision = "ms"
117
116
 
118
117
  @classmethod
119
118
  def init_from_node_urls(
@@ -207,7 +206,12 @@ class Session(object):
207
206
 
208
207
  try:
209
208
  open_resp = client.openSession(open_req)
210
- Session.verify_success(open_resp.status)
209
+ rpc_utils.verify_success(open_resp.status)
210
+ if open_resp.configuration is not None:
211
+ if "timestamp_precision" in open_resp.configuration:
212
+ self.__time_precision = open_resp.configuration[
213
+ "timestamp_precision"
214
+ ]
211
215
 
212
216
  if self.protocol_version != open_resp.serverProtocolVersion:
213
217
  logger.exception(
@@ -288,13 +292,13 @@ class Session(object):
288
292
  :param group_name: String, database name (starts from root)
289
293
  """
290
294
  try:
291
- return Session.verify_success(
295
+ return rpc_utils.verify_success(
292
296
  self.__client.setStorageGroup(self.__session_id, group_name)
293
297
  )
294
298
  except TTransport.TException as e:
295
299
  if self.reconnect():
296
300
  try:
297
- return Session.verify_success(
301
+ return rpc_utils.verify_success(
298
302
  self.__client.setStorageGroup(self.__session_id, group_name)
299
303
  )
300
304
  except TTransport.TException as e1:
@@ -316,13 +320,13 @@ class Session(object):
316
320
  :param storage_group_lst: List, paths of the target databases.
317
321
  """
318
322
  try:
319
- return Session.verify_success(
323
+ return rpc_utils.verify_success(
320
324
  self.__client.deleteStorageGroups(self.__session_id, storage_group_lst)
321
325
  )
322
326
  except TTransport.TException as e:
323
327
  if self.reconnect():
324
328
  try:
325
- return Session.verify_success(
329
+ return rpc_utils.verify_success(
326
330
  self.__client.deleteStorageGroups(
327
331
  self.__session_id, storage_group_lst
328
332
  )
@@ -366,12 +370,12 @@ class Session(object):
366
370
  alias,
367
371
  )
368
372
  try:
369
- return Session.verify_success(self.__client.createTimeseries(request))
373
+ return rpc_utils.verify_success(self.__client.createTimeseries(request))
370
374
  except TTransport.TException as e:
371
375
  if self.reconnect():
372
376
  try:
373
377
  request.sessionId = self.__session_id
374
- return Session.verify_success(
378
+ return rpc_utils.verify_success(
375
379
  self.__client.createTimeseries(request)
376
380
  )
377
381
  except TTransport.TException as e1:
@@ -400,14 +404,14 @@ class Session(object):
400
404
  compressor_lst,
401
405
  )
402
406
  try:
403
- return Session.verify_success(
407
+ return rpc_utils.verify_success(
404
408
  self.__client.createAlignedTimeseries(request)
405
409
  )
406
410
  except TTransport.TException as e:
407
411
  if self.reconnect():
408
412
  try:
409
413
  request.sessionId = self.__session_id
410
- return Session.verify_success(
414
+ return rpc_utils.verify_success(
411
415
  self.__client.createAlignedTimeseries(request)
412
416
  )
413
417
  except TTransport.TException as e1:
@@ -450,12 +454,14 @@ class Session(object):
450
454
  alias_lst,
451
455
  )
452
456
  try:
453
- return Session.verify_success(self.__client.createMultiTimeseries(request))
457
+ return rpc_utils.verify_success(
458
+ self.__client.createMultiTimeseries(request)
459
+ )
454
460
  except TTransport.TException as e:
455
461
  if self.reconnect():
456
462
  try:
457
463
  request.sessionId = self.__session_id
458
- return Session.verify_success(
464
+ return rpc_utils.verify_success(
459
465
  self.__client.createMultiTimeseries(request)
460
466
  )
461
467
  except TTransport.TException as e1:
@@ -469,13 +475,13 @@ class Session(object):
469
475
  :param paths_list: List of time series path, which should be complete (starts from root)
470
476
  """
471
477
  try:
472
- return Session.verify_success(
478
+ return rpc_utils.verify_success(
473
479
  self.__client.deleteTimeseries(self.__session_id, paths_list)
474
480
  )
475
481
  except TTransport.TException as e:
476
482
  if self.reconnect():
477
483
  try:
478
- return Session.verify_success(
484
+ return rpc_utils.verify_success(
479
485
  self.__client.deleteTimeseries(self.__session_id, paths_list)
480
486
  )
481
487
  except TTransport.TException as e1:
@@ -504,12 +510,12 @@ class Session(object):
504
510
  self.__session_id, paths_list, -9223372036854775808, end_time
505
511
  )
506
512
  try:
507
- return Session.verify_success(self.__client.deleteData(request))
513
+ return rpc_utils.verify_success(self.__client.deleteData(request))
508
514
  except TTransport.TException as e:
509
515
  if self.reconnect():
510
516
  try:
511
517
  request.sessionId = self.__session_id
512
- return Session.verify_success(self.__client.deleteData(request))
518
+ return rpc_utils.verify_success(self.__client.deleteData(request))
513
519
  except TTransport.TException as e1:
514
520
  raise IoTDBConnectionException(e1) from None
515
521
  else:
@@ -524,12 +530,12 @@ class Session(object):
524
530
  """
525
531
  request = TSDeleteDataReq(self.__session_id, paths_list, start_time, end_time)
526
532
  try:
527
- return Session.verify_success(self.__client.deleteData(request))
533
+ return rpc_utils.verify_success(self.__client.deleteData(request))
528
534
  except TTransport.TException as e:
529
535
  if self.reconnect():
530
536
  try:
531
537
  request.sessionId = self.__session_id
532
- return Session.verify_success(self.__client.deleteData(request))
538
+ return rpc_utils.verify_success(self.__client.deleteData(request))
533
539
  except TTransport.TException as e1:
534
540
  raise IoTDBConnectionException(e1) from None
535
541
  else:
@@ -556,7 +562,7 @@ class Session(object):
556
562
  try:
557
563
  connection = self.get_connection(device_id)
558
564
  request.sessionId = connection.session_id
559
- return Session.verify_success_with_redirection(
565
+ return rpc_utils.verify_success_with_redirection(
560
566
  connection.client.insertStringRecord(request)
561
567
  )
562
568
  except RedirectException as e:
@@ -565,7 +571,7 @@ class Session(object):
565
571
  if self.reconnect():
566
572
  try:
567
573
  request.sessionId = self.__session_id
568
- return Session.verify_success(
574
+ return rpc_utils.verify_success(
569
575
  self.__client.insertStringRecord(request)
570
576
  )
571
577
  except TTransport.TException as e1:
@@ -596,7 +602,7 @@ class Session(object):
596
602
  try:
597
603
  connection = self.get_connection(device_id)
598
604
  request.sessionId = connection.session_id
599
- return Session.verify_success_with_redirection(
605
+ return rpc_utils.verify_success_with_redirection(
600
606
  connection.client.insertStringRecord(request)
601
607
  )
602
608
  except RedirectException as e:
@@ -605,7 +611,7 @@ class Session(object):
605
611
  if self.reconnect():
606
612
  try:
607
613
  request.sessionId = self.__session_id
608
- return Session.verify_success(
614
+ return rpc_utils.verify_success(
609
615
  self.__client.insertStringRecord(request)
610
616
  )
611
617
  except TTransport.TException as e1:
@@ -645,7 +651,7 @@ class Session(object):
645
651
  try:
646
652
  connection = self.get_connection(device_id)
647
653
  request.sessionId = connection.session_id
648
- return Session.verify_success_with_redirection(
654
+ return rpc_utils.verify_success_with_redirection(
649
655
  connection.client.insertRecord(request)
650
656
  )
651
657
  except RedirectException as e:
@@ -654,7 +660,7 @@ class Session(object):
654
660
  if self.reconnect():
655
661
  try:
656
662
  request.sessionId = self.__session_id
657
- return Session.verify_success(self.__client.insertRecord(request))
663
+ return rpc_utils.verify_success(self.__client.insertRecord(request))
658
664
  except TTransport.TException as e1:
659
665
  raise IoTDBConnectionException(e1) from None
660
666
  else:
@@ -701,7 +707,7 @@ class Session(object):
701
707
  )
702
708
  for client, request in request_group.items():
703
709
  try:
704
- Session.verify_success_with_redirection_for_multi_devices(
710
+ rpc_utils.verify_success_with_redirection_for_multi_devices(
705
711
  client.insertRecords(request), request.prefixPaths
706
712
  )
707
713
  except RedirectException as e:
@@ -711,7 +717,9 @@ class Session(object):
711
717
  if self.reconnect():
712
718
  try:
713
719
  request.sessionId = self.__session_id
714
- Session.verify_success(self.__client.insertRecords(request))
720
+ rpc_utils.verify_success(
721
+ self.__client.insertRecords(request)
722
+ )
715
723
  except TTransport.TException as e1:
716
724
  raise IoTDBConnectionException(e1) from None
717
725
  else:
@@ -725,12 +733,12 @@ class Session(object):
725
733
  device_ids, times, measurements_lst, types_lst, values_lst
726
734
  )
727
735
  try:
728
- return Session.verify_success(self.__client.insertRecords(request))
736
+ return rpc_utils.verify_success(self.__client.insertRecords(request))
729
737
  except TTransport.TException as e:
730
738
  if self.reconnect():
731
739
  try:
732
740
  request.sessionId = self.__session_id
733
- return Session.verify_success(
741
+ return rpc_utils.verify_success(
734
742
  self.__client.insertRecords(request)
735
743
  )
736
744
  except TTransport.TException as e1:
@@ -774,7 +782,7 @@ class Session(object):
774
782
  try:
775
783
  connection = self.get_connection(device_id)
776
784
  request.sessionId = connection.session_id
777
- return Session.verify_success_with_redirection(
785
+ return rpc_utils.verify_success_with_redirection(
778
786
  connection.client.insertRecord(request)
779
787
  )
780
788
  except RedirectException as e:
@@ -783,7 +791,7 @@ class Session(object):
783
791
  if self.reconnect():
784
792
  try:
785
793
  request.sessionId = self.__session_id
786
- return Session.verify_success(self.__client.insertRecord(request))
794
+ return rpc_utils.verify_success(self.__client.insertRecord(request))
787
795
  except TTransport.TException as e1:
788
796
  raise IoTDBConnectionException(e1) from None
789
797
  else:
@@ -830,7 +838,7 @@ class Session(object):
830
838
  )
831
839
  for client, request in request_group.items():
832
840
  try:
833
- Session.verify_success_with_redirection_for_multi_devices(
841
+ rpc_utils.verify_success_with_redirection_for_multi_devices(
834
842
  client.insertRecords(request), request.prefixPaths
835
843
  )
836
844
  except RedirectException as e:
@@ -840,7 +848,9 @@ class Session(object):
840
848
  if self.reconnect():
841
849
  try:
842
850
  request.sessionId = self.__session_id
843
- Session.verify_success(self.__client.insertRecords(request))
851
+ rpc_utils.verify_success(
852
+ self.__client.insertRecords(request)
853
+ )
844
854
  except TTransport.TException as e1:
845
855
  raise IoTDBConnectionException(e1) from None
846
856
  else:
@@ -854,12 +864,12 @@ class Session(object):
854
864
  device_ids, times, measurements_lst, types_lst, values_lst, True
855
865
  )
856
866
  try:
857
- return Session.verify_success(self.__client.insertRecords(request))
867
+ return rpc_utils.verify_success(self.__client.insertRecords(request))
858
868
  except TTransport.TException as e:
859
869
  if self.reconnect():
860
870
  try:
861
871
  request.sessionId = self.__session_id
862
- return Session.verify_success(
872
+ return rpc_utils.verify_success(
863
873
  self.__client.insertRecords(request)
864
874
  )
865
875
  except TTransport.TException as e1:
@@ -885,11 +895,11 @@ class Session(object):
885
895
  device_id, timestamp, measurements, data_types, values
886
896
  )
887
897
  try:
888
- return Session.verify_success(self.__client.testInsertRecord(request))
898
+ return rpc_utils.verify_success(self.__client.testInsertRecord(request))
889
899
  except TTransport.TException as e:
890
900
  if self.reconnect():
891
901
  try:
892
- return Session.verify_success(
902
+ return rpc_utils.verify_success(
893
903
  self.__client.testInsertRecord(request)
894
904
  )
895
905
  except TTransport.TException as e1:
@@ -913,11 +923,11 @@ class Session(object):
913
923
  device_ids, times, measurements_lst, types_lst, values_lst
914
924
  )
915
925
  try:
916
- return Session.verify_success(self.__client.testInsertRecords(request))
926
+ return rpc_utils.verify_success(self.__client.testInsertRecords(request))
917
927
  except TTransport.TException as e:
918
928
  if self.reconnect():
919
929
  try:
920
- return Session.verify_success(
930
+ return rpc_utils.verify_success(
921
931
  self.__client.testInsertRecords(request)
922
932
  )
923
933
  except TTransport.TException as e1:
@@ -1008,7 +1018,7 @@ class Session(object):
1008
1018
  try:
1009
1019
  connection = self.get_connection(tablet.get_insert_target_name())
1010
1020
  request.sessionId = connection.session_id
1011
- return Session.verify_success_with_redirection(
1021
+ return rpc_utils.verify_success_with_redirection(
1012
1022
  connection.client.insertTablet(request)
1013
1023
  )
1014
1024
  except RedirectException as e:
@@ -1019,7 +1029,7 @@ class Session(object):
1019
1029
  if self.reconnect():
1020
1030
  try:
1021
1031
  request.sessionId = self.__session_id
1022
- return Session.verify_success(self.__client.insertTablet(request))
1032
+ return rpc_utils.verify_success(self.__client.insertTablet(request))
1023
1033
  except TTransport.TException as e1:
1024
1034
  raise IoTDBConnectionException(e1) from None
1025
1035
  else:
@@ -1048,7 +1058,7 @@ class Session(object):
1048
1058
  request.typesList.append(tablet_lst[i].get_data_types())
1049
1059
  for client, request in request_group.items():
1050
1060
  try:
1051
- Session.verify_success_with_redirection_for_multi_devices(
1061
+ rpc_utils.verify_success_with_redirection_for_multi_devices(
1052
1062
  client.insertTablets(request), request.prefixPaths
1053
1063
  )
1054
1064
  except RedirectException as e:
@@ -1058,7 +1068,9 @@ class Session(object):
1058
1068
  if self.reconnect():
1059
1069
  try:
1060
1070
  request.sessionId = self.__session_id
1061
- Session.verify_success(self.__client.insertTablets(request))
1071
+ rpc_utils.verify_success(
1072
+ self.__client.insertTablets(request)
1073
+ )
1062
1074
  except TTransport.TException as e1:
1063
1075
  raise IoTDBConnectionException(e1) from None
1064
1076
  else:
@@ -1070,12 +1082,12 @@ class Session(object):
1070
1082
  else:
1071
1083
  request = self.gen_insert_tablets_req(tablet_lst)
1072
1084
  try:
1073
- return Session.verify_success(self.__client.insertTablets(request))
1085
+ return rpc_utils.verify_success(self.__client.insertTablets(request))
1074
1086
  except TTransport.TException as e:
1075
1087
  if self.reconnect():
1076
1088
  try:
1077
1089
  request.sessionId = self.__session_id
1078
- return Session.verify_success(
1090
+ return rpc_utils.verify_success(
1079
1091
  self.__client.insertTablets(request)
1080
1092
  )
1081
1093
  except TTransport.TException as e1:
@@ -1101,7 +1113,7 @@ class Session(object):
1101
1113
  try:
1102
1114
  connection = self.get_connection(tablet.get_insert_target_name())
1103
1115
  request.sessionId = connection.session_id
1104
- return Session.verify_success_with_redirection(
1116
+ return rpc_utils.verify_success_with_redirection(
1105
1117
  connection.client.insertTablet(request)
1106
1118
  )
1107
1119
  except RedirectException as e:
@@ -1112,7 +1124,7 @@ class Session(object):
1112
1124
  if self.reconnect():
1113
1125
  try:
1114
1126
  request.sessionId = self.__session_id
1115
- return Session.verify_success(self.__client.insertTablet(request))
1127
+ return rpc_utils.verify_success(self.__client.insertTablet(request))
1116
1128
  except TTransport.TException as e1:
1117
1129
  raise IoTDBConnectionException(e1) from None
1118
1130
  else:
@@ -1141,7 +1153,7 @@ class Session(object):
1141
1153
  request.typesList.append(tablet_lst[i].get_data_types())
1142
1154
  for client, request in request_group.items():
1143
1155
  try:
1144
- Session.verify_success_with_redirection_for_multi_devices(
1156
+ rpc_utils.verify_success_with_redirection_for_multi_devices(
1145
1157
  client.insertTablets(request), request.prefixPaths
1146
1158
  )
1147
1159
  except RedirectException as e:
@@ -1151,7 +1163,9 @@ class Session(object):
1151
1163
  if self.reconnect():
1152
1164
  try:
1153
1165
  request.sessionId = self.__session_id
1154
- Session.verify_success(self.__client.insertTablets(request))
1166
+ rpc_utils.verify_success(
1167
+ self.__client.insertTablets(request)
1168
+ )
1155
1169
  except TTransport.TException as e1:
1156
1170
  raise IoTDBConnectionException(e1) from None
1157
1171
  else:
@@ -1163,12 +1177,12 @@ class Session(object):
1163
1177
  else:
1164
1178
  request = self.gen_insert_tablets_req(tablet_lst, True)
1165
1179
  try:
1166
- return Session.verify_success(self.__client.insertTablets(request))
1180
+ return rpc_utils.verify_success(self.__client.insertTablets(request))
1167
1181
  except TTransport.TException as e:
1168
1182
  if self.reconnect():
1169
1183
  try:
1170
1184
  request.sessionId = self.__session_id
1171
- return Session.verify_success(
1185
+ return rpc_utils.verify_success(
1172
1186
  self.__client.insertTablets(request)
1173
1187
  )
1174
1188
  except TTransport.TException as e1:
@@ -1191,7 +1205,7 @@ class Session(object):
1191
1205
  try:
1192
1206
  connection = self.get_connection(tablet.get_insert_target_name())
1193
1207
  request.sessionId = connection.session_id
1194
- return Session.verify_success_with_redirection(
1208
+ return rpc_utils.verify_success_with_redirection(
1195
1209
  connection.client.insertTablet(request)
1196
1210
  )
1197
1211
  except RedirectException as e:
@@ -1202,7 +1216,7 @@ class Session(object):
1202
1216
  if self.reconnect():
1203
1217
  try:
1204
1218
  request.sessionId = self.__session_id
1205
- return Session.verify_success(self.__client.insertTablet(request))
1219
+ return rpc_utils.verify_success(self.__client.insertTablet(request))
1206
1220
  except TTransport.TException as e1:
1207
1221
  raise IoTDBConnectionException(e1) from None
1208
1222
  else:
@@ -1261,7 +1275,7 @@ class Session(object):
1261
1275
  try:
1262
1276
  connection = self.get_connection(device_id)
1263
1277
  request.sessionId = connection.session_id
1264
- return Session.verify_success_with_redirection(
1278
+ return rpc_utils.verify_success_with_redirection(
1265
1279
  connection.client.insertRecordsOfOneDevice(request)
1266
1280
  )
1267
1281
  except RedirectException as e:
@@ -1270,7 +1284,7 @@ class Session(object):
1270
1284
  if self.reconnect():
1271
1285
  try:
1272
1286
  request.sessionId = self.__session_id
1273
- return Session.verify_success(
1287
+ return rpc_utils.verify_success(
1274
1288
  self.__client.insertRecordsOfOneDevice(request)
1275
1289
  )
1276
1290
  except TTransport.TException as e1:
@@ -1333,7 +1347,7 @@ class Session(object):
1333
1347
  try:
1334
1348
  connection = self.get_connection(device_id)
1335
1349
  request.sessionId = connection.session_id
1336
- return Session.verify_success_with_redirection(
1350
+ return rpc_utils.verify_success_with_redirection(
1337
1351
  connection.client.insertRecordsOfOneDevice(request)
1338
1352
  )
1339
1353
  except RedirectException as e:
@@ -1342,7 +1356,7 @@ class Session(object):
1342
1356
  if self.reconnect():
1343
1357
  try:
1344
1358
  request.sessionId = self.__session_id
1345
- return Session.verify_success(
1359
+ return rpc_utils.verify_success(
1346
1360
  self.__client.insertRecordsOfOneDevice(request)
1347
1361
  )
1348
1362
  except TTransport.TException as e1:
@@ -1387,12 +1401,12 @@ class Session(object):
1387
1401
  """
1388
1402
  request = self.gen_insert_tablet_req(tablet)
1389
1403
  try:
1390
- return Session.verify_success(self.__client.testInsertTablet(request))
1404
+ return rpc_utils.verify_success(self.__client.testInsertTablet(request))
1391
1405
  except TTransport.TException as e:
1392
1406
  if self.reconnect():
1393
1407
  try:
1394
1408
  request.sessionId = self.__session_id
1395
- return Session.verify_success(
1409
+ return rpc_utils.verify_success(
1396
1410
  self.__client.testInsertTablet(request)
1397
1411
  )
1398
1412
  except TTransport.TException as e1:
@@ -1408,12 +1422,12 @@ class Session(object):
1408
1422
  """
1409
1423
  request = self.gen_insert_tablets_req(tablet_list)
1410
1424
  try:
1411
- return Session.verify_success(self.__client.testInsertTablets(request))
1425
+ return rpc_utils.verify_success(self.__client.testInsertTablets(request))
1412
1426
  except TTransport.TException as e:
1413
1427
  if self.reconnect():
1414
1428
  try:
1415
1429
  request.sessionId = self.__session_id
1416
- return Session.verify_success(
1430
+ return rpc_utils.verify_success(
1417
1431
  self.__client.testInsertTablets(request)
1418
1432
  )
1419
1433
  except TTransport.TException as e1:
@@ -1483,30 +1497,36 @@ class Session(object):
1483
1497
  self.__session_id, sql, self.__statement_id, self.__fetch_size, timeout
1484
1498
  )
1485
1499
  try:
1486
- resp = self.__client.executeQueryStatement(request)
1500
+ resp = self.__client.executeQueryStatementV2(request)
1487
1501
  except TTransport.TException as e:
1488
1502
  if self.reconnect():
1489
1503
  try:
1490
1504
  request.sessionId = self.__session_id
1491
1505
  request.statementId = self.__statement_id
1492
- resp = self.__client.executeQueryStatement(request)
1506
+ resp = self.__client.executeQueryStatementV2(request)
1493
1507
  except TTransport.TException as e1:
1494
1508
  raise IoTDBConnectionException(e1) from None
1495
1509
  else:
1496
1510
  raise IoTDBConnectionException(self.connection_error_msg()) from None
1497
1511
 
1498
- Session.verify_success(resp.status)
1512
+ rpc_utils.verify_success(resp.status)
1499
1513
  return SessionDataSet(
1500
1514
  sql,
1501
1515
  resp.columns,
1502
1516
  resp.dataTypeList,
1503
1517
  resp.columnNameIndexMap,
1504
1518
  resp.queryId,
1519
+ self.__session_id,
1505
1520
  self.__client,
1506
1521
  self.__statement_id,
1507
- self.__session_id,
1508
- resp.queryDataSet,
1522
+ resp.queryResult,
1509
1523
  resp.ignoreTimeStamp,
1524
+ timeout,
1525
+ resp.moreData,
1526
+ self.__fetch_size,
1527
+ self.__zone_id,
1528
+ self.__time_precision,
1529
+ resp.columnIndex2TsBlockColumnIndexList,
1510
1530
  )
1511
1531
 
1512
1532
  def execute_non_query_statement(self, sql):
@@ -1516,13 +1536,13 @@ class Session(object):
1516
1536
  """
1517
1537
  request = TSExecuteStatementReq(self.__session_id, sql, self.__statement_id)
1518
1538
  try:
1519
- resp = self.__client.executeUpdateStatement(request)
1539
+ resp = self.__client.executeUpdateStatementV2(request)
1520
1540
  except TTransport.TException as e:
1521
1541
  if self.reconnect():
1522
1542
  try:
1523
1543
  request.sessionId = self.__session_id
1524
1544
  request.statementId = self.__statement_id
1525
- resp = self.__client.executeUpdateStatement(request)
1545
+ resp = self.__client.executeUpdateStatementV2(request)
1526
1546
  except TTransport.TException as e1:
1527
1547
  raise IoTDBConnectionException(e1) from None
1528
1548
  else:
@@ -1540,26 +1560,26 @@ class Session(object):
1540
1560
  connection.change_database(sql)
1541
1561
  except Exception as e:
1542
1562
  self.__endpoint_to_connection.pop(endpoint)
1543
- return Session.verify_success(resp.status)
1563
+ return rpc_utils.verify_success(resp.status)
1544
1564
 
1545
1565
  def execute_statement(self, sql: str, timeout=0):
1546
1566
  request = TSExecuteStatementReq(
1547
1567
  self.__session_id, sql, self.__statement_id, timeout
1548
1568
  )
1549
1569
  try:
1550
- resp = self.__client.executeStatement(request)
1570
+ resp = self.__client.executeStatementV2(request)
1551
1571
  except TTransport.TException as e:
1552
1572
  if self.reconnect():
1553
1573
  try:
1554
1574
  request.sessionId = self.__session_id
1555
1575
  request.statementId = self.__statement_id
1556
- resp = self.__client.executeStatement(request)
1576
+ resp = self.__client.executeStatementV2(request)
1557
1577
  except TTransport.TException as e1:
1558
1578
  raise IoTDBConnectionException(e1) from None
1559
1579
  else:
1560
1580
  raise IoTDBConnectionException(self.connection_error_msg()) from None
1561
1581
 
1562
- Session.verify_success(resp.status)
1582
+ rpc_utils.verify_success(resp.status)
1563
1583
  if resp.columns:
1564
1584
  return SessionDataSet(
1565
1585
  sql,
@@ -1567,11 +1587,17 @@ class Session(object):
1567
1587
  resp.dataTypeList,
1568
1588
  resp.columnNameIndexMap,
1569
1589
  resp.queryId,
1590
+ self.__session_id,
1570
1591
  self.__client,
1571
1592
  self.__statement_id,
1572
- self.__session_id,
1573
- resp.queryDataSet,
1593
+ resp.queryResult,
1574
1594
  resp.ignoreTimeStamp,
1595
+ timeout,
1596
+ resp.moreData,
1597
+ self.__fetch_size,
1598
+ self.__zone_id,
1599
+ self.__time_precision,
1600
+ resp.columnIndex2TsBlockColumnIndexList,
1575
1601
  )
1576
1602
  else:
1577
1603
  return None
@@ -1686,61 +1712,6 @@ class Session(object):
1686
1712
  return False
1687
1713
  return True
1688
1714
 
1689
- @staticmethod
1690
- def verify_success(status: TSStatus):
1691
- """
1692
- verify success of operation
1693
- :param status: execution result status
1694
- """
1695
- if status.code == Session.MULTIPLE_ERROR:
1696
- Session.verify_success_by_list(status.subStatus)
1697
- return 0
1698
- if (
1699
- status.code == Session.SUCCESS_STATUS
1700
- or status.code == Session.REDIRECTION_RECOMMEND
1701
- ):
1702
- return 0
1703
-
1704
- raise RuntimeError(f"{status.code}: {status.message}")
1705
-
1706
- @staticmethod
1707
- def verify_success_by_list(status_list: list):
1708
- """
1709
- verify success of operation
1710
- :param status_list: execution result status
1711
- """
1712
- error_messages = [
1713
- status.message
1714
- for status in status_list
1715
- if status.code
1716
- not in {Session.SUCCESS_STATUS, Session.REDIRECTION_RECOMMEND}
1717
- ]
1718
- if error_messages:
1719
- message = f"{Session.MULTIPLE_ERROR}: {'; '.join(error_messages)}"
1720
- raise RuntimeError(message)
1721
-
1722
- @staticmethod
1723
- def verify_success_with_redirection(status: TSStatus):
1724
- Session.verify_success(status)
1725
- if status.redirectNode is not None:
1726
- raise RedirectException(status.redirectNode)
1727
- return 0
1728
-
1729
- @staticmethod
1730
- def verify_success_with_redirection_for_multi_devices(
1731
- status: TSStatus, devices: list
1732
- ):
1733
- Session.verify_success(status)
1734
- if (
1735
- status.code == Session.MULTIPLE_ERROR
1736
- or status.code == Session.REDIRECTION_RECOMMEND
1737
- ):
1738
- device_to_endpoint = {}
1739
- for i in range(len(status.subStatus)):
1740
- if status.subStatus[i].redirectNode is not None:
1741
- device_to_endpoint[devices[i]] = status.subStatus[i].redirectNode
1742
- raise RedirectException(device_to_endpoint)
1743
-
1744
1715
  def execute_raw_data_query(
1745
1716
  self, paths: list, start_time: int, end_time: int
1746
1717
  ) -> SessionDataSet:
@@ -1761,29 +1732,35 @@ class Session(object):
1761
1732
  enableRedirectQuery=False,
1762
1733
  )
1763
1734
  try:
1764
- resp = self.__client.executeRawDataQuery(request)
1735
+ resp = self.__client.executeRawDataQueryV2(request)
1765
1736
  except TTransport.TException as e:
1766
1737
  if self.reconnect():
1767
1738
  try:
1768
1739
  request.sessionId = self.__session_id
1769
1740
  request.statementId = self.__statement_id
1770
- resp = self.__client.executeRawDataQuery(request)
1741
+ resp = self.__client.executeRawDataQueryV2(request)
1771
1742
  except TTransport.TException as e1:
1772
1743
  raise IoTDBConnectionException(e1) from None
1773
1744
  else:
1774
1745
  raise IoTDBConnectionException(self.connection_error_msg()) from None
1775
- Session.verify_success(resp.status)
1746
+ rpc_utils.verify_success(resp.status)
1776
1747
  return SessionDataSet(
1777
1748
  "",
1778
1749
  resp.columns,
1779
1750
  resp.dataTypeList,
1780
1751
  resp.columnNameIndexMap,
1781
1752
  resp.queryId,
1753
+ self.__session_id,
1782
1754
  self.__client,
1783
1755
  self.__statement_id,
1784
- self.__session_id,
1785
- resp.queryDataSet,
1756
+ resp.queryResult,
1786
1757
  resp.ignoreTimeStamp,
1758
+ 0,
1759
+ resp.moreData,
1760
+ self.__fetch_size,
1761
+ self.__zone_id,
1762
+ self.__time_precision,
1763
+ resp.columnIndex2TsBlockColumnIndexList,
1787
1764
  )
1788
1765
 
1789
1766
  def execute_last_data_query(self, paths: list, last_time: int) -> SessionDataSet:
@@ -1802,29 +1779,35 @@ class Session(object):
1802
1779
  enableRedirectQuery=False,
1803
1780
  )
1804
1781
  try:
1805
- resp = self.__client.executeLastDataQuery(request)
1782
+ resp = self.__client.executeLastDataQueryV2(request)
1806
1783
  except TTransport.TException as e:
1807
1784
  if self.reconnect():
1808
1785
  try:
1809
1786
  request.sessionId = self.__session_id
1810
1787
  request.statementId = self.__statement_id
1811
- resp = self.__client.executeLastDataQuery(request)
1788
+ resp = self.__client.executeLastDataQueryV2(request)
1812
1789
  except TTransport.TException as e1:
1813
1790
  raise IoTDBConnectionException(e1) from None
1814
1791
  else:
1815
1792
  raise IoTDBConnectionException(self.connection_error_msg()) from None
1816
- Session.verify_success(resp.status)
1793
+ rpc_utils.verify_success(resp.status)
1817
1794
  return SessionDataSet(
1818
1795
  "",
1819
1796
  resp.columns,
1820
1797
  resp.dataTypeList,
1821
1798
  resp.columnNameIndexMap,
1822
1799
  resp.queryId,
1823
- self.__client,
1824
1800
  self.__statement_id,
1801
+ self.__client,
1825
1802
  self.__session_id,
1826
- resp.queryDataSet,
1803
+ resp.queryResult,
1827
1804
  resp.ignoreTimeStamp,
1805
+ 0,
1806
+ resp.moreData,
1807
+ self.__fetch_size,
1808
+ self.__zone_id,
1809
+ self.__time_precision,
1810
+ resp.columnIndex2TsBlockColumnIndexList,
1828
1811
  )
1829
1812
 
1830
1813
  def insert_string_records_of_one_device(
@@ -1855,7 +1838,7 @@ class Session(object):
1855
1838
  try:
1856
1839
  connection = self.get_connection(device_id)
1857
1840
  request.sessionId = connection.session_id
1858
- return Session.verify_success_with_redirection(
1841
+ return rpc_utils.verify_success_with_redirection(
1859
1842
  connection.client.insertStringRecordsOfOneDevice(request)
1860
1843
  )
1861
1844
  except RedirectException as e:
@@ -1864,7 +1847,7 @@ class Session(object):
1864
1847
  if self.reconnect():
1865
1848
  try:
1866
1849
  request.sessionId = self.__session_id
1867
- return Session.verify_success(
1850
+ return rpc_utils.verify_success(
1868
1851
  self.__client.insertStringRecordsOfOneDevice(request)
1869
1852
  )
1870
1853
  except TTransport.TException as e1:
@@ -1890,7 +1873,7 @@ class Session(object):
1890
1873
  try:
1891
1874
  connection = self.get_connection(device_id)
1892
1875
  request.sessionId = connection.session_id
1893
- return Session.verify_success_with_redirection(
1876
+ return rpc_utils.verify_success_with_redirection(
1894
1877
  connection.client.insertStringRecordsOfOneDevice(request)
1895
1878
  )
1896
1879
  except RedirectException as e:
@@ -1899,7 +1882,7 @@ class Session(object):
1899
1882
  if self.reconnect():
1900
1883
  try:
1901
1884
  request.sessionId = self.__session_id
1902
- return Session.verify_success(
1885
+ return rpc_utils.verify_success(
1903
1886
  self.__client.insertStringRecordsOfOneDevice(request)
1904
1887
  )
1905
1888
  except TTransport.TException as e1:
@@ -2076,12 +2059,12 @@ class Session(object):
2076
2059
  self.__session_id, template.get_name(), bytes_array
2077
2060
  )
2078
2061
  try:
2079
- return Session.verify_success(self.__client.createSchemaTemplate(request))
2062
+ return rpc_utils.verify_success(self.__client.createSchemaTemplate(request))
2080
2063
  except TTransport.TException as e:
2081
2064
  if self.reconnect():
2082
2065
  try:
2083
2066
  request.sessionId = self.__session_id
2084
- return Session.verify_success(
2067
+ return rpc_utils.verify_success(
2085
2068
  self.__client.createSchemaTemplate(request)
2086
2069
  )
2087
2070
  except TTransport.TException as e1:
@@ -2101,12 +2084,12 @@ class Session(object):
2101
2084
  """
2102
2085
  request = TSDropSchemaTemplateReq(self.__session_id, template_name)
2103
2086
  try:
2104
- return Session.verify_success(self.__client.dropSchemaTemplate(request))
2087
+ return rpc_utils.verify_success(self.__client.dropSchemaTemplate(request))
2105
2088
  except TTransport.TException as e:
2106
2089
  if self.reconnect():
2107
2090
  try:
2108
2091
  request.sessionId = self.__session_id
2109
- return Session.verify_success(
2092
+ return rpc_utils.verify_success(
2110
2093
  self.__client.dropSchemaTemplate(request)
2111
2094
  )
2112
2095
  except TTransport.TException as e1:
@@ -2148,12 +2131,12 @@ class Session(object):
2148
2131
  compressors,
2149
2132
  )
2150
2133
  try:
2151
- return Session.verify_success(self.__client.appendSchemaTemplate(request))
2134
+ return rpc_utils.verify_success(self.__client.appendSchemaTemplate(request))
2152
2135
  except TTransport.TException as e:
2153
2136
  if self.reconnect():
2154
2137
  try:
2155
2138
  request.sessionId = self.__session_id
2156
- return Session.verify_success(
2139
+ return rpc_utils.verify_success(
2157
2140
  self.__client.appendSchemaTemplate(request)
2158
2141
  )
2159
2142
  except TTransport.TException as e1:
@@ -2174,12 +2157,12 @@ class Session(object):
2174
2157
  """
2175
2158
  request = TSPruneSchemaTemplateReq(self.__session_id, template_name, path)
2176
2159
  try:
2177
- return Session.verify_success(self.__client.pruneSchemaTemplate(request))
2160
+ return rpc_utils.verify_success(self.__client.pruneSchemaTemplate(request))
2178
2161
  except TTransport.TException as e:
2179
2162
  if self.reconnect():
2180
2163
  try:
2181
2164
  request.sessionId = self.__session_id
2182
- return Session.verify_success(
2165
+ return rpc_utils.verify_success(
2183
2166
  self.__client.pruneSchemaTemplate(request)
2184
2167
  )
2185
2168
  except TTransport.TException as e1:
@@ -2200,12 +2183,12 @@ class Session(object):
2200
2183
  """
2201
2184
  request = TSSetSchemaTemplateReq(self.__session_id, template_name, prefix_path)
2202
2185
  try:
2203
- return Session.verify_success(self.__client.setSchemaTemplate(request))
2186
+ return rpc_utils.verify_success(self.__client.setSchemaTemplate(request))
2204
2187
  except TTransport.TException as e:
2205
2188
  if self.reconnect():
2206
2189
  try:
2207
2190
  request.sessionId = self.__session_id
2208
- return Session.verify_success(
2191
+ return rpc_utils.verify_success(
2209
2192
  self.__client.setSchemaTemplate(request)
2210
2193
  )
2211
2194
  except TTransport.TException as e1:
@@ -2229,12 +2212,12 @@ class Session(object):
2229
2212
  self.__session_id, prefix_path, template_name
2230
2213
  )
2231
2214
  try:
2232
- return Session.verify_success(self.__client.unsetSchemaTemplate(request))
2215
+ return rpc_utils.verify_success(self.__client.unsetSchemaTemplate(request))
2233
2216
  except TTransport.TException as e:
2234
2217
  if self.reconnect():
2235
2218
  try:
2236
2219
  request.sessionId = self.__session_id
2237
- return Session.verify_success(
2220
+ return rpc_utils.verify_success(
2238
2221
  self.__client.unsetSchemaTemplate(request)
2239
2222
  )
2240
2223
  except TTransport.TException as e1:
@@ -2265,7 +2248,7 @@ class Session(object):
2265
2248
  try:
2266
2249
  request.sessionId = self.__session_id
2267
2250
  response = self.__client.querySchemaTemplate(request)
2268
- Session.verify_success(response.status)
2251
+ rpc_utils.verify_success(response.status)
2269
2252
  return response.count
2270
2253
  except TTransport.TException as e1:
2271
2254
  raise IoTDBConnectionException(e1) from None
@@ -2291,14 +2274,14 @@ class Session(object):
2291
2274
  )
2292
2275
  try:
2293
2276
  response = self.__client.querySchemaTemplate(request)
2294
- Session.verify_success(response.status)
2277
+ rpc_utils.verify_success(response.status)
2295
2278
  return response.result
2296
2279
  except TTransport.TException as e:
2297
2280
  if self.reconnect():
2298
2281
  try:
2299
2282
  request.sessionId = self.__session_id
2300
2283
  response = self.__client.querySchemaTemplate(request)
2301
- Session.verify_success(response.status)
2284
+ rpc_utils.verify_success(response.status)
2302
2285
  return response.result
2303
2286
  except TTransport.TException as e1:
2304
2287
  raise IoTDBConnectionException(e1) from None
@@ -2321,14 +2304,14 @@ class Session(object):
2321
2304
  )
2322
2305
  try:
2323
2306
  response = self.__client.querySchemaTemplate(request)
2324
- Session.verify_success(response.status)
2307
+ rpc_utils.verify_success(response.status)
2325
2308
  return response.result
2326
2309
  except TTransport.TException as e:
2327
2310
  if self.reconnect():
2328
2311
  try:
2329
2312
  request.sessionId = self.__session_id
2330
2313
  response = self.__client.querySchemaTemplate(request)
2331
- Session.verify_success(response.status)
2314
+ rpc_utils.verify_success(response.status)
2332
2315
  return response.result
2333
2316
  except TTransport.TException as e1:
2334
2317
  raise IoTDBConnectionException(e1) from None
@@ -2354,14 +2337,14 @@ class Session(object):
2354
2337
  )
2355
2338
  try:
2356
2339
  response = self.__client.querySchemaTemplate(request)
2357
- Session.verify_success(response.status)
2340
+ rpc_utils.verify_success(response.status)
2358
2341
  return response.measurements
2359
2342
  except TTransport.TException as e:
2360
2343
  if self.reconnect():
2361
2344
  try:
2362
2345
  request.sessionId = self.__session_id
2363
2346
  response = self.__client.querySchemaTemplate(request)
2364
- Session.verify_success(response.status)
2347
+ rpc_utils.verify_success(response.status)
2365
2348
  return response.measurements
2366
2349
  except TTransport.TException as e1:
2367
2350
  raise IoTDBConnectionException(e1) from None
@@ -2384,14 +2367,14 @@ class Session(object):
2384
2367
  )
2385
2368
  try:
2386
2369
  response = self.__client.querySchemaTemplate(request)
2387
- Session.verify_success(response.status)
2370
+ rpc_utils.verify_success(response.status)
2388
2371
  return response.measurements
2389
2372
  except TTransport.TException as e:
2390
2373
  if self.reconnect():
2391
2374
  try:
2392
2375
  request.sessionId = self.__session_id
2393
2376
  response = self.__client.querySchemaTemplate(request)
2394
- Session.verify_success(response.status)
2377
+ rpc_utils.verify_success(response.status)
2395
2378
  return response.measurements
2396
2379
  except TTransport.TException as e1:
2397
2380
  raise IoTDBConnectionException(e1) from None
@@ -2413,14 +2396,14 @@ class Session(object):
2413
2396
  )
2414
2397
  try:
2415
2398
  response = self.__client.querySchemaTemplate(request)
2416
- Session.verify_success(response.status)
2399
+ rpc_utils.verify_success(response.status)
2417
2400
  return response.measurements
2418
2401
  except TTransport.TException as e:
2419
2402
  if self.reconnect():
2420
2403
  try:
2421
2404
  request.sessionId = self.__session_id
2422
2405
  response = self.__client.querySchemaTemplate(request)
2423
- Session.verify_success(response.status)
2406
+ rpc_utils.verify_success(response.status)
2424
2407
  return response.measurements
2425
2408
  except TTransport.TException as e1:
2426
2409
  raise IoTDBConnectionException(e1) from None
@@ -2444,14 +2427,14 @@ class Session(object):
2444
2427
  )
2445
2428
  try:
2446
2429
  response = self.__client.querySchemaTemplate(request)
2447
- Session.verify_success(response.status)
2430
+ rpc_utils.verify_success(response.status)
2448
2431
  return response.measurements
2449
2432
  except TTransport.TException as e:
2450
2433
  if self.reconnect():
2451
2434
  try:
2452
2435
  request.sessionId = self.__session_id
2453
2436
  response = self.__client.querySchemaTemplate(request)
2454
- Session.verify_success(response.status)
2437
+ rpc_utils.verify_success(response.status)
2455
2438
  return response.measurements
2456
2439
  except TTransport.TException as e1:
2457
2440
  raise IoTDBConnectionException(e1) from None
@@ -2474,7 +2457,7 @@ class SessionConnection(object):
2474
2457
 
2475
2458
  def change_database(self, sql):
2476
2459
  try:
2477
- self.client.executeUpdateStatement(
2460
+ self.client.executeUpdateStatementV2(
2478
2461
  TSExecuteStatementReq(self.session_id, sql, self.statement_id)
2479
2462
  )
2480
2463
  except TTransport.TException as e:
@@ -2494,12 +2477,3 @@ class SessionConnection(object):
2494
2477
  finally:
2495
2478
  if self.transport is not None:
2496
2479
  self.transport.close()
2497
-
2498
-
2499
- class RedirectException(Exception):
2500
- def __init__(self, redirect_info):
2501
- Exception.__init__(self)
2502
- if isinstance(redirect_info, TEndPoint):
2503
- self.redirect_node = redirect_info
2504
- else:
2505
- self.device_to_endpoint = redirect_info