cloudpss 4.0.0a7__py3-none-any.whl → 4.0.2__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.
@@ -0,0 +1,122 @@
1
+
2
+
3
+ from ..messageStreamSender import MessageStreamSender
4
+ from ..messageStreamReceiver import MessageStreamReceiver
5
+
6
+
7
+ class View(object):
8
+ """
9
+ 结果视图基类,提供基础的结果获取接口
10
+ """
11
+ def __init__(self, receiver:MessageStreamReceiver,sender:MessageStreamSender=None) -> None:
12
+ """
13
+ 初始化
14
+ """
15
+ self.result = {}
16
+ self._receiver = receiver
17
+ self._sender = sender
18
+ self.__logsIndex = 0
19
+
20
+ def __deepModify(self, dict1, dict2):
21
+
22
+ for key, val in dict1.items():
23
+ if type(val) is dict:
24
+ self.__deepModify(val, dict2[key])
25
+ else:
26
+ dict2[key] = val
27
+
28
+ def modify(self, data, model):
29
+ """
30
+ 通过指定消息修改算例文件
31
+
32
+ :params: data 消息字典 {}
33
+ :params: model 项目
34
+
35
+ >>> message= view.modify(data,model)
36
+
37
+ """
38
+ modifyData = data['data']
39
+ payload = modifyData['payload']
40
+ self.__deepModify(payload, model)
41
+
42
+ def getMessagesByKey(self, key):
43
+ """
44
+ 获取指定 key 的消息数据
45
+
46
+ :params key: 数据key
47
+
48
+ :returns: 对应 key 的数据数组
49
+
50
+ >>> message= db.getMessagesByKey('log')
51
+ """
52
+
53
+ result = []
54
+ for val in self._receiver:
55
+ if val.get('key', None) == key:
56
+ result.append(val)
57
+ return result
58
+
59
+ def getMessagesByType(self, type):
60
+ """
61
+ 获取指定类型的消息数据
62
+
63
+ :params type: 数据类型
64
+
65
+ :returns: 对应类型的数据数组
66
+
67
+ >>> message= db.getMessagesByType('log')
68
+ """
69
+
70
+ result = []
71
+ for val in self._receiver:
72
+ if val['type'] == type:
73
+ result.append(val)
74
+ return result
75
+
76
+ def getMessage(self, index):
77
+ """
78
+ 获取指定位置的消息数据
79
+
80
+ :params index: 数据的位置信息
81
+
82
+ :returns: 消息数据
83
+
84
+ >>> message= db.getMessage(1)
85
+ """
86
+ return self._receiver.messages[index]
87
+
88
+ def getMessages(self):
89
+ """
90
+ 获取所有消息数据
91
+
92
+ :returns: 消息数据数组
93
+ """
94
+ return self._receiver.messages
95
+
96
+
97
+ def getLogs(self):
98
+ '''
99
+ 获取当前任务的日志
100
+
101
+ >>>logs= result.getLogs()
102
+ {...}
103
+ '''
104
+ result = []
105
+ length = len(self._receiver.messages)
106
+ if (length > self.__logsIndex):
107
+ for num in range(self.__logsIndex, length):
108
+ val = self.getMessage(num)
109
+ if val['type'] == 'log':
110
+ result.append(val)
111
+ self.__logsIndex = length
112
+ return result
113
+
114
+
115
+ @property
116
+ def end(self):
117
+ """
118
+ 获取当前连接状态
119
+
120
+ :returns: 当前连接状态 0:关闭 1:打开
121
+ """
122
+ return self._receiver.end
cloudpss/utils/IO.py CHANGED
@@ -5,6 +5,7 @@ import yaml
5
5
  import gzip
6
6
  import base64
7
7
  import struct
8
+ import zstandard as zstd
8
9
 
9
10
 
10
11
  def float32Array(_loader, node):
@@ -56,7 +57,8 @@ def int32Array(_loader, node):
56
57
  yaml.add_constructor('tag:yaml.org,2002:js/Float32Array', float32Array)
57
58
  yaml.add_constructor('tag:yaml.org,2002:js/Float64Array', float64Array)
58
59
  yaml.add_constructor('tag:yaml.org,2002:js/Uint8Array', uint8Array)
59
- yaml.add_constructor('tag:yaml.org,2002:js/Uint8ClampedArray', uint8ClampedArray)
60
+ yaml.add_constructor('tag:yaml.org,2002:js/Uint8ClampedArray',
61
+ uint8ClampedArray)
60
62
  yaml.add_constructor('tag:yaml.org,2002:js/Uint16Array', uint16Array)
61
63
  yaml.add_constructor('tag:yaml.org,2002:js/Uint32Array', uint32Array)
