XMWAI 0.4.5__tar.gz → 0.4.7__tar.gz

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.

Potentially problematic release.


This version of XMWAI might be problematic. Click here for more details.

Files changed (130) hide show
  1. {xmwai-0.4.5 → xmwai-0.4.7}/MANIFEST.in +1 -1
  2. {xmwai-0.4.5/XMWAI.egg-info → xmwai-0.4.7}/PKG-INFO +1 -1
  3. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/snake_core.py +57 -29
  4. {xmwai-0.4.5 → xmwai-0.4.7/XMWAI.egg-info}/PKG-INFO +1 -1
  5. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI.egg-info/SOURCES.txt +0 -1
  6. {xmwai-0.4.5 → xmwai-0.4.7}/setup.py +1 -1
  7. xmwai-0.4.5/XMWAI/gif/__init__.py +0 -0
  8. {xmwai-0.4.5 → xmwai-0.4.7}/LICENSE.txt +0 -0
  9. {xmwai-0.4.5 → xmwai-0.4.7}/README.md +0 -0
  10. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/__init__.py +0 -0
  11. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/assets/1.png +0 -0
  12. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/assets/g.png +0 -0
  13. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/assets/h.png +0 -0
  14. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/assets/l.png +0 -0
  15. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/assets/m.png +0 -0
  16. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/assets/s.png +0 -0
  17. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/assets/t.png +0 -0
  18. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/assets//345/276/256/350/275/257/351/233/205/351/273/221.ttf" +0 -0
  19. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/bomb_core.py +0 -0
  20. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/core.py +0 -0
  21. {xmwai-0.4.5/XMWAI/assets → xmwai-0.4.7/XMWAI/file}/__init__.py +0 -0
  22. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/file/idiom.json +0 -0
  23. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/0.gif +0 -0
  24. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/1.gif +0 -0
  25. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/10.gif +0 -0
  26. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/11.gif +0 -0
  27. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/12.gif +0 -0
  28. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/13.gif +0 -0
  29. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/14.gif +0 -0
  30. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/15.gif +0 -0
  31. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/16.gif +0 -0
  32. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/17.gif +0 -0
  33. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/18.gif +0 -0
  34. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/19.gif +0 -0
  35. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/2.gif +0 -0
  36. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/20.gif +0 -0
  37. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/21.gif +0 -0
  38. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/22.gif +0 -0
  39. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/23.gif +0 -0
  40. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/24.gif +0 -0
  41. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/25.gif +0 -0
  42. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/26.gif +0 -0
  43. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/27.gif +0 -0
  44. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/28.gif +0 -0
  45. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/29.gif +0 -0
  46. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/3.gif +0 -0
  47. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/30.gif +0 -0
  48. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/31.gif +0 -0
  49. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/32.gif +0 -0
  50. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/33.gif +0 -0
  51. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/34.gif +0 -0
  52. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/35.gif +0 -0
  53. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/36.gif +0 -0
  54. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/37.gif +0 -0
  55. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/38.gif +0 -0
  56. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/39.gif +0 -0
  57. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/4.gif +0 -0
  58. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/40.gif +0 -0
  59. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/41.gif +0 -0
  60. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/42.gif +0 -0
  61. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/43.gif +0 -0
  62. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/44.gif +0 -0
  63. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/45.gif +0 -0
  64. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/46.gif +0 -0
  65. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/47.gif +0 -0
  66. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/48.gif +0 -0
  67. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/49.gif +0 -0
  68. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/5.gif +0 -0
  69. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/50.gif +0 -0
  70. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/51.gif +0 -0
  71. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/52.gif +0 -0
  72. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/53.gif +0 -0
  73. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/54.gif +0 -0
  74. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/55.gif +0 -0
  75. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/56.gif +0 -0
  76. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/57.gif +0 -0
  77. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/58.gif +0 -0
  78. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/59.gif +0 -0
  79. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/6.gif +0 -0
  80. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/60.gif +0 -0
  81. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/61.gif +0 -0
  82. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/62.gif +0 -0
  83. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/63.gif +0 -0
  84. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/64.gif +0 -0
  85. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/65.gif +0 -0
  86. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/66.gif +0 -0
  87. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/67.gif +0 -0
  88. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/68.gif +0 -0
  89. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/69.gif +0 -0
  90. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/7.gif +0 -0
  91. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/70.gif +0 -0
  92. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/71.gif +0 -0
  93. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/72.gif +0 -0
  94. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/73.gif +0 -0
  95. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/74.gif +0 -0
  96. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/75.gif +0 -0
  97. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/76.gif +0 -0
  98. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/77.gif +0 -0
  99. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/78.gif +0 -0
  100. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/79.gif +0 -0
  101. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/8.gif +0 -0
  102. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/80.gif +0 -0
  103. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/81.gif +0 -0
  104. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/82.gif +0 -0
  105. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/83.gif +0 -0
  106. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/84.gif +0 -0
  107. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/85.gif +0 -0
  108. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/gif/9.gif +0 -0
  109. {xmwai-0.4.5/XMWAI/file → xmwai-0.4.7/XMWAI/gif}/__init__.py +0 -0
  110. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/idiom_core.py +0 -0
  111. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/magic_core.py +0 -0
  112. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/static/burger.js +0 -0
  113. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/static/images/BottomBun.png +0 -0
  114. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/static/images/TopBun.png +0 -0
  115. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/static/images/beef.png +0 -0
  116. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/static/images/bg.jpeg +0 -0
  117. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/static/images/bg.png +0 -0
  118. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/static/images/cheese.png +0 -0
  119. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/static/images/lettuce.png +0 -0
  120. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/static/images/sauce.png +0 -0
  121. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/static/images/tomato.png +0 -0
  122. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/templates/burger.html +0 -0
  123. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/templates/nutrition_pie.html +0 -0
  124. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/templates//345/210/233/346/204/217/350/217/234/350/260/261.html" +0 -0
  125. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/trial_class.py +0 -0
  126. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI/web_core.py +0 -0
  127. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI.egg-info/dependency_links.txt +0 -0
  128. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI.egg-info/requires.txt +0 -0
  129. {xmwai-0.4.5 → xmwai-0.4.7}/XMWAI.egg-info/top_level.txt +0 -0
  130. {xmwai-0.4.5 → xmwai-0.4.7}/setup.cfg +0 -0
