cloudpss 4.1.1b7__py3-none-any.whl → 4.5.13__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 +2 -3
- cloudpss/asyncio/__init__.py +8 -0
- cloudpss/asyncio/job/__init__.py +5 -0
- cloudpss/asyncio/job/job.py +116 -0
- cloudpss/asyncio/job/messageStreamReceiver.py +121 -0
- cloudpss/asyncio/job/messageStreamSender.py +45 -0
- cloudpss/asyncio/model/__init__.py +5 -0
- cloudpss/asyncio/model/model.py +257 -0
- cloudpss/asyncio/model/revision.py +41 -0
- cloudpss/asyncio/model/topology.py +34 -0
- cloudpss/asyncio/utils/__init__.py +6 -0
- cloudpss/{utils → asyncio/utils}/httpAsyncRequest.py +2 -2
- cloudpss/dslab/dataManageModel.py +43 -14
- cloudpss/dslab/dslab.py +35 -9
- cloudpss/dslab/files/curveData.py +35066 -35042
- cloudpss/dslab/files/files.py +21 -13
- cloudpss/function/functionExecution.py +74 -5
- cloudpss/ieslab/DataManageModel.py +144 -9
- cloudpss/ieslab/EvaluationModel.py +80 -9
- cloudpss/ieslab/IESLabOpt.py +235 -0
- cloudpss/ieslab/IESLabPlan.py +82 -4
- cloudpss/ieslab/IESLabSimulation.py +59 -32
- cloudpss/ieslab/PlanModel.py +222 -18
- cloudpss/ieslab/__init__.py +2 -1
- cloudpss/job/TemplateCompiler.py +273 -0
- cloudpss/job/TemplateManager.py +37 -0
- cloudpss/job/job.py +136 -141
- cloudpss/job/jobReceiver.py +8 -2
- cloudpss/job/messageStreamReceiver.py +42 -99
- cloudpss/job/messageStreamSender.py +5 -42
- cloudpss/job/{view/EMTView.py → result/EMTResult.py} +57 -14
- cloudpss/job/result/IESLabSimulationResult.py +5 -0
- cloudpss/job/result/IESLabTypicalDayResult.py +134 -0
- cloudpss/job/{view/IESView.py → result/IESResult.py} +7 -5
- cloudpss/job/{view/PowerFlowView.py → result/PowerFlowResult.py} +2 -2
- cloudpss/job/result/__init__.py +40 -0
- cloudpss/job/{view/view.py → result/result.py} +38 -8
- cloudpss/model/implements/diagram.py +140 -0
- cloudpss/model/jobDefinitions.py +6 -6
- cloudpss/model/model.py +245 -226
- cloudpss/model/revision.py +30 -35
- cloudpss/model/topology.py +26 -15
- cloudpss/runner/IESLabEvaluationResult.py +14 -6
- cloudpss/runner/IESLabPlanResult.py +91 -35
- cloudpss/runner/IESLabTypicalDayResult.py +62 -50
- cloudpss/runner/MessageStreamReceiver.py +5 -100
- cloudpss/runner/result.py +6 -1
- cloudpss/runner/runner.py +97 -53
- cloudpss/utils/IO.py +3 -1
- cloudpss/utils/graphqlUtil.py +3 -2
- cloudpss/utils/httprequests.py +19 -10
- cloudpss/version.py +1 -1
- {cloudpss-4.1.1b7.dist-info → cloudpss-4.5.13.dist-info}/METADATA +2 -2
- cloudpss-4.5.13.dist-info/RECORD +80 -0
- cloudpss/dslab/DSLabFinancialResult.py +0 -96
- cloudpss/job/jobMachine.py +0 -11
- cloudpss/job/jobPolicy.py +0 -129
- cloudpss/job/jobQueue.py +0 -14
- cloudpss/job/jobTres.py +0 -6
- cloudpss/job/view/IESLabSimulationView.py +0 -5
- cloudpss/job/view/IESLabTypicalDayView.py +0 -27
- cloudpss/job/view/__init__.py +0 -42
- cloudpss-4.1.1b7.dist-info/RECORD +0 -72
- /cloudpss/{utils → asyncio/utils}/AsyncIterable.py +0 -0
- {cloudpss-4.1.1b7.dist-info → cloudpss-4.5.13.dist-info}/WHEEL +0 -0
- {cloudpss-4.1.1b7.dist-info → cloudpss-4.5.13.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,7 @@
|
|
1
1
|
from ..utils import request, fileLoad, graphql_request
|
2
2
|
import json
|
3
3
|
import time, datetime
|
4
|
+
import urllib.parse
|
4
5
|
import copy
|
5
6
|
import os
|
6
7
|
from cloudpss.dslab.files import getCurveData
|
@@ -178,23 +179,33 @@ class DataManageModel(object):
|
|
178
179
|
def AddDataItem(self, kind, data, extra=None):
|
179
180
|
'''
|
180
181
|
向kind类型的数据库中添加内容为data的数据项
|
181
|
-
:params: kind str
|
182
|
+
:params: kind str类型,数据的种类标识,包含:光伏、光伏曲线、风机、风机曲线、燃气、燃气曲线、水电、水电曲线、火电、火电曲线、生物质发电、生物质发电曲线、垃圾电厂、垃圾电厂曲线、传输线、变压器、开关、负荷分类、负荷用户、储能设备、储能运行策略、上网电价、输配电价、常数电价、阶梯电价、分时电价、分时阶梯电价
|
182
183
|
:params: data dict类型,表示添加的数据内容,其数据结构应满足对应数据项的结构要求
|
183
184
|
:params extra list类型,表示添加的基准出力曲线、负荷曲线、策略曲线数据
|
184
185
|
|
185
186
|
:return: list<dict>类型,返回该种类下所有数据项的列表
|
186
187
|
'''
|
187
188
|
if extra is None or not extra:
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
189
|
+
curveData = getCurveData(kind)
|
190
|
+
if len(curveData) > 0:
|
191
|
+
r = {
|
192
|
+
'simu': self.resourceId,
|
193
|
+
'name': data.get('name', ''),
|
194
|
+
'extra': curveData,
|
195
|
+
'data': data.get('data', {}),
|
196
|
+
}
|
197
|
+
url = f"{self._baseUri}rest/{kind}"
|
198
|
+
self._saveItemData(url, r)
|
199
|
+
return self._fetchItemData(url)
|
200
|
+
else:
|
201
|
+
r = {
|
202
|
+
'simu': self.resourceId,
|
203
|
+
'name': data.get('name', ''),
|
204
|
+
'data': data.get('data', {}),
|
205
|
+
}
|
206
|
+
url = f"{self._baseUri}rest/{kind}"
|
207
|
+
self._saveItemData(url, r)
|
208
|
+
return self._fetchItemData(url)
|
198
209
|
else:
|
199
210
|
r = {
|
200
211
|
'simu': self.resourceId,
|
@@ -210,7 +221,7 @@ class DataManageModel(object):
|
|
210
221
|
'''
|
211
222
|
获取kind类型对应所有数据项的列表
|
212
223
|
:params: id int类型,数据的id
|
213
|
-
:params: kind str
|
224
|
+
:params: kind str类型,数据的种类标识,包含:光伏、光伏曲线、风机、风机曲线、燃气、燃气曲线、水电、水电曲线、火电、火电曲线、生物质发电、生物质发电曲线、垃圾电厂、垃圾电厂曲线、传输线、变压器、开关、负荷分类、负荷用户、储能设备、储能运行策略、上网电价、输配电价、常数电价、阶梯电价、分时电价、分时阶梯电价
|
214
225
|
|
215
226
|
:return: list<dict>类型,返回该种类下所有数据项的列表
|
216
227
|
'''
|
@@ -222,7 +233,7 @@ class DataManageModel(object):
|
|
222
233
|
def UpdateDataItem(self, kind, data):
|
223
234
|
'''
|
224
235
|
更新kind类型对应数据项
|
225
|
-
:params: kind str
|
236
|
+
:params: kind str类型,数据的种类标识,包含:光伏、光伏曲线、风机、风机曲线、燃气、燃气曲线、水电、水电曲线、火电、火电曲线、生物质发电、生物质发电曲线、垃圾电厂、垃圾电厂曲线、传输线、变压器、开关、负荷分类、负荷用户、储能设备、储能运行策略、上网电价、输配电价、常数电价、阶梯电价、分时电价、分时阶梯电价
|
226
237
|
:params: data dict类型,表示添加的数据内容,其数据结构应满足对应数据项的结构要求
|
227
238
|
|
228
239
|
:return: list<dict>类型,返回该种类下所有数据项的列表
|
@@ -240,7 +251,7 @@ class DataManageModel(object):
|
|
240
251
|
def GetItemList(self, kind):
|
241
252
|
'''
|
242
253
|
获取kind类型对应所有数据项的列表
|
243
|
-
:params: kind str
|
254
|
+
:params: kind str类型,数据的种类标识,包含:光伏、光伏曲线、风机、风机曲线、燃气、燃气曲线、水电、水电曲线、火电、火电曲线、生物质发电、生物质发电曲线、垃圾电厂、垃圾电厂曲线、传输线、变压器、开关、负荷分类、负荷用户、储能设备、储能运行策略、上网电价、输配电价、常数电价、阶梯电价、分时电价、分时阶梯电价
|
244
255
|
|
245
256
|
:return: list<dict>类型,返回该种类下所有数据项的列表
|
246
257
|
'''
|
@@ -258,6 +269,24 @@ class DataManageModel(object):
|
|
258
269
|
if data.get('extra', None) is None:
|
259
270
|
return None
|
260
271
|
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)
|
261
290
|
|
262
291
|
class DSLabDataManageModel(DataManageModel):
|
263
292
|
_baseUri = 'api/dslab/'
|
cloudpss/dslab/dslab.py
CHANGED
@@ -86,16 +86,17 @@ class DSLab(object):
|
|
86
86
|
|
87
87
|
:return: runner Runner[IESResult]
|
88
88
|
'''
|
89
|
+
rid = 'function/CloudPSS/ieslab-load-prediction'
|
89
90
|
if job is None:
|
90
91
|
currentJob = self.model.context['currentJob']
|
91
92
|
job = self.model.jobs[currentJob]
|
92
|
-
if job['rid'] !=
|
93
|
+
if job['rid'] != rid:
|
93
94
|
for j in self.model.jobs:
|
94
|
-
if j['rid'] ==
|
95
|
+
if j['rid'] == rid:
|
95
96
|
job = j
|
96
97
|
if job is None:
|
97
98
|
raise Exception("找不到负荷预测方案内核运行的计算方案")
|
98
|
-
if job['rid'] !=
|
99
|
+
if job['rid'] != rid:
|
99
100
|
raise Exception("不是负荷预测方案内核运行生成算法的计算方案")
|
100
101
|
return self.run(job=job, name=name)
|
101
102
|
|
@@ -108,16 +109,17 @@ class DSLab(object):
|
|
108
109
|
|
109
110
|
:return: runner Runner[IESResult]
|
110
111
|
'''
|
112
|
+
rid = 'function/CloudPSS/ieslab-power-flow'
|
111
113
|
if job is None:
|
112
114
|
currentJob = self.model.context['currentJob']
|
113
115
|
job = self.model.jobs[currentJob]
|
114
|
-
if job['rid'] !=
|
116
|
+
if job['rid'] != rid:
|
115
117
|
for j in self.model.jobs:
|
116
|
-
if j['rid'] ==
|
118
|
+
if j['rid'] == rid:
|
117
119
|
job = j
|
118
120
|
if job is None:
|
119
121
|
raise Exception("找不到时序潮流方案内核运行的计算方案")
|
120
|
-
if job['rid'] !=
|
122
|
+
if job['rid'] != rid:
|
121
123
|
raise Exception("不是时序潮流方案内核运行生成算法的计算方案")
|
122
124
|
return self.run(job=job, name=name)
|
123
125
|
|
@@ -130,19 +132,43 @@ class DSLab(object):
|
|
130
132
|
|
131
133
|
:return: runner Runner[IESResult]
|
132
134
|
'''
|
135
|
+
rid = 'function/CloudPSS/ieslab-energy-storage-plan'
|
133
136
|
if job is None:
|
134
137
|
currentJob = self.model.context['currentJob']
|
135
138
|
job = self.model.jobs[currentJob]
|
136
|
-
if job['rid'] !=
|
139
|
+
if job['rid'] != rid:
|
137
140
|
for j in self.model.jobs:
|
138
|
-
if j['rid'] ==
|
141
|
+
if j['rid'] == rid:
|
139
142
|
job = j
|
140
143
|
if job is None:
|
141
144
|
raise Exception("找不到储能规划方案内核运行的计算方案")
|
142
|
-
if job['rid'] !=
|
145
|
+
if job['rid'] != rid:
|
143
146
|
raise Exception("不是储能规划方案内核运行生成算法的计算方案")
|
144
147
|
return self.run(job=job, name=name)
|
145
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
|
+
|
146
172
|
@staticmethod
|
147
173
|
def createProjectGroup(name, description=None, createById=None):
|
148
174
|
'''
|