cloudpss 4.5.18__tar.gz → 4.6.0a1__tar.gz

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.
Files changed (118) hide show
  1. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/PKG-INFO +1 -1
  2. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/ieslab/DataManageModel.py +11 -1
  3. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/ieslab/PlanModel.py +6 -2
  4. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/job/job.py +15 -20
  5. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/job/messageStreamReceiver.py +22 -26
  6. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/job/messageStreamSender.py +2 -4
  7. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/job/result/EMTResult.py +2 -13
  8. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/model/implements/diagram.py +2 -4
  9. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/model/model.py +7 -8
  10. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/model/revision.py +4 -4
  11. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/runner/runner.py +3 -7
  12. cloudpss-4.6.0a1/cloudpss/utils/graphqlUtil.py +11 -0
  13. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/utils/httprequests.py +1 -2
  14. cloudpss-4.6.0a1/cloudpss/version.py +1 -0
  15. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss.egg-info/PKG-INFO +1 -1
  16. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss.egg-info/SOURCES.txt +0 -1
  17. cloudpss-4.5.18/cloudpss/utils/graphqlUtil.py +0 -11
  18. cloudpss-4.5.18/cloudpss/utils/parseDebugArgs.py +0 -93
  19. cloudpss-4.5.18/cloudpss/version.py +0 -1
  20. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/README.md +0 -0
  21. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/__init__.py +0 -0
  22. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/asyncio/__init__.py +0 -0
  23. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/asyncio/job/__init__.py +0 -0
  24. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/asyncio/job/job.py +0 -0
  25. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/asyncio/job/messageStreamReceiver.py +0 -0
  26. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/asyncio/job/messageStreamSender.py +0 -0
  27. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/asyncio/model/__init__.py +0 -0
  28. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/asyncio/model/model.py +0 -0
  29. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/asyncio/model/revision.py +0 -0
  30. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/asyncio/model/topology.py +0 -0
  31. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/asyncio/utils/AsyncIterable.py +0 -0
  32. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/asyncio/utils/__init__.py +0 -0
  33. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/asyncio/utils/httpAsyncRequest.py +0 -0
  34. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/dslab/__init__.py +0 -0
  35. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/dslab/dataManageModel.py +0 -0
  36. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/dslab/dslab.py +0 -0
  37. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/dslab/files/__init__.py +0 -0
  38. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/dslab/files/curveData.py +0 -0
  39. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/dslab/files/files.py +0 -0
  40. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/dslab/financialAnalysisModel.py +0 -0
  41. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/function/__init__.py +0 -0
  42. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/function/function.py +0 -0
  43. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/function/functionExecution.py +0 -0
  44. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/function/job.py +0 -0
  45. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/ieslab/EvaluationModel.py +0 -0
  46. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/ieslab/IESLabOpt.py +0 -0
  47. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/ieslab/IESLabPlan.py +0 -0
  48. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/ieslab/IESLabSimulation.py +0 -0
  49. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/ieslab/__init__.py +0 -0
  50. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/job/TemplateCompiler.py +0 -0
  51. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/job/TemplateManager.py +0 -0
  52. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/job/__init__.py +0 -0
  53. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/job/jobReceiver.py +0 -0
  54. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/job/result/IESLabSimulationResult.py +0 -0
  55. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/job/result/IESLabTypicalDayResult.py +0 -0
  56. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/job/result/IESResult.py +0 -0
  57. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/job/result/PowerFlowResult.py +0 -0
  58. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/job/result/__init__.py +0 -0
  59. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/job/result/result.py +0 -0
  60. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/model/__init__.py +0 -0
  61. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/model/implements/__init__.py +0 -0
  62. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/model/implements/component.py +0 -0
  63. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/model/implements/implement.py +0 -0
  64. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/model/jobDefinitions.py +0 -0
  65. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/model/topology.py +0 -0
  66. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/project/__init__.py +0 -0
  67. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/project/project.py +0 -0
  68. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/runner/DSLabResult.py +0 -0
  69. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/runner/IESLabEvaluationResult.py +0 -0
  70. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/runner/IESLabPlanResult.py +0 -0
  71. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/runner/IESLabTypicalDayResult.py +0 -0
  72. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/runner/MessageStreamReceiver.py +0 -0
  73. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/runner/__init__.py +0 -0
  74. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/runner/receiver.py +0 -0
  75. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/runner/result.py +0 -0
  76. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/runner/storage.py +0 -0
  77. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/runner/transform.py +0 -0
  78. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/utils/IO.py +0 -0
  79. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/utils/__init__.py +0 -0
  80. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/utils/dataEncoder.py +0 -0
  81. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/utils/matlab.py +0 -0
  82. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/utils/yamlLoader.py +0 -0
  83. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss/verify.py +0 -0
  84. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss.egg-info/dependency_links.txt +0 -0
  85. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss.egg-info/requires.txt +0 -0
  86. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/cloudpss.egg-info/top_level.txt +0 -0
  87. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/setup.cfg +0 -0
  88. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/setup.py +0 -0
  89. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test-async.py +0 -0
  90. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test-async2.py +0 -0
  91. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test-async3.py +0 -0
  92. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test-plot.py +0 -0
  93. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test-plot1.py +0 -0
  94. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test-sdk.py +0 -0
  95. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test-sdk1.py +0 -0
  96. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test-snapshot.py +0 -0
  97. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test-topology.py +0 -0
  98. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test-topology1.py +0 -0
  99. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test-yield.py +0 -0
  100. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test.py +0 -0
  101. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test11.py +0 -0
  102. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test12.py +0 -0
  103. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test2.py +0 -0
  104. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test7950.py +0 -0
  105. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/testAsync.py +0 -0
  106. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/testEvent.py +0 -0
  107. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/testRt-test.py +0 -0
  108. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/testRt.py +0 -0
  109. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/testRt2.py +0 -0
  110. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/testSend.py +0 -0
  111. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test_TCP.py +0 -0
  112. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test_in_new_web_1.py +0 -0
  113. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test_modepower_ampratio(3).py +0 -0
  114. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test_ws.py +0 -0
  115. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test_ws2.py +0 -0
  116. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/test_ws3.py +0 -0
  117. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/testb.py +0 -0
  118. {cloudpss-4.5.18 → cloudpss-4.6.0a1}/test/testkey.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudpss
