cloudpss 3.1.3__py3-none-any.whl → 3.1.3b1__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.
cloudpss/utils/IO.py ADDED
@@ -0,0 +1,153 @@
1
+ import io
2
+ import json
3
+ import ubjson
4
+ import yaml
5
+ import gzip
6
+ import base64
7
+ import struct
8
+
9
+
10
+ def float32Array(_loader, node):
11
+ data = base64.b64decode(node.value)
12
+ return list(struct.unpack('f' * (len(data) // 4), data))
13
+
14
+
15
+ def float64Array(_loader, node):
16
+ data = base64.b64decode(node.value)
17
+ return list(struct.unpack('d' * (len(data) // 8), data))
18
+
19
+
20
+ def uint8Array(_loader, node):
21
+ data = base64.b64decode(node.value)
22
+ return list(struct.unpack('B' * (len(data) // 1), data))
23
+
24
+
25
+ def uint8ClampedArray(_loader, node):
26
+ data = base64.b64decode(node.value)
27
+ return list(struct.unpack('B' * (len(data) // 1), data))
28
+
29
+
30
+ def uint16Array(_loader, node):
31
+ data = base64.b64decode(node.value)
32
+ return list(struct.unpack('H' * (len(data) // 2), data))
33
+
34
+
35
+ def uint32Array(_loader, node):
36
+ data = base64.b64decode(node.value)
37
+ return list(struct.unpack('I' * (len(data) // 4), data))
38
+
39
+
40
+ def int8Array(_loader, node):
41
+ data = base64.b64decode(node.value)
42
+ return list(struct.unpack('b' * (len(data) // 1), data))
43
+
44
+
45
+ def int16Array(_loader, node):
46
+ data = base64.b64decode(node.value)
47
+ return list(struct.unpack('h' * (len(data) // 2), data))
48
+
49
+
50
+ def int32Array(_loader, node):
51
+ data = base64.b64decode(node.value)
52
+ return list(struct.unpack('i' * (len(data) // 4), data))
53
+
54
+
55
+ #type:ignore
56
+ yaml.add_constructor('tag:yaml.org,2002:js/Float32Array', float32Array)
57
+ yaml.add_constructor('tag:yaml.org,2002:js/Float64Array', float64Array)
58
+ 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/Uint16Array', uint16Array)
61
+ yaml.add_constructor('tag:yaml.org,2002:js/Uint32Array', uint32Array)
62
+ yaml.add_constructor('tag:yaml.org,2002:js/Int8Array', int8Array)
63
+ yaml.add_constructor('tag:yaml.org,2002:js/Int16Array', int16Array)
64
+ yaml.add_constructor('tag:yaml.org,2002:js/Int32Array', int32Array)
65
+
66
+
67
+ class IO(object):
68
+ """
69
+ IO 模块,抽象 bytes/file <-> object 的 load/dump 操作,支持 gzip 压缩和 yaml、ubjson 序列化 读取时依据 magic number 自动识别压缩格式,写入时默认使用 gzip
70
+ """
71
+
72
+ @staticmethod
73
+ def serialize(obj, format, compress='gzip') -> bytes:
74
+ """
75
+ 根据format序列化模型
76
+ format 支持 json, ubjson, yaml
77
+ compress 支持 gzip
78
+ """
79
+ result = None
80
+ if format == 'json':
81
+ result = json.dumps(obj).encode(encoding="utf-8")
82
+ if format == 'ubjson':
83
+ result = ubjson.dumpb(obj)
84
+ if format == 'yaml':
85
+ result = yaml.dump(obj).encode(encoding="utf-8")
86
+ if result is None:
87
+ assert False, 'format not support'
88
+ if compress == 'gzip':
89
+ return gzip.compress(result)
90
+ return result
91
+
92
+ @staticmethod
93
+ def deserialize(byt, format):
94
+ """
95
+ 根据format反序列化模型
96
+ format 支持 json, ubjson, yaml
97
+ """
98
+ if format == 'json':
99
+ return json.loads(byt)
100
+ if format == 'ubjson':
101
+ return ubjson.loadb(byt)
102
+ if format == 'yaml':
103
+ return yaml.load(io.BytesIO(byt), yaml.FullLoader)
104
+ assert False, 'format not support'
105
+
106
+ @staticmethod
107
+ def load(file, format):
108
+ """
109
+ 根据format从文件中加载模型
110
+ format 支持 json, ubjson, yaml
111
+ """
112
+ ### 读取文件
113
+ f = open(file, 'r+', encoding='utf-8')
114
+ t = f.buffer.read(2)
115
+ f.close()
116
+ ### 判断文件格式是否是gzip或其他格式
117
+ if t == b'\x1f\x8b':
118
+ with gzip.open(file, 'rb') as input_file:
119
+ return IO.deserialize(input_file.read(), format) # type:ignore
120
+ else:
121
+ with open(file, 'rb') as f:
122
+ data = f.read()
123
+ f.close()
124
+ return IO.deserialize(data, format)
125
+
126
+ @staticmethod
127
+ def dump(obj, file, format, compress='gzip'):
128
+ """
129
+ 根据format将模型保存到文件中
130
+ format 支持 json, ubjson, yaml
131
+ compress 支持 gzip
132
+ """
133
+ ### 序列化
134
+ data = IO.serialize(obj, format, compress)
135
+ ### 写入文件
136
+ with open(file, 'wb') as f:
137
+ f.write(data)
138
+ f.close()
139
+
140
+
141
+ if __name__ == '__main__':
142
+ obj = [
143
+ 123, 1.25, 43121609.5543, 12345.44e40, 'a', 'here is a string', None,
144
+ True, False, [[1, 2], 3, [4, 5, 6], 7], {
145
+ 'a dict': 456
146
+ }
147
+ ]
148
+ IO.dump(obj, 'output.json.gz', 'json')
149
+ IO.dump(obj, 'output.ubjson.gz', 'ubjson')
150
+ IO.dump(obj, 'output.yaml.gz', 'yaml')
151
+ print(IO.load('output.json.gz', 'json'))
152
+ print(IO.load('output.ubjson.gz', 'ubjson'))
153
+ print(IO.load('output.yaml.gz', 'yaml'))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudpss
3
- Version: 3.1.3
3
+ Version: 3.1.3b1
4
4
  Summary: cloudpss sdk
5
5
  Home-page: https://www.cloudpss.net
6
6
  Author: cloudpss
@@ -1,18 +1,23 @@
1
- cloudpss/__init__.py,sha256=gI_1wEW-O5zYm8SKQDadJLMjjt976RODbYQJvDvFw7g,752
1
+ cloudpss/__init__.py,sha256=IyU-C8fnzgiIyDNV1AzankkTPJr2VzaWWRdaHjeKijA,803
2
2
  cloudpss/verify.py,sha256=_10NAmVv2KSv8xLazcjjlHpVARNEhCCD4fe3jjH7YyQ,993
3
+ cloudpss/dslab/DSLabFinancialResult.py,sha256=7_ho5Xzm9ufcMXo1wCjxJe4VQxqod-6jpvVF3XjlXcw,3612
4
+ cloudpss/dslab/__init__.py,sha256=rm3bUFSet3KZYrkKo6pfMBNfjvR3U1rwnTnEA5sE87Q,44
5
+ cloudpss/dslab/dataManageModel.py,sha256=qPCccBMy7bpLl0-jH6ynh5JMImiOik4aym7EaUFzrEo,10241
6
+ cloudpss/dslab/dslab.py,sha256=JS1P1HuWfBDwP7KCnZr1FDyBBP7WIcuDagvayrpmkAs,2156
7
+ cloudpss/dslab/financialAnalysisModel.py,sha256=4eZsE0lSnwfE0dL_pYZwms9gtiYf08S8XR_JzglBlHQ,4123
3
8
  cloudpss/function/__init__.py,sha256=TNzChB-gQF6oB62F423evpUlgcp6s03D4pKKs89Lz4Q,1629
4
9
  cloudpss/function/function.py,sha256=llomkfnTmKMiFJYJ2mKnmAEoIjTNVCnjCUUyiJMOV1s,29
5
10
  cloudpss/function/functionExecution.py,sha256=GcyhRlgYjRnJrreKOtERExbCp6XDedUlT0L7k-uqyZM,14640
6
11
  cloudpss/function/job.py,sha256=LdzaTyjvBcMZIyLstSZnt79d2eREljx2HnNoilDp03A,13162
7
- cloudpss/ieslab/DataManageModel.py,sha256=gzTL8TR0Qf9XjBG6mmmg58unGlnkMBRh3sk9iWwONJM,19493
8
- cloudpss/ieslab/EvaluationModel.py,sha256=MWqeN_zN4xUmXOkL80rPbXg39CERT0h96DCoelGVnfY,6452
9
- cloudpss/ieslab/IESLabPlan.py,sha256=CkPOkSVhrVsN8keq7RC6z5fAcfe1o6RVYX_vnxvOnOU,4422
12
+ cloudpss/ieslab/DataManageModel.py,sha256=YMpwp04GmkaK1gCnzp5tNAoPwkVfa9AkJPviqNOat7s,19445
13
+ cloudpss/ieslab/EvaluationModel.py,sha256=s5XNH2mvqrxR2JHW_7mQxlqdAADKdrkfcz6d7wkwpao,6685
14
+ cloudpss/ieslab/IESLabPlan.py,sha256=HODJ5YRamKTMbtQ0-cMsMPsS1bcc9FF6NooXhd2Q55I,4544
10
15
  cloudpss/ieslab/IESLabSimulation.py,sha256=x1enNSymixh0OIwBB4roCJAClXFRw_uj1YR_s-692wk,1700
11
- cloudpss/ieslab/PlanModel.py,sha256=5eJHEugk3EG96VhUrQYSqTPYGuHVNBYGIMx8OsFSZwo,3012
12
- cloudpss/ieslab/__init__.py,sha256=cXCOedAtqbB6uewqJ5R5wqyUtZzEuoKbqBkDUzefl-Y,126
16
+ cloudpss/ieslab/PlanModel.py,sha256=7Kq2fa2zDV9bE6mEIc3OoS5hHS8HWhR11qpvVjP30Mw,3019
17
+ cloudpss/ieslab/__init__.py,sha256=kiyUaGRgtwqs0EI2dBBqLVK5V65u1PcY7YTFJX1T0yw,186
13
18
  cloudpss/model/__init__.py,sha256=SNq-bfwcQtDHtTNBYppfUEs8wkjfrQfGeywx7igmvOs,151
14
- cloudpss/model/jobDefinitions.py,sha256=t9FP39fzb2BPOVGb094rNBdxTcsGRDtooZEwN7AMiE4,2755
15
- cloudpss/model/model.py,sha256=RDaxDrO61bAJMjskJu8Q69GhLxVB1T6Wvrl-OqAkQTs,21731
19
+ cloudpss/model/jobDefinitions.py,sha256=XqjaaWOLU7zlVHM7TQJbZ3rNBWfBY7eT-5aE6EAatcQ,3770
20
+ cloudpss/model/model.py,sha256=GQT11Lr7WuYml__LsLoVjlvToFW0Y_Z03LNZvsamrZ4,25877
16
21
  cloudpss/model/revision.py,sha256=MHdw2f1Gu_uXfx65hV6neO2YfUZXa0CEZN-zQ5XaFeQ,3736
17
22
  cloudpss/model/topology.py,sha256=eJVxvdVOjvLz6jd3Q4MgAMBKVvM8ZWby8gLkIta-K5Y,2234
18
23
  cloudpss/model/implements/__init__.py,sha256=88L_wF9SSzxsbtqwStWIPH4LxaKq7TVcssHQ62YBnls,67
@@ -21,22 +26,24 @@ cloudpss/model/implements/diagram.py,sha256=N5RrrywmxOmc2KvP0nC-NiECT1tEhgJZPtiN
21
26
  cloudpss/model/implements/implement.py,sha256=Uld96tjXVDbVUNV8xscyy_nZWLHr3iP2DqA6S3p-XJE,954
22
27
  cloudpss/project/__init__.py,sha256=fpskY-cJGmMcTg1naVzNPtJaRG1xmSc2CFjDTin64Cw,51
23
28
  cloudpss/project/project.py,sha256=sGvJEd9yEB5NARRa64gwF96hK69gQSmwX8lQANLhBos,17700
24
- cloudpss/runner/IESLabEvaluationResult.py,sha256=zJD3ktvBV0dXeiTKwBiqrtt_v-ng7dCeG0K5axo7mhk,5232
25
- cloudpss/runner/IESLabPlanResult.py,sha256=4gviTMQos8R_wkALMFncmnQuACtxp3G4FsOqIBs8kjU,5226
29
+ cloudpss/runner/IESLabEvaluationResult.py,sha256=uFNLiN5kzlzSGlLIq3ybuRwB-ufYytflVrXV5g7voOU,5841
30
+ cloudpss/runner/IESLabPlanResult.py,sha256=jSvRxOsDK4Tb3u3uTXzzQlp-1TwIg7tC7CptfAy5ha0,6260
26
31
  cloudpss/runner/IESLabTypicalDayResult.py,sha256=jQSiXvX1ZeT9swiD_jAMAtf56XTBdu4r87XbQizrRns,7499
32
+ cloudpss/runner/MessageStreamReceiver.py,sha256=MBc1HLU_3SOBKvi8rlEiEqhUSiBsQRzMVhEmS4MCKj8,5883
27
33
  cloudpss/runner/__init__.py,sha256=aZ00V2AzQNBbER0xi6pqFFyiLFM-6r1fxvzdxxUJA_4,241
28
34
  cloudpss/runner/receiver.py,sha256=d8vOtBJ_Iqo3syJXgFFxwii1MXF7CyHRoXy6eT81Zq4,4096
29
- cloudpss/runner/result.py,sha256=vFkMmsziMrnH4IehffyNs_bE9M1Ymqk7uiv9QDsqP88,13125
30
- cloudpss/runner/runner.py,sha256=R_Q61QZAfbomPywynthXEhXO-IpYWu9sBOstdM8JXGY,5200
35
+ cloudpss/runner/result.py,sha256=MkoTQly7FjKj9mde3bnv4vBDfGJ2U4eK-HhxxdwmemE,13125
36
+ cloudpss/runner/runner.py,sha256=Ulm11z4FkPCHnOpi-s3zV4wco8k037wQQ6VoNFCrbxo,5295
31
37
  cloudpss/runner/storage.py,sha256=zFET_zwPIOF2Cnh9sgFiS0HFxV1OmVsU34bGUQ6PpkA,4162
32
38
  cloudpss/runner/transform.py,sha256=krOgTZiJSJAb5QSwerAqlbC4Ma0PKi__0WOZlAxw4O8,11613
39
+ cloudpss/utils/IO.py,sha256=0i0v-otQwcYJEDf7gGvfsJTAf0N89yimfKS--DNyP3s,4796
33
40
  cloudpss/utils/__init__.py,sha256=NU5ZAeXH733nJKooH_1cdT9ntPEYRG4Kk3PA7P6bK_s,291
34
41
  cloudpss/utils/dataEncoder.py,sha256=5PUPb844eOGgFnYrMM8bdjdKH_MZz0lk-67uo8TvwEo,885
35
42
  cloudpss/utils/graphqlUtil.py,sha256=swl6XT1UmUQHdHjMWw3M0i8meEmVKNQvX0SHsbgg8TU,255
36
43
  cloudpss/utils/httprequests.py,sha256=Is03ZwX7FnKCcjVZqTSC2tL2tnA4EWI9k5YAiz71WAA,1490
37
44
  cloudpss/utils/matlab.py,sha256=SLwVt790BjklJK2XNELt9R2n_1ej9Y8QsTIdFkKXLWE,795
38
45
  cloudpss/utils/yamlLoader.py,sha256=KRlRkHFltOjqxa_sesdBLf1W5J7XTgvubszsSw-XR0U,2885
39
- cloudpss-3.1.3.dist-info/METADATA,sha256=kuN0uiocO1bg_XCUTSaR0nDk3By1eLHyP2cQ7w5BMpM,2318
40
- cloudpss-3.1.3.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
41
- cloudpss-3.1.3.dist-info/top_level.txt,sha256=wS9qPU4-aWM9ouzMOx34Nlq-GkdQKpr9vBskwut1BD8,9
42
- cloudpss-3.1.3.dist-info/RECORD,,
46
+ cloudpss-3.1.3b1.dist-info/METADATA,sha256=WEHybrQGsKJSmtqvwyrMrHQYyWLLOZeSKD-dZ2ceMiE,2320
47
+ cloudpss-3.1.3b1.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
48
+ cloudpss-3.1.3b1.dist-info/top_level.txt,sha256=wS9qPU4-aWM9ouzMOx34Nlq-GkdQKpr9vBskwut1BD8,9
49
+ cloudpss-3.1.3b1.dist-info/RECORD,,