cloudpss 4.5.2__py3-none-any.whl → 4.5.3__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/dslab/dataManageModel.py +19 -0
- cloudpss/dslab/dslab.py +23 -0
- cloudpss/job/TemplateManager.py +1 -0
- cloudpss/model/implements/diagram.py +34 -7
- cloudpss/model/model.py +3 -2
- cloudpss/utils/IO.py +3 -1
- cloudpss/version.py +1 -1
- {cloudpss-4.5.2.dist-info → cloudpss-4.5.3.dist-info}/METADATA +1 -1
- {cloudpss-4.5.2.dist-info → cloudpss-4.5.3.dist-info}/RECORD +11 -11
- {cloudpss-4.5.2.dist-info → cloudpss-4.5.3.dist-info}/WHEEL +0 -0
- {cloudpss-4.5.2.dist-info → cloudpss-4.5.3.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
|
@@ -268,6 +269,24 @@ class DataManageModel(object):
|
|
268
269
|
if data.get('extra', None) is None:
|
269
270
|
return None
|
270
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)
|
271
290
|
|
272
291
|
class DSLabDataManageModel(DataManageModel):
|
273
292
|
_baseUri = 'api/dslab/'
|
cloudpss/dslab/dslab.py
CHANGED
@@ -146,6 +146,29 @@ 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
|
+
|
149
172
|
@staticmethod
|
150
173
|
def createProjectGroup(name, description=None, createById=None):
|
151
174
|
'''
|
cloudpss/job/TemplateManager.py
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import re
|
1
2
|
from .component import Component
|
2
3
|
from typing import Optional
|
3
4
|
import uuid
|
@@ -140,7 +141,7 @@ class DiagramImplement(object):
|
|
140
141
|
position["y"] += 5
|
141
142
|
return True
|
142
143
|
|
143
|
-
def updateComponent(self, key: str,
|
144
|
+
def updateComponent(self, key: str, **kwargs: dict) -> bool:
|
144
145
|
"""
|
145
146
|
更新元件
|
146
147
|
|
@@ -150,10 +151,36 @@ class DiagramImplement(object):
|
|
150
151
|
|
151
152
|
>>>> diagram.updateComponent(key)
|
152
153
|
"""
|
153
|
-
component = self.cells.get(key)
|
154
|
-
if
|
154
|
+
component = self.cells.get(key,None)
|
155
|
+
if component is None:
|
155
156
|
return False
|
156
|
-
for k, v in
|
157
|
-
if k
|
158
|
-
|
159
|
-
|
157
|
+
for k, v in kwargs.items():
|
158
|
+
if component.__dict__.get(k,None) is None:
|
159
|
+
raise Exception(f"Component has no attribute {k}")
|
160
|
+
if k == 'args' and not isinstance(v, dict):
|
161
|
+
raise Exception(f"Component args must be dict")
|
162
|
+
if k == 'pins' and not isinstance(v, dict):
|
163
|
+
raise Exception(f"Component pins must be dict")
|
164
|
+
if k == 'position' and not isinstance(v, dict):
|
165
|
+
raise Exception(f"Component position must be dict")
|
166
|
+
if k == 'size' and not isinstance(v, dict):
|
167
|
+
raise Exception(f"Component size must be dict")
|
168
|
+
if k == 'style' and not isinstance(v, dict):
|
169
|
+
raise Exception(f"Component style must be dict")
|
170
|
+
if k == 'props' and not isinstance(v, dict):
|
171
|
+
raise Exception(f"Component props must be dict")
|
172
|
+
if k == 'context' and not isinstance(v, dict):
|
173
|
+
raise Exception(f"Component context must be dict")
|
174
|
+
|
175
|
+
if k == 'definition' and not re.match(r'^model/([!()\-.0-9@A-Z\[\]_a-z{}~]{1,240})/([!()\-.0-9@A-Z\[\]_a-z{}~]{1,240})$', v):
|
176
|
+
raise Exception(f"Component definition must be in the format of 'model/owner/key'")
|
177
|
+
|
178
|
+
if k == 'zIndex' and v < 0:
|
179
|
+
raise Exception(f"Component zIndex must be greater than 0")
|
180
|
+
|
181
|
+
if isinstance(v, dict):
|
182
|
+
component.__dict__[k].update(v)
|
183
|
+
continue
|
184
|
+
|
185
|
+
component.__dict__[k] = v
|
186
|
+
|
cloudpss/model/model.py
CHANGED
@@ -137,7 +137,7 @@ class Model(object):
|
|
137
137
|
raise ValueError("不存在拓扑实现")
|
138
138
|
return diagramImplement.removeComponent(key)
|
139
139
|
|
140
|
-
def updateComponent(self, key,
|
140
|
+
def updateComponent(self, key, **kwargs):
|
141
141
|
"""
|
142
142
|
更新元件实现
|
143
143
|
|
@@ -148,7 +148,7 @@ class Model(object):
|
|
148
148
|
diagramImplement = self.revision.getImplements().getDiagram()
|
149
149
|
if diagramImplement is None:
|
150
150
|
raise ValueError("不存在拓扑实现")
|
151
|
-
return diagramImplement.updateComponent(key,
|
151
|
+
return diagramImplement.updateComponent(key, **kwargs)
|
152
152
|
|
153
153
|
|
154
154
|
def getComponentsByRid(self, rid: str):
|
@@ -397,6 +397,7 @@ class Model(object):
|
|
397
397
|
data = IO.load(filePath, format)
|
398
398
|
return data
|
399
399
|
|
400
|
+
|
400
401
|
@staticmethod
|
401
402
|
def dump(model, file, format="yaml", compress="gzip"):
|
402
403
|
"""
|
cloudpss/utils/IO.py
CHANGED
@@ -2,6 +2,7 @@ import io
|
|
2
2
|
import json
|
3
3
|
import ubjson
|
4
4
|
import yaml
|
5
|
+
from yaml.dumper import SafeDumper
|
5
6
|
import gzip
|
6
7
|
import base64
|
7
8
|
import struct
|
@@ -85,6 +86,7 @@ class IO(object):
|
|
85
86
|
result = ubjson.dumpb(obj)
|
86
87
|
if format == 'yaml':
|
87
88
|
result = yaml.dump(obj).encode(encoding="utf-8")
|
89
|
+
|
88
90
|
if result is None:
|
89
91
|
assert False, 'format not support'
|
90
92
|
if compress == 'gzip':
|
@@ -104,7 +106,7 @@ class IO(object):
|
|
104
106
|
if format == 'ubjson':
|
105
107
|
return ubjson.loadb(byt)
|
106
108
|
if format == 'yaml':
|
107
|
-
return yaml.load(io.BytesIO(byt), Loader=yaml.
|
109
|
+
return yaml.load(io.BytesIO(byt), Loader=yaml.FullLoader)
|
108
110
|
assert False, 'format not support'
|
109
111
|
|
110
112
|
@staticmethod
|
cloudpss/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = '4.5.
|
1
|
+
__version__ = '4.5.3'
|
@@ -1,6 +1,6 @@
|
|
1
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=Qwf2PqCgwNBpHE5DrBEwfOiFsFvEpa01UTldrgQkx9Q,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=NeG2YbIappMxAOCZGfFUcOBwo2Kyhh27kHMFK37re60,12711
|
18
|
+
cloudpss/dslab/dslab.py,sha256=K__KohK6w6Alj3WCmLJQ2pr_RPFvvtnce2C6tdLhTIE,9914
|
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,7 +32,7 @@ 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=uOvctmE3P17aGWt_26d940FbRUSEs6iovFBb8T5xjd4,1115
|
36
36
|
cloudpss/job/__init__.py,sha256=3UIFZYjJTzuckM61o8kim1c3PWt2SSHTL72jrGu5IzI,51
|
37
37
|
cloudpss/job/job.py,sha256=ciphBMfRkIK1bvZ1zrbuISojXiixoNwQRlCzfEVWOa8,8240
|
38
38
|
cloudpss/job/jobReceiver.py,sha256=PNYxcN33LiXZVyc4tzhPlpWxKnyWO_ElKjJ9wsxsroI,925
|
@@ -47,12 +47,12 @@ cloudpss/job/result/__init__.py,sha256=6zpp_s3Mcdi__FVfrBNLXw4Ee5ZBNgoZuYPJ8cqbj
|
|
47
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
|
-
cloudpss/model/model.py,sha256=
|
50
|
+
cloudpss/model/model.py,sha256=hS64Tb6JJvLDaCi4mBPUGbXvmzc-nQxlHtnh7OQpreo,27179
|
51
51
|
cloudpss/model/revision.py,sha256=IFznBKirwpfqadyCNJWPGL7lTpQxbCmU1fxdI5AvoA4,4002
|
52
52
|
cloudpss/model/topology.py,sha256=tKaOACAw9r9SppgxrhK-ZjMsG_jGLiNOzPnlIPLo964,2333
|
53
53
|
cloudpss/model/implements/__init__.py,sha256=88L_wF9SSzxsbtqwStWIPH4LxaKq7TVcssHQ62YBnls,67
|
54
54
|
cloudpss/model/implements/component.py,sha256=uNSpkZKChdXLiO40Ev4P3oQ1di2Hu4YjcBOb0I8Bf0c,734
|
55
|
-
cloudpss/model/implements/diagram.py,sha256=
|
55
|
+
cloudpss/model/implements/diagram.py,sha256=ILBq7oZVb2ZThmm_HdwGmGX0sZPwetoT4SSVN0xFqzo,6053
|
56
56
|
cloudpss/model/implements/implement.py,sha256=Uld96tjXVDbVUNV8xscyy_nZWLHr3iP2DqA6S3p-XJE,954
|
57
57
|
cloudpss/project/__init__.py,sha256=fpskY-cJGmMcTg1naVzNPtJaRG1xmSc2CFjDTin64Cw,51
|
58
58
|
cloudpss/project/project.py,sha256=uFhOnM8ngo1_ZYz2uArtORKZquYNdOIVLXU_q1MDFI4,17698
|
@@ -67,14 +67,14 @@ cloudpss/runner/result.py,sha256=GFpd7848gsLRuzhVcWbCwmAjR84Lhik_3pNCjOV8VOY,132
|
|
67
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
|
-
cloudpss/utils/IO.py,sha256=
|
70
|
+
cloudpss/utils/IO.py,sha256=FsFp3V8I1-P0YiBGmjKwbMalBrVKMHUxTjFZFOtv0CQ,5357
|
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
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.3.dist-info/METADATA,sha256=85B-9dgbPdsSS961DOPKWRoKeYn-8nYA2JJkSJRAJzM,2401
|
78
|
+
cloudpss-4.5.3.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
79
|
+
cloudpss-4.5.3.dist-info/top_level.txt,sha256=wS9qPU4-aWM9ouzMOx34Nlq-GkdQKpr9vBskwut1BD8,9
|
80
|
+
cloudpss-4.5.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|