cloudpss 4.0.12__py3-none-any.whl → 4.0.14__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.
@@ -0,0 +1,27 @@
1
+ from .curveData import 基准出力曲线, 基准出力曲线2, 基准出力曲线3, 负荷曲线, 策略曲线, 运行策略曲线
2
+
3
+ extra_paths = {
4
+ '光伏': 基准出力曲线,
5
+ '光伏曲线': 基准出力曲线,
6
+ '风机': 基准出力曲线,
7
+ '风机曲线': 基准出力曲线,
8
+ '燃气': 基准出力曲线2,
9
+ '燃气曲线': 基准出力曲线,
10
+ '水电': 基准出力曲线2,
11
+ '水电曲线': 基准出力曲线,
12
+ '火电': 基准出力曲线2,
13
+ '火电曲线': 基准出力曲线,
14
+ '生物质发电': 基准出力曲线2,
15
+ '生物质发电曲线': 基准出力曲线,
16
+ '垃圾电厂': 基准出力曲线2,
17
+ '垃圾电厂曲线': 基准出力曲线,
18
+ '负荷分类': 负荷曲线,
19
+ '负荷用户': 负荷曲线,
20
+ '储能运行策略': 运行策略曲线,
21
+ }
22
+
23
+ def getCurveData(kind):
24
+ if kind in extra_paths:
25
+ return extra_paths[kind]
26
+ else :
27
+ return []
@@ -0,0 +1,137 @@
1
+ import time
2
+ from cloudpss.runner.runner import Runner, HttpRunner, DSLabRunner
3
+ from cloudpss.runner.DSLabResult import DSLabResult
4
+ from ..utils import request
5
+ import json
6
+
7
+ class DSLabFinancialAnalysisModel(object):
8
+ _baseUri = 'api/dslab/rest/pe/'
9
+
10
+ _kindNameMap = {
11
+ "投资组成": "investmentbanchandproportion",
12
+ "资金来源": "capitalsource",
13
+ "资产形式": "assetformation",
14
+ "生产成本": "productioncost",
15
+ "流动资金及财务费用": "workingcapitalandfinancialexpenses",
16
+ "税率及附加": "projectcalculation",
17
+ }
18
+
19
+ # 财务评价基础参数接口默认值
20
+ _financialParasDefaultValues = {
21
+ "资产形式": {
22
+ "fixedAssetsRatio": "95",
23
+ "residualRrate": "5",
24
+ "depreciationPeriod": "15",
25
+ "reimbursementPeriod": "5"
26
+ },
27
+ "生产成本": {
28
+ 'annualSalary': "8",
29
+ 'capacity': "4",
30
+ 'insuranceRate': "0.25",
31
+ 'materialsExpenses': "5.0",
32
+ 'otherExpenses': "1.0",
33
+ 'welfareFactor': "0"
34
+ },
35
+ "流动资金及财务费用": {
36
+ "annualAPCirculationTimes": "12",
37
+ "annualARCirculationTimes": "12",
38
+ "annualCashCirculationTimes": "12",
39
+ "annualStockCirculationTimes": "12",
40
+ "interestRateAndWorkingCapital": "4",
41
+ "workingCapitalLoanRatio": "70"
42
+ },
43
+ "税率及附加": {
44
+ "aleatoricAccumulationFundRate": "0",
45
+ "basicDiscountRate": "8",
46
+ "cityMaintenanceConstructionTaxTate": "5",
47
+ "corporateIncomeTaxRate": "25",
48
+ "educationFeePlus": "5",
49
+ "electricityVATRate": "18",
50
+ "fuelBoughtVATRate": "10",
51
+ "hotColdVATRate": "12",
52
+ "legalAccumulationFundRate": "10",
53
+ "localEducationPlus": "2",
54
+ "materialBoughtVATRate": "17",
55
+ "steamSaleVATRate": "12"
56
+ }
57
+ }
58
+
59
+ def __init__(self, simulationId):
60
+ '''
61
+ 初始化
62
+ '''
63
+ self.simulationId = simulationId
64
+
65
+ def _saveItemData(self, url, data):
66
+ '''
67
+ 保存url链接对应的优化方案下财务评估模块的基础信息
68
+ :param url string类型,表示优化方案的接口链接
69
+
70
+ :return: dict 类型,代表方案对应的财务评价基础参数信息
71
+ '''
72
+ r = request('POST', url, None, data=json.dumps(data))
73
+ return json.loads(r.text)
74
+
75
+ def _fetchItemData(self, url, planID):
76
+ '''
77
+ 获取planID对应的优化方案下财务评估模块的基础信息
78
+ :param planID int类型,表示优化方案的ID,数值位于0~优化方案数量之间
79
+
80
+ :return: dict 类型,为源数据的引用,代表方案对应的财务评价基础参数信息
81
+ '''
82
+ r = request('GET',
83
+ url,
84
+ params={
85
+ "planId": planID,
86
+ "simu": self.simulationId
87
+ })
88
+ return json.loads(r.text)
89
+
90
+ def run(self, planID) -> Runner[DSLabResult]:
91
+ '''
92
+ 运行财务评价概览计算
93
+
94
+ :param planID int类型,表示优化方案的ID,数值位于0~优化方案数量之间
95
+
96
+ :return: Runner[DSLabResult]
97
+ '''
98
+ url = 'api/dslab/rest/saveDataToclickhouse'
99
+ try:
100
+ r = request('GET',
101
+ url,
102
+ params={
103
+ "planId": planID,
104
+ "simu": self.simulationId,
105
+ "CMD_TYPE": 'financialEvaluation'
106
+ })
107
+ data = json.loads(r.text)
108
+ return DSLabRunner({'rid': 'function/ieslab/evaluation'},
109
+ self.simulationId,
110
+ planId=planID,
111
+ cmdType='financialEvaluation')
112
+ except:
113
+ raise Exception('财务评价概览计算失败')
114
+
115
+ def GetFinancialParams(self, planID):
116
+ '''
117
+ 获取planID对应的优化方案下财务评估模块的基础信息
118
+ :param planID int类型,表示优化方案的ID,数值位于0~优化方案数量之间
119
+
120
+ :return: dict 类型,为源数据的引用,代表方案对应的财务评价基础参数信息
121
+ '''
122
+ dict_result = dict()
123
+ for k, v in self._kindNameMap.items():
124
+ kind = self._kindNameMap.get(k, k)
125
+ url = f"{self._baseUri}{kind}"
126
+ list_data = self._fetchItemData(url, planID)
127
+ if not list_data :
128
+ data = {
129
+ "simu": self.simulationId,
130
+ "planId": planID,
131
+ }
132
+ if k in self._financialParasDefaultValues:
133
+ data.update(self._financialParasDefaultValues[k])
134
+ dict_result[v] = self._saveItemData(url, data)
135
+ else:
136
+ dict_result[v] = list_data
137
+ return dict_result
@@ -99,6 +99,26 @@ class FunctionExecution(object):
99
99
  self._args = val
