dimples 1.2.0__tar.gz → 1.2.1__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.
Files changed (144) hide show
  1. {dimples-1.2.0 → dimples-1.2.1}/PKG-INFO +1 -1
  2. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/network/session.py +1 -0
  3. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/network/state.py +2 -1
  4. {dimples-1.2.0 → dimples-1.2.1}/dimples/conn/flexible.py +2 -1
  5. {dimples-1.2.0 → dimples-1.2.1}/dimples/conn/gatekeeper.py +4 -2
  6. {dimples-1.2.0 → dimples-1.2.1}/dimples/conn/ws.py +2 -1
  7. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/dispatcher.py +1 -1
  8. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/packer.py +3 -1
  9. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/push.py +1 -1
  10. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/session.py +4 -4
  11. {dimples-1.2.0 → dimples-1.2.1}/dimples/utils/__init__.py +2 -1
  12. {dimples-1.2.0 → dimples-1.2.1}/dimples/utils/cache.py +2 -2
  13. dimples-1.2.1/dimples/utils/runner.py +24 -0
  14. {dimples-1.2.0 → dimples-1.2.1}/dimples.egg-info/PKG-INFO +1 -1
  15. {dimples-1.2.0 → dimples-1.2.1}/dimples.egg-info/SOURCES.txt +2 -1
  16. {dimples-1.2.0 → dimples-1.2.1}/dimples.egg-info/requires.txt +3 -3
  17. {dimples-1.2.0 → dimples-1.2.1}/setup.py +4 -4
  18. {dimples-1.2.0 → dimples-1.2.1}/README.md +0 -0
  19. {dimples-1.2.0 → dimples-1.2.1}/dimples/__init__.py +0 -0
  20. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/__init__.py +0 -0
  21. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/archivist.py +0 -0
  22. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/checkpoint.py +0 -0
  23. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/cpu/__init__.py +0 -0
  24. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/cpu/commands.py +0 -0
  25. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/cpu/creator.py +0 -0
  26. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/cpu/group.py +0 -0
  27. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/cpu/grp_expel.py +0 -0
  28. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/cpu/grp_invite.py +0 -0
  29. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/cpu/grp_join.py +0 -0
  30. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/cpu/grp_query.py +0 -0
  31. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/cpu/grp_quit.py +0 -0
  32. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/cpu/grp_reset.py +0 -0
  33. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/cpu/grp_resign.py +0 -0
  34. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/cpu/handshake.py +0 -0
  35. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/facebook.py +0 -0
  36. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/messenger.py +0 -0
  37. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/network/__init__.py +0 -0
  38. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/network/transition.py +0 -0
  39. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/packer.py +0 -0
  40. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/processor.py +0 -0
  41. {dimples-1.2.0 → dimples-1.2.1}/dimples/client/terminal.py +0 -0
  42. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/__init__.py +0 -0
  43. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/anonymous.py +0 -0
  44. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/ans.py +0 -0
  45. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/archivist.py +0 -0
  46. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/compat/__init__.py +0 -0
  47. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/compat/btc.py +0 -0
  48. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/compat/compatible.py +0 -0
  49. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/compat/entity.py +0 -0
  50. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/compat/meta.py +0 -0
  51. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/compat/network.py +0 -0
  52. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/dbi/__init__.py +0 -0
  53. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/dbi/account.py +0 -0
  54. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/dbi/message.py +0 -0
  55. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/dbi/session.py +0 -0
  56. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/facebook.py +0 -0
  57. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/messenger.py +0 -0
  58. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/packer.py +0 -0
  59. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/processer.py +0 -0
  60. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/protocol/__init__.py +0 -0
  61. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/protocol/ans.py +0 -0
  62. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/protocol/block.py +0 -0
  63. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/protocol/handshake.py +0 -0
  64. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/protocol/login.py +0 -0
  65. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/protocol/mute.py +0 -0
  66. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/protocol/report.py +0 -0
  67. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/register.py +0 -0
  68. {dimples-1.2.0 → dimples-1.2.1}/dimples/common/session.py +0 -0
  69. {dimples-1.2.0 → dimples-1.2.1}/dimples/conn/__init__.py +0 -0
  70. {dimples-1.2.0 → dimples-1.2.1}/dimples/conn/gate.py +0 -0
  71. {dimples-1.2.0 → dimples-1.2.1}/dimples/conn/mars.py +0 -0
  72. {dimples-1.2.0 → dimples-1.2.1}/dimples/conn/mtp.py +0 -0
  73. {dimples-1.2.0 → dimples-1.2.1}/dimples/conn/protocol/__init__.py +0 -0
  74. {dimples-1.2.0 → dimples-1.2.1}/dimples/conn/protocol/mars.py +0 -0
  75. {dimples-1.2.0 → dimples-1.2.1}/dimples/conn/protocol/ws.py +0 -0
  76. {dimples-1.2.0 → dimples-1.2.1}/dimples/conn/queue.py +0 -0
  77. {dimples-1.2.0 → dimples-1.2.1}/dimples/conn/seeker.py +0 -0
  78. {dimples-1.2.0 → dimples-1.2.1}/dimples/conn/session.py +0 -0
  79. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/__init__.py +0 -0
  80. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/account.py +0 -0
  81. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/dos/__init__.py +0 -0
  82. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/dos/base.py +0 -0
  83. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/dos/document.py +0 -0
  84. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/dos/group.py +0 -0
  85. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/dos/group_history.py +0 -0
  86. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/dos/group_keys.py +0 -0
  87. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/dos/login.py +0 -0
  88. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/dos/meta.py +0 -0
  89. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/dos/private.py +0 -0
  90. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/dos/station.py +0 -0
  91. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/dos/user.py +0 -0
  92. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/message.py +0 -0
  93. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/session.py +0 -0
  94. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/t_cipherkey.py +0 -0
  95. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/t_document.py +0 -0
  96. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/t_group.py +0 -0
  97. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/t_group_history.py +0 -0
  98. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/t_group_keys.py +0 -0
  99. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/t_login.py +0 -0
  100. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/t_message.py +0 -0
  101. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/t_meta.py +0 -0
  102. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/t_private.py +0 -0
  103. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/t_station.py +0 -0
  104. {dimples-1.2.0 → dimples-1.2.1}/dimples/database/t_user.py +0 -0
  105. {dimples-1.2.0 → dimples-1.2.1}/dimples/edge/__init__.py +0 -0
  106. {dimples-1.2.0 → dimples-1.2.1}/dimples/edge/octopus.py +0 -0
  107. {dimples-1.2.0 → dimples-1.2.1}/dimples/edge/shared.py +0 -0
  108. {dimples-1.2.0 → dimples-1.2.1}/dimples/edge/start.py +0 -0
  109. {dimples-1.2.0 → dimples-1.2.1}/dimples/group/__init__.py +0 -0
  110. {dimples-1.2.0 → dimples-1.2.1}/dimples/group/admin.py +0 -0
  111. {dimples-1.2.0 → dimples-1.2.1}/dimples/group/builder.py +0 -0
  112. {dimples-1.2.0 → dimples-1.2.1}/dimples/group/delegate.py +0 -0
  113. {dimples-1.2.0 → dimples-1.2.1}/dimples/group/emitter.py +0 -0
  114. {dimples-1.2.0 → dimples-1.2.1}/dimples/group/helper.py +0 -0
  115. {dimples-1.2.0 → dimples-1.2.1}/dimples/group/manager.py +0 -0
  116. {dimples-1.2.0 → dimples-1.2.1}/dimples/group/packer.py +0 -0
  117. {dimples-1.2.0 → dimples-1.2.1}/dimples/register/__init__.py +0 -0
  118. {dimples-1.2.0 → dimples-1.2.1}/dimples/register/base.py +0 -0
  119. {dimples-1.2.0 → dimples-1.2.1}/dimples/register/ext.py +0 -0
  120. {dimples-1.2.0 → dimples-1.2.1}/dimples/register/run.py +0 -0
  121. {dimples-1.2.0 → dimples-1.2.1}/dimples/register/shared.py +0 -0
  122. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/__init__.py +0 -0
  123. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/archivist.py +0 -0
  124. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/cpu/__init__.py +0 -0
  125. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/cpu/ans.py +0 -0
  126. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/cpu/document.py +0 -0
  127. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/cpu/handshake.py +0 -0
  128. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/cpu/login.py +0 -0
  129. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/cpu/report.py +0 -0
  130. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/messenger.py +0 -0
  131. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/processor.py +0 -0
  132. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/session_center.py +0 -0
  133. {dimples-1.2.0 → dimples-1.2.1}/dimples/server/trace.py +0 -0
  134. {dimples-1.2.0 → dimples-1.2.1}/dimples/station/__init__.py +0 -0
  135. {dimples-1.2.0 → dimples-1.2.1}/dimples/station/handler.py +0 -0
  136. {dimples-1.2.0 → dimples-1.2.1}/dimples/station/shared.py +0 -0
  137. {dimples-1.2.0 → dimples-1.2.1}/dimples/station/start.py +0 -0
  138. {dimples-1.2.0 → dimples-1.2.1}/dimples/utils/config.py +0 -0
  139. {dimples-1.2.0 → dimples-1.2.1}/dimples/utils/dos.py +0 -0
  140. {dimples-1.2.0 → dimples-1.2.1}/dimples/utils/log.py +0 -0
  141. {dimples-1.2.0 → dimples-1.2.1}/dimples.egg-info/dependency_links.txt +0 -0
  142. {dimples-1.2.0 → dimples-1.2.1}/dimples.egg-info/entry_points.txt +0 -0
  143. {dimples-1.2.0 → dimples-1.2.1}/dimples.egg-info/top_level.txt +0 -0
  144. {dimples-1.2.0 → dimples-1.2.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dimples
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: DIMP Library for Edges and Stations
5
5
  Home-page: https://github.com/dimchat/demo-py
6
6
  Author: Albert Moky
@@ -118,6 +118,7 @@ class ClientSession(BaseSession):
118
118
  await fsm.start()
119
119
  # 3. start an async task for this session
120
120
  self.__daemon.start()
121
+ # await self.run()
121
122
 
122
123
  # Override
123
124
  async def stop(self):
@@ -97,7 +97,8 @@ class StateMachine(AutoMachine, Context):
97
97
  else:
98
98
  session = self.session
99
99
  gate = session.gate
100
- task = Runner.async_run(coroutine=gate.fetch_docker([], remote=session.remote_address, local=None))
100
+ coro = gate.fetch_docker([], remote=session.remote_address, local=None)
101
+ task = Runner.async_task(coro=coro)
101
102
  task.add_done_callback(self._fetch_docker_callback)
102
103
  # waiting for callback
103
104
  return DockerStatus.ERROR
@@ -65,7 +65,8 @@ class FlexibleDocker(StarDocker, DeparturePacker):
65
65
  return None
66
66
  # OK
67
67
  docker.delegate = self.delegate
68
- Runner.async_run(coroutine=docker.set_connection(conn=self.connection))
68
+ coro = docker.set_connection(conn=self.connection)
69
+ Runner.async_task(coro=coro)
69
70
  self.__docker = docker
70
71
  return docker
71
72
 
@@ -182,7 +182,8 @@ class GateKeeper(Runner, DockerDelegate, Logging):
182
182
  # client
183
183
  assert address is not None, 'remote address empty'
184
184
  hub = StreamClientHub(delegate=delegate)
185
- Runner.async_run(coroutine=_client_connect(hub=hub, address=address))
185
+ coro = _client_connect(hub=hub, address=address)
186
+ Runner.async_task(coro=coro)
186
187
  self.info(msg='client hub created: %s' % str(address))
187
188
  else:
188
189
  # server
@@ -191,7 +192,8 @@ class GateKeeper(Runner, DockerDelegate, Logging):
191
192
  if address is None:
192
193
  address = get_remote_address(sock=sock)
193
194
  channel = StreamChannel(remote=address, local=get_local_address(sock=sock))
194
- Runner.async_run(coroutine=channel.set_socket(sock=sock))
195
+ coro = channel.set_socket(sock=sock)
196
+ Runner.async_task(coro=coro)
195
197
  hub = StreamServerHub(delegate=delegate)
196
198
  hub.put_channel(channel=channel)
197
199
  return hub
@@ -164,7 +164,8 @@ class WSDocker(PlainDocker, DeparturePacker):
164
164
  res = WebSocket.handshake(stream=data)
165
165
  if res is not None:
166
166
  ship = WSDeparture(package=res, payload=b'')
167
- Runner.async_run(coroutine=self.send_ship(ship=ship))
167
+ coro = self.send_ship(ship=ship)
168
+ Runner.async_task(coro=coro)
168
169
  self.__handshaking = False
169
170
  elif len(data) < self.MAX_PACK_LENGTH:
170
171
  # waiting for more data
@@ -133,7 +133,7 @@ class Dispatcher(MessageDeliver, Logging):
133
133
  assert db is not None, 'dispatcher not initialized'
134
134
  runner = Roamer(database=db)
135
135
  self.__roamer = runner
136
- # Runner.async_run(coroutine=runner.start())
136
+ # Runner.async_task(coro=runner.start())
137
137
  Runner.thread_run(runner=runner)
138
138
  return runner
139
139
 
@@ -143,6 +143,8 @@ class MuteFilter(Logging):
143
143
  """ Filter for Push Notification service """
144
144
 
145
145
  async def is_muted(self, msg: ReliableMessage) -> bool:
146
+ if msg.get_bool(key='muted', default=False):
147
+ return True
146
148
  sender = msg.sender
147
149
  receiver = msg.receiver
148
150
  group = msg.group
@@ -152,7 +154,7 @@ class MuteFilter(Logging):
152
154
  return True
153
155
  elif sender.type == EntityType.BOT:
154
156
  # mute group message from bot
155
- return group is not None or receiver.is_group
157
+ return receiver.is_group or group is not None or 'GF' in msg
156
158
  elif receiver.type == EntityType.BOT:
157
159
  # mute all messages to bots
158
160
  return True
@@ -124,7 +124,7 @@ class PushCenter(Runner, Logging):
124
124
  self.__queue = MessageQueue()
125
125
  self.__keeper = BadgeKeeper()
126
126
  self.__service: Optional[PushService] = None
127
- # Runner.async_run(coroutine=self.start())
127
+ # Runner.async_task(coro=self.start())
128
128
  Runner.thread_run(runner=self)
129
129
 
130
130
  @property
@@ -95,8 +95,8 @@ class ServerSession(BaseSession):
95
95
  if super().set_identifier(identifier=identifier):
96
96
  session_change_id(session=self, new_id=identifier, old_id=old)
97
97
  # load cached message asynchronously
98
- crt = load_cached_messages(session=self)
99
- Runner.async_run(coroutine=crt)
98
+ coro = load_cached_messages(session=self)
99
+ Runner.async_task(coro=coro)
100
100
  return True
101
101
 
102
102
  # Override
@@ -104,8 +104,8 @@ class ServerSession(BaseSession):
104
104
  if super().set_active(active=active, when=when):
105
105
  session_change_active(session=self, active=active)
106
106
  # load cached message asynchronously
107
- crt = load_cached_messages(session=self)
108
- Runner.async_run(coroutine=crt)
107
+ coro = load_cached_messages(session=self)
108
+ Runner.async_task(coro=coro)
109
109
  return True
110
110
 
111
111
  #
@@ -51,10 +51,11 @@ from dimsdk import DocumentHelper
51
51
  from dimplugins.crypto.aes import random_bytes
52
52
 
53
53
  from startrek.skywalker import Singleton
54
- from startrek.skywalker import Runnable, Runner, Daemon
54
+ from startrek.skywalker import Runnable, Daemon
55
55
  from startrek.fsm import Delegate as StateDelegate
56
56
  from startrek.net.socket import get_remote_address, get_local_address
57
57
 
58
+ from .runner import PatchRunner as Runner
58
59
  from .log import Log, Logging
59
60
  from .dos import Path, File, TextFile, JSONFile
60
61
  from .cache import CachePool, CacheHolder, CacheManager
@@ -32,9 +32,9 @@
32
32
  from typing import TypeVar, Generic, Optional, Dict, Set, Tuple
33
33
 
34
34
  from startrek.skywalker import Singleton
35
- from startrek.skywalker import Runner
36
35
  from dimsdk import DateTime
37
36
 
37
+ from .runner import PatchRunner as Runner
38
38
  from .log import Logging
39
39
 
40
40
 
@@ -141,7 +141,7 @@ class CacheManager(Runner, Logging):
141
141
  super().__init__(interval=2.0)
142
142
  self.__pools: Dict[str, CachePool] = {} # name -> pool
143
143
  self.__next_time = DateTime.now()
144
- # Runner.async_run(coroutine=self.start())
144
+ # Runner.async_task(coro=self.start())
145
145
  Runner.thread_run(runner=self)
146
146
 
147
147
  # Override
@@ -0,0 +1,24 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ from threading import Thread
4
+
5
+ from startrek.skywalker import Runner
6
+
7
+
8
+ # noinspection PyAbstractClass
9
+ class PatchRunner(Runner):
10
+
11
+ @classmethod
12
+ def thread_run(cls, runner: Runner) -> Thread:
13
+ thr = Runner.async_thread(coro=_bg_runner(runner=runner))
14
+ thr.start()
15
+ return thr
16
+
17
+
18
+ async def _bg_runner(runner: Runner):
19
+ await runner.start()
20
+ await runner.run()
21
+
22
+
23
+ # Patch for Runner
24
+ Runner.thread_run = PatchRunner.thread_run
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dimples
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: DIMP Library for Edges and Stations
5
5
  Home-page: https://github.com/dimchat/demo-py
6
6
  Author: Albert Moky
@@ -138,4 +138,5 @@ dimples/utils/__init__.py
138
138
  dimples/utils/cache.py
139
139
  dimples/utils/config.py
140
140
  dimples/utils/dos.py
141
- dimples/utils/log.py
141
+ dimples/utils/log.py
142
+ dimples/utils/runner.py
@@ -3,6 +3,6 @@ dimsdk>=2.0.0
3
3
  dimp>=2.0.0
4
4
  dkd>=2.0.0
5
5
  mkm>=2.0.0
6
- startrek>=2.1.0
7
- tcp>=2.1.0
8
- udp>=2.1.0
6
+ startrek>=2.1.1
7
+ tcp>=2.1.1
8
+ udp>=2.1.1
@@ -14,7 +14,7 @@ import io
14
14
 
15
15
  from setuptools import setup, find_packages
16
16
 
17
- __version__ = '1.2.0'
17
+ __version__ = '1.2.1'
18
18
  __author__ = 'Albert Moky'
19
19
  __contact__ = 'albert.moky@gmail.com'
20
20
 
@@ -58,8 +58,8 @@ setup(
58
58
  'dkd>=2.0.0',
59
59
  'mkm>=2.0.0',
60
60
 
61
- 'startrek>=2.1.0',
62
- 'tcp>=2.1.0',
63
- 'udp>=2.1.0',
61
+ 'startrek>=2.1.1',
62
+ 'tcp>=2.1.1',
63
+ 'udp>=2.1.1',
64
64
  ]
65
65
  )
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