@@ -2,4 +2,4 @@ recursive-include XMWAI/gif *
2
2
  recursive-include XMWAI/file *.json
3
3
  recursive-include XMWAI/templates *.html
4
4
  recursive-include XMWAI/static *.js *.css *.png *.jpg *.gif *.jpeg
5
- recursive-include XMWAI/assets *
5
+ recursive-include XMWAI/assets *.png *.ttf
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: XMWAI
3
- Version: 0.4.5
3
+ Version: 0.4.7
4
4
  Summary: Small code King AI related library
5
5
  Home-page: https://github.com/Tonykai88/XMWAI.git
6
6
  Author: pydevelopment
@@ -5,18 +5,15 @@ import cvzone
5
5
  import numpy as np
6
6
  from cvzone.HandTrackingModule import HandDetector
7
7
  from PIL import ImageFont, ImageDraw, Image
8
- import os
9
8
  import time
10
- import importlib.resources as pkg_resources
11
-
12
- # 引入包内资源
13
- import XMWAI.assets as assets
9
+ from importlib.resources import files
10
+ from pathlib import Path
11
+ import os
14
12
 
15
13
 
16
- def get_asset_path(filename: str) -> str:
17
- """获取包内资源的路径"""
18
- with pkg_resources.path(assets, filename) as p:
19
- return str(p)
14
+ def get_resource_path(filename: str) -> str:
15
+ """返回 snake_core 模块内资源的绝对路径"""
16
+ return str(files("XMWAI.assets").joinpath(filename))
20
17
 
21
18
 
22
19
  class SnakeGame:
@@ -30,21 +27,16 @@ class SnakeGame:
30
27
  self._snakeHeadSize = snakeHeadSize
31
28
  self._foodScores = foodScores if foodScores is not None else [3, 2, 1]
32
29
  self.snakeLineWidth = snakeLineWidth
30
+ self.fontPath = fontPath or get_resource_path("微软雅黑.ttf")
33
31
 
34
- # 字体路径(默认取包内字体)
35
- self.fontPath = fontPath or get_asset_path("微软雅黑.ttf")
36
-
37
- # 默认资源路径
38
32
  if foodPaths is None:
39
- foodPaths = [get_asset_path("h.png"),
40
- get_asset_path("s.png"),
41
- get_asset_path("t.png")]
33
+ foodPaths = [get_resource_path(f)
34
+ for f in ["h.png", "s.png", "t.png"]]
42
35
  if foodNames is None:
43
36
  foodNames = ["汉堡", "薯条", "甜甜圈"]
44
37
  if obstaclePaths is None:
45
- obstaclePaths = [get_asset_path("g.png"),
46
- get_asset_path("l.png"),
47
- get_asset_path("m.png")]
38
+ obstaclePaths = [get_resource_path(f)
39
+ for f in ["g.png", "l.png", "m.png"]]
48
40
 
49
41
  self.foodPaths = foodPaths
50
42
  self.foodNames = foodNames
@@ -64,7 +56,7 @@ class SnakeGame:
64
56
  self._init_game_objects()
65
57
  self.open_window()
66
58
 
67
- # ----------- 属性自动同步 -----------
59
+ # ---------------- 属性自动同步 ----------------
68
60
  @property
69
61
  def snakeHeadSize(self):
70
62
  return self._snakeHeadSize
@@ -113,6 +105,8 @@ class SnakeGame:
113
105
  self.obstacleManager.randomObstacles()
114
106
 
115
107
  def _render_frame(self, show_food=True, show_obstacle=True):
108
+ if self.cap is None:
109
+ return
116
110
  success, self.img = self.cap.read()
117
111
  if not success:
118
112
  return
@@ -134,8 +128,7 @@ class SnakeGame:
134
128
 
135
129
  if show_obstacle:
136
130
  self.img = self.obstacleManager.draw(self.img)
137
- self.obstacleManager.moveObstacles(
138
- self.resolution[0], self.resolution[1])
131
+ self.obstacleManager.moveObstacles(*self.resolution)
139
132
 
140
133
  if show_food:
141
134
  self.img = self.foodManager.draw(self.img)
@@ -154,6 +147,39 @@ class SnakeGame:
154
147
  cv2.imshow("AI Snake", self.img)
155
148
  cv2.waitKey(1)
156
149
 
150
+ def hand(self):
151
+ if self.cap is None:
152
+ print("请先调用 open_window()")
153
+ return
154
+ if self.detector is None:
155
+ self.detector = HandDetector(detectionCon=0.8, maxHands=1)
156
+ while True:
157
+ success, self.img = self.cap.read()
158
+ if not success:
159
+ break
160
+ self.img = cv2.flip(self.img, 1)
161
+ hands, self.img = self.detector.findHands(self.img, flipType=False)
162
+ cv2.imshow("AI Snake", self.img)
163
+ key = cv2.waitKey(1) & 0xFF
164
+ if hands or key == ord('q'):
165
+ break
166
+
167
+ def display(self):
168
+ if self.img is None:
169
+ self._render_frame(show_food=False)
170
+ self.foodManager.randomFoodLocation(self.obstacleManager)
171
+ self._render_frame(show_food=True)
172
+ self.overlayTexts = [
173
+ (f'玩家分数:{self.snake.score}', (50, 50), 30, (255, 0, 255)),
174
+ (f'倒计时:{self.timer} 秒', (50, 120), 30, (255, 0, 255))
175
+ ]
176
+ img_copy = self.img.copy()
177
+ for txt, pos, size, color in self.overlayTexts:
178
+ img_copy = self._putChineseText(img_copy, txt, pos, size, color)
179
+ cv2.imshow("AI Snake", img_copy)
180
+ cv2.waitKey(1)
181
+
182
+ # ---------------- 重置游戏 ----------------
157
183
  def reset_game(self):
158
184
  self.snake.reset()
159
185
  self.snake.headSize = self._snakeHeadSize