62
64
  yaml.add_constructor('tag:yaml.org,2002:js/Int8Array', int8Array)
@@ -73,7 +75,7 @@ class IO(object):
73
75
  def serialize(obj, format, compress='gzip') -> bytes:
74
76
  """
75
77
  根据format序列化模型
76
- format 支持 json, ubjson, yaml
78
+ format 支持 json, ubjson, yaml, zstd
77
79
  compress 支持 gzip
78
80
  """
79
81
  result = None
@@ -87,13 +89,15 @@ class IO(object):
87
89
  assert False, 'format not support'
88
90
  if compress == 'gzip':
89
91
  return gzip.compress(result)
92
+ if compress == 'zstd':
93
+ return zstd.ZstdCompressor().compress(result)
90
94
  return result
91
95
 
92
96
  @staticmethod
93
97
  def deserialize(byt, format):
94
98
  """
95
99
  根据format反序列化模型
96
- format 支持 json, ubjson, yaml
100
+ format 支持 json, ubjson, yaml, zstd
97
101
  """
98
102
  if format == 'json':
99
103
  return json.loads(byt)
@@ -111,12 +115,17 @@ class IO(object):
111
115
  """
112
116
  ### 读取文件
113
117
  f = open(file, 'r+', encoding='utf-8')
114
- t = f.buffer.read(2)
118
+ t = f.buffer.read(4)
115
119
  f.close()
116
120
  ### 判断文件格式是否是gzip或其他格式
117
- if t == b'\x1f\x8b':
121
+ if t[0:2] == b'\x1f\x8b':
118
122
  with gzip.open(file, 'rb') as input_file:
119
123
  return IO.deserialize(input_file.read(), format) # type:ignore
124
+ if t == b'\x28\xb5\x2f\xfd':
125
+ with open(file, 'rb') as input_file:
126
+ return IO.deserialize(
127
+ zstd.ZstdDecompressor().decompress(input_file.read()),
128
+ format)
120
129
  else:
121
130
  with open(file, 'rb') as f:
122
131
  data = f.read()
@@ -127,7 +136,7 @@ class IO(object):
127
136
  def dump(obj, file, format, compress='gzip'):
128
137
  """
129
138
  根据format将模型保存到文件中
130
- format 支持 json, ubjson, yaml
139
+ format 支持 json, ubjson, yaml, zstd
131
140
  compress 支持 gzip
