pymud 0.18.1__py3-none-any.whl → 0.18.2__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.
pymud/objects.py CHANGED
@@ -104,8 +104,8 @@ class CodeLine:
104
104
  new_code_str = self.__code
105
105
  new_code = []
106
106
 
107
- line = kwargs.get("line", None)
108
- raw = kwargs.get("raw", None)
107
+ line = kwargs.get("line", None) or session.getVariable("%line", "None")
108
+ raw = kwargs.get("raw", None) or session.getVariable("%raw", "None")
109
109
  wildcards = kwargs.get("wildcards", None)
110
110
 
111
111
  for item in self.code:
@@ -116,7 +116,7 @@ class CodeLine:
116
116
  if idx <= len(wildcards):
117
117
  item_val = wildcards[idx-1]
118
118
  else:
119
- item_val = None
119
+ item_val = "None"
120
120
  new_code.append(item_val)
121
121
  new_code_str = new_code_str.replace(item, item_val, 1)
122
122
 
@@ -726,6 +726,7 @@ class Timer(BaseObject):
726
726
 
727
727
  def __init__(self, session, *args, **kwargs):
728
728
  self._task = None
729
+ self._halt = False
729
730
  super().__init__(session, *args, **kwargs)
730
731
 
731
732
  def __del__(self):
@@ -733,24 +734,36 @@ class Timer(BaseObject):
733
734
 
734
735
  def startTimer(self):
735
736
  if not isinstance(self._task, asyncio.Task):
737
+ self._halt = False
736
738
  self._task = asyncio.create_task(self.onTimerTask())
737
739
 
738
740
  asyncio.ensure_future(self._task)
739
741
 
740
742
  async def onTimerTask(self):
741
- if self.enabled:
743
+ # 定时任务,修改为一直循环
744
+ while self._enabled:
742
745
  await asyncio.sleep(self.timeout)
746
+
743
747
  if callable(self._onSuccess):
744
748
  self._onSuccess(self.id)
745
749
 
746
- if self.oneShot:
747
- self.enabled = False
748
- else:
749
- await asyncio.create_task(self.onTimerTask())
750
+ if self.oneShot or self._halt:
751
+ break
752
+
753
+ # if self.enabled:
754
+ # await asyncio.sleep(self.timeout)
755
+ # if callable(self._onSuccess):
756
+ # self._onSuccess(self.id)
757
+
758
+ # if self.oneShot:
759
+ # self.enabled = False
760
+ # else:
761
+ # await asyncio.create_task(self.onTimerTask())
750
762
 
751
763
  def reset(self):
752
764
  "复位定时器,清除所创建的定时任务"
753
765
  try:
766
+ self._halt = True
754
767
  if isinstance(self._task, asyncio.Task) and (not self._task.done()):
755
768
  self._task.cancel()
756
769
 
@@ -781,10 +794,9 @@ class SimpleTimer(Timer):
781
794
  self._code = code
782
795
  self._codeblock = CodeBlock(code)
783
796
  super().__init__(session, *args, **kwargs)
784
- self.sync = kwargs.get("sync", False) # 同步模式,默认异步
785
797
 
786
- def onSuccess(self, *args, **kwargs):
787
- self._codeblock.execute(self.session, *args, **kwargs)
798
+ def onSuccess(self, id):
799
+ self._codeblock.execute(self.session, id = id)
788
800
 
789
801
  def __detailed__(self) -> str:
790
802
  return f'<{self.__class__.__name__}> id = "{self.id}" group = "{self.group}" enabled = {self.enabled} timeout = {self.timeout} code = "{self._code}"'
pymud/session.py CHANGED
@@ -1620,7 +1620,9 @@ class Session:
1620
1620
  " 注意:在触发器中使用。多行触发器时,替代只替代最后一行"
1621
1621
  "\x1b[1m相关\x1b[0m: gag\n"
1622
1622
 
1623
- self.replace(code.commandText[9:])
1623
+ new_text, new_code = code.expand(self, *args, **kwargs)
1624
+ self.replace(new_text[9:])
1625
+ #self.replace(code.commandText[9:])
1624
1626
  #self.display_line = code.commandText[9:]
1625
1627
 
1626
1628
  def handle_gag(self, code: CodeLine = None, *args, **kwargs):
pymud/settings.py CHANGED
@@ -11,15 +11,15 @@ class Settings:
11
11
  "APP 名称, 默认PYMUD"
12
12
  __appdesc__ = "a MUD client written in Python"
13
13
  "APP 简要描述"
14
- __version__ = "0.18.1"
14
+ __version__ = "0.18.2"
15
15
  "APP 当前版本"
16
- __release__ = "2024-02-05"
16
+ __release__ = "2024-02-06"
17
17
  "APP 当前版本发布日期"
18
18
  __author__ = "本牛(newstart)@北侠"
19
19
  "APP 作者"
20
20
  __email__ = "crapex@crapex.cc"
21
21
  "APP 作者邮箱"
22
- __website__ = "https://github.com/crapex/pymud"
22
+ __website__ = "https://pypi.org/project/pymud"
23
23
  "APP 发布网址"
