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 +23 -11
- pymud/pymud.py +5 -0
- pymud/session.py +14 -1
- pymud/settings.py +3 -3
- {pymud-0.18.1.dist-info → pymud-0.18.3.dist-info}/METADATA +10 -2
- pymud-0.18.3.dist-info/RECORD +16 -0
- pymud-0.18.1.dist-info/RECORD +0 -16
- {pymud-0.18.1.dist-info → pymud-0.18.3.dist-info}/LICENSE.txt +0 -0
- {pymud-0.18.1.dist-info → pymud-0.18.3.dist-info}/WHEEL +0 -0
- {pymud-0.18.1.dist-info → pymud-0.18.3.dist-info}/entry_points.txt +0 -0
- {pymud-0.18.1.dist-info → pymud-0.18.3.dist-info}/top_level.txt +0 -0
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
|
-
|
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
|
-
|
748
|
-
|
749
|
-
|
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,
|
787
|
-
self._codeblock.execute(self.session,
|
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
|
-
|
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.
|
14
|
+
__version__ = "0.18.3"
|
15
15
|
"APP 当前版本"
|
16
|
-
__release__ = "2024-02-
|
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://
|
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.
|
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,,
|
pymud-0.18.1.dist-info/RECORD
DELETED
@@ -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
|
File without changes
|
File without changes
|
File without changes
|