132
141
  """
133
142
  ### 序列化
@@ -147,7 +156,9 @@ if __name__ == '__main__':
147
156
  ]
148
157
  IO.dump(obj, 'output.json.gz', 'json')
149
158
  IO.dump(obj, 'output.ubjson.gz', 'ubjson')
150
- IO.dump(obj, 'output.yaml.gz', 'yaml')
159
+ IO.dump(obj, 'output.yaml.gz', 'yaml') # type: ignore
160
+ IO.dump(obj, 'output.yaml.zstd', 'yaml', 'zstd') # type: ignore
151
161
  print(IO.load('output.json.gz', 'json'))
152
162
  print(IO.load('output.ubjson.gz', 'ubjson'))
153
163
  print(IO.load('output.yaml.gz', 'yaml'))
164
+ print(IO.load('output.yaml.zstd', 'yaml'))
@@ -24,7 +24,7 @@ def request(method, uri, baseUrl=None, params={}, token=None, **kwargs):
24
24
  raise Exception(
25
25
  '当前SDK版本(ver 3.X.X)与服务器版本(3.0.0 以下)不兼容,请更换服务器地址或更换SDK版本。')
26
26
  os.environ['X_CLOUDPSS_VERSION'] = r.headers['X-Cloudpss-Version']
27
- if float(r.headers['X-Cloudpss-Version']) > 4:
27
+ if float(r.headers['X-Cloudpss-Version']) >= 5:
28
28
  raise Exception('当前SDK版本(ver '+__version__ +')与服务器版本(ver ' +
29
29
  r.headers['X-Cloudpss-Version'] +
30
30
  '.X.X)不兼容,请更换服务器地址或更换SDK版本(pip 使用 pip install -U cloudpss 命令更新, conda 使用 conda update cloudpss 命令更新)。')
cloudpss/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = '4.0.0-alpha.7'
1
+ __version__ = '4.0.2'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudpss
3
- Version: 4.0.0a7
3
+ Version: 4.0.2
4
4
  Summary: cloudpss sdk
5
5
  Home-page: https://www.cloudpss.net
6
6
  Author: cloudpss
@@ -1,10 +1,10 @@
1
1
  cloudpss/__init__.py,sha256=Ov8K45KxSsPalPErvTRUb2GvPdJ3myucFqx7s37_YZo,777
2
2
  cloudpss/verify.py,sha256=KF4Gd59DGvCyIEkRD7rNnekWw22XxJpi3DW6keb6j4c,1498
3
- cloudpss/version.py,sha256=X8aCp5AzQdKxy0Hj-PzIAhbNl8_w6ZPVURdg7sxXObw,29
3
+ cloudpss/version.py,sha256=X2FSVyXfKfCh487cbRC3bWEH0TAFIoyQIus2dzhKa3U,21
4
4
  cloudpss/dslab/DSLabFinancialResult.py,sha256=7_ho5Xzm9ufcMXo1wCjxJe4VQxqod-6jpvVF3XjlXcw,3612
5
5
  cloudpss/dslab/__init__.py,sha256=rm3bUFSet3KZYrkKo6pfMBNfjvR3U1rwnTnEA5sE87Q,44
6
- cloudpss/dslab/dataManageModel.py,sha256=F710Kt4wamUB1hrUXjICixiwyE9BWysNy1J3uYgWxwE,10131
7
- cloudpss/dslab/dslab.py,sha256=3Po00COxYxQ40Y_IJigXoodxwuC3IQo98CtlYsfhxaY,6332
6
+ cloudpss/dslab/dataManageModel.py,sha256=_a_LiZvnOup71ehgRlI5Rzu1tMO9zSF5AVBlAWcRh90,10710
7
+ cloudpss/dslab/dslab.py,sha256=XqbciGqDd22d5u983ysQQpizHBwFzuVBeGcGdIr8Ksc,8848
8
8
  cloudpss/dslab/financialAnalysisModel.py,sha256=o-s6rR74UIjj5V9oB9fjdyo3Q3ogtY3QPhxSXbiBHXk,5058
9
9
  cloudpss/dslab/files/__init__.py,sha256=l2g0VadtTiMW39zwCwHPHUC01Kbklb_nFUPVeQ16FwM,58
10
10
  cloudpss/dslab/files/curveData.py,sha256=InlQ_6ZfVkFdhK65PldvIbw_X7Pys2ci4jexZ0flL6c,4291324
@@ -19,6 +19,22 @@ cloudpss/ieslab/IESLabPlan.py,sha256=vWRExT0AE5VbR1DaQSINE65sbg0F6cXC7meXNT6Ap6Q
19
19
  cloudpss/ieslab/IESLabSimulation.py,sha256=sd27IZ2NIGqUQWWVsobUOOY_7b1QzVbUMeSmFWKianw,1746
20
20
  cloudpss/ieslab/PlanModel.py,sha256=Dk5ZS_8IASqzMlLeN_gIDk76Gm_ybXjGY4pULBsWvEw,4790
21
21
  cloudpss/ieslab/__init__.py,sha256=kiyUaGRgtwqs0EI2dBBqLVK5V65u1PcY7YTFJX1T0yw,186
22
+ cloudpss/job/__init__.py,sha256=3UIFZYjJTzuckM61o8kim1c3PWt2SSHTL72jrGu5IzI,51
23
+ cloudpss/job/job.py,sha256=wgw0haur_-4W51vecgSSqKqH7TPmjIa218yJn3TOO6k,8267
24
+ cloudpss/job/jobMachine.py,sha256=wtJ7X9Cu-4KGpYvxLbvCVWv5Ku0CvsgmfThK8knLfoI,268
25
+ cloudpss/job/jobPolicy.py,sha256=k5Ur9LYvTnWNgI9yqeCjs5E499DSOrYbYgywU8-zpC4,4083
26
+ cloudpss/job/jobQueue.py,sha256=31Q7NCjb_51d1JOokVyxIfP1r6S_A-ObySJKwt8MxR8,416
27
+ cloudpss/job/jobReceiver.py,sha256=kX59JLky86AXwgCWw0abfKu-yDWQ97YAV-sOObF5Kgk,740
28
+ cloudpss/job/jobTres.py,sha256=1wwdvwxpYKOfsZ1R95Wkhyg_QYMzqzKoaLJLdB-bD88,148
29
+ cloudpss/job/messageStreamReceiver.py,sha256=PZU31qIz0ly_Mmk2K1m23Wo6I7MxCnrbZfEYhrNWZZQ,3512
30
+ cloudpss/job/messageStreamSender.py,sha256=kVUrmnMCAFWwmINBzXbNvW09OyZ74UtdCrx5JhlzRwM,2097
31
+ cloudpss/job/view/EMTView.py,sha256=odEWQVEkHkx75EyN-vk9W05yXvTjBOHfWxhFJrBgv1I,6839
32
+ cloudpss/job/view/IESLabSimulationView.py,sha256=_hD-fdEwC6U8hQYbXliNMEii0WxiteglQZuLOSQmMOM,76
33
+ cloudpss/job/view/IESLabTypicalDayView.py,sha256=Za57f9TYcBxYeKo8fnEcOjl517v1LMDN0ua537fxcjc,1168
34
+ cloudpss/job/view/IESView.py,sha256=bf654u2GFIarhtbPm4bgpUwzpc_hVqSCdw9dDPxKpnU,3755
35
+ cloudpss/job/view/PowerFlowView.py,sha256=xg-KX37ENxYtEV7CRUszXfsyDmTsOKCh7agSg5K6EWQ,2089
36
+ cloudpss/job/view/__init__.py,sha256=j_X6aFeY-wa6_0r1EixE0rrvGz_67m4fIqOLmUbkxqY,1466
37
+ cloudpss/job/view/view.py,sha256=piPoryU3gXBMNuXxuKBXhJEwM8EYHpVRU2Sq_mNoVcM,3150
22
38
  cloudpss/model/__init__.py,sha256=SNq-bfwcQtDHtTNBYppfUEs8wkjfrQfGeywx7igmvOs,151
23
39
  cloudpss/model/jobDefinitions.py,sha256=XqjaaWOLU7zlVHM7TQJbZ3rNBWfBY7eT-5aE6EAatcQ,3770
24
40
  cloudpss/model/model.py,sha256=cMIkamN5wbtCtqQTjgQ8hRa6-oso6HQfnuYklwJXOII,25712
@@ -41,14 +57,14 @@ cloudpss/runner/result.py,sha256=MkoTQly7FjKj9mde3bnv4vBDfGJ2U4eK-HhxxdwmemE,131
41
57
  cloudpss/runner/runner.py,sha256=NbBJfCVFk9n3eYsQSjTaK12zohwqKYak-lEEOo8vWDo,5316
42
58
  cloudpss/runner/storage.py,sha256=zFET_zwPIOF2Cnh9sgFiS0HFxV1OmVsU34bGUQ6PpkA,4162
43
59
  cloudpss/runner/transform.py,sha256=krOgTZiJSJAb5QSwerAqlbC4Ma0PKi__0WOZlAxw4O8,11613
44
- cloudpss/utils/IO.py,sha256=0i0v-otQwcYJEDf7gGvfsJTAf0N89yimfKS--DNyP3s,4796
60
+ cloudpss/utils/IO.py,sha256=Uh1NOlBn15Jl5_aWS2QRO2-QsKlFT9o8DPtP8-8Z2PA,5314
45
61
  cloudpss/utils/__init__.py,sha256=NU5ZAeXH733nJKooH_1cdT9ntPEYRG4Kk3PA7P6bK_s,291
46
62
  cloudpss/utils/dataEncoder.py,sha256=5PUPb844eOGgFnYrMM8bdjdKH_MZz0lk-67uo8TvwEo,885
47
63
  cloudpss/utils/graphqlUtil.py,sha256=swl6XT1UmUQHdHjMWw3M0i8meEmVKNQvX0SHsbgg8TU,255
48
- cloudpss/utils/httprequests.py,sha256=sIf2ZDYwHtjm9D_zBzdTDqWy8KReQajOV_BS8Wd6m7w,1642
64
+ cloudpss/utils/httprequests.py,sha256=-RYi1Dc4QDqqupuw0x-lq74dFvCqPrZfCJKgrdolEpk,1643
49
65
  cloudpss/utils/matlab.py,sha256=SLwVt790BjklJK2XNELt9R2n_1ej9Y8QsTIdFkKXLWE,795
50
66
  cloudpss/utils/yamlLoader.py,sha256=KRlRkHFltOjqxa_sesdBLf1W5J7XTgvubszsSw-XR0U,2885
51
- cloudpss-4.0.0a7.dist-info/METADATA,sha256=mPxaRnNzxCVZYf24XsQKtWmz3R0lsJ5ewPnLGRgpKuQ,2320
52
- cloudpss-4.0.0a7.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
53
- cloudpss-4.0.0a7.dist-info/top_level.txt,sha256=wS9qPU4-aWM9ouzMOx34Nlq-GkdQKpr9vBskwut1BD8,9
54
- cloudpss-4.0.0a7.dist-info/RECORD,,
67
+ cloudpss-4.0.2.dist-info/METADATA,sha256=B5ede-aq6jNV-jXKAtp_qF_KDrz-Z2ZekA90onhHEVA,2318
68
+ cloudpss-4.0.2.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
69
+ cloudpss-4.0.2.dist-info/top_level.txt,sha256=wS9qPU4-aWM9ouzMOx34Nlq-GkdQKpr9vBskwut1BD8,9
70
+ cloudpss-4.0.2.dist-info/RECORD,,