cloudpss 4.5.1a4__py3-none-any.whl → 4.5.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.
- cloudpss/__init__.py +1 -2
- cloudpss/dslab/dataManageModel.py +0 -19
- cloudpss/dslab/dslab.py +0 -23
- cloudpss/job/TemplateManager.py +0 -1
- cloudpss/job/job.py +3 -5
- cloudpss/job/messageStreamReceiver.py +11 -44
- cloudpss/job/messageStreamSender.py +5 -5
- cloudpss/job/result/IESLabTypicalDayResult.py +34 -36
- cloudpss/job/result/__init__.py +1 -0
- cloudpss/job/result/result.py +1 -0
- cloudpss/runner/result.py +1 -0
- cloudpss/runner/runner.py +1 -15
- cloudpss/utils/httprequests.py +1 -1
- cloudpss/version.py +1 -1
- {cloudpss-4.5.1a4.dist-info → cloudpss-4.5.2.dist-info}/METADATA +1 -1
- {cloudpss-4.5.1a4.dist-info → cloudpss-4.5.2.dist-info}/RECORD +18 -18
- {cloudpss-4.5.1a4.dist-info → cloudpss-4.5.2.dist-info}/WHEEL +0 -0
- {cloudpss-4.5.1a4.dist-info → cloudpss-4.5.2.dist-info}/top_level.txt +0 -0
cloudpss/__init__.py
CHANGED
@@ -9,11 +9,10 @@ from . import function
|
|
9
9
|
from .job import Job
|
10
10
|
from .function import FunctionExecution
|
11
11
|
from .version import __version__
|
12
|
-
from .dslab import DSLab
|
13
12
|
__all__ = [
|
14
13
|
'setToken', 'Model', 'ModelRevision', 'ModelTopology', 'Runner', 'Result',
|
15
14
|
'PowerFlowResult', 'EMTResult', 'MatlabDataEncoder', 'DateTimeEncode',
|
16
|
-
'function', 'Project', 'currentJob', 'IESLabSimulation', 'IESLabPlan','IESLabOpt','__version__','Job'
|
15
|
+
'function', 'Project', 'currentJob', 'IESLabSimulation', 'IESLabPlan','IESLabOpt','__version__','Job'
|
17
16
|
]
|
18
17
|
|
19
18
|
|
@@ -1,7 +1,6 @@
|
|
1
1
|
from ..utils import request, fileLoad, graphql_request
|
2
2
|
import json
|
3
3
|
import time, datetime
|
4
|
-
import urllib.parse
|
5
4
|
import copy
|
6
5
|
import os
|
7
6
|
from cloudpss.dslab.files import getCurveData
|
@@ -269,24 +268,6 @@ class DataManageModel(object):
|
|
269
268
|
if data.get('extra', None) is None:
|
270
269
|
return None
|
271
270
|
return data.get('extra', None).get('data', None)
|
272
|
-
|
273
|
-
def UpdateItemExtra(self, kind, data):
|
274
|
-
'''
|
275
|
-
更新kind类型对应数据项的基准出力曲线、负荷曲线、策略曲线数据
|
276
|
-
:params: kind str类型,数据的种类标识,包含:光伏、光伏曲线、风机、风机曲线、燃气、燃气曲线、水电、水电曲线、火电、火电曲线、生物质发电、生物质发电曲线、垃圾电厂、垃圾电厂曲线、传输线、变压器、开关、负荷分类、负荷用户、储能设备、储能运行策略、上网电价、输配电价、常数电价、阶梯电价、分时电价、分时阶梯电价
|
277
|
-
:params: data dict类型,表示添加的数据内容,其数据结构应满足对应数据项的结构要求,形如:{'data': {}, 'extra': [], 'id': ""}
|
278
|
-
|
279
|
-
:return: list<dict>类型,返回该种类下所有数据项的列表
|
280
|
-
'''
|
281
|
-
url = f"{self._baseUri}rest/{kind}"
|
282
|
-
r = {
|
283
|
-
'id': data.get('id', ''),
|
284
|
-
'data': data.get('data', {}),
|
285
|
-
'extra': data.get('extra', []),
|
286
|
-
}
|
287
|
-
|
288
|
-
self._updateItemData(url, r)
|
289
|
-
return self._fetchItemData(url)
|
290
271
|
|
291
272
|
class DSLabDataManageModel(DataManageModel):
|
292
273
|
_baseUri = 'api/dslab/'
|
cloudpss/dslab/dslab.py
CHANGED
@@ -146,29 +146,6 @@ class DSLab(object):
|
|
146
146
|
raise Exception("不是储能规划方案内核运行生成算法的计算方案")
|
147
147
|
return self.run(job=job, name=name)
|
148
148
|
|
149
|
-
def runIESShortCurrent(self,job=None,name=None, **kwargs)->Runner[IESResult]:
|
150
|
-
'''
|
151
|
-
运行 短路电流计算 内核,如果当前 model 没有创建 Job 时报错,默认使用第一个计算方案,进行仿真。
|
152
|
-
|
153
|
-
:param: job 计算方案名称,可选,字符串类型或者字典类型,默认使用第一个计算方案,如果同名使用最靠前一个
|
154
|
-
:params name: 任务名称,为空时使用项目的参数方案名称和计算方案名称
|
155
|
-
|
156
|
-
:return: runner Runner[IESResult]
|
157
|
-
'''
|
158
|
-
rid = 'function/CloudPSS/short-circuit-current-calculation'
|
159
|
-
if job is None:
|
160
|
-
currentJob = self.model.context['currentJob']
|
161
|
-
job = self.model.jobs[currentJob]
|
162
|
-
if job['rid'] != rid:
|
163
|
-
for j in self.model.jobs:
|
164
|
-
if j['rid'] == rid:
|
165
|
-
job = j
|
166
|
-
if job is None:
|
167
|
-
raise Exception("找不到短路电流计算方案内核运行的计算方案")
|
168
|
-
if job['rid'] != rid:
|
169
|
-
raise Exception("不是短路电流计算方案内核运行生成算法的计算方案")
|
170
|
-
return self.run(job=job, name=name)
|
171
|
-
|
172
149
|
@staticmethod
|
173
150
|
def createProjectGroup(name, description=None, createById=None):
|
174
151
|
'''
|
cloudpss/job/TemplateManager.py
CHANGED
cloudpss/job/job.py
CHANGED
@@ -202,7 +202,7 @@ class Job(Generic[T]):
|
|
202
202
|
if receiver is not None:
|
203
203
|
self.__receiver = receiver
|
204
204
|
if self.__receiver is None:
|
205
|
-
self.__receiver = MessageStreamReceiver(self
|
205
|
+
self.__receiver = MessageStreamReceiver(self)
|
206
206
|
self.__receiver.connect(**kwargs)
|
207
207
|
return self.__receiver
|
208
208
|
|
@@ -216,7 +216,7 @@ class Job(Generic[T]):
|
|
216
216
|
if sender is not None:
|
217
217
|
self.__sender = sender
|
218
218
|
if self.__sender is None:
|
219
|
-
self.__sender = MessageStreamSender(self
|
219
|
+
self.__sender = MessageStreamSender(self)
|
220
220
|
self.__sender.connect_legacy(**kwargs)
|
221
221
|
return self.__sender
|
222
222
|
|
@@ -259,9 +259,7 @@ class Job(Generic[T]):
|
|
259
259
|
sender = self.write()
|
260
260
|
if resultType is None:
|
261
261
|
resultType = getResultClass(self.context[0])
|
262
|
-
|
263
|
-
|
264
|
-
return self._result
|
262
|
+
return resultType(receiver, sender)
|
265
263
|
|
266
264
|
|
267
265
|
|
@@ -1,9 +1,5 @@
|
|
1
|
-
import datetime
|
2
1
|
import logging
|
3
2
|
import sys
|
4
|
-
|
5
|
-
from cloudpss.job.TemplateManager import TemplateManager
|
6
|
-
|
7
3
|
from .jobReceiver import JobReceiver
|
8
4
|
import os
|
9
5
|
from urllib.parse import urlparse
|
@@ -11,6 +7,7 @@ import websocket
|
|
11
7
|
import pytz
|
12
8
|
import threading
|
13
9
|
import time
|
10
|
+
|
14
11
|
utc_tz = pytz.timezone("UTC")
|
15
12
|
|
16
13
|
from ..utils.IO import IO
|
@@ -21,30 +18,15 @@ class Message(object):
|
|
21
18
|
self.id = id
|
22
19
|
self.token = token
|
23
20
|
|
24
|
-
|
25
|
-
|
21
|
+
|
26
22
|
class MessageStreamReceiver(JobReceiver):
|
27
|
-
def __init__(self,
|
23
|
+
def __init__(self, job):
|
28
24
|
super().__init__()
|
29
|
-
self.
|
25
|
+
self.job = job
|
26
|
+
self.id =self.job.output
|
30
27
|
self.origin = os.environ.get("CLOUDPSS_API_URL", "https://cloudpss.net/")
|
31
28
|
self.__hasOpen = False
|
32
|
-
|
33
|
-
self.timeOffset=0
|
34
|
-
self.lastMessageTime=0
|
35
|
-
|
36
|
-
|
37
|
-
def updateTime(self,timestamp):
|
38
|
-
self.lastMessageTime = timestamp
|
39
|
-
|
40
|
-
## 判断是否到达当前时间点的数据或者消息流结束
|
41
|
-
def isEnd(self):
|
42
|
-
|
43
|
-
if self.status == 1:
|
44
|
-
return True
|
45
|
-
logging.debug('lastMessageTime',self.lastMessageTime)
|
46
|
-
return (self.lastMessageTime/1000)>=time.time()-self.timeOffset
|
47
|
-
|
29
|
+
|
48
30
|
def __path(self, from_=None):
|
49
31
|
if self.id is None:
|
50
32
|
raise Exception("id is None")
|
@@ -57,32 +39,21 @@ class MessageStreamReceiver(JobReceiver):
|
|
57
39
|
|
58
40
|
###下面是兼容Receiver部分功能实现
|
59
41
|
def __on_message_legacy(self, *args, **kwargs):
|
42
|
+
|
60
43
|
if type(args[0]) != websocket.WebSocketApp:
|
61
44
|
message = args[0]
|
62
45
|
else:
|
63
46
|
message = args[1]
|
64
47
|
return self.__on_message(message)
|
48
|
+
|
65
49
|
def __on_message(self, message):
|
66
50
|
|
67
51
|
data = IO.deserialize(message, "ubjson")
|
68
|
-
self.updateTime(data["timestamp"])
|
69
52
|
self.ws.url = self.__path(data["id"])
|
70
53
|
msg = IO.deserialize(data["data"], "ubjson")
|
71
|
-
|
72
|
-
if type(msg) is list:
|
73
|
-
if len(msg) == 3:
|
74
|
-
pass
|
75
|
-
|
76
|
-
templateMessage = self.templates.invoke(msg)
|
77
|
-
# print(templateMessage)
|
78
|
-
for m in templateMessage:
|
79
|
-
self.messages.append(m)
|
80
|
-
return
|
81
|
-
else:
|
82
|
-
self.templates.create(msg)
|
83
|
-
return
|
84
|
-
|
85
54
|
self.messages.append(msg)
|
55
|
+
if(msg['type']=='terminate'):
|
56
|
+
self.close(self.ws)
|
86
57
|
return msg
|
87
58
|
|
88
59
|
|
@@ -130,10 +101,6 @@ class MessageStreamReceiver(JobReceiver):
|
|
130
101
|
|
131
102
|
def __on_open(self,ws, *args, **kwargs):
|
132
103
|
self.ws = ws
|
133
|
-
gmt_format = '%a, %d %b %Y %H:%M:%S GMT'
|
134
|
-
serverTime = datetime.datetime.strptime(ws.sock.headers['date'],gmt_format)
|
135
|
-
self.timeOffset = time.time()+time.timezone-serverTime.timestamp()
|
136
|
-
|
137
104
|
logging.debug(f"MessageStreamReceiver on_open")
|
138
105
|
self._status = 0
|
139
106
|
self.__hasOpen = True
|
@@ -161,7 +128,7 @@ class MessageStreamReceiver(JobReceiver):
|
|
161
128
|
|
162
129
|
|
163
130
|
def connect(self):
|
164
|
-
self._status =
|
131
|
+
self._status = 1
|
165
132
|
path = self.__path()
|
166
133
|
logging.info(f"receive data from websocket: {path}")
|
167
134
|
self.ws = websocket.WebSocketApp(
|
@@ -12,9 +12,9 @@ import logging
|
|
12
12
|
|
13
13
|
|
14
14
|
class MessageStreamSender:
|
15
|
-
def __init__(self,
|
15
|
+
def __init__(self, job):
|
16
16
|
super().__init__()
|
17
|
-
self.
|
17
|
+
self.job = job
|
18
18
|
self.origin = os.environ.get("CLOUDPSS_API_URL", "https://cloudpss.net/")
|
19
19
|
self.__hasOpen = False
|
20
20
|
|
@@ -60,14 +60,14 @@ class MessageStreamSender:
|
|
60
60
|
同步方法连接ws
|
61
61
|
"""
|
62
62
|
self._status = 0
|
63
|
-
if self.input is None:
|
63
|
+
if self.job.input is None:
|
64
64
|
raise Exception("id is None")
|
65
|
-
if self.input == "00000000-0000-0000-0000-000000000000":
|
65
|
+
if self.job.input == "00000000-0000-0000-0000-000000000000":
|
66
66
|
return
|
67
67
|
u = list(urlparse(self.origin))
|
68
68
|
head = "wss" if u[0] == "https" else "ws"
|
69
69
|
|
70
|
-
path = head + "://" + str(u[1]) + "/api/streams/token/" + self.input
|
70
|
+
path = head + "://" + str(u[1]) + "/api/streams/token/" + self.job.input
|
71
71
|
logging.debug(f"MessageStreamSender data from websocket: {path}")
|
72
72
|
|
73
73
|
self.ws = websocket.WebSocketApp(
|
@@ -10,51 +10,49 @@ class IESLabTypicalDayResult(IESResult):
|
|
10
10
|
IESResult.__init__(self, *args, **kwargs)
|
11
11
|
self.__plotIndex = 0
|
12
12
|
self.__typicalIndex = 0
|
13
|
-
self.__type_list =['
|
14
|
-
self.
|
15
|
-
|
16
|
-
|
17
|
-
'环境温度': [], '土壤温度': [], '建筑物高度风速': [], '风机高度风速': [],'10m风速': [], '50m风速': [] })
|
13
|
+
self.__type_list =['总辐射','散射辐射', '直射辐射','天顶角', '环境温度', '湿球温度','土壤温度', '10m风速', '50m风速','电负荷', '热负荷','冷负荷','氢负荷']
|
14
|
+
self.__map_load = { 'maxElectricalLoad':'电负荷', 'maxHeatLoad':'热负荷','maxCoolLoad':'冷负荷','maxHydrogenLoad':'氢负荷' }
|
15
|
+
|
16
|
+
self.result = {'TypicalMonth': [{'月份': int,'持续天数': [],**{key: [] for key in self.__type_list}} for i in range(12)],'TypicalDay': []}
|
18
17
|
def __readPlotResult(self):
|
19
18
|
length = self.getMessageLength()
|
20
19
|
if (length > self.__plotIndex):
|
21
20
|
for num in range(self.__plotIndex, length):# update TypicalMonth
|
22
21
|
val = self.getMessage(num)
|
23
|
-
if val['type'] == 'plot'
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
22
|
+
if val['type'] == 'plot':# 每个月各类型数据的各个典型日的数据,由于部分月份可能没有电冷热负荷,某月的某个典型日可能缺少冷热负荷
|
23
|
+
key_re = re.split('-month',val['key'])#格式为:散射辐射-month1,re后分别为类型和月份
|
24
|
+
typical_month_m = self.result['TypicalMonth'][int(key_re[1])-1]
|
25
|
+
typical_month_m['月份'] = int(key_re[1])
|
26
|
+
val_data_traces = val['data']['traces']
|
27
|
+
#val['data']['traces'][i]['name']格式为:典型日1-共31天,re正则后[0]为典型日顺序,[1]为持续天数
|
28
|
+
typicalNum = int(re.findall('\d+',val_data_traces[-1]['name'])[0])
|
29
|
+
for i in range(typicalNum):#取该类型的最后一个典型日顺序,当该类型缺少后排典型日时,小于实际典型日数量
|
30
|
+
typical_month_m[key_re[0]].append([])
|
31
|
+
if key_re[0] == '环境温度':#各类版本气象数据均有环境温度数据,其典型日数量为实际数量
|
32
|
+
typical_month_m['持续天数'].append(int(re.findall('\d+',val_data_traces[i]['name'])[1]))
|
33
|
+
# 当前排典型日缺少数据时,该类型数据为空list[];当后排典型日缺少数据时,该类型数据为空
|
34
|
+
for i in range(len(val_data_traces)):
|
35
|
+
typical_month_m[key_re[0]][int(re.findall('\d+',val_data_traces[i]['name'])[0])-1] = copy.deepcopy(val_data_traces[i]['y'])
|
36
36
|
self.__plotIndex = length
|
37
37
|
# update TypicalDay based on TypicalMonth
|
38
38
|
for m in range(12):
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
self.result['TypicalDay'][
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
if
|
51
|
-
|
52
|
-
if self.result['TypicalMonth'][m]['冷负荷']:
|
53
|
-
if self.result['TypicalMonth'][m]['冷负荷'][i]:
|
54
|
-
self.result['TypicalDay'][-1]['info']['maxCoolLoad'] = max(self.result['TypicalMonth'][m]['冷负荷'][i])
|
39
|
+
typical_month_m = self.result['TypicalMonth'][m]
|
40
|
+
typical_month_m_day = len(typical_month_m['持续天数'])
|
41
|
+
for i in range(typical_month_m_day):
|
42
|
+
self.result['TypicalDay'].append({'info':{'typicalDayID': int, 'name': str, 'duration': int, **{key: 0.0 for key in self.__map_load}},
|
43
|
+
'data': {**{key: [] for key in self.__type_list}}})
|
44
|
+
typical_day_index = self.result['TypicalDay'][self.__typicalIndex]
|
45
|
+
typical_day_index['info']['typicalDayID'] = self.__typicalIndex
|
46
|
+
typical_day_index['info']['name'] = str(m+1) + '月典型日' + str(i+1)
|
47
|
+
typical_day_index['info']['duration'] = typical_month_m['持续天数'][i]
|
48
|
+
for key,value in self.__map_load.items():
|
49
|
+
# 分别处理该典型日无此类型负荷数据,缺少后序典型日,缺少前序典型日的情况
|
50
|
+
if typical_month_m.get(value) and i <len(typical_month_m[value]) and len(typical_month_m[value][i]):
|
51
|
+
typical_day_index['info'][key] = max(typical_month_m[value][i])
|
55
52
|
for type_i in self.__type_list:
|
56
|
-
|
57
|
-
|
53
|
+
# 某月冷热负荷可能缺少后续典型日数据
|
54
|
+
if typical_month_m[type_i] and i < len(typical_month_m[type_i]):
|
55
|
+
typical_day_index['data'][type_i] = typical_month_m[type_i][i]
|
58
56
|
self.__typicalIndex += 1
|
59
57
|
def GetTypical(self):
|
60
58
|
'''
|
cloudpss/job/result/__init__.py
CHANGED
@@ -24,6 +24,7 @@ RESULT = {
|
|
24
24
|
'function/CloudPSS/ieslab-simulation': IESLabSimulationResult,
|
25
25
|
'function/CloudPSS/ieslab-gmm':IESLabTypicalDayResult,
|
26
26
|
'function/CloudPSS/ieslab-optimization': IESResult,
|
27
|
+
'function/CloudPSS/ieslab-gmm-opt':IESLabTypicalDayResult,
|
27
28
|
}
|
28
29
|
|
29
30
|
|
cloudpss/job/result/result.py
CHANGED
cloudpss/runner/result.py
CHANGED
cloudpss/runner/runner.py
CHANGED
@@ -15,8 +15,7 @@ from .IESLabEvaluationResult import IESLabEvaluationResult, IESLabPlanEvaluation
|
|
15
15
|
from .IESLabTypicalDayResult import IESLabTypicalDayResult
|
16
16
|
from .storage import Storage
|
17
17
|
from ..utils import request
|
18
|
-
from typing import
|
19
|
-
from .DSLabResult import DSLabResult
|
18
|
+
from typing import TypeVar, Generic
|
20
19
|
import re
|
21
20
|
|
22
21
|
RECEIVER = {
|
@@ -36,10 +35,6 @@ IES_LAB_OPT_RESULT = {
|
|
36
35
|
'function/ieslab/evaluation': IESLabOptEvaluationResult,
|
37
36
|
}
|
38
37
|
|
39
|
-
DS_LAB_RESULT = {
|
40
|
-
'function/ieslab/evaluation': DSLabResult
|
41
|
-
}
|
42
|
-
|
43
38
|
RESULT_DB = {
|
44
39
|
'function/CloudPSS/emtp': EMTResult,
|
45
40
|
'function/CloudPSS/emtps': EMTResult,
|
@@ -245,16 +240,7 @@ class HttpRunner(Runner[T]):
|
|
245
240
|
if self.__taskId is None:
|
246
241
|
return False
|
247
242
|
return self.result.status() # type: ignore
|
248
|
-
|
249
|
-
class DSLabRunner(Runner[T]):
|
250
|
-
def __init__(self, job, simulationId, **kwargs):
|
251
|
-
self.simulationId = simulationId
|
252
|
-
self.job = job
|
253
|
-
result = DS_LAB_RESULT.get(job.get('rid', ''), DSLabResult)
|
254
|
-
self.result: T = result(self.simulationId, **kwargs)
|
255
243
|
|
256
|
-
def status(self):
|
257
|
-
return self.result.status()
|
258
244
|
|
259
245
|
class HttpOPTRunner(Runner[T]):
|
260
246
|
|
cloudpss/utils/httprequests.py
CHANGED
@@ -29,7 +29,7 @@ def request(method, uri, baseUrl=None, params={}, token=None, **kwargs):
|
|
29
29
|
del kwargs['xToken']
|
30
30
|
|
31
31
|
r = requests.request(method, url, params=params, headers=headers, **kwargs)
|
32
|
-
|
32
|
+
|
33
33
|
if (uri.startswith('graphql')):
|
34
34
|
if 'X-Cloudpss-Version' not in r.headers:
|
35
35
|
raise Exception(
|
cloudpss/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = '4.5.
|
1
|
+
__version__ = '4.5.2'
|
@@ -1,6 +1,6 @@
|
|
1
|
-
cloudpss/__init__.py,sha256=
|
1
|
+
cloudpss/__init__.py,sha256=1RNmUBhoxYUutZiTS-XJ9yBoNGGh8Mpt1uY6ETlSBDc,825
|
2
2
|
cloudpss/verify.py,sha256=KF4Gd59DGvCyIEkRD7rNnekWw22XxJpi3DW6keb6j4c,1498
|
3
|
-
cloudpss/version.py,sha256=
|
3
|
+
cloudpss/version.py,sha256=uuxZmCPYe74VYVKPFVVPfcxz9tTAAZCaW7FA4Q5oETk,22
|
4
4
|
cloudpss/asyncio/__init__.py,sha256=CJGopQl_vz3z3fJsK7NjMX5uzkzfrJrbqKVhyYqlYWc,198
|
5
5
|
cloudpss/asyncio/job/__init__.py,sha256=3UIFZYjJTzuckM61o8kim1c3PWt2SSHTL72jrGu5IzI,51
|
6
6
|
cloudpss/asyncio/job/job.py,sha256=Bn2BEERw1J8YarFauTzVrGJK7nmaoMsdlrFUqiHRth4,3897
|
@@ -14,8 +14,8 @@ cloudpss/asyncio/utils/AsyncIterable.py,sha256=AIWYrTnmjsIfOowE3asZlexdHNhpK2gm7
|
|
14
14
|
cloudpss/asyncio/utils/__init__.py,sha256=F-rCvgRAGcV-fFO7o-dsXwooyhcVpElWoBEQM67kO7c,84
|
15
15
|
cloudpss/asyncio/utils/httpAsyncRequest.py,sha256=KIck-3uQwGcHMIJ6632_Zo0syc4GnNG2EoUXmQh54ck,2692
|
16
16
|
cloudpss/dslab/__init__.py,sha256=UdLDA9OArvLndHtumYAMMHdr5h8S6DrZCYkXIi2Mb4Y,45
|
17
|
-
cloudpss/dslab/dataManageModel.py,sha256=
|
18
|
-
cloudpss/dslab/dslab.py,sha256=
|
17
|
+
cloudpss/dslab/dataManageModel.py,sha256=7sTRpAGnuSNtFsUb-VEDp5XzOlAZvidypkniHX32wLY,11527
|
18
|
+
cloudpss/dslab/dslab.py,sha256=u5xwlsuQiVIEAAuHW6kQ5MFiRjR7Iaxoxd724lHW-gk,8696
|
19
19
|
cloudpss/dslab/financialAnalysisModel.py,sha256=t9cZ03yWvLN5ojVeLp-UGgFBIFVU5wbnn5E0UHZA0ws,5062
|
20
20
|
cloudpss/dslab/files/__init__.py,sha256=l2g0VadtTiMW39zwCwHPHUC01Kbklb_nFUPVeQ16FwM,58
|
21
21
|
cloudpss/dslab/files/curveData.py,sha256=GU_DTTKjVn_ln9Hx0q9CFgfmNtokZi7b4DYSzGeP5dk,4291778
|
@@ -32,19 +32,19 @@ cloudpss/ieslab/IESLabSimulation.py,sha256=-EJFkhklN9ao-nbfk7Lz6JCHboFCSDcn5R2jr
|
|
32
32
|
cloudpss/ieslab/PlanModel.py,sha256=WHvXWNFgi7fO_M-sL9empRgHR5riCj1jeThBRT-oqEc,14088
|
33
33
|
cloudpss/ieslab/__init__.py,sha256=gr1rXYw9vIAGOe60eg7LyMHP7QDXvNf4dJ5GTR_kj1Y,232
|
34
34
|
cloudpss/job/TemplateCompiler.py,sha256=MuJDTQ54wRo5bGSvBJBJjXJ7u463dwpRkaLwIwm_hLE,9936
|
35
|
-
cloudpss/job/TemplateManager.py,sha256=
|
35
|
+
cloudpss/job/TemplateManager.py,sha256=PYFWcnJMlvXsoqKh_GMMti72o0ajLWYssrOGUtknMwY,1099
|
36
36
|
cloudpss/job/__init__.py,sha256=3UIFZYjJTzuckM61o8kim1c3PWt2SSHTL72jrGu5IzI,51
|
37
|
-
cloudpss/job/job.py,sha256=
|
37
|
+
cloudpss/job/job.py,sha256=ciphBMfRkIK1bvZ1zrbuISojXiixoNwQRlCzfEVWOa8,8240
|
38
38
|
cloudpss/job/jobReceiver.py,sha256=PNYxcN33LiXZVyc4tzhPlpWxKnyWO_ElKjJ9wsxsroI,925
|
39
|
-
cloudpss/job/messageStreamReceiver.py,sha256=
|
40
|
-
cloudpss/job/messageStreamSender.py,sha256=
|
39
|
+
cloudpss/job/messageStreamReceiver.py,sha256=VvrDewFjiZxMHZJUoMh2_CYC1bmcztY1TrNx0WSsQIU,4133
|
40
|
+
cloudpss/job/messageStreamSender.py,sha256=MCgMP6Epgu2md_rhZhHeGv8q8sObF_wHfL3WpANoreM,2371
|
41
41
|
cloudpss/job/result/EMTResult.py,sha256=xC9ws7bH-2nhpF8lqzZLqcOL-IcYS-JeBboEHgX96wk,6941
|
42
42
|
cloudpss/job/result/IESLabSimulationResult.py,sha256=a47Ic1vvfHTK_vEokOZxJBnQReqYOWux_aePPic_Hrs,84
|
43
|
-
cloudpss/job/result/IESLabTypicalDayResult.py,sha256=
|
43
|
+
cloudpss/job/result/IESLabTypicalDayResult.py,sha256=YugatJHMqLGhSHXFhoorVzcGgEk8dH3dUyGLRsCIhqk,7452
|
44
44
|
cloudpss/job/result/IESResult.py,sha256=TLMTlDuvTUWnsJSUxXt8XTlXZGaVPmxZwia_JOcej88,3852
|
45
45
|
cloudpss/job/result/PowerFlowResult.py,sha256=KoImlmsEEZyMriuoE_MSHBQu4k9MSDUuZ8E2SRLndWE,2097
|
46
|
-
cloudpss/job/result/__init__.py,sha256=
|
47
|
-
cloudpss/job/result/result.py,sha256=
|
46
|
+
cloudpss/job/result/__init__.py,sha256=6zpp_s3Mcdi__FVfrBNLXw4Ee5ZBNgoZuYPJ8cqbj-c,1566
|
47
|
+
cloudpss/job/result/result.py,sha256=kNAQ0X605pKRVFZ0FGULZn177zoPCrMeXLE7eCAVjFA,4282
|
48
48
|
cloudpss/model/__init__.py,sha256=SNq-bfwcQtDHtTNBYppfUEs8wkjfrQfGeywx7igmvOs,151
|
49
49
|
cloudpss/model/jobDefinitions.py,sha256=uuTwpqStlg3YDmfxbU2PVi_Tf18opa0kYLCMGaOP-qA,3749
|
50
50
|
cloudpss/model/model.py,sha256=gYMBf_jspoRSwb0QgARvJGXVtDlaQvQjp_B9QMYvXwE,27170
|
@@ -63,18 +63,18 @@ cloudpss/runner/IESLabTypicalDayResult.py,sha256=-9D0TRsXEYJIgGKYFPZHjR7URyPypN7
|
|
63
63
|
cloudpss/runner/MessageStreamReceiver.py,sha256=dT-rKslQbRt3bMTGXupa1YrocHl2zTWOCHlsXcbgfhs,2812
|
64
64
|
cloudpss/runner/__init__.py,sha256=FxiYYmssbZgRjieySzi43yPiWEF6eNos2UsoFQeD2H8,341
|
65
65
|
cloudpss/runner/receiver.py,sha256=QU0RsbCt0EK7sCLHzfj8_QQsuPNfqXxpZi5JKm6roxA,4162
|
66
|
-
cloudpss/runner/result.py,sha256=
|
67
|
-
cloudpss/runner/runner.py,sha256=
|
66
|
+
cloudpss/runner/result.py,sha256=GFpd7848gsLRuzhVcWbCwmAjR84Lhik_3pNCjOV8VOY,13291
|
67
|
+
cloudpss/runner/runner.py,sha256=pfidTchkoVTFUB9pUmZn9ulVDag9DLGo0pIxsD-nRu0,9168
|
68
68
|
cloudpss/runner/storage.py,sha256=zFET_zwPIOF2Cnh9sgFiS0HFxV1OmVsU34bGUQ6PpkA,4162
|
69
69
|
cloudpss/runner/transform.py,sha256=krOgTZiJSJAb5QSwerAqlbC4Ma0PKi__0WOZlAxw4O8,11613
|
70
70
|
cloudpss/utils/IO.py,sha256=sm6p53AFgE1b56Bh0qt_E2TFP5tLr0WQDzIVRlsNgFA,5321
|
71
71
|
cloudpss/utils/__init__.py,sha256=jWVHSOqJQWU0fpg2UbWSEQoLCb2Uys-vH5Uqkb0ihNA,326
|
72
72
|
cloudpss/utils/dataEncoder.py,sha256=5PUPb844eOGgFnYrMM8bdjdKH_MZz0lk-67uo8TvwEo,885
|
73
73
|
cloudpss/utils/graphqlUtil.py,sha256=zGEhRZvy5JMipFKFxjDmbc-HQP3aPZ5noDwi-RTXWSk,280
|
74
|
-
cloudpss/utils/httprequests.py,sha256=
|
74
|
+
cloudpss/utils/httprequests.py,sha256=ZcCwS2KM7y2TwWTo0YRLNJVozih4h0F5ignn-CeBREU,1846
|
75
75
|
cloudpss/utils/matlab.py,sha256=SLwVt790BjklJK2XNELt9R2n_1ej9Y8QsTIdFkKXLWE,795
|
76
76
|
cloudpss/utils/yamlLoader.py,sha256=bv_vPDK_e0n_vZ5FwpDJ_NJWqMAwfU3AbhkvQIxPCy4,2677
|
77
|
-
cloudpss-4.5.
|
78
|
-
cloudpss-4.5.
|
79
|
-
cloudpss-4.5.
|
80
|
-
cloudpss-4.5.
|
77
|
+
cloudpss-4.5.2.dist-info/METADATA,sha256=gew6nU4652E8_vPJY3PYXzzBHmtcP1p9NW78BqqMiDE,2401
|
78
|
+
cloudpss-4.5.2.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
79
|
+
cloudpss-4.5.2.dist-info/top_level.txt,sha256=wS9qPU4-aWM9ouzMOx34Nlq-GkdQKpr9vBskwut1BD8,9
|
80
|
+
cloudpss-4.5.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|