dekshell 0.2.50__py3-none-any.whl → 0.2.51__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.
@@ -52,6 +52,6 @@ def generate_markers(*args, **kwargs):
52
52
  AssignCommandRcSilenceMarker, AssignCommandRcMarker, AssignCommandOutputMarker,
53
53
  AssignDecodeMarker, AssignEncodeMarker,
54
54
  AssignEnvMarker, AssignEnvFullMarker, AssignCmdcallMarker, AssignCmdcallChainMarker,
55
- AssignMultiLineRawStrMarker, AssignMultiLineStrMarker, AssignRawStrMarker, AssignStrMarker,
55
+ AssignMultiLineRawStrMarker, AssignMultiLineStrMarker, AssignRawStrMarker, AssignStrMarker, AssignUnpackMarker,
56
56
  EmptyMarker, # must be at the tail
57
57
  ]
@@ -1,5 +1,5 @@
1
1
  import re
2
- from .base import MarkerNoTranslator, MarkerWithEnd
2
+ from .base import MarkerBase, MarkerNoTranslator, MarkerWithEnd
3
3
 
4
4
 
5
5
  class MarkerCommentBase(MarkerNoTranslator):
@@ -40,3 +40,7 @@ class TextContentMarker(MarkerCommentBase):
40
40
 
41
41
  def text_content(self, command):
42
42
  return command[len(self.tag_head):]
43
+
44
+
45
+ class IgnoreMarker(MarkerBase):
46
+ tag_head = ':'
@@ -9,15 +9,19 @@ from .invoke import MarkerInvokerBase, InvokeMarker, GotoMarker, ImportMarker
9
9
  class MarkerAssignBase(MarkerBase):
10
10
  tag_head_re = r"[^\W\d]\w*[ \t\f\r]*%s"
11
11
 
12
-
13
- class MarkerAssignValueBase(MarkerAssignBase):
14
- def execute(self, context, command, marker_node, marker_set):
12
+ def get_vr(self, command):
15
13
  command = command.lstrip()
16
14
  index = re.match(self.tag_head_re % '', command).span()[1]
17
15
  var_name = command[:index].rstrip()
18
16
  rest = command[index:]
19
17
  index = re.match(self.tag_head_re_args, rest).span()[1]
20
- return self.assign_value(context, marker_node, marker_set, var_name, rest[index:].strip())
18
+ return var_name, rest[index:].strip()
19
+
20
+
21
+ class MarkerAssignValueBase(MarkerAssignBase):
22
+ def execute(self, context, command, marker_node, marker_set):
23
+ var_name, rest = self.get_vr(command)
24
+ return self.assign_value(context, marker_node, marker_set, var_name, rest)
21
25
 
22
26
  def assign_value(self, context, marker_node, marker_set, var_name, expression):
23
27
  self.set_var_raw(context, var_name, self.get_value(context, marker_node, marker_set, expression))
@@ -26,8 +30,31 @@ class MarkerAssignValueBase(MarkerAssignBase):
26
30
  pass
27
31
 
28
32
 
29
- class IgnoreMarker(MarkerBase):
30
- tag_head = ':'
33
+ class AssignUnpackMarker(MarkerAssignBase):
34
+ tag_head_re_args = ','
35
+
36
+ def execute(self, context, command, marker_node, marker_set):
37
+ var_names = []
38
+ cursor = command
39
+ while True:
40
+ var_name, rest = self.get_vr(cursor)
41
+ var_names.append(var_name)
42
+ marker = marker_set.find_marker_by_command(rest)
43
+ if isinstance(marker, MarkerAssignBase):
44
+ if not isinstance(marker, AssignUnpackMarker):
45
+ var_name_final = marker.get_vr(rest)[0]
46
+ var_names.append(var_name_final)
47
+ node = marker_set.node_cls(marker, rest, marker_node.index)
48
+ marker.execute(context, rest, node, marker_set)
49
+ value = self.eval(context, var_name_final)
50
+ if len(var_names) != len(value):
51
+ raise ValueError(f'Wrong values to unpack (expected {len(var_names)}, got {len(value)})')
52
+ for i, name in enumerate(var_names):
53
+ self.set_var_raw(context, name, value[i])
54
+ break
55
+ cursor = rest
56
+ else:
57
+ raise ValueError('Need a assignable expression')
31
58
 
32
59
 
33
60
  class AssignStrMarker(MarkerAssignValueBase):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dekshell
3
- Version: 0.2.50
3
+ Version: 0.2.51
4
4
  Author-Email: sanzenwin <sanzenwin@gmail.com>
5
5
  License: MIT
6
6
  Requires-Python: >=3.8
@@ -1,6 +1,6 @@
1
- dekshell-0.2.50.dist-info/METADATA,sha256=9I6LaQvFZd9OC9cIILICWMyQkiKeoQcM9axv3G8f6fI,573
2
- dekshell-0.2.50.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
- dekshell-0.2.50.dist-info/entry_points.txt,sha256=d-kbfULiUTZWIBBsrQF3J_-wESncF-4K2rwHT08grlI,75
1
+ dekshell-0.2.51.dist-info/METADATA,sha256=lt0cL9hdu0uQfg3bUBJk1kMvx9P4Adp2W6Jty2Qw1dY,573
2
+ dekshell-0.2.51.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
+ dekshell-0.2.51.dist-info/entry_points.txt,sha256=d-kbfULiUTZWIBBsrQF3J_-wESncF-4K2rwHT08grlI,75
4
4
  dekshell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  dekshell/click/__entry__.py,sha256=CMuxUzXoEe4TcHFZwv-MNFwHnu1HSZCDpXFpqQ814uM,42
6
6
  dekshell/click/__init__.py,sha256=r-AHdO9CEEVvTN20-8Jozr6Zh8XSv_BnktYRwrlhtrE,2046
@@ -8,12 +8,12 @@ dekshell/core/__init__.py,sha256=isDEKwk1odLdvTQNCILCtVNBuXp1uFVPz_uTDNihkVU,554
8
8
  dekshell/core/contexts/__init__.py,sha256=ynsfv37azOKfI2UKd0iPl2M6iBW-k5cb1BqSLOWuJpI,482
9
9
  dekshell/core/contexts/methods.py,sha256=tv8wKK114zQlXiJrU9eS0NHyvh6qDbY_Bx0GCVklexM,11899
10
10
  dekshell/core/contexts/properties.py,sha256=TQonN3T_K2cB2uakq_DVVB13B-IFwoM6t2ZkL_OMekw,3365
11
- dekshell/core/markers/__init__.py,sha256=mK6OiZMWmUTrkAL0Bc1XqRTSb-NNhBgpHb7GLivLAlk,2235
11
+ dekshell/core/markers/__init__.py,sha256=1oq4wlBOJV56hsshPe0ZZZMvoItCV2Xs2RN08HTrbiY,2255
12
12
  dekshell/core/markers/base/__init__.py,sha256=0LYnOVNXPBHfRQII00ZGkESTFX82TgHdSaTcHJoebXc,18051
13
13
  dekshell/core/markers/base/core.py,sha256=5TYAg7JWX58669RBUOMgJxCUMuOARPDL7GENNtNAYls,12558
14
14
  dekshell/core/markers/base/shell.py,sha256=fiFsTUDI8pSDDUCk834OI4ajri2qNWFJkLVhmUk2uAs,484
15
15
  dekshell/core/markers/commands.py,sha256=mDRj4dSfKbDaZ_ts4lPXd6wftvGFI4VKkRoIzxV7otA,1696
16
- dekshell/core/markers/comment.py,sha256=U1U3Xc4-giTqSEAPa4E_DmilZM9hs9zG-PCJ9nn4y5U,965
16
+ dekshell/core/markers/comment.py,sha256=rBzxcyvTv7qgy5jc0NWT4pi5M7xEf9Wwa2mv96kJ0gc,1030
17
17
  dekshell/core/markers/define.py,sha256=Xlw_YPOWlmbopVIHhIeAKWSZhHhXmqb3gCbXxvuH4BQ,522
18
18
  dekshell/core/markers/echo.py,sha256=1H61qQbY9tZnrKsdTI_shTmDY5ZaSGipDuBSRptAuZw,660
19
19
  dekshell/core/markers/empty.py,sha256=pWKsHlrp6uXWU6blqOs0IgN_3kYm1OmDQiKGPERabAo,79
@@ -27,7 +27,7 @@ dekshell/core/markers/invoke.py,sha256=ESL2DE9DTaq33AnrXpvEudp1qtoeZFKOhLL12OQpc
27
27
  dekshell/core/markers/pip_.py,sha256=mxXa_oqcrk4Qz-HvhlkMoirsl-SbM9Fz610leNqP1o0,832
28
28
  dekshell/core/markers/redirect.py,sha256=cpTQaXFAuSwprsrhUNP0xTGDmu06HGNQVcwKsETEjas,1981
29
29
  dekshell/core/markers/shell.py,sha256=43BDAAzMdmgZmemkW5buh_w4LL1GDGw-s9fNZo6vhag,1929
30
- dekshell/core/markers/var.py,sha256=I1GQqDRDmWKV38Exfn_5MtRDz58FKo_6x8NIVHqPAPU,6901
30
+ dekshell/core/markers/var.py,sha256=yA2T8dq4vbfyeaV1KOUt3YZp51WTC623NviMAJTOdOQ,8182
31
31
  dekshell/core/markers/while_.py,sha256=Q0SaElyXSrxg-wS_rfCcxMsmw9jf-0SgN1ICn860T4A,1201
32
32
  dekshell/core/plugin/__init__.py,sha256=jAB_KnnHJsyJR_zIfBU_HNLngyhcyyqVv05PdlNZtF8,428
33
33
  dekshell/core/redirect.py,sha256=jgLdcPtc4RKs63Lf2I0LXJRr9jRfNu03aDB_tIWvcrU,1117
@@ -37,4 +37,4 @@ dekshell/utils/cmd.py,sha256=K9FbXgHcGFchHA58xI0_t4YK4yb8XkWbxsNoztYRx3Y,518
37
37
  dekshell/utils/pkg.py,sha256=TgYqRqawoJfjkxt6UAHnp9ttmpjuHiWRFbqxADOS1VE,1337
38
38
  dekshell/utils/serializer.py,sha256=aIdF2Wzo-qHmIshv46jn1XD0X66vQ1JFdU-g3ZFbH2w,386
39
39
  dekshell/utils/shell.py,sha256=0NoA2-SOOMinbmZZipwzL-npBbzPOdWEfdPVYqq5G5g,92
40
- dekshell-0.2.50.dist-info/RECORD,,
40
+ dekshell-0.2.51.dist-info/RECORD,,