@@ -165,9 +191,10 @@ class SnakeGame:
165
191
  if self.cap is None or not self.cap.isOpened():
166
192
  self.open_window()
167
193
 
194
+ # ---------------- 游戏结束 ----------------
168
195
  def gameover(self, path=None, size=(100, 100)):
169
196
  if path is None:
170
- path = get_asset_path("1.png")
197
+ path = get_resource_path("1.png")
171
198
 
172
199
  if os.path.exists(path):
173
200
  gameover_img = cv2.imread(path)
@@ -194,6 +221,7 @@ class SnakeGame:
194
221
  cv2.destroyAllWindows()
195
222
  break
196
223
 
224
+ # ---------------- 游戏主循环 ----------------
197
225
  def start(self):
198
226
  if self.cap is None or not self.cap.isOpened():
199
227
  self.open_window()
@@ -222,7 +250,7 @@ class SnakeGame:
222
250
  cv2.imshow("AI Snake", img_copy)
223
251
 
224
252
  key = cv2.waitKey(1)
225
- if key == ord('r'):
253
+ if key == ord('r'): # 游戏中途重置
226
254
  self.reset_game()
227
255
  elif key == ord('q'):
228
256
  if self.cap is not None:
@@ -230,7 +258,7 @@ class SnakeGame:
230
258
  cv2.destroyAllWindows()
231
259
  break
232
260
 
233
- # ---------------- 内部类:蛇 ----------------
261
+ # ---------------- 内部类 ----------------
234
262
  class Snake:
235
263
  def __init__(self, color, initLength=150, lineWidth=10, headSize=15):
236
264
  self.points = []
@@ -309,7 +337,7 @@ class SnakeGame:
309
337
  if ox <= cx <= ox + ow and oy <= cy <= oy + oh:
310
338
  self.gameOver = True
311
339
 
312
- # ---------------- 内部类:食物 ----------------
340
+ # ---------------- 内部类 ----------------
313
341
  class FoodManager:
314
342
  def __init__(self, foodPaths, foodNames, foodScores):
315
343
  self.foodImages = []
@@ -349,7 +377,7 @@ class SnakeGame:
349
377
  (rx - self.wFood//2, ry - self.hFood//2))
350
378
  return imgMain
351
379
 
352
- # ---------------- 内部类:障碍 ----------------
380
+ # ---------------- 内部类 ----------------
353
381
  class ObstacleManager:
354
382
  def __init__(self, obstaclePaths):
355
383
  self.obstacleImages = []
@@ -365,8 +393,8 @@ class SnakeGame:
365
393
  self.obstacles.clear()
366
394
  for img in self.obstacleImages:
367
395
  h, w, _ = img.shape
368
- x = random.randint(150, 600)
369
- y = random.randint(50, 600)
396
+ x = random.randint(150, 570)
397
+ y = random.randint(50, 570)
370
398
  dx = random.choice([-5, 5])
371
399
  dy = random.choice([-5, 5])
372
400
  self.obstacles.append([x, y, w, h, dx, dy, img])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: XMWAI
3
- Version: 0.4.5
3
+ Version: 0.4.7
4
4
  Summary: Small code King AI related library
5
5
  Home-page: https://github.com/Tonykai88/XMWAI.git
6
6
  Author: pydevelopment
@@ -16,7 +16,6 @@ XMWAI.egg-info/dependency_links.txt
16
16
  XMWAI.egg-info/requires.txt
17
17
  XMWAI.egg-info/top_level.txt
18
18
  XMWAI/assets/1.png
19
- XMWAI/assets/__init__.py
20
19
  XMWAI/assets/g.png
21
20
  XMWAI/assets/h.png
22
21
  XMWAI/assets/l.png
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
3
3
 
4
4
  setup(
5
5
  name="XMWAI", # 包名(pip install XMWAI)
6
- version="0.4.5", # 每次上传记得升级版本号
6
+ version="0.4.7", # 每次上传记得升级版本号
7
7
  author="pydevelopment", # 作者
8
8
  author_email="hekai@xiaoma.cn", # 邮箱
9
9
  description="Small code King AI related library", # 简短描述
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes