pymud 0.20.2a1__py3-none-any.whl → 0.20.2a3__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 CHANGED
@@ -40,6 +40,8 @@ from prompt_toolkit.layout.controls import (
40
40
  )
41
41
  from prompt_toolkit.layout.processors import (
42
42
  Processor,
43
+ TransformationInput,
44
+ Transformation
43
45
  )
44
46
  from prompt_toolkit.lexers import Lexer
45
47
  from prompt_toolkit.mouse_events import MouseEvent, MouseEventType
@@ -64,10 +66,11 @@ class MudFormatProcessor(Processor):
64
66
  self.FULL_BLOCKS = set("▂▃▅▆▇▄█")
65
67
  self.SINGLE_LINES = set("┌└├┬┼┴╭╰─")
66
68
  self.DOUBLE_LINES = set("╔╚╠╦╪╩═")
67
- self.START_COLOR_REGX = re.compile(r"^\[[\d;]+m")
69
+ #self.START_COLOR_REGX = re.compile(r"^\[[\d;]+m")
68
70
  self.COLOR_REGX = re.compile(r"\[[\d;]+m")
69
71
  self._color_start = ""
70
72
  self._color_correction = False
73
+ self._color_line_index = 0
71
74
 
72
75
  def width_correction(self, line: str) -> str:
73
76
  new_str = []
@@ -91,48 +94,48 @@ class MudFormatProcessor(Processor):
91
94
  def tab_correction(self, line: str):
92
95
  return line.replace("\t", " " * Settings.client["tabstop"])
93
96
 
94
- def color_correction(self, line: str):
95
- # 注:发现processer处理并非自上而下逐行处理的,因此不能使用这种颜色校正方式。
96
- if self._color_correction:
97
- other = self.COLOR_REGX.findall(line)
98
-
99
- line = f"{self._color_start}{line}"
100
- logging.debug(f"已校正增加颜色标志 {self._color_start}: {line}")
101
-
102
- if other:
103
- self._color_correction = False
104
- self._color_start = ""
105
- logging.debug(f"颜色校正结束: {line}")
106
- else:
107
- color = self.START_COLOR_REGX.findall(line)
108
- if color:
109
- other = self.COLOR_REGX.findall(line)
110
- if len(other) == 1:
111
- self._color_correction = True
112
- self._color_start = color[0]
113
- logging.debug(f"获取到一个颜色开头 {color[0]}: {line}")
114
-
115
- return line
116
-
117
97
  def line_correction(self, line: str):
118
98
  # 处理\r符号(^M)
119
99
  line = self.return_correction(line)
120
100
  # 处理Tab(\r)符号(^I)
121
101
  line = self.tab_correction(line)
122
- # 处理颜色跨行问题。发现processer处理并非自上而下逐行处理的,因此不能使用这种颜色校正方式。
123
- # line = self.color_correction(line)
102
+
124
103
  # 美化(解决中文英文在Console中不对齐的问题)
125
104
  if Settings.client["beautify"]:
126
105
  line = self.width_correction(line)
127
106
 
128
107
  return line
129
108
 
130
- def apply_transformation(self, transformation_input):
109
+ def apply_transformation(self, transformation_input: TransformationInput):
131
110
  # 准备(先还原为str)
132
111
  line = fragment_list_to_text(transformation_input.fragments)
112
+
113
+ # 颜色校正
114
+ thislinecolors = len(self.COLOR_REGX.findall(line))
115
+ if thislinecolors == 0:
116
+ lineno = transformation_input.lineno - 1
117
+ while lineno > 0:
118
+ lastline = transformation_input.document.lines[lineno]
119
+ # color = self.START_COLOR_REGX.findall(lastline)
120
+ # if color:
121
+ colors = self.COLOR_REGX.findall(lastline)
122
+
123
+ if len(colors) == 0:
124
+ lineno = lineno -1
125
+
126
+ elif len(colors) == 1:
127
+ line = f"{colors[0]}{line}"
128
+ break
129
+
130
+ else:
131
+ break
132
+
133
+ # 其他校正
133
134
  line = self.line_correction(line)
135
+
134
136
  # 处理ANSI标记(生成FormmatedText)
135
137
  fragments = to_formatted_text(ANSI(line))
138
+
136
139
  return Transformation(fragments)
137
140
 
138
141
  class SessionBuffer(Buffer):
pymud/session.py CHANGED
@@ -1949,7 +1949,6 @@ class Session:
1949
1949
  if remain:
1950
1950
  strlist.append(str[startindex:])
1951
1951
 
1952
- #self.info(f"原: {str}, 分隔为 {printable_length}, 结果为 {strlist}")
1953
1952
  return strlist
1954
1953
 
1955
1954
  def buildDisplayLines(self, vars: DotDict, title: str):
@@ -1962,7 +1961,7 @@ class Session:
1962
1961
  vars_complex = {}
1963
1962
 
1964
1963
  for k, v in vars.items():
1965
- if k in ("%line", "%raw"):
1964
+ if k in ("%line", "%raw", "%copy"):
1966
1965
  continue
1967
1966
 
1968
1967
  if dataclasses.is_dataclass(v) or (isinstance(v, Iterable) and not isinstance(v, str)):
@@ -1997,7 +1996,7 @@ class Session:
1997
1996
  name = key.rjust(KEY_WIDTH + VAR_WIDTH)
1998
1997
 
1999
1998
  value_dis = vars_simple[key].__repr__()
2000
- var_display = "{} = {}".format(name, value_dis)
1999
+ var_display = "{0} = {1}".format(name, value_dis)
2001
2000
 
2002
2001
  if (cursor + wcswidth(var_display) > totalWidth) or (var_count >= vars_per_line):
2003
2002
  display_lines.append(line)
@@ -2035,17 +2034,31 @@ class Session:
2035
2034
  if isinstance(value, dict):
2036
2035
  max_len = self.getMaxLength(value.keys())
2037
2036
  line += '{'
2037
+ display_lines.append(line)
2038
+ line = " " * (left_margin + KEY_WIDTH + 4)
2038
2039
  for k, v in value.items():
2039
- val_line = "{0}: {1},".format(k.ljust(max_len), v)
2040
- line += val_line
2041
- display_lines.append(line)
2042
- line = " " * (left_margin + KEY_WIDTH + 4)
2040
+ subvalue_dis = "{},".format(v.__repr__())
2041
+ allow_len_subvalue = allow_len - max_len - 4
2042
+ if wcswidth(subvalue_dis) > allow_len_subvalue:
2043
+ subvalue_lines = self.splitByPrintableWidth(subvalue_dis, allow_len_subvalue)
2044
+ line += "{0}: ".format(k.ljust(max_len))
2045
+ for subline in subvalue_lines:
2046
+ line += subline
2047
+ display_lines.append(line)
2048
+ line = " " * (left_margin + KEY_WIDTH + 4 + max_len + 2)
2049
+
2050
+ line = " " * (left_margin + KEY_WIDTH + 4)
2051
+ else:
2052
+ val_line = "{0}: {1}".format(k.ljust(max_len), subvalue_dis)
2053
+ line += val_line
2054
+ display_lines.append(line)
2055
+ line = " " * (left_margin + KEY_WIDTH + 4)
2043
2056
  line = line[:-1] + '}'
2044
2057
  display_lines.append(line)
2045
2058
  elif isinstance(value, list):
2046
2059
  line += '['
2047
2060
  for v in value:
2048
- val_line = "{0},".format(v)
2061
+ val_line = "{0},".format(v.__repr__())
2049
2062
  line += val_line
2050
2063
  display_lines.append(line)
2051
2064
  line = " " * (left_margin + KEY_WIDTH + 4)
@@ -2090,61 +2103,6 @@ class Session:
2090
2103
  #args = code.code[2:]
2091
2104
 
2092
2105
  if len(args) == 0:
2093
- # vars = self._variables
2094
- # vars_simple = {}
2095
- # vars_complex = {}
2096
- # for k, v in vars.items():
2097
- # # 不显示line, raw两个系统变量
2098
- # if k in ("%line", "%raw"):
2099
- # continue
2100
-
2101
- # if isinstance(v, Iterable) and not isinstance(v, str):
2102
- # vars_complex[k] = v
2103
- # else:
2104
- # vars_simple[k] = v
2105
-
2106
- # width = self.application.get_width() - 2 # 保留2个字符,防止 > 导致换行
2107
-
2108
- # title = f" VARIABLE LIST IN SESSION {self.name} "
2109
- # left = (width - len(title)) // 2
2110
- # right = width - len(title) - left
2111
- # self.writetobuffer("="*left + title + "="*right, newline = True)
2112
-
2113
- # # print vars in simple, 每个变量占40格,一行可以多个变量
2114
- # # 这里可以考虑调整一下,默认40, 但如果一个变量值太长,则选择占两个位置
2115
- # var_count = len(vars_simple)
2116
- # var_per_line = (width - 2) // 40
2117
- # lines = math.ceil(var_count / var_per_line)
2118
- # left_space = (width - var_per_line * 40) // 2
2119
- # if left_space > 4: left_space = 4
2120
-
2121
- # var_keys = sorted(vars_simple.keys())
2122
-
2123
- # for idx in range(0, lines):
2124
- # start = idx * var_per_line
2125
- # end = (idx + 1) * var_per_line
2126
- # if end > var_count: end = var_count
2127
- # self.writetobuffer(" " * left_space)
2128
- # line_vars = var_keys[start:end]
2129
- # for var in line_vars:
2130
- # repr = vars_simple[var].__repr__()
2131
- # vwidth = 22 - (wcswidth(repr) - len(repr))
2132
- # self.writetobuffer("{0} = {1}".format(var.rjust(20), repr.ljust(vwidth)))
2133
- # #self.writetobuffer("{0:>18} = {1:<19}".format(var, vars_simple[var].__repr__()))
2134
-
2135
- # self.writetobuffer("", newline = True)
2136
-
2137
- # # print vars in complex, 每个变量占1行
2138
- # var_keys = sorted(vars_complex.keys())
2139
- # for key in var_keys:
2140
- # self.writetobuffer(" " * left_space)
2141
- # self.writetobuffer("{0:>20} = {1}".format(key, vars_complex[key].__repr__()), newline = True)
2142
-
2143
- # self.writetobuffer("="*width, newline = True)
2144
- # row, col = self.buffer.document.translate_index_to_position(len(self.buffer.text))
2145
- # if col:
2146
- # self.writetobuffer("", newline = True)
2147
-
2148
2106
  lines = self.buildDisplayLines(self._variables, f" VARIABLE LIST IN SESSION {self.name} ")
2149
2107
 
2150
2108
  for line in lines:
@@ -2153,7 +2111,12 @@ class Session:
2153
2111
  elif len(args) == 1:
2154
2112
  if args[0] in self._variables.keys():
2155
2113
  obj = self.getVariable(args[0])
2156
- self.info(f"变量{args[0]}值为:{obj}")
2114
+ var_dict = {args[0] : obj}
2115
+ lines = self.buildDisplayLines(var_dict, f" VARIABLE [{args[0]}] IN SESSION {self.name} ")
2116
+
2117
+ for line in lines:
2118
+ self.writetobuffer(line, newline = True)
2119
+
2157
2120
  else:
2158
2121
  self.warning(f"当前session中不存在名称为 {args[0]} 的变量")
2159
2122
 
@@ -2165,6 +2128,7 @@ class Session:
2165
2128
  val = args[1]
2166
2129
 
2167
2130
  self.setVariable(args[0], val)
2131
+ self.info(f"成功设置变量 {args[0]} 值为 {val}")
2168
2132
 
2169
2133
  def handle_global(self, code: CodeLine = None, *args, **kwargs):
2170
2134
  '''
@@ -2190,51 +2154,6 @@ class Session:
2190
2154
  #args = code.code[2:]
2191
2155
 
2192
2156
  if len(args) == 0:
2193
- # vars = self.application.globals
2194
- # vars_simple = {}
2195
- # vars_complex = {}
2196
- # for k, v in vars.items():
2197
- # if isinstance(v, Iterable) and not isinstance(v, str):
2198
- # vars_complex[k] = v
2199
- # else:
2200
- # vars_simple[k] = v
2201
-
2202
- # width = self.application.get_width() - 2 # 保留2个字符,防止 > 导致换行
2203
-
2204
- # title = f" GLOBAL VARIABLES LIST "
2205
- # left = (width - len(title)) // 2
2206
- # right = width - len(title) - left
2207
- # self.writetobuffer("="*left + title + "="*right, newline = True)
2208
-
2209
- # # print vars in simple, 每个变量占40格,一行可以多个变量
2210
- # var_count = len(vars_simple)
2211
- # var_per_line = (width - 2) // 40
2212
- # lines = math.ceil(var_count / var_per_line)
2213
- # left_space = (width - var_per_line * 40) // 2
2214
- # if left_space > 4: left_space = 4
2215
-
2216
- # var_keys = sorted(vars_simple.keys())
2217
-
2218
- # for idx in range(0, lines):
2219
- # start = idx * var_per_line
2220
- # end = (idx + 1) * var_per_line
2221
- # if end > var_count: end = var_count
2222
- # self.writetobuffer(" " * left_space)
2223
- # line_vars = var_keys[start:end]
2224
- # for var in line_vars:
2225
- # repr = vars_simple[var].__repr__()
2226
- # vwidth = 22 - (wcswidth(repr) - len(repr))
2227
- # self.writetobuffer("{0} = {1}".format(var.rjust(20), repr.ljust(vwidth)))
2228
-
2229
- # self.writetobuffer("", newline = True)
2230
-
2231
- # # print vars in complex, 每个变量占1行
2232
- # for k, v in vars_complex.items():
2233
- # self.writetobuffer(" " * left_space)
2234
- # self.writetobuffer("{0:>20} = {1}".format(k, v.__repr__()), newline = True)
2235
-
2236
- # self.writetobuffer("="*width, newline = True)
2237
-
2238
2157
  lines = self.buildDisplayLines(self.application.globals, f" GLOBAL VARIABLES LIST ")
2239
2158
 
2240
2159
  for line in lines:
@@ -2243,7 +2162,13 @@ class Session:
2243
2162
  elif len(args) == 1:
2244
2163
  var = args[0]
2245
2164
  if var in self.application.globals.keys():
2246
- self.info("{0:>20} = {1:<22}".format(var, self.application.get_globals(var).__repr__()), "全局变量")
2165
+ # self.info("{0:>20} = {1:<22}".format(var, self.application.get_globals(var).__repr__()), "全局变量")
2166
+
2167
+ var_dict = {var : self.application.get_globals(var)}
2168
+ lines = self.buildDisplayLines(var_dict, f" GLOBAL VARIABLE [{var}] ")
2169
+
2170
+ for line in lines:
2171
+ self.writetobuffer(line, newline = True)
2247
2172
  else:
2248
2173
  self.info("全局空间不存在名称为 {} 的变量".format(var), "全局变量")
2249
2174
 
@@ -2254,6 +2179,7 @@ class Session:
2254
2179
  except:
2255
2180
  val = args[1]
2256
2181
  self.application.set_globals(args[0], val)
2182
+ self.info(f"成功设置全局变量 {args[0]} 值为 {val}")
2257
2183
 
2258
2184
  def _handle_objs(self, name: str, objs: dict, *args):
2259
2185
  if len(args) == 0:
@@ -3084,14 +3010,18 @@ class Session:
3084
3010
  triggered_enabled += 1
3085
3011
  if not block:
3086
3012
  triggered += 1
3087
- info_enabled.append(f" {Settings.INFO_STYLE}{tri.__detailed__()} 正常触发。{Settings.CLR_STYLE}")
3088
- info_enabled.append(f" {Settings.INFO_STYLE}捕获:{state.wildcards}{Settings.CLR_STYLE}")
3013
+ # info_enabled.append(f" {Settings.INFO_STYLE}{tri.__detailed__()} 正常触发。{Settings.CLR_STYLE}")
3014
+ # info_enabled.append(f" {Settings.INFO_STYLE}捕获:{state.wildcards}{Settings.CLR_STYLE}")
3015
+ info_enabled.append(f" {tri.__detailed__()} 正常触发。")
3016
+ info_enabled.append(f" 捕获:{state.wildcards}")
3089
3017
 
3090
3018
  if not tri.keepEval: # 非持续匹配的trigger,匹配成功后停止检测后续Trigger
3091
3019
  info_enabled.append(f" {Settings.WARN_STYLE}该触发器未开启keepEval, 会阻止后续触发器。{Settings.CLR_STYLE}")
3020
+ #info_enabled.append(f" 该触发器未开启keepEval, 会阻止后续触发器。")
3092
3021
  block = True
3093
3022
  else:
3094
3023
  info_enabled.append(f" {Settings.WARN_STYLE}{tri.__detailed__()} 可以触发,但由于优先级与keepEval设定,触发器不会触发。{Settings.CLR_STYLE}")
3024
+ #info_enabled.append(f" {tri.__detailed__()} 可以触发,但由于优先级与keepEval设定,触发器不会触发。")
3095
3025
 
3096
3026
 
3097
3027
  for tri in tris_disabled:
@@ -3102,22 +3032,23 @@ class Session:
3102
3032
 
3103
3033
  if state.result == Trigger.SUCCESS:
3104
3034
  triggered_disabled += 1
3105
- info_disabled.append(f" {Settings.INFO_STYLE}{tri.__detailed__()} 可以匹配触发。{Settings.CLR_STYLE}")
3035
+ # info_disabled.append(f" {Settings.INFO_STYLE}{tri.__detailed__()} 可以匹配触发。{Settings.CLR_STYLE}")
3036
+ info_disabled.append(f" {tri.__detailed__()} 可以匹配触发。")
3106
3037
 
3107
3038
  if triggered_enabled + triggered_disabled == 0:
3108
3039
  info_all.append("")
3109
3040
 
3110
3041
  if triggered_enabled == 0:
3111
- info_enabled.insert(0, f"使能的触发器中,没有可以触发的。")
3042
+ info_enabled.insert(0, f"{Settings.INFO_STYLE}使能的触发器中,没有可以触发的。")
3112
3043
  elif triggered < triggered_enabled:
3113
- info_enabled.insert(0, f"使能的触发器中,共有 {triggered_enabled} 个可以触发,实际触发 {triggered} 个,另有 {triggered_enabled - triggered} 个由于 keepEval 原因实际不会触发。")
3044
+ info_enabled.insert(0, f"{Settings.INFO_STYLE}使能的触发器中,共有 {triggered_enabled} 个可以触发,实际触发 {triggered} 个,另有 {triggered_enabled - triggered} 个由于 keepEval 原因实际不会触发。")
3114
3045
  else:
3115
- info_enabled.insert(0, f"使能的触发器中,共有 {triggered_enabled} 个全部可以被正常触发。")
3046
+ info_enabled.insert(0, f"{Settings.INFO_STYLE}使能的触发器中,共有 {triggered_enabled} 个全部可以被正常触发。")
3116
3047
 
3117
3048
  if triggered_disabled > 0:
3118
- info_disabled.insert(0, f"未使能的触发器中,共有 {triggered_disabled} 个可以匹配。")
3049
+ info_disabled.insert(0, f"{Settings.INFO_STYLE}未使能的触发器中,共有 {triggered_disabled} 个可以匹配。")
3119
3050
  else:
3120
- info_disabled.insert(0, f"未使能触发器,没有可以匹配的。")
3051
+ info_disabled.insert(0, f"{Settings.INFO_STYLE}未使能触发器,没有可以匹配的。")
3121
3052
 
3122
3053
  if triggered_enabled + triggered_disabled == 0:
3123
3054
  info_all.append(f"PYMUD 触发器测试: {'响应模式' if docallback else '测试模式'}")
@@ -3275,13 +3206,13 @@ class Session:
3275
3206
  def info2(self, msg, title = "PYMUD INFO", style = Settings.INFO_STYLE):
3276
3207
  msg = f"{msg}"
3277
3208
 
3278
- if Settings.client["newline"] in msg:
3279
- new_lines = list()
3280
- msg_lines = msg.split(Settings.client["newline"])
3281
- for line in msg_lines:
3282
- new_lines.append("{}{}".format(style, line))
3209
+ # if Settings.client["newline"] in msg:
3210
+ # new_lines = list()
3211
+ # msg_lines = msg.split(Settings.client["newline"])
3212
+ # for line in msg_lines:
3213
+ # new_lines.append("{}{}".format(style, line))
3283
3214
 
3284
- msg = Settings.client["newline"].join(new_lines)
3215
+ # msg = Settings.client["newline"].join(new_lines)
3285
3216
 
3286
3217
  # 将颜色跨行显示移动到了MudFormatProcessor中,此处无需再处理(不行,还得恢复)
3287
3218
  self.writetobuffer("{}[{}] {}{}".format(style, title, msg, Settings.CLR_STYLE), newline = True)
pymud/settings.py CHANGED
@@ -11,9 +11,9 @@ class Settings:
11
11
  "APP 名称, 默认PYMUD"
12
12
  __appdesc__ = "a MUD client written in Python"
13
13
  "APP 简要描述"
14
- __version__ = "0.20.1"
14
+ __version__ = "0.20.2"
15
15
  "APP 当前版本"
16
- __release__ = "2024-11-16"
16
+ __release__ = "2024-11-18"
17
17
  "APP 当前版本发布日期"
18
18
  __author__ = "本牛(newstart)@北侠"
19
19
  "APP 作者"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pymud
3
- Version: 0.20.2a1
3
+ Version: 0.20.2a3
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>
@@ -737,10 +737,11 @@ Requires-Dist: prompt-toolkit
737
737
 
738
738
  ## 版本更新信息
739
739
 
740
- ## 0.20.2 (2024-11-18)
741
- + 功能调整: MTTS协商中,将256 Color明确写入协商回复。原先仅包含ANSI 和 TrueColor
740
+ ## 0.20.2 (2024-11-20)
741
+ + 功能调整: MTTS协商中,将256 Color明确写入协商回复。原先仅包含ANSI 和 TrueColor。推测武庙特殊颜色偶尔不正常与此有关。
742
742
  + 功能调整: 修复了纯文本正则处理,目前理论上支持所有ANSI控制代码的处置,以正确响应纯文本触发器。
743
743
  + 功能调整: 修改了#var和#global的显示实现,提高了变量打印排列的整齐度和辨识度,以适应长值变量和复杂变量。
744
+ + 问题修复: 修复了单行颜色代码跨行无法显示问题。现在星宿毒草可以正常辨认颜色了。
744
745
 
745
746
  ## 0.20.1 (2024-11-16)
746
747
  + 功能调整: 会话中触发器匹配实现进行部分调整,减少循环次数以提高响应速度
@@ -1,7 +1,7 @@
1
1
  pymud/__init__.py,sha256=AP4Edhx90gMKrNfD1O_KVciA3SOnyX5Qt9fZY_JhsTY,574
2
2
  pymud/__main__.py,sha256=hFzZjadLlcOuoLM7D8wFiFVO8mqF7vMuo9y-9xfIhRc,64
3
3
  pymud/dialogs.py,sha256=p-LidObSuDyOeMif5CsqhF5qq3rizZ1lmThWHrxDyRg,6726
4
- pymud/extras.py,sha256=Gr-gX7YRWZMmeKV73sk7h_Gf5eZVJ6GcAXvSEfJ4uMI,41124
4
+ pymud/extras.py,sha256=Lr4_B1-KFM47cEMqfLZy7R3Kw8eF3b5MucqaHYQwKOE,40817
5
5
  pymud/logger.py,sha256=sq9HhZ6-prY34NnDUO1NjaCRy-e5-fr2j0na8FKp9ks,5789
6
6
  pymud/main.py,sha256=b_Ui_cN4W8IfhYNyc1duwr3Bp7pYYZQusKTSafCWZIA,6534
7
7
  pymud/modules.py,sha256=XoqTeYfZCgqDsV3SYxeehzsbkTzs0swelAUIxyWuL9g,7423
@@ -9,11 +9,11 @@ pymud/objects.py,sha256=qSOFuVZvMh3lxjg6x5JUzcr_sTSgakWWySh801x7TNQ,39457
9
9
  pymud/pkuxkx.py,sha256=jRQRUs2xtw7GzYHtLYZXOASnqMumKh0iCoOeKZs8NnU,11467
10
10
  pymud/protocol.py,sha256=nlsyXMBAHEf_067mPNGDHzN_zIm9808D8YDIZTNrygg,49118
11
11
  pymud/pymud.py,sha256=4v-pdSheWfWCK7O-3bAipK7WE6zPe8mRLil7E1Zbnas,51663
12
- pymud/session.py,sha256=SrDcYxbHEJDC01x9cM0mWh1U5RC3jNjH660qlAjiuzU,141531
13
- pymud/settings.py,sha256=ZsKGkjcNGNwqeb2DztwhIrCcRDPYYN1SxtdjWNAJ9CY,7145
14
- pymud-0.20.2a1.dist-info/LICENSE.txt,sha256=IwGE9guuL-ryRPEKi6wFPI_zOhg7zDZbTYuHbSt_SAk,35823
15
- pymud-0.20.2a1.dist-info/METADATA,sha256=cvzddI3UTmc53fgWNcUK1eQxgMtMk0PlJ_G0sO5OhnE,74774
16
- pymud-0.20.2a1.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
17
- pymud-0.20.2a1.dist-info/entry_points.txt,sha256=diPUOtTkhgC1hVny7Cdg4aRhaHSynMQoraE7ZhJxUcw,37
18
- pymud-0.20.2a1.dist-info/top_level.txt,sha256=8Gp1eXjxixXjqhhti6tLCspV_8s9sNV3z5Em2_KRhD4,6
19
- pymud-0.20.2a1.dist-info/RECORD,,
12
+ pymud/session.py,sha256=b98nAkM5IcBHiE2gG7v9W7oZ8YL8s5PlvCpHNEzboKg,138880
13
+ pymud/settings.py,sha256=c9345jdR0APj1xebymyLzAATqhIFqGwToSCBXRtGuHo,7145
14
+ pymud-0.20.2a3.dist-info/LICENSE.txt,sha256=IwGE9guuL-ryRPEKi6wFPI_zOhg7zDZbTYuHbSt_SAk,35823
15
+ pymud-0.20.2a3.dist-info/METADATA,sha256=GmnvkxqaUVxgPET6HkUXbeo4AK7NOZQAAd8766XrZ_w,74948
16
+ pymud-0.20.2a3.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
17
+ pymud-0.20.2a3.dist-info/entry_points.txt,sha256=diPUOtTkhgC1hVny7Cdg4aRhaHSynMQoraE7ZhJxUcw,37
18
+ pymud-0.20.2a3.dist-info/top_level.txt,sha256=8Gp1eXjxixXjqhhti6tLCspV_8s9sNV3z5Em2_KRhD4,6
19
+ pymud-0.20.2a3.dist-info/RECORD,,