cloudpss 4.1.1b7__py3-none-any.whl → 4.1.1b9__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/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 +24 -14
- cloudpss/dslab/dslab.py +115 -21
- cloudpss/dslab/files/curveData.py +35066 -35042
- cloudpss/dslab/files/files.py +21 -13
- cloudpss/function/functionExecution.py +10 -0
- cloudpss/ieslab/DataManageModel.py +65 -16
- cloudpss/ieslab/IESLabPlan.py +78 -0
- cloudpss/ieslab/IESLabSimulation.py +59 -32
- cloudpss/ieslab/PlanModel.py +11 -7
- cloudpss/job/job.py +119 -132
- cloudpss/job/jobReceiver.py +7 -1
- cloudpss/job/messageStreamReceiver.py +42 -99
- cloudpss/job/messageStreamSender.py +5 -42
- cloudpss/job/view/EMTView.py +9 -11
- cloudpss/job/view/IESLabTypicalDayView.py +114 -5
- cloudpss/job/view/view.py +36 -7
- cloudpss/model/implements/diagram.py +113 -0
- cloudpss/model/jobDefinitions.py +6 -6
- cloudpss/model/model.py +181 -193
- cloudpss/model/revision.py +29 -34
- cloudpss/model/topology.py +12 -14
- cloudpss/runner/MessageStreamReceiver.py +2 -0
- cloudpss/utils/httprequests.py +6 -5
- cloudpss/version.py +1 -1
- {cloudpss-4.1.1b7.dist-info → cloudpss-4.1.1b9.dist-info}/METADATA +1 -1
- cloudpss-4.1.1b9.dist-info/RECORD +77 -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-4.1.1b7.dist-info/RECORD +0 -72
- /cloudpss/{utils → asyncio/utils}/AsyncIterable.py +0 -0
- {cloudpss-4.1.1b7.dist-info → cloudpss-4.1.1b9.dist-info}/WHEEL +0 -0
- {cloudpss-4.1.1b7.dist-info → cloudpss-4.1.1b9.dist-info}/top_level.txt +0 -0
@@ -178,23 +178,33 @@ class DataManageModel(object):
|
|
178
178
|
def AddDataItem(self, kind, data, extra=None):
|
179
179
|
'''
|
180
180
|
向kind类型的数据库中添加内容为data的数据项
|
181
|
-
:params: kind str
|
181
|
+
:params: kind str类型,数据的种类标识,包含:光伏、光伏曲线、风机、风机曲线、燃气、燃气曲线、水电、水电曲线、火电、火电曲线、生物质发电、生物质发电曲线、垃圾电厂、垃圾电厂曲线、传输线、变压器、开关、负荷分类、负荷用户、储能设备、储能运行策略、上网电价、输配电价、常数电价、阶梯电价、分时电价、分时阶梯电价
|
182
182
|
:params: data dict类型,表示添加的数据内容,其数据结构应满足对应数据项的结构要求
|
183
183
|
:params extra list类型,表示添加的基准出力曲线、负荷曲线、策略曲线数据
|
184
184
|
|
185
185
|
:return: list<dict>类型,返回该种类下所有数据项的列表
|
186
186
|
'''
|
187
187
|
if extra is None or not extra:
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
188
|
+
curveData = getCurveData(kind)
|
189
|
+
if len(curveData) > 0:
|
190
|
+
r = {
|
191
|
+
'simu': self.resourceId,
|
192
|
+
'name': data.get('name', ''),
|
193
|
+
'extra': curveData,
|
194
|
+
'data': data.get('data', {}),
|
195
|
+
}
|
196
|
+
url = f"{self._baseUri}rest/{kind}"
|
197
|
+
self._saveItemData(url, r)
|
198
|
+
return self._fetchItemData(url)
|
199
|
+
else:
|
200
|
+
r = {
|
201
|
+
'simu': self.resourceId,
|
202
|
+
'name': data.get('name', ''),
|
203
|
+
'data': data.get('data', {}),
|
204
|
+
}
|
205
|
+
url = f"{self._baseUri}rest/{kind}"
|
206
|
+
self._saveItemData(url, r)
|
207
|
+
return self._fetchItemData(url)
|
198
208
|
else:
|
199
209
|
r = {
|
200
210
|
'simu': self.resourceId,
|
@@ -210,7 +220,7 @@ class DataManageModel(object):
|
|
210
220
|
'''
|
211
221
|
获取kind类型对应所有数据项的列表
|
212
222
|
:params: id int类型,数据的id
|
213
|
-
:params: kind str
|
223
|
+
:params: kind str类型,数据的种类标识,包含:光伏、光伏曲线、风机、风机曲线、燃气、燃气曲线、水电、水电曲线、火电、火电曲线、生物质发电、生物质发电曲线、垃圾电厂、垃圾电厂曲线、传输线、变压器、开关、负荷分类、负荷用户、储能设备、储能运行策略、上网电价、输配电价、常数电价、阶梯电价、分时电价、分时阶梯电价
|
214
224
|
|
215
225
|
:return: list<dict>类型,返回该种类下所有数据项的列表
|
216
226
|
'''
|
@@ -222,7 +232,7 @@ class DataManageModel(object):
|
|
222
232
|
def UpdateDataItem(self, kind, data):
|
223
233
|
'''
|
224
234
|
更新kind类型对应数据项
|
225
|
-
:params: kind str
|
235
|
+
:params: kind str类型,数据的种类标识,包含:光伏、光伏曲线、风机、风机曲线、燃气、燃气曲线、水电、水电曲线、火电、火电曲线、生物质发电、生物质发电曲线、垃圾电厂、垃圾电厂曲线、传输线、变压器、开关、负荷分类、负荷用户、储能设备、储能运行策略、上网电价、输配电价、常数电价、阶梯电价、分时电价、分时阶梯电价
|
226
236
|
:params: data dict类型,表示添加的数据内容,其数据结构应满足对应数据项的结构要求
|
227
237
|
|
228
238
|
:return: list<dict>类型,返回该种类下所有数据项的列表
|
@@ -240,7 +250,7 @@ class DataManageModel(object):
|
|
240
250
|
def GetItemList(self, kind):
|
241
251
|
'''
|
242
252
|
获取kind类型对应所有数据项的列表
|
243
|
-
:params: kind str
|
253
|
+
:params: kind str类型,数据的种类标识,包含:光伏、光伏曲线、风机、风机曲线、燃气、燃气曲线、水电、水电曲线、火电、火电曲线、生物质发电、生物质发电曲线、垃圾电厂、垃圾电厂曲线、传输线、变压器、开关、负荷分类、负荷用户、储能设备、储能运行策略、上网电价、输配电价、常数电价、阶梯电价、分时电价、分时阶梯电价
|
244
254
|
|
245
255
|
:return: list<dict>类型,返回该种类下所有数据项的列表
|
246
256
|
'''
|
cloudpss/dslab/dslab.py
CHANGED
@@ -76,71 +76,165 @@ class DSLab(object):
|
|
76
76
|
'''
|
77
77
|
return self.financialAnalysisModel.run(planID)
|
78
78
|
|
79
|
+
def runPowerFlow(self,job=None,name=None, **kwargs)->Runner[IESResult]:
|
80
|
+
'''
|
81
|
+
运行 时序潮流方案 内核,如果当前 model 没有创建 Job 时报错,默认使用第一个计算方案,进行仿真。
|
82
|
+
|
83
|
+
:param: job 计算方案名称,可选,字符串类型或者字典类型,默认使用第一个计算方案,如果同名使用最靠前一个
|
84
|
+
:params name: 任务名称,为空时使用项目的参数方案名称和计算方案名称
|
79
85
|
|
80
|
-
|
86
|
+
:return: runner Runner[IESResult]
|
81
87
|
'''
|
82
|
-
|
88
|
+
rid = 'function/CloudPSS/ieslab-power-flow'
|
89
|
+
if job is None:
|
90
|
+
currentJob = self.model.context['currentJob']
|
91
|
+
job = self.model.jobs[currentJob]
|
92
|
+
if job['rid'] != rid:
|
93
|
+
for j in self.model.jobs:
|
94
|
+
if j['rid'] == rid:
|
95
|
+
job = j
|
96
|
+
if job is None:
|
97
|
+
raise Exception("找不到时序潮流方案内核运行的计算方案")
|
98
|
+
if job['rid'] != rid:
|
99
|
+
raise Exception("不是时序潮流方案内核运行生成算法的计算方案")
|
100
|
+
return self.run(job=job, name=name)
|
101
|
+
|
102
|
+
def runESS(self,job=None,name=None, **kwargs)->Runner[IESResult]:
|
103
|
+
'''
|
104
|
+
运行 储能规划方案 内核,如果当前 model 没有创建 Job 时报错,默认使用第一个计算方案,进行仿真。
|
83
105
|
|
84
106
|
:param: job 计算方案名称,可选,字符串类型或者字典类型,默认使用第一个计算方案,如果同名使用最靠前一个
|
85
107
|
:params name: 任务名称,为空时使用项目的参数方案名称和计算方案名称
|
86
108
|
|
87
109
|
:return: runner Runner[IESResult]
|
88
110
|
'''
|
111
|
+
rid = 'function/CloudPSS/ieslab-energy-storage-plan'
|
89
112
|
if job is None:
|
90
113
|
currentJob = self.model.context['currentJob']
|
91
114
|
job = self.model.jobs[currentJob]
|
92
|
-
if job['rid'] !=
|
115
|
+
if job['rid'] != rid:
|
93
116
|
for j in self.model.jobs:
|
94
|
-
if j['rid'] ==
|
117
|
+
if j['rid'] == rid:
|
95
118
|
job = j
|
96
119
|
if job is None:
|
97
|
-
raise Exception("
|
98
|
-
if job['rid'] !=
|
99
|
-
raise Exception("
|
120
|
+
raise Exception("找不到储能规划方案内核运行的计算方案")
|
121
|
+
if job['rid'] != rid:
|
122
|
+
raise Exception("不是储能规划方案内核运行生成算法的计算方案")
|
123
|
+
return self.run(job=job, name=name)
|
124
|
+
|
125
|
+
def runShortCurrent(self,job=None,name=None, **kwargs)->Runner[IESResult]:
|
126
|
+
'''
|
127
|
+
运行 短路电流计算 内核,如果当前 model 没有创建 Job 时报错,默认使用第一个计算方案,进行仿真。
|
128
|
+
|
129
|
+
:param: job 计算方案名称,可选,字符串类型或者字典类型,默认使用第一个计算方案,如果同名使用最靠前一个
|
130
|
+
:params name: 任务名称,为空时使用项目的参数方案名称和计算方案名称
|
131
|
+
|
132
|
+
:return: runner Runner[IESResult]
|
133
|
+
'''
|
134
|
+
rid = 'function/CloudPSS/short-circuit-current-calculation'
|
135
|
+
if job is None:
|
136
|
+
currentJob = self.model.context['currentJob']
|
137
|
+
job = self.model.jobs[currentJob]
|
138
|
+
if job['rid'] != rid:
|
139
|
+
for j in self.model.jobs:
|
140
|
+
if j['rid'] == rid:
|
141
|
+
job = j
|
142
|
+
if job is None:
|
143
|
+
raise Exception("找不到短路电流计算方案内核运行的计算方案")
|
144
|
+
if job['rid'] != rid:
|
145
|
+
raise Exception("不是短路电流计算方案内核运行生成算法的计算方案")
|
100
146
|
return self.run(job=job, name=name)
|
101
147
|
|
102
|
-
def
|
148
|
+
def runReliability(self,job=None,name=None, **kwargs)->Runner[IESResult]:
|
103
149
|
'''
|
104
|
-
运行
|
150
|
+
运行 可靠性分析 内核,如果当前 model 没有创建 Job 时报错,默认使用第一个计算方案,进行仿真。
|
105
151
|
|
106
152
|
:param: job 计算方案名称,可选,字符串类型或者字典类型,默认使用第一个计算方案,如果同名使用最靠前一个
|
107
153
|
:params name: 任务名称,为空时使用项目的参数方案名称和计算方案名称
|
108
154
|
|
109
155
|
:return: runner Runner[IESResult]
|
110
156
|
'''
|
157
|
+
rid = 'function/CloudPSS/reliability-calculation'
|
111
158
|
if job is None:
|
112
159
|
currentJob = self.model.context['currentJob']
|
113
160
|
job = self.model.jobs[currentJob]
|
114
|
-
if job['rid'] !=
|
161
|
+
if job['rid'] != rid:
|
115
162
|
for j in self.model.jobs:
|
116
|
-
if j['rid'] ==
|
163
|
+
if j['rid'] == rid:
|
117
164
|
job = j
|
118
165
|
if job is None:
|
119
|
-
raise Exception("
|
120
|
-
if job['rid'] !=
|
121
|
-
raise Exception("
|
166
|
+
raise Exception("找不到可靠性分析计算方案内核运行的计算方案")
|
167
|
+
if job['rid'] != rid:
|
168
|
+
raise Exception("不是可靠性分析计算方案内核运行生成算法的计算方案")
|
122
169
|
return self.run(job=job, name=name)
|
170
|
+
|
171
|
+
def runStaticAnalysis(self,job=None,name=None, **kwargs)->Runner[IESResult]:
|
172
|
+
'''
|
173
|
+
运行 静态安全性分析 内核,如果当前 model 没有创建 Job 时报错,默认使用第一个计算方案,进行仿真。
|
174
|
+
|
175
|
+
:param: job 计算方案名称,可选,字符串类型或者字典类型,默认使用第一个计算方案,如果同名使用最靠前一个
|
176
|
+
:params name: 任务名称,为空时使用项目的参数方案名称和计算方案名称
|
123
177
|
|
124
|
-
|
178
|
+
:return: runner Runner[IESResult]
|
125
179
|
'''
|
126
|
-
|
180
|
+
rid = 'function/CloudPSS/static-security-analysis'
|
181
|
+
if job is None:
|
182
|
+
currentJob = self.model.context['currentJob']
|
183
|
+
job = self.model.jobs[currentJob]
|
184
|
+
if job['rid'] != rid:
|
185
|
+
for j in self.model.jobs:
|
186
|
+
if j['rid'] == rid:
|
187
|
+
job = j
|
188
|
+
if job is None:
|
189
|
+
raise Exception("找不到静态安全性分析计算方案内核运行的计算方案")
|
190
|
+
if job['rid'] != rid:
|
191
|
+
raise Exception("不是静态安全性分析计算方案内核运行生成算法的计算方案")
|
192
|
+
return self.run(job=job, name=name)
|
193
|
+
|
194
|
+
def runRPO(self,job=None,name=None, **kwargs)->Runner[IESResult]:
|
195
|
+
'''
|
196
|
+
运行 无功优化 内核,如果当前 model 没有创建 Job 时报错,默认使用第一个计算方案,进行仿真。
|
127
197
|
|
128
198
|
:param: job 计算方案名称,可选,字符串类型或者字典类型,默认使用第一个计算方案,如果同名使用最靠前一个
|
129
199
|
:params name: 任务名称,为空时使用项目的参数方案名称和计算方案名称
|
130
200
|
|
131
201
|
:return: runner Runner[IESResult]
|
132
202
|
'''
|
203
|
+
rid = 'function/CloudPSS/reactive-power-optimization'
|
133
204
|
if job is None:
|
134
205
|
currentJob = self.model.context['currentJob']
|
135
206
|
job = self.model.jobs[currentJob]
|
136
|
-
if job['rid'] !=
|
207
|
+
if job['rid'] != rid:
|
137
208
|
for j in self.model.jobs:
|
138
|
-
if j['rid'] ==
|
209
|
+
if j['rid'] == rid:
|
139
210
|
job = j
|
140
211
|
if job is None:
|
141
|
-
raise Exception("
|
142
|
-
if job['rid'] !=
|
143
|
-
raise Exception("
|
212
|
+
raise Exception("找不到无功优化计算方案内核运行的计算方案")
|
213
|
+
if job['rid'] != rid:
|
214
|
+
raise Exception("不是无功优化计算方案内核运行生成算法的计算方案")
|
215
|
+
return self.run(job=job, name=name)
|
216
|
+
|
217
|
+
def runLoadForecast(self,job=None,name=None, **kwargs)->Runner[IESResult]:
|
218
|
+
'''
|
219
|
+
运行 负荷预测方案 内核,如果当前 model 没有创建 Job 时报错,默认使用第一个计算方案,进行仿真。
|
220
|
+
|
221
|
+
:param: job 计算方案名称,可选,字符串类型或者字典类型,默认使用第一个计算方案,如果同名使用最靠前一个
|
222
|
+
:params name: 任务名称,为空时使用项目的参数方案名称和计算方案名称
|
223
|
+
|
224
|
+
:return: runner Runner[IESResult]
|
225
|
+
'''
|
226
|
+
rid = 'function/CloudPSS/ieslab-load-prediction'
|
227
|
+
if job is None:
|
228
|
+
currentJob = self.model.context['currentJob']
|
229
|
+
job = self.model.jobs[currentJob]
|
230
|
+
if job['rid'] != rid:
|
231
|
+
for j in self.model.jobs:
|
232
|
+
if j['rid'] == rid:
|
233
|
+
job = j
|
234
|
+
if job is None:
|
235
|
+
raise Exception("找不到负荷预测方案内核运行的计算方案")
|
236
|
+
if job['rid'] != rid:
|
237
|
+
raise Exception("不是负荷预测方案内核运行生成算法的计算方案")
|
144
238
|
return self.run(job=job, name=name)
|
145
239
|
|
146
240
|
@staticmethod
|