100
100
 
101
101
  @staticmethod
102
+ def __listObj2Array(data):
103
+ arr=[]
104
+ for item in data:
105
+ if type(item) is list:
106
+ arr.append(FunctionExecution.__listObj2Array(item))
107
+ elif type(item) is dict and ('ɵid' in item or '?id' in item ):
108
+ a = list(range(len(item)-1))
109
+ for k, v in item.items():
110
+ if k == 'ɵid' or k == '?id':
111
+ continue
112
+ k = int(k)
113
+ if type(v) is list:
114
+ a[k] = FunctionExecution.__listObj2Array(v)
115
+ else:
116
+ a[k] = v
117
+ arr.append(a)
118
+ else:
119
+ arr.append(item)
120
+ return arr
121
+ @staticmethod
102
122
  def __loadArgs():
103
123
  """加载当前任务参数
104
124
 
@@ -110,9 +130,12 @@ class FunctionExecution(object):
110
130
  if k.startswith('CLOUDPSS_JOB_ARG-'):
111
131
  s = k.split('-')
112
132
  key = bytes.decode(bytes.fromhex(s[1]))
113
- # print(key, v, flush=True)
114
-
115
- args[key] = json.loads(v)
133
+ data = json.loads(v)
134
+
135
+ if type(data) is list:
136
+ data = FunctionExecution.__listObj2Array(data)
137
+
138
+ args[key] = data
116
139
  return args
117
140
 
118
141
  def feedDog(self):
cloudpss/job/job.py CHANGED
@@ -41,11 +41,6 @@ class Job(Generic[T]):
41
41
  machine {
42
42
  id
43
43
  name
44
- tres {
45
- cpu
46
- ecpu
47
- mem
48
- }
49
44
  }
50
45
  input
51
46
  output
@@ -247,12 +242,15 @@ class Job(Generic[T]):
247
242
  return self._result
248
243
 
249
244
 
250
- def view(self, viewType:F)->F:
245
+ def view(self, viewType:F=None)->F:
251
246
  """