3
- Version: 4.5.18
3
+ Version: 4.6.0a1
4
4
  Summary: cloudpss sdk
5
5
  Home-page: https://www.cloudpss.net
6
6
  Author: cloudpss
@@ -83,7 +83,7 @@ class DataManageModel(object):
83
83
 
84
84
  :return: 无
85
85
  '''
86
- list = ['thermalLoads', 'heatingLoad', 'coolingLoad', 'electricLoads', 'fuels', 'typhoon', 'rainfall', 'earthquake', 'extremeCold', 'HydrogenLoad', 'ammoniaLoad']
86
+ list = ['thermalLoads', 'heatingLoad', 'coolingLoad', 'electricLoads', 'fuels', 'typhoon', 'rainfall', 'earthquake', 'extremeCold', 'HydrogenLoad', 'ammoniaLoad', 'MethaneLoad']
87
87
  for kind,value in self._kindUrlMap.items():
88
88
  try:
89
89
  if kind in list:
@@ -496,6 +496,11 @@ class IESOptDataManageModel(DataManageModel):
496
496
  "制氮设备": "NitrogenProduction",
497
497
  "氨负荷": "ammoniaLoad",
498
498
  "氨": "Ammonia",
499
+ "制甲烷设备": "MethaneProduction",
500
+ "碳捕集设备": "CarbonCapture",
501
+ "储碳装置": "CarbonStorage",
502
+ "甲烷负荷": "MethaneLoad",
503
+ "甲烷": "Methane",
499
504
  }
500
505
  _kindUrlMap = {
501
506
  "PhotovoltaicSys": "api/ieslab-opt/rest/dpcs/",
@@ -547,5 +552,10 @@ class IESOptDataManageModel(DataManageModel):
547
552
  "NitrogenProduction": "api/ieslab-opt/rest/asec/",
548
553
  "ammoniaLoad": "api/ieslab-opt/rest/ammoniaLoad/",
549
554
  "Ammonia": "api/ieslab-opt/rest/ammonia/",
555
+ "MethaneProduction": "api/ieslab-opt/rest/mcp/",
556
+ "CarbonCapture": "api/ieslab-opt/rest/cc/",
557
+ "CarbonStorage": "api/ieslab-opt/rest/escs/",
558
+ "MethaneLoad": "api/ieslab-opt/rest/methaneLoad/",
559
+ "Methane": "api/ieslab-opt/rest/methane/",
550
560
  }
551
561
  pass
@@ -171,7 +171,7 @@ class IESLabOptModel(object):
171
171
  '''
