pymud 0.21.0a5__py3-none-any.whl → 0.21.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/extras.py +509 -453
- pymud/lang/i18n_chs.py +3 -0
- pymud/lang/i18n_eng.py +7 -3
- pymud/pymud.py +66 -57
- pymud/session.py +180 -44
- pymud/settings.py +1 -1
- {pymud-0.21.0a5.dist-info → pymud-0.21.2.dist-info}/METADATA +75 -30
- pymud-0.21.2.dist-info/RECORD +23 -0
- {pymud-0.21.0a5.dist-info → pymud-0.21.2.dist-info}/WHEEL +1 -1
- pymud-0.21.0a5.dist-info/RECORD +0 -23
- {pymud-0.21.0a5.dist-info → pymud-0.21.2.dist-info}/entry_points.txt +0 -0
- {pymud-0.21.0a5.dist-info → pymud-0.21.2.dist-info}/licenses/LICENSE.txt +0 -0
- {pymud-0.21.0a5.dist-info → pymud-0.21.2.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: pymud
|
3
|
-
Version: 0.21.
|
3
|
+
Version: 0.21.2
|
4
4
|
Summary: a MUD Client written in Python
|
5
5
|
Author-email: "newstart@pkuxkx" <crapex@hotmail.com>
|
6
6
|
Maintainer-email: "newstart@pkuxkx" <crapex@hotmail.com>
|
@@ -10,7 +10,7 @@ Project-URL: Bug Reports, https://github.com/crapex/pymud/issues
|
|
10
10
|
Project-URL: Source, https://github.com/crapex/pymud/
|
11
11
|
Project-URL: document, https://pymud.readthedocs.io/
|
12
12
|
Keywords: MUD,multi-user dungeon,client
|
13
|
-
Classifier: Development Status ::
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
14
14
|
Classifier: Intended Audience :: End Users/Desktop
|
15
15
|
Classifier: Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
@@ -21,7 +21,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.12
|
22
22
|
Classifier: Programming Language :: Python :: 3.13
|
23
23
|
Classifier: Programming Language :: Python :: 3 :: Only
|
24
|
-
Requires-Python: >=3.
|
24
|
+
Requires-Python: >=3.8
|
25
25
|
Description-Content-Type: text/markdown
|
26
26
|
License-File: LICENSE.txt
|
27
27
|
Requires-Dist: wcwidth
|
@@ -44,11 +44,11 @@ Dynamic: license-file
|
|
44
44
|
|
45
45
|
### 北大侠客行Mud (www.pkuxkx.net),最好的中文Mud游戏!
|
46
46
|
### PyMUD是我为了更好的玩北大侠客行,特意自行开发的MUD客户端。PyMUD具有以下特点:
|
47
|
-
+ 原生Python开发,除prompt-toolkit
|
47
|
+
+ 原生Python开发,除prompt-toolkit及其依赖库 wcwidth, pygment, pyperclip 外,不需要其他第三方库支持
|
48
48
|
+ 原生Python的asyncio实现的通信协议处理,支持async/await语法在脚本中直接应用,脚本实现的同步异步两种模式由你自己选择
|
49
|
-
+ 基于控制台的全屏UI界面设计,支持鼠标操作(Android
|
49
|
+
+ 基于控制台的全屏UI界面设计,支持鼠标操作(Android上支持触摸屏操作),极低资源需求,在单核1GB内存的Linux VPS上也可流畅运行
|
50
50
|
+ 支持分屏显示,在数据快速滚动的时候,上半屏保持不动,以确保不错过信息
|
51
|
-
+ 解决了99
|
51
|
+
+ 解决了99%情况下,北大侠客行中文对不齐,也就是看不清字符画的问题
|
52
52
|
+ 真正的支持多session会话,支持命令或鼠标切换会话
|
53
53
|
+ 原生支持多种服务器端编码方式,不论是GBK、BIG5、还是UTF-8
|
54
54
|
+ 支持NWAS、MTTS协商,支持GMCP、MSDP、MSSP协议
|
@@ -66,32 +66,77 @@ Dynamic: license-file
|
|
66
66
|
|
67
67
|
## 版本更新信息
|
68
68
|
|
69
|
-
### 0.21.
|
70
|
-
|
71
|
-
+
|
72
|
-
+
|
73
|
-
|
74
|
-
class MyTestConfig(IConfig):
|
75
|
-
def __init__(self, session, *args, **kwargs):
|
76
|
-
self._objs = [
|
77
|
-
Trigger(session, "tri1", group = "group1"),
|
78
|
-
Trigger(session, "tri2", group = "group1.subgroup1"),
|
79
|
-
Trigger(session, "tri3", group = "group1.subgroup2"),
|
80
|
-
Alias(session, "alias1", group = "group1"),
|
81
|
-
Alias(session, "alias2", group = "group1.subgroup1"),
|
82
|
-
Timer(session, 5, group = "group1.subgroup1")
|
83
|
-
]
|
84
|
-
|
85
|
-
#以下调用可以同时禁用上述6个对象,因为 group1.subgroup1 和 group1.subgroup2 都属于 group1 的子组
|
86
|
-
session.enableGroup("group1", False)
|
87
|
-
#以下调用可以同时仅启用触发器tri1和别名alias1,因为通过subgroup参数限定了不传递到子组
|
88
|
-
session.enableGroup("group1", True, subgroup = False)
|
89
|
-
# 以下调用可以同时禁用对应发器和别名,但不禁用定时器,因为通过types参数指定了有效范围:
|
90
|
-
session.enableGroup("group1.subgroup1", False, types = [Trigger, Alias])
|
69
|
+
### 0.21.2 (2025-06-01)
|
70
|
+
|
71
|
+
+ 问题修复: 修复了当自动重连启动时,即使会话关闭了,也会自动重连的问题。
|
72
|
+
+ 实现调整: 重写了专用的会话缓冲、记录缓冲与PyMud缓冲显示控制器,在prompt_toolkit的原Buffer和BufferControl的基础仅提供了PYMUD所需的基础功能,以降低内存占用。
|
73
|
+
经测试,当前内存基本稳定,视会话数量和脚本情况差异,维持在几百兆左右(500M以下),且不会有大幅波动。重写后,低配置的VPS也可以稳定运行PyMUD。
|
91
74
|
|
75
|
+
### 0.21.0 (2025-05-20)
|
76
|
+
|
77
|
+
+ 功能新增: 各类对象的group属性,新增组、子组概念,用于快速成组操作对象。组可以包括子组,子组可以再包括子组。
|
78
|
+
组名以点号.分隔,例如:group1.subgroup1.subsubgroup1。组的层级没有限制。
|
79
|
+
组的概念可以用于快速处理多个对象,例如启用/禁用一组对象、删除一组对象等。例如,以下几个组的关系:
|
80
|
+
- mygroup1
|
81
|
+
- mygroup1.subgroup1 # 属于 mygroup1的子组
|
82
|
+
- mygroup1.subgroup2 # 属于 mygroup1的子组
|
83
|
+
- mygroup1.subgroup2.subsubgroup1 # 属于 mygroup1.subgroup2的子组,也同样属于更高层级mygroup1的子组
|
84
|
+
- mygroup2
|
85
|
+
- mygroup2.subgroup1 # 属于 mygroup2的子组
|
86
|
+
|
87
|
+
+ 功能新增: 新增了deleteGroup函数,用于删除指定的对象组。可同时指定组名、是否包含子组名、有效类型范围。函数定义和示例代码如下:
|
88
|
+
|
89
|
+
``` Python
|
90
|
+
def deleteGroup(self, group: str, subgroup = True, types: Union[Type, Union[Tuple, List]] = (Alias, Trigger, Command, Timer, GMCPTrigger)):
|
91
|
+
pass
|
92
|
+
# 各参数含义:
|
93
|
+
# group: 要删除的组名,可以是完整的组名,也可以是部分组名。例如:"group1" 或 "group1.subgroup1" 等。
|
94
|
+
# subgroup: 是否包含子组。如果为True,则删除指定组及其所有子组的对象。如果为False,则仅删除指定组的对象,不包括子组。
|
95
|
+
# types: 要删除的对象类型范围。可以是单个类型,也可以是类型的元组或列表。例如:Trigger, Alias, Command, Timer, GMCPTrigger 等。
|
96
|
+
# 示例代码:
|
97
|
+
# 删除所有属于group1的Trigger和Alias对象,包括子组如 group1.subgroup1 和 group1.subgroup2 等
|
98
|
+
self.session.deleteGroup("group1", True, [Trigger, Alias])
|
99
|
+
# 删除所有属于group1的Trigger对象,但不包括子组
|
100
|
+
self.session.deleteGroup("group1", False, [Trigger])
|
92
101
|
```
|
102
|
+
|
103
|
+
+ 功能新增: 对 #trigger, #alias, #timer, #gmcp, #command, #t+, #t- 等命令新增了组处理选项,用于对整组对象进行处理。各命令的语法格式类似。
|
104
|
+
处理组时,组名应以大于号>或者等于号=开头,紧跟组名(无空格)。当使用>时,表示操作针对当前组及所有所属子组,当使用=时,表示操作仅针对当前组。
|
105
|
+
例如下面代码:
|
106
|
+
|
107
|
+
```
|
108
|
+
#t+ >group1 表示启用所有属于group1以及其子组的所有可管理对象,包括Trigger、Alias、Command、Timer、GMCPTrigger
|
109
|
+
#t- =group1.subgroup1 表示禁用所有仅属于group1.subgroup1的Trigger、Alias、Command、Timer、GMCPTrigger等对象
|
110
|
+
#tri >group1 off 表示禁用所有属于group1以及其子组的Trigger对象
|
111
|
+
#ali =group1.subgroup1 on 表示启用所有仅属于group1.subgroup1的Alias对象
|
112
|
+
```
|
113
|
+
|
114
|
+
+ 功能新增: 调整了enableGroup处理,可以通过组名支持子组操作,也可以指定有效类型范围。例如下面代码:
|
115
|
+
``` Python
|
116
|
+
class MyTestConfig(IConfig):
|
117
|
+
def __init__(self, session, *args, **kwargs):
|
118
|
+
self._objs = [
|
119
|
+
Trigger(session, "tri1", group = "group1"),
|
120
|
+
Trigger(session, "tri2", group = "group1.subgroup1"),
|
121
|
+
Trigger(session, "tri3", group = "group1.subgroup2"),
|
122
|
+
Alias(session, "alias1", group = "group1"),
|
123
|
+
Alias(session, "alias2", group = "group1.subgroup1"),
|
124
|
+
Timer(session, 5, group = "group1.subgroup1")
|
125
|
+
]
|
126
|
+
|
127
|
+
#以下调用可以同时禁用上述6个对象,因为 group1.subgroup1 和 group1.subgroup2 都属于 group1 的子组
|
128
|
+
session.enableGroup("group1", False)
|
129
|
+
#以下调用可以同时仅启用触发器tri1和别名alias1,因为通过subgroup参数限定了不传递到子组
|
130
|
+
session.enableGroup("group1", True, subgroup = False)
|
131
|
+
# 以下调用可以同时禁用对应发器和别名,但不禁用定时器,因为通过types参数指定了有效范围:
|
132
|
+
session.enableGroup("group1.subgroup1", False, types = [Trigger, Alias])
|
133
|
+
|
134
|
+
```
|
135
|
+
|
93
136
|
+ 功能新增: 增加了多处异常追踪提示。在模块或插件的脚本中发生错误时,均会打印错误追踪信息,方便定位错误。
|
94
137
|
+ 功能新增: 新增 #echo 命令,类似于 #test 命令,但该命令只会模拟收到服务器数据,直接激发各匹配触发器,但不显示触发测试结果。
|
138
|
+
+ 功能新增: #load / #unload 现在支持当前会话对插件的临时启用和禁用,实现方式为调用插件里的PLUGIN_SESSION_CREATE和PLUGIN_SESSION_DESTROYE函数。群文件的moving.py插件写法可以支持。
|
139
|
+
+ 功能调整: 各会话变量保存的.mud文件,统一移到save子目录下。原来当前目录下的.mud文件,在对应会话重新加载时会自动移动,无需人工处理。
|
95
140
|
+ 功能新增: 增加了国际化(i18n)支持,原生开发语言为中文简体,目前使用AI翻译生成了英文。应用语言通过Settings中新增的language配置来控制,默认为"chs",可以在pymud.cfg中覆盖该配置。其值目前可以为"chs"、"eng"。自行翻译的语言可以在pymud/lang目录下下新增语言文件,文件名为i18n_加语言代码,例如"i18n_chs.py"表示可以使用"chs"语言,其中使用Python字典方式定义了所有需动态显示的文本内容。
|
96
141
|
+ 功能新增: 新增了使用元类型及装饰器来管理Pymud对象,包括Alias, Trigger, Timer, GMCPTrigger四种可以使用对应的装饰器,@alias, @trigger, @timer, @gmcp来直接在标记函数上创建。可以参考本版本中的pkuxkx.py文件写法和注意事项。
|
97
142
|
+ 功能新增: 新增了两个装饰器,@exception和@async_exception,用于捕获异常并调用session.error进行显示。@exception用于捕获同步异常,@async_exception用于捕获异步异常。参考如下:
|
@@ -130,7 +175,7 @@ Dynamic: license-file
|
|
130
175
|
+ 功能增强: 为Session类型增加了commandHistory属性,用于查询发送到服务器的命令历史。保存的命令历史的数量由pymud.cfg中的client["history_records"]控制,默认为500。当该值为0时,不会保存命令历史。为-1时,会保存所有命令历史。
|
131
176
|
+ 功能调整: #help命令时,增加了上下两行分隔符显示,以便明显区分帮助输出和游戏输出。
|
132
177
|
+ 功能增强: 当前pymud界面中显示的版本号会自动从pyproject.toml中读取,以确保版本号的准确性和唯一性。
|
133
|
-
+ 问题修复: 修复了代码中的部分编码错误。新版Python中能容忍一些错误,但老版本不行。经修复,当前代码支持的Python版本已测试3.8
|
178
|
+
+ 问题修复: 修复了代码中的部分编码错误。新版Python中能容忍一些错误,但老版本不行。经修复,当前代码支持的Python版本已测试3.8确保可用。建议使用3.10或更高版本的Python。
|
134
179
|
+ 问题修复: 删除了extras.py中多余的MenuItem类型定义,该定义与prompt_toolkit中的MenuItem定义冲突。
|
135
180
|
+ 问题修复: 调整了众多代码中未检查对象是否为None即调用、使用的局部变量可能未经过初始化和赋值路径等的情况,保证程序运行的健壮性。
|
136
181
|
+ 问题修复: 修复了#test命令的帮助内容错误。实际#show命令不触发脚本,仅测试;而#test会触发脚本。
|
@@ -285,7 +330,7 @@ Dynamic: license-file
|
|
285
330
|
+ 问题修复:修改了参数替代时的默认值,从None改为字符串"None",以避免替代时报None异常
|
286
331
|
|
287
332
|
### 0.18.1 (2024-02-05)
|
288
|
-
+ 问题修复:统一处置了task.cancel的参数和create_task的name属性,以适应更低版本的python环境(低至3.
|
333
|
+
+ 问题修复:统一处置了task.cancel的参数和create_task的name属性,以适应更低版本的python环境(低至3.8)
|
289
334
|
+ 实现调整:为解决同步/异步执行问题,在CodeLine和CodeBlock的实现中,会通过调用命令来判断是否使用同步模式(默认为异步)。#gag、#replace为强制同步,#wa为强制异步。当同时存在时,同步失效,异步执行。
|
290
335
|
+ 实现调整:将%line、%raw的访问传递到触发器内部的执行中,避免同步异步问题。
|
291
336
|
+ 新增文档:将帮助文档添加到本项目,帮助文档自动同步到 pymud.readthedocs.org (文档内容暂未更新)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
pymud/__init__.py,sha256=oeHz0NM7_DwChCY8f_vQ_fBq0e_HoTd0cahCFwaavWE,806
|
2
|
+
pymud/__main__.py,sha256=lIOBiJmi8X-EWXVIx_OoxSgUZ0FYKlZI8hXVnLUYTJQ,61
|
3
|
+
pymud/decorators.py,sha256=XaxcZqHw4s44lC2EAgB5kZmbNvJnHGmpZnoW75tUeNY,9844
|
4
|
+
pymud/dialogs.py,sha256=4kHycr47UgKQUHGX-KMZvERuWViPjT4hNrGhbe4j-NU,7056
|
5
|
+
pymud/extras.py,sha256=dP7nCiDRyZEWZay9RO0hstmo3x_VDeb4u21fHn1H7ZA,36657
|
6
|
+
pymud/i18n.py,sha256=qLgvrmYhVfkTHKpbBR-LfYMOrGgi0skHrelbsj7ItbE,3034
|
7
|
+
pymud/logger.py,sha256=WCsfXVkgl63qdq1RQEDJBnM7U0S6u8TeORFSMhcoydI,5840
|
8
|
+
pymud/main.py,sha256=zaSjNhpbX3FMulKg-UNFrdiIJO8sOmmrUQrkPOalB-4,10224
|
9
|
+
pymud/modules.py,sha256=DoCregng5iAj_Hq_yUvRPreRTv2Ehb6sV6_4jfdbsik,11912
|
10
|
+
pymud/objects.py,sha256=ZOxNjlPD_d4jk5DMBcXgYcvkt9d8xZih0IQtQlA3f1Y,38668
|
11
|
+
pymud/pkuxkx.py,sha256=qDVry-Vd6MNui0NKWZFT52IpmP1sKS5Dz74EDY4tVGQ,14740
|
12
|
+
pymud/protocol.py,sha256=KNKJYj9HFRoUy-jigNfhiQdDOM_kRSJE17QFpBarQTg,48335
|
13
|
+
pymud/pymud.py,sha256=40hn5XyMH9mtjimx_zG7N2M6fAGciee1izO08jsfFzQ,53486
|
14
|
+
pymud/session.py,sha256=K7AUm6JcTryEvknZnMrvS-UfNEDFyMZSD7yiRXivLRM,155063
|
15
|
+
pymud/settings.py,sha256=S2sBEM7YtaDOVu3UpGfHBaU7zSB3Zhs7w-Z7PtdS0WQ,7697
|
16
|
+
pymud/lang/i18n_chs.py,sha256=2cyaHHLwpYEBBwuQXyRTxa1opX53fTv1f8_QDQeGlC0,16836
|
17
|
+
pymud/lang/i18n_eng.py,sha256=jcPz6Y5UuxJBQLY_e8UnEF3GYTlnAD44C14Oj7sK-QI,45935
|
18
|
+
pymud-0.21.2.dist-info/licenses/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
19
|
+
pymud-0.21.2.dist-info/METADATA,sha256=9PJBJYHkzuNjql5z2ka4MVg7_O_2hzPJRR8p9WxNv0U,45141
|
20
|
+
pymud-0.21.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
21
|
+
pymud-0.21.2.dist-info/entry_points.txt,sha256=diPUOtTkhgC1hVny7Cdg4aRhaHSynMQoraE7ZhJxUcw,37
|
22
|
+
pymud-0.21.2.dist-info/top_level.txt,sha256=8Gp1eXjxixXjqhhti6tLCspV_8s9sNV3z5Em2_KRhD4,6
|
23
|
+
pymud-0.21.2.dist-info/RECORD,,
|
pymud-0.21.0a5.dist-info/RECORD
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
pymud/__init__.py,sha256=oeHz0NM7_DwChCY8f_vQ_fBq0e_HoTd0cahCFwaavWE,806
|
2
|
-
pymud/__main__.py,sha256=lIOBiJmi8X-EWXVIx_OoxSgUZ0FYKlZI8hXVnLUYTJQ,61
|
3
|
-
pymud/decorators.py,sha256=XaxcZqHw4s44lC2EAgB5kZmbNvJnHGmpZnoW75tUeNY,9844
|
4
|
-
pymud/dialogs.py,sha256=4kHycr47UgKQUHGX-KMZvERuWViPjT4hNrGhbe4j-NU,7056
|
5
|
-
pymud/extras.py,sha256=p52ZyHlldAkv_DruTNQdOzG1wcfQeBhYlOzCg2humDA,34614
|
6
|
-
pymud/i18n.py,sha256=qLgvrmYhVfkTHKpbBR-LfYMOrGgi0skHrelbsj7ItbE,3034
|
7
|
-
pymud/logger.py,sha256=WCsfXVkgl63qdq1RQEDJBnM7U0S6u8TeORFSMhcoydI,5840
|
8
|
-
pymud/main.py,sha256=zaSjNhpbX3FMulKg-UNFrdiIJO8sOmmrUQrkPOalB-4,10224
|
9
|
-
pymud/modules.py,sha256=DoCregng5iAj_Hq_yUvRPreRTv2Ehb6sV6_4jfdbsik,11912
|
10
|
-
pymud/objects.py,sha256=ZOxNjlPD_d4jk5DMBcXgYcvkt9d8xZih0IQtQlA3f1Y,38668
|
11
|
-
pymud/pkuxkx.py,sha256=qDVry-Vd6MNui0NKWZFT52IpmP1sKS5Dz74EDY4tVGQ,14740
|
12
|
-
pymud/protocol.py,sha256=KNKJYj9HFRoUy-jigNfhiQdDOM_kRSJE17QFpBarQTg,48335
|
13
|
-
pymud/pymud.py,sha256=mq27pOu2NThF8d5i2tBL2iK0w6b2Vzx03FPh0wu0qiI,53299
|
14
|
-
pymud/session.py,sha256=DjYGuf-Q6PWrmIxsOyNXHf22-yvCLLqgtVFvek5D_Bo,143282
|
15
|
-
pymud/settings.py,sha256=aZ2ZY-sSO_U-Mzn0TlxDsn7fXRku5YHWhjJuv3p4L40,7697
|
16
|
-
pymud/lang/i18n_chs.py,sha256=atHT26tGvmrpyzkkp7PwFN7b2EDGefjghfn9P7kF-UA,16539
|
17
|
-
pymud/lang/i18n_eng.py,sha256=G0h0b-G3gqk2cjJ7IsRkkkJ6WAk1IGh4o5FgJ2MHPAc,45246
|
18
|
-
pymud-0.21.0a5.dist-info/licenses/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
19
|
-
pymud-0.21.0a5.dist-info/METADATA,sha256=EzcT-IeDq_oo2sa9G9h8Z855ZH4ZlNw3k-i1S9420cc,41728
|
20
|
-
pymud-0.21.0a5.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
|
21
|
-
pymud-0.21.0a5.dist-info/entry_points.txt,sha256=diPUOtTkhgC1hVny7Cdg4aRhaHSynMQoraE7ZhJxUcw,37
|
22
|
-
pymud-0.21.0a5.dist-info/top_level.txt,sha256=8Gp1eXjxixXjqhhti6tLCspV_8s9sNV3z5Em2_KRhD4,6
|
23
|
-
pymud-0.21.0a5.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|