252
247
  获取当前运行实例的输出
253
248
  """
254
249
  receiver = self.read()
255
250
  sender = self.write()
251
+ if viewType is None:
252
+ viewType = getViewClass(self.context[0])
253
+
256
254
  return viewType(receiver, sender)
257
255
 
258
256
 
@@ -0,0 +1,92 @@
1
+ import json
2
+ from ..utils.httprequests import request
3
+
4
+ class DSLabResult(object):
5
+ _baseUri = "api/dslab/rest/"
6
+ _kindNameMap = {
7
+ "利润与利润分配": "getEconomyResult",
8
+ "财务计划现金": "getFinancialPlanCashFlowResult",
9
+ "资产负债": "getLiabilityAssetsResult",
10
+ "投资使用计划与资金筹措": "getInvestPlanDataResult",
11
+ "借款还本付息计划": "getLoanRepaymentPlanResult",
12
+ "流动资金估算": "getFlowCashEvaluteResult",
13
+ "资产折旧与摊销估算": "getFlowCashEvaluteResult",
14
+ "总成本费用估算表": "getSumCostResult",
15
+ "项目总投资现金流量": "getSumInvestFlowCashResult",
16
+ "项目资本金现金流量": "getProjectCashFlowResult",
17
+ "营业收入、税金、附加和增值税估算": "getIncomeTaxResult",
18
+ }
19
+
20
+ def __init__(self, simulationId, taskId=None, **keywords) -> None:
21
+ """
22
+ 初始化
23
+ """
24
+ self.simulationId = simulationId
25
+ self.timeId = keywords.get("timeId", 0)
26
+ self.planId = keywords.get("planId", 0)
27
+ self.cmdType = keywords.get("cmdType", None)
28
+
29
+ def _fetchItemData(self, url, planID):
30
+ """
31
+ 获取planID对应的优化方案下resultType财务评估结果
32
+
33
+ :param planID int 类型,表示优化方案的ID,数值位于0~优化方案数量之间
34
+ :param resultType enum 类型,表示财务评价结果表格的类型
35
+
36
+ :return: dict 类型,为源数据的引用,代表方案对应的财务评价基础参数信息
37
+ """
38
+ r = request(
39
+ "GET", url, params={"simu": self.simulationId, "planId": planID, "time": 0}
40
+ )
41
+ data = json.loads(r.text)
42
+ return data
43
+
44
+ def status(self):
45
+ """
46
+ 获取运行状态
47
+
48
+ :return: boolean 类型
49
+ """
50
+ result = self.GetOverviewResult()
51
+ if result is None or type(result) is list:
52
+ return False
53
+ return True
54
+
55
+ def GetFinancialResult(self, resultType):
56
+ """
57
+ 获取planID对应的优化方案下resultType财务评估结果
58
+ :param planID int 类型,表示优化方案的ID,数值位于0~优化方案数量之间
59
+ :param resultType enum 类型,表示财务评价结果表格的类型
60
+
61
+ :return: dict 类型,为源数据的引用,代表方案对应的财务评价基础参数信息
62
+
63
+ """
64
+ assert resultType in self._kindNameMap, "数据类型不存在"
65
+ kind = self._kindNameMap.get(resultType, resultType)
66
+ url = f"{self._baseUri}{kind}"
67
+ list = self._fetchItemData(url, self.planId)
68
+ dict_result = dict()
69
+ for val in list:
70
+ for k, v in val.items():
71
+ dict_result[k] = v
72
+ return dict_result["data"]
73
+
74
+ def GetOverviewResult(self):
75
+ """
76
+ 获取当前结果类对应的概览结果
77
+
78
+ :return: array类型,代表该方案对应的概览结果
79
+ """
80
+ r = request(
81
+ "GET",
82
+ "api/dslab/rest/getOverviewResult",
83
+ params={
84
+ "simu": self.simulationId,
85
+ "planId": self.planId,
86
+ "time": self.timeId,
87
+ },
88
+ )
89
+ result = json.loads(r.text)
90
+ if len(result) > 0:
91
+ return result[0]["data"]
92
+ return None
cloudpss/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = '4.0.12'
1
+ __version__ = '4.0.14'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudpss
3
- Version: 4.0.12
3
+ Version: 4.0.14
4
4
  Summary: cloudpss sdk
5
5
  Home-page: https://www.cloudpss.net
6
6
  Author: cloudpss
@@ -1,6 +1,6 @@
1
1
  cloudpss/__init__.py,sha256=Ov8K45KxSsPalPErvTRUb2GvPdJ3myucFqx7s37_YZo,777
2
2
  cloudpss/verify.py,sha256=KF4Gd59DGvCyIEkRD7rNnekWw22XxJpi3DW6keb6j4c,1498
3
- cloudpss/version.py,sha256=Si_A7Ukxe5n--C2TBuLF5Ujz61-wK8KqAmpUzUtCP0E,22
3
+ cloudpss/version.py,sha256=5S75AXvg8NRRISE7_5LIay82jswRl2Ar-p6fDKgzZto,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=ExA-8JVOWWW5neVvNazPk4i3Z-q8xqYBL4qXU1m3rgM,3891
@@ -13,9 +13,16 @@ cloudpss/asyncio/model/topology.py,sha256=jouPmteTxpTV6mFzUGy7CiSEnBrbtCu-1shimJ
13
13
  cloudpss/asyncio/utils/AsyncIterable.py,sha256=AIWYrTnmjsIfOowE3asZlexdHNhpK2gm7aucfyyVoQw,781
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
+ cloudpss/dslab/__init__.py,sha256=UdLDA9OArvLndHtumYAMMHdr5h8S6DrZCYkXIi2Mb4Y,45
17
+ cloudpss/dslab/dataManageModel.py,sha256=7sTRpAGnuSNtFsUb-VEDp5XzOlAZvidypkniHX32wLY,11527
18
+ cloudpss/dslab/dslab.py,sha256=K-tRlNE9use-i1MzwgBAdVr0w4i03WHHEzjFOme095Q,13511
19
+ cloudpss/dslab/financialAnalysisModel.py,sha256=t9cZ03yWvLN5ojVeLp-UGgFBIFVU5wbnn5E0UHZA0ws,5062
20
+ cloudpss/dslab/files/__init__.py,sha256=l2g0VadtTiMW39zwCwHPHUC01Kbklb_nFUPVeQ16FwM,58
21
+ cloudpss/dslab/files/curveData.py,sha256=GU_DTTKjVn_ln9Hx0q9CFgfmNtokZi7b4DYSzGeP5dk,4291778
22
+ cloudpss/dslab/files/files.py,sha256=vS0VhAh1lb8oFw51E2rAsb0WpmqM9F9IprxNCAPqH1s,934
16
23
  cloudpss/function/__init__.py,sha256=TNzChB-gQF6oB62F423evpUlgcp6s03D4pKKs89Lz4Q,1629
17
24
  cloudpss/function/function.py,sha256=llomkfnTmKMiFJYJ2mKnmAEoIjTNVCnjCUUyiJMOV1s,29
18
- cloudpss/function/functionExecution.py,sha256=GcyhRlgYjRnJrreKOtERExbCp6XDedUlT0L7k-uqyZM,14640
25
+ cloudpss/function/functionExecution.py,sha256=ZHHKC5cz2Rp8dZan_MGGCAOXMp0fdngnUeq1FQ3M0CQ,15507
19
26
  cloudpss/function/job.py,sha256=LdzaTyjvBcMZIyLstSZnt79d2eREljx2HnNoilDp03A,13162
20
27
  cloudpss/ieslab/DataManageModel.py,sha256=YMpwp04GmkaK1gCnzp5tNAoPwkVfa9AkJPviqNOat7s,19445
21
28
  cloudpss/ieslab/EvaluationModel.py,sha256=SD7VB81wZnebGQWpx-eTQMQxe6ekFUFycQxz6RyYwOI,6721
@@ -24,7 +31,7 @@ cloudpss/ieslab/IESLabSimulation.py,sha256=sd27IZ2NIGqUQWWVsobUOOY_7b1QzVbUMeSmF
24
31
  cloudpss/ieslab/PlanModel.py,sha256=Dk5ZS_8IASqzMlLeN_gIDk76Gm_ybXjGY4pULBsWvEw,4790
25
32
  cloudpss/ieslab/__init__.py,sha256=kiyUaGRgtwqs0EI2dBBqLVK5V65u1PcY7YTFJX1T0yw,186
26
33
  cloudpss/job/__init__.py,sha256=3UIFZYjJTzuckM61o8kim1c3PWt2SSHTL72jrGu5IzI,51
27
- cloudpss/job/job.py,sha256=jLgOXg37R_BvdEthf434y7TZTgcCuwEqblwAj5D3a04,7968
34
+ cloudpss/job/job.py,sha256=lBOLbks-5Du8PPYNl2vqvZyufKdrsKZgXfjKKixLONA,7930
28
35
  cloudpss/job/jobReceiver.py,sha256=b52Q7eQjVXi1C8xP2koix6N0GdQy_ar0YJ33KyPfsSA,919
29
36
  cloudpss/job/messageStreamReceiver.py,sha256=VvrDewFjiZxMHZJUoMh2_CYC1bmcztY1TrNx0WSsQIU,4133
30
37
  cloudpss/job/messageStreamSender.py,sha256=MCgMP6Epgu2md_rhZhHeGv8q8sObF_wHfL3WpANoreM,2371
@@ -46,6 +53,7 @@ cloudpss/model/implements/diagram.py,sha256=N5RrrywmxOmc2KvP0nC-NiECT1tEhgJZPtiN
46
53
  cloudpss/model/implements/implement.py,sha256=Uld96tjXVDbVUNV8xscyy_nZWLHr3iP2DqA6S3p-XJE,954
47
54
  cloudpss/project/__init__.py,sha256=fpskY-cJGmMcTg1naVzNPtJaRG1xmSc2CFjDTin64Cw,51
48
55
  cloudpss/project/project.py,sha256=sGvJEd9yEB5NARRa64gwF96hK69gQSmwX8lQANLhBos,17700
56
+ cloudpss/runner/DSLabResult.py,sha256=xJqKA3e1KSXQmLDe9_T6fG1exdE9j7EjfIfvBMmqiJ8,3422
49
57
  cloudpss/runner/IESLabEvaluationResult.py,sha256=uFNLiN5kzlzSGlLIq3ybuRwB-ufYytflVrXV5g7voOU,5841
50
58
  cloudpss/runner/IESLabPlanResult.py,sha256=dCyTbMtITy9XDjE42knrpJrvaH7dvFgfQMZbx9hybRs,6862
51
59
  cloudpss/runner/IESLabTypicalDayResult.py,sha256=3egAzmv32sr4wKaVgLxsM75ScSb08F4-iLEbuPkoi_c,8001
@@ -63,7 +71,7 @@ cloudpss/utils/graphqlUtil.py,sha256=swl6XT1UmUQHdHjMWw3M0i8meEmVKNQvX0SHsbgg8TU
63
71
  cloudpss/utils/httprequests.py,sha256=-RYi1Dc4QDqqupuw0x-lq74dFvCqPrZfCJKgrdolEpk,1643
64
72
  cloudpss/utils/matlab.py,sha256=SLwVt790BjklJK2XNELt9R2n_1ej9Y8QsTIdFkKXLWE,795
65
73
  cloudpss/utils/yamlLoader.py,sha256=KRlRkHFltOjqxa_sesdBLf1W5J7XTgvubszsSw-XR0U,2885
66
- cloudpss-4.0.12.dist-info/METADATA,sha256=Oda-HTp6UN6kZE_oCcPVYNX0XPVzEvn0s4Z3QGBIc2c,2369
67
- cloudpss-4.0.12.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
68
- cloudpss-4.0.12.dist-info/top_level.txt,sha256=wS9qPU4-aWM9ouzMOx34Nlq-GkdQKpr9vBskwut1BD8,9
69
- cloudpss-4.0.12.dist-info/RECORD,,
74
+ cloudpss-4.0.14.dist-info/METADATA,sha256=a1Nvm-X3XfXKppgQ1uCd_Y2UvHQ8Z89U1zs1cZhV78o,2369
75
+ cloudpss-4.0.14.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
76
+ cloudpss-4.0.14.dist-info/top_level.txt,sha256=wS9qPU4-aWM9ouzMOx34Nlq-GkdQKpr9vBskwut1BD8,9
77
+ cloudpss-4.0.14.dist-info/RECORD,,