pymud 0.18.1__py3-none-any.whl → 0.18.3__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/pymud.py CHANGED
@@ -841,6 +841,11 @@ class PyMudApp:
841
841
  "设置PYMUD全局变量"
842
842
  self._globals[name] = value
843
843
 
844
+ def del_globals(self, name):
845
+ "移除一个PYMUD全局变量"
846
+ if name in self._globals.keys():
847
+ self._globals.pop(name)
848
+
844
849
  @property
845
850
  def plugins(self):
846
851
  return self._plugins
pymud/session.py CHANGED
@@ -872,6 +872,12 @@ class Session:
872
872
  ## ###################
873
873
  ## 变量 Variables 处理
874
874
  ## ###################
875
+ def delVariable(self, name):
876
+ """删除一个变量"""
877
+ assert isinstance(name, str), "name必须是一个字符串"
878
+ if name in self._variables.keys():
879
+ self._variables.pop(name)
880
+
875
881
  def setVariable(self, name, value):
876
882
  """设置一个变量的值"""
877
883
  assert isinstance(name, str), "name必须是一个字符串"
@@ -910,6 +916,11 @@ class Session:
910
916
  ## ###################
911
917
  ## 全局变量 Globals 处理
912
918
  ## ###################
919
+ def delGlobal(self, name):
920
+ "删除一个全局变量"
921
+ assert isinstance(name, str), "name必须是一个字符串"
922
+ self.application.del_globals(name)
923
+
913
924
  def setGlobal(self, name, value):
914
925
  """设置一个全局变量的值"""
915
926
  assert isinstance(name, str), "name必须是一个字符串"
@@ -1620,7 +1631,9 @@ class Session:
1620
1631
  " 注意:在触发器中使用。多行触发器时,替代只替代最后一行"
1621
1632
  "\x1b[1m相关\x1b[0m: gag\n"
1622
1633
 
1623
- self.replace(code.commandText[9:])
1634
+ new_text, new_code = code.expand(self, *args, **kwargs)
1635
+ self.replace(new_text[9:])
1636
+ #self.replace(code.commandText[9:])
1624
1637
  #self.display_line = code.commandText[9:]
1625
1638
 
1626
1639
  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.3"
15
15
  "APP 当前版本"
16
- __release__ = "2024-02-05"
16
+ __release__ = "2024-02-07"
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.3
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,12 @@ 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异常
901
+
902
+ ### 0.18.3 (2024-02-07)
903
+ + 功能调整:原#unload时通过调用__del__来实现卸载的时间不可控,现将模块卸载改为调用unload函数。若需卸载时人工清除有关定时器、触发器等,请在Configuration类下新增unload函数(参数仅self),并在其中进行实现
904
+ + 功能新增:新增会话Variable和全局Global的删除接口。可以通过session.delVariable(name)删除一个变量,可以通过session.delGlobal(name)来删除一个全局Global变量
@@ -0,0 +1,16 @@
1
+ pymud/__init__.py,sha256=G_k8deY6ulAJdtNkaYn6_zM0j2InJNddxMhnoSqZV30,417
2
+ pymud/__main__.py,sha256=uGbkGxwhNkpZVYn0mGnPpfTdqkxzfu8Jf8WAV_Uykuo,361
3
+ pymud/dialogs.py,sha256=_OE1vq_hbu7rUbjsvCH2mEEhEYMiwXEJE0TXIYZc0EI,5591
4
+ pymud/extras.py,sha256=uFMjoO2fgSQT0lx7BoejAExeGKJ5QTkS5Kwatblfvdg,41490
5
+ pymud/objects.py,sha256=2qnrNI_891y-Wo6Z0xjoPcbJSfrPLbyZOmUNXMsYAz0,28983
6
+ pymud/pkuxkx.py,sha256=_CR4ETm-ihl5ZqznB75-pT3NdZSfUiuOsvEh5MwSjHI,11417
7
+ pymud/protocol.py,sha256=F96Yq-1YO_5GN6QnJ4vMdNjCAzejVmDdsfrJguCjCeE,49120
8
+ pymud/pymud.py,sha256=TTIuXMLPxmxuq9XSe3NP9DsLMdHxR5Xtu1b8rSOLcts,38447
9
+ pymud/session.py,sha256=A9-VUlB6NMkS1J8_7K4zuSCaAJqiGMYJvBwcpiBLyyA,70648
10
+ pymud/settings.py,sha256=Vxd6A7t0a2MrfY9HnMsAgAgRT0RqkwdrB1xOE5sOv8c,6483
11
+ pymud-0.18.3.dist-info/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
12
+ pymud-0.18.3.dist-info/METADATA,sha256=V-d8AHVp5VB70gab-zNIQVLfEn_zErGoE_8p3s2dpaI,62483
13
+ pymud-0.18.3.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
14
+ pymud-0.18.3.dist-info/entry_points.txt,sha256=diPUOtTkhgC1hVny7Cdg4aRhaHSynMQoraE7ZhJxUcw,37
15
+ pymud-0.18.3.dist-info/top_level.txt,sha256=8Gp1eXjxixXjqhhti6tLCspV_8s9sNV3z5Em2_KRhD4,6
16
+ pymud-0.18.3.dist-info/RECORD,,
@@ -1,16 +0,0 @@
1
- pymud/__init__.py,sha256=G_k8deY6ulAJdtNkaYn6_zM0j2InJNddxMhnoSqZV30,417
2
- pymud/__main__.py,sha256=uGbkGxwhNkpZVYn0mGnPpfTdqkxzfu8Jf8WAV_Uykuo,361
3
- pymud/dialogs.py,sha256=_OE1vq_hbu7rUbjsvCH2mEEhEYMiwXEJE0TXIYZc0EI,5591
4
- pymud/extras.py,sha256=uFMjoO2fgSQT0lx7BoejAExeGKJ5QTkS5Kwatblfvdg,41490
5
- pymud/objects.py,sha256=_tmIsb0hYyybYC_VCz7ngaJlqD9VTJQthyVu4rI0jI4,28632
6
- pymud/pkuxkx.py,sha256=_CR4ETm-ihl5ZqznB75-pT3NdZSfUiuOsvEh5MwSjHI,11417
7
- pymud/protocol.py,sha256=F96Yq-1YO_5GN6QnJ4vMdNjCAzejVmDdsfrJguCjCeE,49120
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,,
File without changes