24
24
 
25
25
  server = {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pymud
3
- Version: 0.18.1
3
+ Version: 0.18.2
4
4
  Summary: a MUD Client written in Python
5
5
  Author-email: "newstart@pkuxkx" <crapex@crapex.cc>
6
6
  Maintainer-email: "newstart@pkuxkx" <crapex@crapex.cc>
@@ -893,4 +893,8 @@ Requires-Dist: prompt-toolkit
893
893
  + 问题修复:统一处置了task.cancel的参数和create_task的name属性,以适应更低版本的python环境(低至3.7)
894
894
  + 实现调整:为解决同步/异步执行问题,在CodeLine和CodeBlock的实现中,会通过调用命令来判断是否使用同步模式(默认为异步)。#gag、#replace为强制同步,#wa为强制异步。当同时存在时,同步失效,异步执行。
895
895
  + 实现调整:将%line、%raw的访问传递到触发器内部的执行中,避免同步异步问题。
896
- + 新增文档:将帮助文档添加到本项目,帮助文档自动同步到 pymud.readthedocs.org
896
+ + 新增文档:将帮助文档添加到本项目,帮助文档自动同步到 pymud.readthedocs.org (文档内容暂未更新)
897
+
898
+ ### 0.18.2 (2024-02-06)
899
+ + 问题修复:修改了定时器实现,以避免出现递归调用超限异常
900
+ + 问题修复:修改了参数替代时的默认值,从None改为字符串"None",以避免替代时报None异常
@@ -2,15 +2,15 @@ pymud/__init__.py,sha256=G_k8deY6ulAJdtNkaYn6_zM0j2InJNddxMhnoSqZV30,417
2
2
  pymud/__main__.py,sha256=uGbkGxwhNkpZVYn0mGnPpfTdqkxzfu8Jf8WAV_Uykuo,361
3
3
  pymud/dialogs.py,sha256=_OE1vq_hbu7rUbjsvCH2mEEhEYMiwXEJE0TXIYZc0EI,5591
4
4
  pymud/extras.py,sha256=uFMjoO2fgSQT0lx7BoejAExeGKJ5QTkS5Kwatblfvdg,41490
5
- pymud/objects.py,sha256=_tmIsb0hYyybYC_VCz7ngaJlqD9VTJQthyVu4rI0jI4,28632
5
+ pymud/objects.py,sha256=2qnrNI_891y-Wo6Z0xjoPcbJSfrPLbyZOmUNXMsYAz0,28983
6
6
  pymud/pkuxkx.py,sha256=_CR4ETm-ihl5ZqznB75-pT3NdZSfUiuOsvEh5MwSjHI,11417
7
7
  pymud/protocol.py,sha256=F96Yq-1YO_5GN6QnJ4vMdNjCAzejVmDdsfrJguCjCeE,49120
8
8
  pymud/pymud.py,sha256=Q0VB4aX-CV7Lyi88EuaKBb1Qai8f9hk5B-jG7CCs-70,38291
9
- pymud/session.py,sha256=wNP4kYQBP142sirmzV8lscvdp_eHtuJs7zwlOYvz2cc,70139
10
- pymud/settings.py,sha256=pYGixOdaH6twZ5gTEcb1qXsoL0G5wR1C8bbMnxIIOt8,6484
11
- pymud-0.18.1.dist-info/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
12
- pymud-0.18.1.dist-info/METADATA,sha256=gigQ4qn8YZbxiJnKXada0-Jb7u_7DKzpkTyk8JRfI4Y,61714
13
- pymud-0.18.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
14
- pymud-0.18.1.dist-info/entry_points.txt,sha256=diPUOtTkhgC1hVny7Cdg4aRhaHSynMQoraE7ZhJxUcw,37
15
- pymud-0.18.1.dist-info/top_level.txt,sha256=8Gp1eXjxixXjqhhti6tLCspV_8s9sNV3z5Em2_KRhD4,6
16
- pymud-0.18.1.dist-info/RECORD,,
9
+ pymud/session.py,sha256=pehDGkNJDxt99aZ-5M151BkgFFiAXXg6sWK7f31_nS8,70241
10
+ pymud/settings.py,sha256=eAMaavWTriI229pgPfYNHjOTNiv44QTu434fuLBqfWg,6483
11
+ pymud-0.18.2.dist-info/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
12
+ pymud-0.18.2.dist-info/METADATA,sha256=WjVXXZMkoN4tV6V-HozMjLx64Ik0MkBb4lJ5KLdfawI,61977
13
+ pymud-0.18.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
14
+ pymud-0.18.2.dist-info/entry_points.txt,sha256=diPUOtTkhgC1hVny7Cdg4aRhaHSynMQoraE7ZhJxUcw,37
15
+ pymud-0.18.2.dist-info/top_level.txt,sha256=8Gp1eXjxixXjqhhti6tLCspV_8s9sNV3z5Em2_KRhD4,6
16
+ pymud-0.18.2.dist-info/RECORD,,
File without changes