cloudpss 4.5.15__py3-none-any.whl → 4.5.17__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/job/job.py CHANGED
@@ -4,6 +4,7 @@ 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
7
8
  from .result import getResultClass
8
9
 
9
10
  from cloudpss.utils.IO import IO
@@ -134,9 +135,12 @@ class Job(Generic[T]):
134
135
  debug = job["args"].get("@debug", None )
135
136
  debugargs={}
136
137
  if debug is not None:
137
- t= [ i.split('=') for i in re.split(r'\s+',debug) if i.find('=')>0]
138
- for i in t:
139
- debugargs[i[0]]=i[1]
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]
140
144
  context=[
141
145
  function,
142
146
  f"model/@sdk/{str(int(time.time() * random.random()))}",
@@ -27,7 +27,10 @@ class MessageStreamReceiver(JobReceiver):
27
27
  def __init__(self, output,**kwargs):
28
28
  super().__init__()
29
29
  self.id = output
30
- self.origin = kwargs.get("baseUrl",os.environ.get("CLOUDPSS_API_URL", "https://cloudpss.net/"))
30
+ print(kwargs)
31
+ self.origin = kwargs.get("baseUrl",None)
32
+ if self.origin is None:
33
+ self.origin =os.environ.get("CLOUDPSS_API_URL", "https://cloudpss.net/")
31
34
  self.__hasOpen = False
32
35
  self.templates=TemplateManager()
33
36
  self.timeOffset=0
@@ -15,7 +15,9 @@ class MessageStreamSender:
15
15
  def __init__(self, input,**kwargs):
16
16
  super().__init__()
17
17
  self.input = input
18
- self.origin = kwargs.get("baseUrl",os.environ.get("CLOUDPSS_API_URL", "https://cloudpss.net/"))
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/")
19
21
  self.__hasOpen = False
20
22
 
21
23
  def __on_message(self, ws, message):
@@ -73,7 +73,7 @@ class DiagramImplement(object):
73
73
 
74
74
  >>>> diagram.addComponent(args)
75
75
  """
76
- id = "comp_" + str(uuid.uuid4())
76
+ id = "comp_" + str(uuid.uuid4()).replace("-", "_")
77
77
  shape = "diagram-component"
78
78
  definition = definition
79
79
  label = label or definition
cloudpss/runner/runner.py CHANGED
@@ -7,6 +7,7 @@ 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
10
11
  from .receiver import Receiver
11
12
  from .MessageStreamReceiver import MessageStreamReceiver
12
13
  from .result import IESLabSimulationResult, PowerFlowResult, EMTResult, Result, IESResult
@@ -164,9 +165,12 @@ class Runner(Generic[T]):
164
165
  debug = job["args"].get("@debug", None )
165
166
  debugargs={}
166
167
  if debug is not None:
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]
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]
170
174
 
171
175
  context= [
172
176
  function,
@@ -0,0 +1,93 @@
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)
cloudpss/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = '4.5.15'
1
+ __version__ = '4.5.17'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cloudpss
3
- Version: 4.5.15
3
+ Version: 4.5.17
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=xnA-UjehYOzH6KV7vOXHwdbGEiw6g_OPKzrbZA9Fuc8,858
2
2
  cloudpss/verify.py,sha256=KF4Gd59DGvCyIEkRD7rNnekWw22XxJpi3DW6keb6j4c,1498
3
- cloudpss/version.py,sha256=tSsepOcbNt8DX4JgJ-Dlwbcts2PAeUK69aReQTlWCkM,23
3
+ cloudpss/version.py,sha256=odzwOZGBQ9G--qb4MBWz3OXJ2nnIAWLMQIvvMeGjDxg,23
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
@@ -34,10 +34,10 @@ cloudpss/ieslab/__init__.py,sha256=gr1rXYw9vIAGOe60eg7LyMHP7QDXvNf4dJ5GTR_kj1Y,2
34
34
  cloudpss/job/TemplateCompiler.py,sha256=MuJDTQ54wRo5bGSvBJBJjXJ7u463dwpRkaLwIwm_hLE,9936
35
35
  cloudpss/job/TemplateManager.py,sha256=uOvctmE3P17aGWt_26d940FbRUSEs6iovFBb8T5xjd4,1115
36
36
  cloudpss/job/__init__.py,sha256=3UIFZYjJTzuckM61o8kim1c3PWt2SSHTL72jrGu5IzI,51
37
- cloudpss/job/job.py,sha256=vLJ7mIbrVfTWgQsUlk5bjM995wzu1q_Mee2AoW_MViM,8467
37
+ cloudpss/job/job.py,sha256=wPRLvfTsVjFFuxuJvbTiHyDMenNP3amzt4iLwxHpTEc,8647
38
38
  cloudpss/job/jobReceiver.py,sha256=PNYxcN33LiXZVyc4tzhPlpWxKnyWO_ElKjJ9wsxsroI,925
39
- cloudpss/job/messageStreamReceiver.py,sha256=Yjrg8_dIq4MoqbNoQHX8LbCe916od8C1NxHa0xpWJmg,5509
40
- cloudpss/job/messageStreamSender.py,sha256=8I3h-y2zQQnI8zgS4NKVV2E9YmPPApX-kAzpauy0uOs,2396
39
+ cloudpss/job/messageStreamReceiver.py,sha256=cbCzECT75ywtR2H5d0gNrTW4HS6PrNWB6yh5LXT6HLw,5593
40
+ cloudpss/job/messageStreamSender.py,sha256=oNT4xpYR54MEk4W79GjkK4fxTTLq6DAhAA2f-v6Gzjc,2458
41
41
  cloudpss/job/result/EMTResult.py,sha256=T4LQdFMQoA1gtpw7twageYdTIf0Onb3O4tvTOMn-bkM,8334
42
42
  cloudpss/job/result/IESLabSimulationResult.py,sha256=a47Ic1vvfHTK_vEokOZxJBnQReqYOWux_aePPic_Hrs,84
43
43
  cloudpss/job/result/IESLabTypicalDayResult.py,sha256=tpWfN3G34l3qSXaTDDdPRSTXR4p7jY3AlP7o9e-A3VI,9554
@@ -52,7 +52,7 @@ cloudpss/model/revision.py,sha256=E3H-FOXsiwy1MDZC-Ky-QkzvOb5HApYSXP0llf8yJXQ,40
52
52
  cloudpss/model/topology.py,sha256=MJF3rQBLWus4RVO6L3Zwih7SWYjRWsLMcrcIBxCmIwM,2617
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=-r9tTAIT_ET8ClPjcefAlBsMf2f1BytUi2F0L8pfdVc,6115
55
+ cloudpss/model/implements/diagram.py,sha256=GnNWgM8jKc9L2lMDv3YZJVGnMa6dvE4rljF7PnSXjrY,6133
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
@@ -64,7 +64,7 @@ cloudpss/runner/MessageStreamReceiver.py,sha256=dT-rKslQbRt3bMTGXupa1YrocHl2zTWO
64
64
  cloudpss/runner/__init__.py,sha256=FxiYYmssbZgRjieySzi43yPiWEF6eNos2UsoFQeD2H8,341
65
65
  cloudpss/runner/receiver.py,sha256=QU0RsbCt0EK7sCLHzfj8_QQsuPNfqXxpZi5JKm6roxA,4162
66
66
  cloudpss/runner/result.py,sha256=Q8RcfUnvilxPo6yvtjH6dXePaCqrBjQCljur3rem2pU,13290
67
- cloudpss/runner/runner.py,sha256=oCK1PdDNArk25v9S7xvE5r6xfQu0EKHKuxKQN0CLUHE,10093
67
+ cloudpss/runner/runner.py,sha256=w4sImN1nymnyNkSEBhtVw4MjGpUuz_tEJAXWg0lxB6g,10273
68
68
  cloudpss/runner/storage.py,sha256=zFET_zwPIOF2Cnh9sgFiS0HFxV1OmVsU34bGUQ6PpkA,4162
69
69
  cloudpss/runner/transform.py,sha256=krOgTZiJSJAb5QSwerAqlbC4Ma0PKi__0WOZlAxw4O8,11613
70
70
  cloudpss/utils/IO.py,sha256=FsFp3V8I1-P0YiBGmjKwbMalBrVKMHUxTjFZFOtv0CQ,5357
@@ -73,8 +73,9 @@ cloudpss/utils/dataEncoder.py,sha256=5PUPb844eOGgFnYrMM8bdjdKH_MZz0lk-67uo8TvwEo
73
73
  cloudpss/utils/graphqlUtil.py,sha256=_bdHFlusvZd5p4I1iVq5nEKqeC2RdyiXbnfv7oQBvQA,332
74
74
  cloudpss/utils/httprequests.py,sha256=5FXdXU5GUrsmreL7nEnJe1eD564HyrT9_379SRzwjrU,1907
75
75
  cloudpss/utils/matlab.py,sha256=SLwVt790BjklJK2XNELt9R2n_1ej9Y8QsTIdFkKXLWE,795
76
+ cloudpss/utils/parseDebugArgs.py,sha256=r8EptSHG9D-U7dT3pHFDclL-8G2La9w4GEjUAY-rsMc,3174
76
77
  cloudpss/utils/yamlLoader.py,sha256=bv_vPDK_e0n_vZ5FwpDJ_NJWqMAwfU3AbhkvQIxPCy4,2677
77
- cloudpss-4.5.15.dist-info/METADATA,sha256=KOqxUSwk2EAQaYAS8rdF8ksGhxjSHkRji366qm6Zqpg,2402
78
- cloudpss-4.5.15.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
79
- cloudpss-4.5.15.dist-info/top_level.txt,sha256=wS9qPU4-aWM9ouzMOx34Nlq-GkdQKpr9vBskwut1BD8,9
80
- cloudpss-4.5.15.dist-info/RECORD,,
78
+ cloudpss-4.5.17.dist-info/METADATA,sha256=6q0FDJOJ52yNhohvngxBiDMCfWWugYVxQbla7AD1_NY,2402
79
+ cloudpss-4.5.17.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
80
+ cloudpss-4.5.17.dist-info/top_level.txt,sha256=wS9qPU4-aWM9ouzMOx34Nlq-GkdQKpr9vBskwut1BD8,9
81
+ cloudpss-4.5.17.dist-info/RECORD,,