172
172
  获取当前算例的优化目标设置信息
173
173
 
174
- :return: Dict 类型,例如:{'OptGoal': <OptimizationMode.经济性: 0>, 'StoSen': "10", '@debug': '', 'clustering_algorithm': '0', 'num_method': '0', 'PowUnPrice': '1000', 'HeatAbandonPrice': '1000'}
174
+ :return: Dict 类型,例如:{'OptGoal': <OptimizationMode.经济性: 0>, 'StoSen': "10", '@debug': '', 'clustering_algorithm': '0', 'num_method': '0', AbandonRen: '0', 'PowUnPrice': '1000', 'HeatAbandonPrice': '1000'}
175
175
  '''
176
176
  try:
177
177
  url = f'{self._baseUri}/simuOpt/'
@@ -184,6 +184,7 @@ class IESLabOptModel(object):
184
184
  "@debug": "",
185
185
  "clustering_algorithm": "0",
186
186
  "num_method": "0",
187
+ "AbandonRen": "0",
187
188
  "PowUnPrice": "1000",
188
189
  "HeatAbandonPrice": "1000"
189
190
  }
@@ -195,6 +196,7 @@ class IESLabOptModel(object):
195
196
  "@debug": value["@debug"],
196
197
  "clustering_algorithm": value["clustering_algorithm"],
197
198
  "num_method": value["num_method"],
199
+ "AbandonRen": value["AbandonRen"],
198
200
  "PowUnPrice": value["PowUnPrice"],
199
201
  "HeatAbandonPrice": value["HeatAbandonPrice"]
200
202
  }
@@ -205,7 +207,7 @@ class IESLabOptModel(object):
205
207
  '''
206
208
  设置当前算例的优化目标
207
209
 
208
- :param data: dict 类型,例如:{'OptGoal': <OptimizationMode.经济性: 0>, 'StoSen': "10", '@debug': '', 'clustering_algorithm': '0', 'num_method': '0', 'PowUnPrice': '1000', 'HeatAbandonPrice': '1000'}
210
+ :param data: dict 类型,例如:{'OptGoal': <OptimizationMode.经济性: 0>, 'StoSen': "10", '@debug': '', 'clustering_algorithm': '0', 'num_method': '0','AbandonRen': '0', 'PowUnPrice': '1000', 'HeatAbandonPrice': '1000'}
209
211
 
210
212
  :return: boolean 类型,为 True 则设置成功
