pymud 0.21.5.post1__py3-none-any.whl → 0.21.6__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 +1 -1
- pymud/lang/i18n_eng.py +2 -0
- pymud/main.py +10 -1
- pymud/objects.py +6 -2
- pymud/session.py +38 -13
- pymud/settings.py +1 -1
- {pymud-0.21.5.post1.dist-info → pymud-0.21.6.dist-info}/METADATA +16 -4
- pymud-0.21.6.dist-info/RECORD +23 -0
- pymud-0.21.5.post1.dist-info/RECORD +0 -23
- {pymud-0.21.5.post1.dist-info → pymud-0.21.6.dist-info}/WHEEL +0 -0
- {pymud-0.21.5.post1.dist-info → pymud-0.21.6.dist-info}/entry_points.txt +0 -0
- {pymud-0.21.5.post1.dist-info → pymud-0.21.6.dist-info}/licenses/LICENSE.txt +0 -0
- {pymud-0.21.5.post1.dist-info → pymud-0.21.6.dist-info}/top_level.txt +0 -0
pymud/extras.py
CHANGED
@@ -834,7 +834,7 @@ class PyMudBufferControl(UIControl):
|
|
834
834
|
def get_line(i: int) -> StyleAndTextTuples:
|
835
835
|
line = buffer.getLine(i)
|
836
836
|
# 颜色校正
|
837
|
-
SEARCH_LINES =
|
837
|
+
SEARCH_LINES = 50
|
838
838
|
thislinecolors = len(self.AVAI_COLOR_REGX.findall(line))
|
839
839
|
if thislinecolors == 0:
|
840
840
|
lineno = i - 1
|
pymud/lang/i18n_eng.py
CHANGED
@@ -292,6 +292,8 @@ TRANSLATION = {
|
|
292
292
|
Usage:
|
293
293
|
- #var: List all variables in this session.
|
294
294
|
- #var {name}: List the value of the variable named {name} in this session.
|
295
|
+
- #var prefix*: List the values of the variables which names start with prefix.
|
296
|
+
- #var *suffix: List the values of the variables which names end with suffix.
|
295
297
|
- #var {name} {value}: Set the value of the variable named {name} in this session to {value}, create it if it does not exist.
|
296
298
|
|
297
299
|
Parameters:
|
pymud/main.py
CHANGED
@@ -67,6 +67,15 @@ def detect_system_language():
|
|
67
67
|
def init_pymud_env(args):
|
68
68
|
system = "unknown"
|
69
69
|
lang = detect_system_language()
|
70
|
+
if lang == "chs":
|
71
|
+
val = input(f"检测到你的系统语言为中文,是否确认使用中文进行初始化?直接回车确认选择中文,若要选择英文,请键入 eng 后再回车:")
|
72
|
+
if val == "eng":
|
73
|
+
lang = "eng"
|
74
|
+
elif lang == "eng":
|
75
|
+
val = input(f"The language of your system ISNOT Chinese, do you want to initialize pymud in English? Press Enter to confirm, or type chs and then press Enter to initialize pymud in Chinese:")
|
76
|
+
if val == "chs":
|
77
|
+
lang = "chs"
|
78
|
+
|
70
79
|
if lang == "chs":
|
71
80
|
print(f"欢迎使用PyMUD, 版本{Settings.__version__}. 使用PyMUD时, 建议建立一个新目录(任意位置),并将自己的脚本以及配置文件放到该目录下.")
|
72
81
|
print("即将开始为首次运行初始化环境...")
|
@@ -202,7 +211,7 @@ def main():
|
|
202
211
|
subparsers = parser.add_subparsers(help = 'init用于初始化运行环境')
|
203
212
|
|
204
213
|
par_init = subparsers.add_parser('init', description = '初始化pymud运行环境, 包括建立脚本目录, 创建默认配置文件, 创建样例脚本等.')
|
205
|
-
par_init.add_argument('-d', '--dir', dest = 'dir', metavar = 'dir', type = str,
|
214
|
+
par_init.add_argument('-d', '--dir', dest = 'dir', metavar = 'dir', type = str, help = '指定构建脚本目录的名称, 不指定时会根据操作系统选择不同默认值')
|
206
215
|
par_init.set_defaults(func = init_pymud_env)
|
207
216
|
|
208
217
|
parser.add_argument('-d', '--debug', dest = 'debug', action = 'store_true', default = False, help = '指定以调试模式进入PyMUD。此时,系统log等级将设置为logging.NOTSET, 所有log数据均会被记录。默认不启用。')
|
pymud/objects.py
CHANGED
@@ -537,6 +537,7 @@ class MatchObject(BaseObject):
|
|
537
537
|
def reset(self):
|
538
538
|
"复位事件,用于async执行未等待结果时,对事件的复位。仅异步有效。"
|
539
539
|
self.event.clear()
|
540
|
+
self.state = BaseObject.State(self.NOTSET, self.id, "", tuple())
|
540
541
|
|
541
542
|
def set(self):
|
542
543
|
"设置事件标记,可以用于人工强制触发,仅在异步触发器下生效。"
|
@@ -621,9 +622,11 @@ class MatchObject(BaseObject):
|
|
621
622
|
self.event.set()
|
622
623
|
|
623
624
|
self.state = state
|
624
|
-
return state
|
625
|
+
#return state
|
625
626
|
except Exception as e:
|
626
627
|
print_exception(self.session, e)
|
628
|
+
|
629
|
+
return self.state
|
627
630
|
|
628
631
|
async def matched(self) -> BaseObject.State:
|
629
632
|
"""
|
@@ -637,9 +640,10 @@ class MatchObject(BaseObject):
|
|
637
640
|
await self.event.wait()
|
638
641
|
self.reset()
|
639
642
|
|
640
|
-
return self.state
|
641
643
|
except Exception as e:
|
642
644
|
print_exception(self.session, e)
|
645
|
+
|
646
|
+
return self.state
|
643
647
|
|
644
648
|
def __detailed__(self) -> str:
|
645
649
|
group = f'group = "{self.group}" ' if self.group else ''
|
pymud/session.py
CHANGED
@@ -237,9 +237,9 @@ class Session:
|
|
237
237
|
|
238
238
|
self.onConnected()
|
239
239
|
|
240
|
-
except Exception as
|
240
|
+
except Exception as ex:
|
241
241
|
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
242
|
-
self.error(Settings.gettext("msg_connection_fail", now,
|
242
|
+
self.error(Settings.gettext("msg_connection_fail", now, ex))
|
243
243
|
self._state = "EXCEPTION"
|
244
244
|
|
245
245
|
if Settings.client["auto_reconnect"]:
|
@@ -674,7 +674,7 @@ class Session:
|
|
674
674
|
else:
|
675
675
|
state = tri.match(tri_line, docallback = True)
|
676
676
|
|
677
|
-
if state.result == Trigger.SUCCESS:
|
677
|
+
if state and state.result == Trigger.SUCCESS:
|
678
678
|
if tri.oneShot: # 仅执行一次的trigger,匹配成功后,删除该Trigger(从触发器列表中移除)
|
679
679
|
self._triggers.pop(tri.id)
|
680
680
|
|
@@ -687,13 +687,13 @@ class Session:
|
|
687
687
|
if len(self.display_line) > 0:
|
688
688
|
self.writetobuffer(self.display_line)
|
689
689
|
|
690
|
-
def set_exception(self,
|
690
|
+
def set_exception(self, ex: Exception):
|
691
691
|
"""
|
692
692
|
由协议对象调用,处理异常。 **脚本中无需调用。**
|
693
693
|
|
694
|
-
:param
|
694
|
+
:param ex: 异常对象
|
695
695
|
"""
|
696
|
-
self.error(Settings.gettext("msg_connection_fail", datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
|
696
|
+
self.error(Settings.gettext("msg_connection_fail", datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), ex))
|
697
697
|
|
698
698
|
|
699
699
|
def create_task(self, coro, *args, name: Optional[str] = None) -> asyncio.Task:
|
@@ -814,8 +814,10 @@ class Session:
|
|
814
814
|
else:
|
815
815
|
self.log.log(f"\x1b[32m{line}\x1b[0m\n")
|
816
816
|
|
817
|
-
#
|
818
|
-
|
817
|
+
# 当输入空行命令后,本地强制新行
|
818
|
+
if len(line) == 0:
|
819
|
+
self.buffer.forceNewline()
|
820
|
+
|
819
821
|
self.record_command(line)
|
820
822
|
cmd = line + self.newline
|
821
823
|
self.write(cmd.encode(self.encoding, Settings.server["encoding_errors"]))
|
@@ -1024,7 +1026,7 @@ class Session:
|
|
1024
1026
|
|
1025
1027
|
for command in self._commands.values():
|
1026
1028
|
state = command.match(cmdtext)
|
1027
|
-
if state.result == Command.SUCCESS:
|
1029
|
+
if state and state.result == Command.SUCCESS:
|
1028
1030
|
notHandle = False
|
1029
1031
|
# 命令的任务名称采用命令id,以便于后续查错
|
1030
1032
|
self.create_task(command.execute(cmdtext), name = "task-{0}".format(command.id))
|
@@ -1041,7 +1043,7 @@ class Session:
|
|
1041
1043
|
|
1042
1044
|
for alias in avai_alis:
|
1043
1045
|
state = alias.match(cmdtext)
|
1044
|
-
if state.result == Alias.SUCCESS:
|
1046
|
+
if state and state.result == Alias.SUCCESS:
|
1045
1047
|
notHandle = False
|
1046
1048
|
if alias.oneShot:
|
1047
1049
|
self.delAlias(alias.id)
|
@@ -1069,7 +1071,7 @@ class Session:
|
|
1069
1071
|
|
1070
1072
|
for command in avai_cmds:
|
1071
1073
|
state = command.match(cmdtext)
|
1072
|
-
if state.result == Command.SUCCESS:
|
1074
|
+
if state and state.result == Command.SUCCESS:
|
1073
1075
|
# 命令的任务名称采用命令id,以便于后续查错
|
1074
1076
|
result = await self.create_task(command.execute(cmdtext), name = "task-{0}".format(command.id))
|
1075
1077
|
notHandle = False
|
@@ -1086,7 +1088,7 @@ class Session:
|
|
1086
1088
|
|
1087
1089
|
for alias in avai_alis:
|
1088
1090
|
state = alias.match(cmdtext)
|
1089
|
-
if state.result == Alias.SUCCESS:
|
1091
|
+
if state and state.result == Alias.SUCCESS:
|
1090
1092
|
notHandle = False
|
1091
1093
|
if alias.oneShot:
|
1092
1094
|
self.delAlias(alias.id)
|
@@ -2180,6 +2182,8 @@ class Session:
|
|
2180
2182
|
使用:
|
2181
2183
|
- #var: 列出本会话所有变量
|
2182
2184
|
- #var {name}: 列出本会话中名称为{name}的变量的值
|
2185
|
+
- #var prefix*: 列出本会话中名称以prefix开头的所有变量的值
|
2186
|
+
- #var *suffix: 列出本会话中名称以suffix结尾的所有变量的值
|
2183
2187
|
- #var {name} {value}: 将本会话中名称为{name}的变量设置值为{value},若不存在则创建
|
2184
2188
|
|
2185
2189
|
参数:
|
@@ -2209,7 +2213,28 @@ class Session:
|
|
2209
2213
|
|
2210
2214
|
for line in lines:
|
2211
2215
|
self.writetobuffer(line, newline = True)
|
2212
|
-
|
2216
|
+
|
2217
|
+
elif args[0].endswith("*"):
|
2218
|
+
filter_vars = DotDict()
|
2219
|
+
for key in self._variables.keys():
|
2220
|
+
if key.startswith(args[0][:-1]):
|
2221
|
+
filter_vars[key] = self._variables[key]
|
2222
|
+
|
2223
|
+
lines = self.buildDisplayLines(filter_vars, f" VARIABLES START WITH [{args[0][:-1]}] IN SESSION {self.name} ")
|
2224
|
+
|
2225
|
+
for line in lines:
|
2226
|
+
self.writetobuffer(line, newline = True)
|
2227
|
+
|
2228
|
+
elif args[0].startswith("*"):
|
2229
|
+
filter_vars = DotDict()
|
2230
|
+
for key in self._variables.keys():
|
2231
|
+
if key.endswith(args[0][1:]):
|
2232
|
+
filter_vars[key] = self._variables[key]
|
2233
|
+
|
2234
|
+
lines = self.buildDisplayLines(filter_vars, f" VARIABLES END WITH [{args[0][1:]}] IN SESSION {self.name} ")
|
2235
|
+
for line in lines:
|
2236
|
+
self.writetobuffer(line, newline = True)
|
2237
|
+
|
2213
2238
|
else:
|
2214
2239
|
self.warning(Settings.gettext("msg_no_object", args[0], Settings.gettext("variable")))
|
2215
2240
|
|
pymud/settings.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: pymud
|
3
|
-
Version: 0.21.
|
3
|
+
Version: 0.21.6
|
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>
|
@@ -44,7 +44,7 @@ Dynamic: license-file
|
|
44
44
|
|
45
45
|
### 北大侠客行Mud (www.pkuxkx.net),最好的中文Mud游戏!
|
46
46
|
### PyMUD是我为了更好的玩北大侠客行,特意自行开发的MUD客户端。PyMUD具有以下特点:
|
47
|
-
+ 原生Python开发,除prompt-toolkit及其依赖库 wcwidth, pygment, pyperclip 外,不需要其他第三方库支持
|
47
|
+
+ 原生Python开发,除 `prompt-toolkit <https://python-prompt-toolkit.readthedocs.io>`_ 及其依赖库 wcwidth, pygment, pyperclip 外,不需要其他第三方库支持
|
48
48
|
+ 原生Python的asyncio实现的通信协议处理,支持async/await语法在脚本中直接应用,脚本实现的同步异步两种模式由你自己选择
|
49
49
|
+ 基于控制台的全屏UI界面设计,支持鼠标操作(Android上支持触摸屏操作),极低资源需求,在单核1GB内存的Linux VPS上也可流畅运行
|
50
50
|
+ 支持分屏显示,在数据快速滚动的时候,上半屏保持不动,以确保不错过信息
|
@@ -54,8 +54,10 @@ Dynamic: license-file
|
|
54
54
|
+ 支持NWAS、MTTS协商,支持GMCP、MSDP、MSSP协议
|
55
55
|
+ 一次脚本开发,多平台运行。只要能在该平台上运行python,就可以运行PyMUD客户端
|
56
56
|
+ 脚本所有语法均采用Python原生语法,因此你只要会用Python,就可以自己写脚本,免去了再去学习lua、熟悉各类APP的使用的难处
|
57
|
+
+ 全开源代码,因此脚本也可以很方便的使用visual studio code等工具进行调试,可以设置断点、查看变量等
|
57
58
|
+ Python拥有极为强大的文字处理能力,用于处理文本的MUD最为合适
|
58
59
|
+ Python拥有极为丰富的第三方库,能支持的第三方库,就能在PyMUD中支持
|
60
|
+
+ 多语言支持框架已搭好,目前提供中文、英文支持,可以自己增加翻译后的其他语言版本
|
59
61
|
+ 我自己还在玩,所以本客户端会持续进行更新:)
|
60
62
|
|
61
63
|
### 哪些人适合使用PyMUD
|
@@ -66,10 +68,20 @@ Dynamic: license-file
|
|
66
68
|
|
67
69
|
## 版本更新信息
|
68
70
|
|
69
|
-
### 0.21.
|
71
|
+
### 0.21.6 (2025-06-29)
|
72
|
+
|
73
|
+
+ 问题修复: 修复了连接报错时,异常信息不显示的问题。
|
74
|
+
+ 问题修复: 修复了在脚本中发生同步触发器运行异常时,连接会中断的问题。
|
75
|
+
+ 问题修复: 修复了在初始化时,默认会指定当前目录为脚本目录而不能接受用户如数的问题。
|
76
|
+
+ 功能调整: 在初始化时,原先会根据检测到的系统语言进行语言选择,现增加了人工确认环节,可以手动切换。
|
77
|
+
+ 功能调整: 颜色校正追溯调整为更多行,解决当打印异常追踪行数过多时,红色背景会中断恢复的情况。
|
78
|
+
+ 功能新增: #var命令现在支持查询仅知道开头或者结尾的变量。例如,使用 #var abc* 会仅打印所有以 abc 开头的变量,使用 #var *abc 会仅打印所有以 abc 结尾的变量。
|
79
|
+
+ 问题修复: 修复了个别函数中,部分执行路径无返回值的问题。
|
80
|
+
|
81
|
+
### 0.21.5post2 (2025-06-10)
|
70
82
|
|
71
83
|
+ 功能完善: 完善了美化功能,已知情况下,基本不会出现断行和不对齐问题了。
|
72
|
-
+ 功能完善:
|
84
|
+
+ 功能完善: 在向服务器送出单个回车命令后,本地显示也强制换行。在出现『未完待续』情况时,回车后不会再跟在后面显示了,而是会强制从下一行开始。
|
73
85
|
+ 功能完善: 当对行进行双击选择时,背景增加的选择标记(灰色)会按照实际显示的宽度进行匹配,而不是按照原始数据的宽度进行匹配。
|
74
86
|
|
75
87
|
### 0.21.4 (2025-06-08)
|
@@ -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=rNuDaKk65Cwc9K6t0-BpqNUORs8-8X5Xsv6YaLQ7hc4,9839
|
4
|
+
pymud/dialogs.py,sha256=1xo5NJjch-u7RSRcclhvUE4gi8POgiZWK84lNx_HJbs,6891
|
5
|
+
pymud/extras.py,sha256=V6wPA0pMLiQNl_2NB37GaR-3T4kfWohjRHHlq2aK0AE,38779
|
6
|
+
pymud/i18n.py,sha256=qLgvrmYhVfkTHKpbBR-LfYMOrGgi0skHrelbsj7ItbE,3034
|
7
|
+
pymud/logger.py,sha256=F2LBUogdzv2WXHo10CNorDh2VleAX1Wbwmxc3zznHlM,5823
|
8
|
+
pymud/main.py,sha256=F8PUXWgWFKJQmy7yitvRJBQ5Mzc-_OC_gGhJwZo_FL0,10751
|
9
|
+
pymud/modules.py,sha256=CsOqY1c59CrejltCS4wf7QqdCr5k_ghel8AUqlKVGIw,11873
|
10
|
+
pymud/objects.py,sha256=_28Aj2Sgq-VbPtFS8Qq1nMdq3f3FLLQSjiAFRQ4Okvk,38743
|
11
|
+
pymud/pkuxkx.py,sha256=qDVry-Vd6MNui0NKWZFT52IpmP1sKS5Dz74EDY4tVGQ,14740
|
12
|
+
pymud/protocol.py,sha256=noptJs6K0L9qM8VZIeP65H4k9FPLGJqxvm3qY2iAwvI,48315
|
13
|
+
pymud/pymud.py,sha256=9BxK51tzvaOGpSqawlGI57TOtWbaccSlK9mNNHdvyGI,53486
|
14
|
+
pymud/session.py,sha256=Hz1rDwBSeE4tXBgOhQABifrDkNMS836pgCJaXHT9L0o,156015
|
15
|
+
pymud/settings.py,sha256=Auxc07JWWaQKy6NkFKHD6LAicJ3HxcneORZsrxmqA8M,7697
|
16
|
+
pymud/lang/i18n_chs.py,sha256=2cyaHHLwpYEBBwuQXyRTxa1opX53fTv1f8_QDQeGlC0,16836
|
17
|
+
pymud/lang/i18n_eng.py,sha256=VHt7xO1tOywd0IQaUpzO4Xn0GcYKXWKA9J11lS5RSAg,46117
|
18
|
+
pymud-0.21.6.dist-info/licenses/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
19
|
+
pymud-0.21.6.dist-info/METADATA,sha256=xIZa9mBgk1BC9rTmwtHFyLLXJr4xi295nmCbrGpzQjQ,48295
|
20
|
+
pymud-0.21.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
21
|
+
pymud-0.21.6.dist-info/entry_points.txt,sha256=diPUOtTkhgC1hVny7Cdg4aRhaHSynMQoraE7ZhJxUcw,37
|
22
|
+
pymud-0.21.6.dist-info/top_level.txt,sha256=8Gp1eXjxixXjqhhti6tLCspV_8s9sNV3z5Em2_KRhD4,6
|
23
|
+
pymud-0.21.6.dist-info/RECORD,,
|
@@ -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=rNuDaKk65Cwc9K6t0-BpqNUORs8-8X5Xsv6YaLQ7hc4,9839
|
4
|
-
pymud/dialogs.py,sha256=1xo5NJjch-u7RSRcclhvUE4gi8POgiZWK84lNx_HJbs,6891
|
5
|
-
pymud/extras.py,sha256=ehwEe48ObvypUTt6SVbGsI2C-3-Mn0J8mGZOMM-ighk,38779
|
6
|
-
pymud/i18n.py,sha256=qLgvrmYhVfkTHKpbBR-LfYMOrGgi0skHrelbsj7ItbE,3034
|
7
|
-
pymud/logger.py,sha256=F2LBUogdzv2WXHo10CNorDh2VleAX1Wbwmxc3zznHlM,5823
|
8
|
-
pymud/main.py,sha256=zaSjNhpbX3FMulKg-UNFrdiIJO8sOmmrUQrkPOalB-4,10224
|
9
|
-
pymud/modules.py,sha256=CsOqY1c59CrejltCS4wf7QqdCr5k_ghel8AUqlKVGIw,11873
|
10
|
-
pymud/objects.py,sha256=NlKAQnV6v9lSkz94zmgb513HPxskY8-tXnOdrYhuktc,38629
|
11
|
-
pymud/pkuxkx.py,sha256=qDVry-Vd6MNui0NKWZFT52IpmP1sKS5Dz74EDY4tVGQ,14740
|
12
|
-
pymud/protocol.py,sha256=noptJs6K0L9qM8VZIeP65H4k9FPLGJqxvm3qY2iAwvI,48315
|
13
|
-
pymud/pymud.py,sha256=9BxK51tzvaOGpSqawlGI57TOtWbaccSlK9mNNHdvyGI,53486
|
14
|
-
pymud/session.py,sha256=uJI2zm3rT3UxF0Pyt-e_daW4RkqCUR6OnkXneUVZ0tg,154790
|
15
|
-
pymud/settings.py,sha256=tWNRQAA-QnDUcXk-Vr3B9Bfi-JpSlroHC1UJ_PY2p8A,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.5.post1.dist-info/licenses/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
19
|
-
pymud-0.21.5.post1.dist-info/METADATA,sha256=yq8JnaorcCg5zk3cdQ6wsj04P-xucYWV-bI-rDbaAI8,47057
|
20
|
-
pymud-0.21.5.post1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
21
|
-
pymud-0.21.5.post1.dist-info/entry_points.txt,sha256=diPUOtTkhgC1hVny7Cdg4aRhaHSynMQoraE7ZhJxUcw,37
|
22
|
-
pymud-0.21.5.post1.dist-info/top_level.txt,sha256=8Gp1eXjxixXjqhhti6tLCspV_8s9sNV3z5Em2_KRhD4,6
|
23
|
-
pymud-0.21.5.post1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|