211
213
  '''
@@ -219,6 +221,7 @@ class IESLabOptModel(object):
219
221
  "@debug": data.get('@debug', ''),
220
222
  "clustering_algorithm": data.get('clustering_algorithm', ''),
221
223
  "num_method": data.get('num_method', ''),
224
+ "AbandonRen": data.get('AbandonRen', ''),
222
225
  "PowUnPrice": data.get('PowUnPrice', ''),
223
226
  "HeatAbandonPrice": data.get('HeatAbandonPrice', '')
224
227
  }
@@ -267,6 +270,7 @@ class IESLabOptModel(object):
267
270
  "@debug": self.optimizationInfo.get('@debug', ''),
268
271
  "clustering_algorithm": self.optimizationInfo.get('clustering_algorithm', '0'),
269
272
  "num_method": self.optimizationInfo.get('num_method', '0'),
273
+ "AbandonRen": self.optimizationInfo.get('AbandonRen', '0'),
270
274
  "PowUnPrice": self.optimizationInfo.get('PowUnPrice', '1000'),
271
275
  "HeatAbandonPrice": self.optimizationInfo.get('HeatAbandonPrice', '1000'),
272
276
  }
@@ -4,7 +4,6 @@ import re
4
4
  import time
5
5
 
6
6
  from cloudpss.job.result.result import Result
7
- from cloudpss.utils.parseDebugArgs import parse_debug_args
8
7
  from .result import getResultClass
9
8
 
10
9
  from cloudpss.utils.IO import IO
@@ -66,7 +65,6 @@ class Job(Generic[T]):
66
65
  input,
67
66
  output,
68
67
  position,
69
- **kwargs
70
68
  ):
71
69
  super(Job, self).__init__()
72
70
  self.id = id
@@ -86,10 +84,9 @@ class Job(Generic[T]):
86
84
  self.__receiver = None
87
85
  self.__sender = None
88
86
  self._result = None
89
- self.baseUrl = kwargs.get("baseUrl", None)
90
87
 
91
88
  @staticmethod
92
- def fetch(id, **kwargs):
89
+ def fetch(id):
93
90
  """
94
91
  获取job信息
95
92
  """
@@ -97,10 +94,11 @@ class Job(Generic[T]):
97
94
  raise Exception("id is None")
98
95
 
99
96
  variables = {"_a": {"id": id}}
100
- r = graphql_request(Job.__jobQuery, variables,**kwargs)
97
+
98
+ r = graphql_request(Job.__jobQuery, variables)
101
99
  if "errors" in r:
102
100
  raise Exception(r["errors"])
103
- return Job(**r["data"]["job"],**kwargs)
101
+ return Job(**r["data"]["job"])
104
102
 
105
103
 
106
104
  # @staticmethod
@@ -135,12 +133,9 @@ class Job(Generic[T]):
135
133
  debug = job["args"].get("@debug", None )
136
134
  debugargs={}
137
135
  if debug is not None:
138
- parsed = parse_debug_args(debug)
139
- if parsed is not None:
140
- debugargs = parsed
141
- # t= [ i.split('=') for i in re.split(r'\s+',debug) if i.find('=')>0]
142
- # for i in t:
143
- # debugargs[i[0]]=i[1]
136
+ t= [ i.split('=') for i in re.split(r'\s+',debug) if i.find('=')>0]
137
+ for i in t:
138
+ debugargs[i[0]]=i[1]
144
139
  context=[
145
140
  function,
146
141
  f"model/@sdk/{str(int(time.time() * random.random()))}",
@@ -167,7 +162,7 @@ class Job(Generic[T]):
167
162
  }
168
163
  return variables
169
164
  @staticmethod
170
- def create(revisionHash, job, config, name=None, rid=None, policy=None, **kwargs):
165
+ def create(revisionHash, job, config, name=None, rid=None, policy=None, **kwargs):
171
166
  """
172
167
  创建一个运行任务
173
168
 
@@ -182,11 +177,11 @@ class Job(Generic[T]):
182
177
  >>> runner = Runner.runRevision(revision,job,config,'')
183
178
  """
184
179
  variables=Job.__createJobVariables(job, config, revisionHash, rid=rid, policy=policy, **kwargs)
185
- r = graphql_request(Job.__createJobQuery, variables,**kwargs)
180
+ r = graphql_request(Job.__createJobQuery, variables)
186
181
  if "errors" in r:
187
182
  raise Exception(r["errors"])
188
183
  id = r["data"]["job"]["id"]
189
- return Job.fetch(id,**kwargs)
184
+ return Job.fetch(id)
190
185
 
191
186
 
192
187
 
@@ -207,7 +202,7 @@ class Job(Generic[T]):
207
202
  if receiver is not None:
208
203
  self.__receiver = receiver
209
204
  if self.__receiver is None:
210
- self.__receiver = MessageStreamReceiver(self.output,baseUrl=self.baseUrl)
205
+ self.__receiver = MessageStreamReceiver(self.output)
211
206
  self.__receiver.connect(**kwargs)
212
207
  return self.__receiver
213
208
 
@@ -221,7 +216,7 @@ class Job(Generic[T]):
221
216
  if sender is not None:
222
217
  self.__sender = sender
223
218
  if self.__sender is None:
224
- self.__sender = MessageStreamSender(self.input,baseUrl=self.baseUrl)
219
+ self.__sender = MessageStreamSender(self.input)
225
220
  self.__sender.connect_legacy(**kwargs)
226
221
  return self.__sender
227
222
 
@@ -270,7 +265,7 @@ class Job(Generic[T]):
270
265
 
271
266
 
272
267
 
273
- def abort(self,timeout=3,**kwargs):
268
+ def abort(self,timeout=3):
274
269
  """
275
270
  中断当前运行实例
276
271
  """
@@ -283,8 +278,8 @@ class Job(Generic[T]):
283
278
  '''
284
279
  variables = {
285
280
  'input': {
286
- 'id': self.id,
281
+ 'id': self.taskId,
287
282
  'timeout': timeout
288
283
  }
289
284
  }
290
- graphql_request(query, variables,**kwargs)
285
+ graphql_request(query, variables)
@@ -24,12 +24,10 @@ class Message(object):
24
24
 
25
25
 
26
26
  class MessageStreamReceiver(JobReceiver):
27
- def __init__(self, output,**kwargs):
27
+ def __init__(self, output):
28
28
  super().__init__()
29
29
  self.id = output
30
- self.origin = kwargs.get("baseUrl",None)
31
- if self.origin is None:
32
- self.origin =os.environ.get("CLOUDPSS_API_URL", "https://cloudpss.net/")
30
+ self.origin = os.environ.get("CLOUDPSS_API_URL", "https://cloudpss.net/")
33
31
  self.__hasOpen = False
34
32
  self.templates=TemplateManager()
35
33
  self.timeOffset=0
@@ -66,28 +64,26 @@ class MessageStreamReceiver(JobReceiver):
66
64
  message = args[1]
67
65
  return self.__on_message(message)
68
66
  def __on_message(self, message):
69
- try:
70
- data = IO.deserialize(message, "ubjson")
71
- self.updateTime(data["timestamp"])
72
- self.ws.url = self.__path(data["id"])
73
- msg = IO.deserialize(data["data"], "ubjson")
74
- if type(msg) is list:
75
- if len(msg) == 3:
76
- pass
77
-
78
- templateMessage = self.templates.invoke(msg)
79
- for m in templateMessage:
80
- self.messages.append(m)
81
- return
82
- else:
83
- self.templates.create(msg)
84
- return
85
-
86
- self.messages.append(msg)
87
- return msg
88
- except Exception as e:
89
- self.ws.close()
90
- return None
67
+
68
+ data = IO.deserialize(message, "ubjson")
69
+ self.updateTime(data["timestamp"])
70
+ self.ws.url = self.__path(data["id"])
71
+ msg = IO.deserialize(data["data"], "ubjson")
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
+ self.messages.append(msg)
86
+ return msg
91
87
 
92
88
 
93
89
  def __on_error(self, *args, **kwargs):
@@ -12,12 +12,10 @@ import logging
12
12
 
13
13
 
14
14
  class MessageStreamSender:
15
- def __init__(self, input,**kwargs):
15
+ def __init__(self, input):
16
16
  super().__init__()
17
17
  self.input = input
18
- self.origin = kwargs.get("baseUrl",None)
19
- if self.origin is None:
20
- self.origin =os.environ.get("CLOUDPSS_API_URL", "https://cloudpss.net/")
18
+ self.origin = os.environ.get("CLOUDPSS_API_URL", "https://cloudpss.net/")
21
19
  self.__hasOpen = False
22
20
 
23
21
  def __on_message(self, ws, message):
@@ -38,11 +38,6 @@ class EMTResult(Result):
38
38
  该类只提供 EMT 仿真使用
39
39
 
40
40
  """
41
-
42
- def __init__(self, receiver, sender = None):
43
- super().__init__(receiver, sender)
44
- self.virtualInput=VirtualInput()
45
-
46
41
  __messageIndex = 0
47
42
  def getPlots(self):
48
43
  '''
@@ -145,21 +140,15 @@ class EMTResult(Result):
145
140
  else:
146
141
  raise Exception('transmitter is None')
147
142
 
148
- def send(self,message=None):
143
+ def send(self,message):
149
144
  """
150
145
  发送消息
151
146
  """
152
147
  if self._sender is not None:
153
- val ={
154
- "type": 'virtual_input',
155
- "data": message,
156
- }
148
+ val =message
157
149
  if type(message) is VirtualInput:
158
150
  val = message.toJson()
159
151
 
160
- if message is None:
161
- val = self.virtualInput.toJson()
162
-
163
152
  self._sender.write(val)
164
153
  else:
165
154
  raise Exception('transmitter is None')
@@ -73,7 +73,7 @@ class DiagramImplement(object):
73
73
 
74
74
  >>>> diagram.addComponent(args)
75
75
  """
76
- id = "comp_" + str(uuid.uuid4()).replace("-", "_")
76
+ id = "comp_" + str(uuid.uuid4())
77
77
  shape = "diagram-component"
78
78
  definition = definition
79
79
  label = label or definition
@@ -126,10 +126,8 @@ class DiagramImplement(object):
126
126
  component = self.cells.get(key)
127
127
  if not component:
128
128
  return False
129
+ position = component.position.copy()
129
130
  del self.cells[key]
130
- position=getattr(component, "position", None)
131
- if position is None:
132
- return True
133
131
  for edge in self.cells.values():
134
132
  if edge.shape == "diagram-edge":
135
133
  if edge.source.get("cell") == key:
@@ -298,7 +298,7 @@ class Model(object):
298
298
  return config
299
299
 
300
300
  @staticmethod
301
- def fetchMany(name=None, cursor=[], pageSize=10,owner=None,**kwargs):
301
+ def fetchMany(name=None, cursor=[], pageSize=10,owner=None):
302
302
  """
303
303
  获取用户可以运行的项目列表
304
304
 
@@ -332,13 +332,13 @@ class Model(object):
332
332
  if name is not None:
333
333
  variables["_search"] = name
334
334
 
335
- data = graphql_request(Model.__models_query, {"input": variables},**kwargs)
335
+ data = graphql_request(Model.__models_query, {"input": variables})
336
336
  if "errors" in data:
337
337
  raise Exception(data["errors"][0]["message"])
338
338
  return data["data"]["models"]['items']
339
339
 
340
340
  @staticmethod
341
- def fetch(rid,**kwargs):
341
+ def fetch(rid):
342
342
  """
343
343
  获取项目
344
344
 
@@ -349,7 +349,7 @@ class Model(object):
349
349
  >>> model=Model.fetch('model/Demo/test')
350
350
 
351
351
  """
352
- data = graphql_request(Model.__model_query, {"rid": rid},**kwargs)
352
+ data = graphql_request(Model.__model_query, {"rid": rid})
353
353
  if "errors" in data:
354
354
  raise Exception(data["errors"][0]["message"])
355
355
  return Model(data["data"]["model"])
@@ -464,7 +464,7 @@ class Model(object):
464
464
 
465
465
 
466
466
  @staticmethod
467
- def create(model,**kwargs):
467
+ def create(model):
468
468
  """
469
469
  新建项目
470
470
 
@@ -506,13 +506,12 @@ class Model(object):
506
506
  },
507
507
  }
508
508
  },
509
- **kwargs
510
509
  )
511
510
 
512
511
 
513
512
 
514
513
  @staticmethod
515
- def update(model,**kwargs):
514
+ def update(model):
516
515
  """
517
516
  更新项目
518
517
 
@@ -556,7 +555,7 @@ class Model(object):
556
555
  'tags': tags,
557
556
  "permissions": permissions,
558
557
  }
559
- },**kwargs)
558
+ })
560
559
  if "errors" in r:
561
560
  raise Exception(r["errors"][0]["message"])
562
561
  return r
@@ -75,8 +75,7 @@ class ModelRevision(object):
75
75
 
76
76
  >>> revision.run(revision,job,config,'')
77
77
  """
78
-
79
- revision= ModelRevision.create(self,**kwargs)
78
+ revision= ModelRevision.create(self)
80
79
  if stop_on_entry is not None:
81
80
  job['args']['stop_on_entry'] = stop_on_entry
82
81
  return Job.create(
@@ -85,7 +84,7 @@ class ModelRevision(object):
85
84
 
86
85
 
87
86
  @staticmethod
88
- def create(revision, parentHash=None, **kwargs):
87
+ def create(revision, parentHash=None):
89
88
  """
90
89
  创建一个新版本
91
90
 
@@ -96,11 +95,12 @@ class ModelRevision(object):
96
95
  >>> ModelRevision.create(model.revision)
97
96
  {hash:'4043acbddb9ce0c6174be65573c0380415bc48186c74a459f88865313743230c'}
98
97
  """
98
+
99
99
  r = revision.toJSON()
100
100
  if 'hash' in r:
101
101
  del r['hash']
102
102
  variables = {'a': {**r, 'parent': parentHash}}
103
- r = graphql_request(ModelRevision.__createModelRevisionQuery, variables,**kwargs)
103
+ r = graphql_request(ModelRevision.__createModelRevisionQuery, variables)
104
104
  if 'errors' in r:
105
105
  raise Exception(r['errors'])
106
106
 
@@ -7,7 +7,6 @@ import random
7
7
  from deprecated import deprecated
8
8
 
9
9
  from cloudpss.utils.graphqlUtil import graphql_request
10
- from cloudpss.utils.parseDebugArgs import parse_debug_args
11
10
  from .receiver import Receiver
12
11
  from .MessageStreamReceiver import MessageStreamReceiver
13
12
  from .result import IESLabSimulationResult, PowerFlowResult, EMTResult, Result, IESResult
@@ -165,12 +164,9 @@ class Runner(Generic[T]):
165
164
  debug = job["args"].get("@debug", None )
166
165
  debugargs={}
167
166
  if debug is not None:
168
- parsed = parse_debug_args(debug)
169
- if parsed is not None:
170
- debugargs = parsed
171
- # t= [ i.split('=') for i in re.split(r'\s+',debug) if i.find('=')>0]
172
- # for i in t:
173
- # debugargs[i[0]]=i[1]
167
+ t= [ i.split('=') for i in re.split(r'\s+',debug) if i.find('=')>0]
168
+ for i in t:
169
+ debugargs[i[0]]=i[1]
174
170
 
175
171
  context= [
176
172
  function,
@@ -0,0 +1,11 @@
1
+ # coding=UTF-8
2
+ import json
3
+ from cloudpss.utils import request
4
+
5
+
6
+ def graphql_request(query, variables=None, **kwargs):
7
+ payload = {'query': query, 'variables': variables}
8
+
9
+ r = request('POST', 'graphql', data=json.dumps(payload), **kwargs)
10
+
11
+ return json.loads(r.text)
@@ -12,8 +12,7 @@ def request(method, uri, baseUrl=None, params={}, token=None, **kwargs):
12
12
  if baseUrl == None:
13
13
  baseUrl = os.environ.get('CLOUDPSS_API_URL', 'https://cloudpss.net/')
14
14
  url = requests.compat.urljoin(baseUrl,uri)
15
- if token is None:
16
- token = os.environ.get('CLOUDPSS_TOKEN', None)
15
+ token = os.environ.get('CLOUDPSS_TOKEN', None)
17
16
 
18
17
  if token:
19
18
  headers = {
@@ -0,0 +1 @@
1
+ __version__ = '4.6.0.alpha.1'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudpss
3
- Version: 4.5.18
3
+ Version: 4.6.0a1
4
4
  Summary: cloudpss sdk
5
5
  Home-page: https://www.cloudpss.net
6
6
  Author: cloudpss
@@ -80,7 +80,6 @@ cloudpss/utils/dataEncoder.py
80
80
  cloudpss/utils/graphqlUtil.py
81
81
  cloudpss/utils/httprequests.py
82
82
  cloudpss/utils/matlab.py
83
- cloudpss/utils/parseDebugArgs.py
84
83
  cloudpss/utils/yamlLoader.py
85
84
  test/test-async.py
86
85
  test/test-async2.py
@@ -1,11 +0,0 @@
1
- # coding=UTF-8
2
- import json
3
- from cloudpss.utils import request
4
-
5
-
6
- def graphql_request(query, variables=None, baseUrl=None,token=None,**kwargs):
7
- payload = {'query': query, 'variables': variables}
8
-
9
- r = request('POST', 'graphql', data=json.dumps(payload),baseUrl=baseUrl,token=token, **kwargs)
10
-
11
- return json.loads(r.text)
@@ -1,93 +0,0 @@
1
- def parse_debug_args(debug=None):
2
- if not debug or not isinstance(debug, str):
3
- return None
4
-
5
- tokens = []
6
-
7
- # 1. 先按照非转义的空格拆分字符串,获取每个 token
8
- current_token = ''
9
- escaping = False # 表示当前是否在处理转义字符
10
-
11
- for char in debug:
12
- if escaping:
13
- # 如果上一个字符是 '\',则把当前字符直接添加到 token,并保留 '\' 以供二阶段使用
14
- current_token += '\\' + char
15
- escaping = False
16
- elif char == '\\':
17
- # 开始转义
18
- escaping = True
19
- elif char.isspace():
20
- # 如果遇到空格 (并且不在转义状态),说明一个 token 结束
21
- if current_token:
22
- tokens.append(current_token)
23
- current_token = ''
24
- else:
25
- # 普通字符,直接添加
26
- current_token += char
27
-
28
- # 最后一个 token 加入数组(如果有的话)
29
- if current_token:
30
- tokens.append(current_token)
31
-
32
- if not tokens:
33
- return None
34
-
35
- # 2. 对每个 token,找第一个非转义的 '=' 分割 key/value
36
- entries = []
37
-
38
- for token in tokens:
39
- key = ''
40
- value = ''
41
- has_equal = False
42
- escaping = False
43
-
44
- # 我们只需要区分第一处真正的 '='
45
- for char in token:
46
- if escaping:
47
- # 处理转义字符
48
- if char == 'b':
49
- escaped_char = '\b'
50
- elif char == 'f':
51
- escaped_char = '\f'
52
- elif char == 'n':
53
- escaped_char = '\n'
54
- elif char == 'r':
55
- escaped_char = '\r'
56
- elif char == 't':
57
- escaped_char = '\t'
58
- elif char == 'v':
59
- escaped_char = '\v'
60
- else:
61
- escaped_char = char
62
-
63
- # 直接添加当前字符
64
- if not has_equal:
65
- key += escaped_char
66
- else:
67
- if escaped_char in ['\\', '$']:
68
- # 保留转义字符
69
- value += '\\' + escaped_char
70
- else:
71
- value += escaped_char
72
- escaping = False
73
- elif char == '\\':
74
- escaping = True
75
- elif char == '=' and not has_equal:
76
- # 遇到第一个非转义的 '=' 时,视为 key/value 分隔
77
- has_equal = True
78
- else:
79
- # 普通字符
80
- if not has_equal:
81
- key += char
82
- else:
83
- value += char
84
-
85
- # 添加 key 和 value 到 entries 列表
86
- entries.append((key, value))
87
-
88
- return dict(entries)
89
-
90
- # 示例用法
91
- # debug_str = r"TASK_CMD=cloudpssrun:mkl DOCKER_MOUNT=/dev/disk/by-id:/dev/disk/by-id:ro\n/home/cloudpss/NR_ADPSS_HVDC37.key:/usr/include/NR_ADPSS_HVDC37.key:ro\n"
92
- # result = parse_debug_args(debug_str)
93
- # print(result)
@@ -1 +0,0 @@
1
- __version__ = '4.5.18'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes