bumble 0.0.218__py3-none-any.whl → 0.0.220__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.
bumble/rfcomm.py CHANGED
@@ -674,10 +674,14 @@ class DLC(utils.EventEmitter):
674
674
  while (self.tx_buffer and self.tx_credits > 0) or rx_credits_needed > 0:
675
675
  # Get the next chunk, up to MTU size
676
676
  if rx_credits_needed > 0:
677
- chunk = bytes([rx_credits_needed]) + self.tx_buffer[: self.mtu - 1]
678
- self.tx_buffer = self.tx_buffer[len(chunk) - 1 :]
677
+ chunk = bytes([rx_credits_needed])
679
678
  self.rx_credits += rx_credits_needed
680
- tx_credit_spent = len(chunk) > 1
679
+ if self.tx_buffer and self.tx_credits > 0:
680
+ chunk += self.tx_buffer[: self.mtu - 1]
681
+ self.tx_buffer = self.tx_buffer[len(chunk) - 1 :]
682
+ tx_credit_spent = True
683
+ else:
684
+ tx_credit_spent = False
681
685
  else:
682
686
  chunk = self.tx_buffer[: self.mtu]
683
687
  self.tx_buffer = self.tx_buffer[len(chunk) :]
bumble/snoop.py CHANGED
@@ -65,7 +65,7 @@ class BtSnooper(Snooper):
65
65
  """
66
66
 
67
67
  IDENTIFICATION_PATTERN = b'btsnoop\0'
68
- TIMESTAMP_ANCHOR = datetime.datetime(2000, 1, 1)
68
+ TIMESTAMP_ANCHOR = datetime.datetime(2000, 1, 1, tzinfo=datetime.timezone.utc)
69
69
  TIMESTAMP_DELTA = 0x00E03AB44A676000
70
70
  ONE_MS = datetime.timedelta(microseconds=1)
71
71
 
@@ -85,7 +85,13 @@ class BtSnooper(Snooper):
85
85
 
86
86
  # Compute the current timestamp
87
87
  timestamp = (
88
- int((datetime.datetime.utcnow() - self.TIMESTAMP_ANCHOR) / self.ONE_MS)
88
+ int(
89
+ (
90
+ datetime.datetime.now(tz=datetime.timezone.utc)
91
+ - self.TIMESTAMP_ANCHOR
92
+ )
93
+ / self.ONE_MS
94
+ )
89
95
  + self.TIMESTAMP_DELTA
90
96
  )
91
97
 
@@ -129,7 +135,7 @@ def create_snooper(spec: str) -> Generator[Snooper, None, None]:
129
135
  records will be written to that file if it can be opened/created.
130
136
  The keyword args that may be referenced by the string pattern are:
131
137
  now: the value of `datetime.now()`
132
- utcnow: the value of `datetime.utcnow()`
138
+ utcnow: the value of `datetime.now(tz=datetime.timezone.utc)`
133
139
  pid: the current process ID.
134
140
  instance: the instance ID in the current process.
135
141
 
@@ -153,7 +159,7 @@ def create_snooper(spec: str) -> Generator[Snooper, None, None]:
153
159
  global _SNOOPER_INSTANCE_COUNT
154
160
  file_path = io_name.format(
155
161
  now=datetime.datetime.now(),
156
- utcnow=datetime.datetime.utcnow(),
162
+ utcnow=datetime.datetime.now(tz=datetime.timezone.utc),
157
163
  pid=os.getpid(),
158
164
  instance=_SNOOPER_INSTANCE_COUNT,
159
165
  )
@@ -22,6 +22,7 @@ import contextlib
22
22
  import io
23
23
  import logging
24
24
  import struct
25
+ from collections.abc import Awaitable, Callable
25
26
  from typing import Any, ContextManager, Optional, Protocol
26
27
 
27
28
  from bumble import core, hci
@@ -389,15 +390,17 @@ class PumpedPacketSource(ParserSource):
389
390
 
390
391
  # -----------------------------------------------------------------------------
391
392
  class PumpedPacketSink:
392
- def __init__(self, send):
393
+ pump_task: Optional[asyncio.Task[None]]
394
+
395
+ def __init__(self, send: Callable[[bytes], Awaitable[Any]]):
393
396
  self.send_function = send
394
- self.packet_queue = asyncio.Queue()
397
+ self.packet_queue = asyncio.Queue[bytes]()
395
398
  self.pump_task = None
396
399
 
397
400
  def on_packet(self, packet: bytes) -> None:
398
401
  self.packet_queue.put_nowait(packet)
399
402
 
400
- def start(self):
403
+ def start(self) -> None:
401
404
  async def pump_packets():
402
405
  while True:
403
406
  try:
@@ -17,7 +17,7 @@
17
17
  # -----------------------------------------------------------------------------
18
18
  import logging
19
19
 
20
- import websockets.client
20
+ import websockets.asyncio.client
21
21
 
22
22
  from bumble.transport.common import (
23
23
  PumpedPacketSink,
@@ -42,7 +42,7 @@ async def open_ws_client_transport(spec: str) -> Transport:
42
42
  Example: ws://localhost:7681/v1/websocket/bt
43
43
  '''
44
44
 
45
- websocket = await websockets.client.connect(spec)
45
+ websocket = await websockets.asyncio.client.connect(spec)
46
46
 
47
47
  class WsTransport(PumpedTransport):
48
48
  async def close(self):
@@ -16,8 +16,9 @@
16
16
  # Imports
17
17
  # -----------------------------------------------------------------------------
18
18
  import logging
19
+ from typing import Optional
19
20
 
20
- import websockets
21
+ import websockets.asyncio.server
21
22
 
22
23
  from bumble.transport.common import ParserSource, PumpedPacketSink, Transport
23
24
 
@@ -40,7 +41,12 @@ async def open_ws_server_transport(spec: str) -> Transport:
40
41
  '''
41
42
 
42
43
  class WsServerTransport(Transport):
43
- def __init__(self):
44
+ sink: PumpedPacketSink
45
+ source: ParserSource
46
+ connection: Optional[websockets.asyncio.server.ServerConnection]
47
+ server: Optional[websockets.asyncio.server.Server]
48
+
49
+ def __init__(self) -> None:
44
50
  source = ParserSource()
45
51
  sink = PumpedPacketSink(self.send_packet)
46
52
  self.connection = None
@@ -48,17 +54,19 @@ async def open_ws_server_transport(spec: str) -> Transport:
48
54
 
49
55
  super().__init__(source, sink)
50
56
 
51
- async def serve(self, local_host, local_port):
57
+ async def serve(self, local_host: str, local_port: str) -> None:
52
58
  self.sink.start()
53
59
  # pylint: disable-next=no-member
54
- self.server = await websockets.serve(
55
- ws_handler=self.on_connection,
60
+ self.server = await websockets.asyncio.server.serve(
61
+ handler=self.on_connection,
56
62
  host=local_host if local_host != '_' else None,
57
63
  port=int(local_port),
58
64
  )
59
65
  logger.debug(f'websocket server ready on port {local_port}')
60
66
 
61
- async def on_connection(self, connection):
67
+ async def on_connection(
68
+ self, connection: websockets.asyncio.server.ServerConnection
69
+ ) -> None:
62
70
  logger.debug(
63
71
  f'new connection on {connection.local_address} '
64
72
  f'from {connection.remote_address}'
@@ -77,11 +85,11 @@ async def open_ws_server_transport(spec: str) -> Transport:
77
85
  # We're now disconnected
78
86
  self.connection = None
79
87
 
80
- async def send_packet(self, packet):
88
+ async def send_packet(self, packet: bytes) -> None:
81
89
  if self.connection is None:
82
90
  logger.debug('no connection, dropping packet')
83
91
  return
84
- return await self.connection.send(packet)
92
+ await self.connection.send(packet)
85
93
 
86
94
  local_host, local_port = spec.rsplit(':', maxsplit=1)
87
95
  transport = WsServerTransport()
bumble/utils.py CHANGED
@@ -241,11 +241,7 @@ def cancel_on_event(
241
241
  return
242
242
  msg = f'abort: {event} event occurred.'
243
243
  if isinstance(future, asyncio.Task):
244
- # python < 3.9 does not support passing a message on `Task.cancel`
245
- if sys.version_info < (3, 9, 0):
246
- future.cancel()
247
- else:
248
- future.cancel(msg)
244
+ future.cancel(msg)
249
245
  else:
250
246
  future.set_exception(asyncio.CancelledError(msg))
251
247
 
@@ -1,11 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bumble
3
- Version: 0.0.218
3
+ Version: 0.0.220
4
4
  Summary: Bluetooth Stack for Apps, Emulation, Test and Experimentation
5
5
  Author-email: Google <bumble-dev@google.com>
6
6
  License-Expression: Apache-2.0
7
7
  Project-URL: Homepage, https://github.com/google/bumble
8
- Requires-Python: >=3.9
8
+ Requires-Python: >=3.10
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
11
  Requires-Dist: aiohttp~=3.8; platform_system != "Emscripten"
@@ -25,7 +25,7 @@ Requires-Dist: pyee>=13.0.0
25
25
  Requires-Dist: pyserial-asyncio>=0.5; platform_system != "Emscripten"
26
26
  Requires-Dist: pyserial>=3.5; platform_system != "Emscripten"
27
27
  Requires-Dist: pyusb>=1.2; platform_system != "Emscripten"
28
- Requires-Dist: websockets==13.1; platform_system != "Emscripten"
28
+ Requires-Dist: websockets>=15.0.1; platform_system != "Emscripten"
29
29
  Provides-Extra: build
30
30
  Requires-Dist: build>=0.7; extra == "build"
31
31
  Provides-Extra: test
@@ -1,46 +1,47 @@
1
1
  bumble/__init__.py,sha256=Q8jkz6rgl95IMAeInQVt_2GLoJl3DcEP2cxtrQ-ho5c,110
2
- bumble/_version.py,sha256=KD7H3kk26v8iwTiruZ8RXdlJzmt24QL0S_7OS-mLIks,708
3
- bumble/a2dp.py,sha256=sVo3w6qSsGm7Ttsqu4zeTO_Gfo63a7STTlJnaq8iJ-M,32031
2
+ bumble/_version.py,sha256=LkZdU1Of57ZTevevPEHb3wEaCZ1DbUnWvSGcvTBz7sI,708
3
+ bumble/a2dp.py,sha256=wvmQwVkSCFsoJv1Q1VGA17ncMnif-o5Bc-NQjgpsDbI,33454
4
4
  bumble/at.py,sha256=u93DzB5Ghrxks_ufuUqoYV2RUSowLNLMDhq_j9GrCBc,3108
5
5
  bumble/att.py,sha256=vS1dUwiuUgNU6PztARg_qPB_olLOWsAxFz6DZGX8zII,33423
6
6
  bumble/avc.py,sha256=uu33BpDU58f4fvqZyBHKfc8OSnzYovQrBk8Yst-KVrk,16383
7
- bumble/avctp.py,sha256=HtIxBtQMmaeg0Jv8oCf0Fc1vXP7gjHrQa-liR0aq5HM,9911
8
- bumble/avdtp.py,sha256=Ad-9sjZ336aDMu-LTZ17Tz7MEqcm8Cq98QVxduEDR5A,79521
9
- bumble/avrcp.py,sha256=9RnTsx_CEI0Omv2bIyhdVXH6fLg-xYtqNpp9ExHL84E,86866
7
+ bumble/avctp.py,sha256=E6JorAlrsW0hAS2y7q-DhMYY2aEAjVXMF-8FivbMN6w,9709
8
+ bumble/avdtp.py,sha256=XvCCAChz5FK5geF_KJrEjkct7QHC9GC8WAmh8GjCZPE,78498
9
+ bumble/avrcp.py,sha256=PFQ8t7Tiv3j_OV7qfVaFe0Mcn9gzhoo969AcMoVGg88,87357
10
10
  bumble/bridge.py,sha256=yXwZNUe7pRpuTt41PEmgtfjBLpQKdDwvcxfbYxObqIU,3015
11
11
  bumble/codecs.py,sha256=ZHUFvq2dhUUHp2EWYawht8zcPQGqOf5Opnh-7Ud_fb4,20917
12
12
  bumble/colors.py,sha256=gm_PqgGfUF8Nkntn652apR4HrqN3vLv249YCIfw8mtk,3112
13
13
  bumble/company_ids.py,sha256=B68e2QPsDeRYP9jjbGs4GGDwEkGxcXGTsON_CHA0uuI,118528
14
- bumble/controller.py,sha256=oIo6_3Y2_lhMPn0MUfEEN8997ry1blzT2rTUQabQwv8,68282
14
+ bumble/controller.py,sha256=BzgL5o_5TXcOSJShtGD9Lqn7v0yADX9OE6vyBh_GGo4,87918
15
15
  bumble/core.py,sha256=QojIUs4nP9qo_r-FWPVxHrCdVSg6CaIzHf6GVPTuu9s,94583
16
16
  bumble/data_types.py,sha256=jLELcRiUcvRc4JcEo6vMO9kZmumZ9WuibFN-AK7ZYbc,32831
17
17
  bumble/decoder.py,sha256=0-VNWZT-u7lvK3qBpAuYT0M6Rz_bMgMi4CjfUXX_6RM,9728
18
- bumble/device.py,sha256=lOO8MjKQ0hJ9BTgWtMA10zllGl2uHtbueGeQvn5JZ2k,251450
18
+ bumble/device.py,sha256=SU4kXdmtZ0fTJD8ZAsv5ZKdd11S6Z6wlUxsXx820MEc,248480
19
19
  bumble/gap.py,sha256=j5mevt__i_fSdIc_B3x7YvCJLeCc7bVq8omRphxwXNw,2144
20
20
  bumble/gatt.py,sha256=dBd-opQVUumlLPGw7EYZM5DF-ssnym3LsxhskAJMhig,34552
21
21
  bumble/gatt_adapters.py,sha256=9uN2uXGIdlvNeSvv3nfwxCEa15uPfm5DVLR5bog_knI,13190
22
22
  bumble/gatt_client.py,sha256=jLIa7OoJgw8X7pLBGqsdSY3Sde4HSWBxGWTVWH0FPpA,44268
23
23
  bumble/gatt_server.py,sha256=Xx5UaXoNeEIcXfe1YjGrf4Mt7ZKEUak7e3dhFtdK-4Y,37907
24
- bumble/hci.py,sha256=2yEJnR6JBtxK6ghituuXCbSalifevnTqvPvnCjyrtAo,327200
24
+ bumble/hci.py,sha256=9ZN9koktUhmSJAWfPCRqaXAbECmDwEpa73lWrWizL_o,328355
25
25
  bumble/helpers.py,sha256=WFyikseIRdXUqqeOplNlmd0giOegahlXv5e324ax9ck,12611
26
26
  bumble/hfp.py,sha256=rUfd1OvNnr9FbURRjeNvLA4CcMzv3NcowVxbG4s2FXM,76746
27
- bumble/hid.py,sha256=UCPGHw-jm4i4Akk9pXVEL8_i6EdOwaOuqv2Xd_8EhXo,21054
27
+ bumble/hid.py,sha256=KMSd2_minM8F4GJUSaeYubGVvDns2BEFDhYH9f8jVdk,21056
28
28
  bumble/host.py,sha256=46fwcskNlfHyW8Ejo5wp8rHtMBZSMkR4URSdekKLPzg,68019
29
29
  bumble/keys.py,sha256=VCOrtuw-xF_4Oa5Qt-ECRKaTqabL_GbwdQUKoZX20II,13416
30
30
  bumble/l2cap.py,sha256=PZQnZQFB_GJZCCFuPpAsTuYz4E3WTgimDUAk83DUUtE,80758
31
- bumble/link.py,sha256=O-T9fCJokvpLpTvIMAboEQbT3Sjg8L2ivSWSBH43fP0,14470
31
+ bumble/link.py,sha256=McpiZ2Wk2fssO9Plcw27D3SkvdpoqcvkKYb5ZeolvWs,10516
32
+ bumble/lmp.py,sha256=9TsV8W1lbudCEytzhWg0N492xFbNEWy1-a3VuF1US-k,10433
32
33
  bumble/logging.py,sha256=WvB9v6HxsnmN6DaG-oIcE7DbFcE-jT8YN3T0PGbWbD8,2351
33
34
  bumble/pairing.py,sha256=KPkJs4NgFmubdE3OhqP0uaGMm8aAg8RkHDCfAYrhTwo,10142
34
35
  bumble/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
- bumble/rfcomm.py,sha256=Fkhv5CEBCMsrQtrMxRJ-21H9k85R-kLiTeXkN_Gv7wE,40917
36
+ bumble/rfcomm.py,sha256=kE3KbtLdcZhUUBcp2Xxu_G1XhU6eOciiJDfYWAOznlU,41067
36
37
  bumble/rtp.py,sha256=wyAQJ3dRU31USfZT5DgpvC_TSVYU1QPDSg_uK9-i8V4,3464
37
38
  bumble/sdp.py,sha256=PfKjPm_mDO9ZvR74zAFTcazf3MJBo0Ew0LVJMscPohA,49546
38
39
  bumble/smp.py,sha256=YhTgEngwb7JmhXugmc3VTmm_lY5RRIg_cFgk5QuywmU,78597
39
- bumble/snoop.py,sha256=xgM8rUZVgfEYx6ChXsLrzlfMrLiRtjmY27fl1vKzi1w,5715
40
- bumble/utils.py,sha256=jc56Q8NuQfPJgoZdtZPqNVBnzDd5w54IjmWk0Lbmxf0,16658
40
+ bumble/snoop.py,sha256=ZHSq4r4NRhpjfMLPojO7vcb2KJYyy7vJvKdhB84vSkk,5912
41
+ bumble/utils.py,sha256=7V4NMtAjYFCu-9cPvI503flWndgYlcB6J5T6VstojGA,16480
41
42
  bumble/apps/README.md,sha256=gY24s9zrX6yjVcaSfC1w-DQ4y-HCGXskS66nda0479k,1653
42
43
  bumble/apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
- bumble/apps/auracast.py,sha256=rZrFTnS01g74i-VF1YtXiUrUXEAzzvcxS7LBVW-CFiw,44072
44
+ bumble/apps/auracast.py,sha256=UM5BGPs5Q5cJXD-rXq6S-jiKT6nYFLUXlLNOOSFZDZ8,43952
44
45
  bumble/apps/bench.py,sha256=4PZeCBHWE3V_st1sJByYxWwulJTc6T4fpXDEckkD_d4,76713
45
46
  bumble/apps/ble_rpa_tool.py,sha256=Ypc6_KC3yo31Kx3rUJeWTMAqbtgfYeot8WS8qyYpiiM,1702
46
47
  bumble/apps/console.py,sha256=OtVSzl6_aU3Lq2DiYzYlrrtbHZVHOkqwQFKYDUSuYkY,45430
@@ -69,14 +70,14 @@ bumble/apps/speaker/speaker.html,sha256=e1VD96pwiDwcaxVERvc4BPLwH1948BIcqPGmnWNH
69
70
  bumble/apps/speaker/speaker.js,sha256=nom2zHJJ7lVFU_7TD1LS7Gl1PXAPztdUF9zMCgZvfVI,11245
70
71
  bumble/apps/speaker/speaker.py,sha256=2SGXr3igSumK9v1H6wsrd2JMbIPjaFe39UEeoMnhy9U,27656
71
72
  bumble/audio/__init__.py,sha256=tc75ofvV52qED31kB_LYRVLNrxtbZqnOWO8lHsZK3Ww,747
72
- bumble/audio/io.py,sha256=OVwQfav8V6zwlI-DRHTCSXEYxBRJZCoQxfirnJI0kgE,17764
73
+ bumble/audio/io.py,sha256=RHmDf4GoqImLpvp5sVyPiBp_LwgL60DISwxxuDiXaXs,17778
73
74
  bumble/crypto/__init__.py,sha256=n1V7wJp3-YOPl_GzM4zmjpYS8PI2J9xigtY81KMOiDY,6565
74
75
  bumble/crypto/builtin.py,sha256=JNUHJIaUx3ylBDCpMjaaDYPl-K3eCdD3iCl_2AWLn8Q,60901
75
76
  bumble/crypto/cryptography.py,sha256=yHznoBZ-hd8XqWheipkgn3Vdt5JydLxlTM3nTp5ayvc,2696
76
77
  bumble/drivers/__init__.py,sha256=03lZKWOvRi2qd_iogohvtTc76vpn89c5jvhbaNzxlSM,3505
77
78
  bumble/drivers/common.py,sha256=pS783hudolLZAzF8IUWp7g6TXyQsUCEzqCsd1VGeYfQ,1507
78
79
  bumble/drivers/intel.py,sha256=2LmZL4ka1qz90WZGnrEzALd2mj7AcG_06rV03cnKKgY,24624
79
- bumble/drivers/rtk.py,sha256=tCY2nW-tn_UnYJ_0o9XkJHaiyvSEnt-zA7GI2IIDoNg,22646
80
+ bumble/drivers/rtk.py,sha256=tkLXqjhlEdp934alr5SlV00zc2B1UfKpzZpL22Hj8Lg,22690
80
81
  bumble/pandora/__init__.py,sha256=xlEwye5eIwHMDHS-qPT2weF0TT86fEUIHYCUvW6LGpc,3535
81
82
  bumble/pandora/config.py,sha256=wfmko9UDEZWeRC4fccUdJnHn9D2Bus15R-Tqn2bLoAY,2384
82
83
  bumble/pandora/device.py,sha256=U5dmH-eg61egL5sm9dlmQ5f6ZM7xxCNyQXCcMo3eScE,5333
@@ -119,7 +120,7 @@ bumble/tools/rtk_util.py,sha256=4kdaHON_pg2HElzBRaStolqvEJVWPd0eZPUyAQWAqxc,5726
119
120
  bumble/transport/__init__.py,sha256=1z6WcJ0kkqSK1iugl3hYamJe54FdB8fmNI4M8M-zNx8,7376
120
121
  bumble/transport/android_emulator.py,sha256=axEdFBj17c0dOD5lMqJjiULInG_SQVx5W7ptjyLtRJs,4281
121
122
  bumble/transport/android_netsim.py,sha256=8C2kUITCl7L1ggl5FPwWcFq4It8e9O3esEpMjRaYkkw,17563
122
- bumble/transport/common.py,sha256=C0wurvCvcEX4r6F0cWbD2x1GhamJwJoyYmYJ21pU04Q,16770
123
+ bumble/transport/common.py,sha256=yCJKUiLFEJ1qtepV1gU6hLkStHY0guKrZUNDoCS8sck,16913
123
124
  bumble/transport/file.py,sha256=aqJD5US5TVl01dOb42rV_0OzuvFsBDDlqzipyrYA4q4,2026
124
125
  bumble/transport/hci_socket.py,sha256=2PKQ43oDjayKDklx9sF98hSeyNmvTSUOWx_ooPWTjd0,6345
125
126
  bumble/transport/pty.py,sha256=yzItc5ZO7WkHZKnAeEK-1XEyY4BWot4ZAMFzQvRiSQ4,2747
@@ -132,8 +133,8 @@ bumble/transport/udp.py,sha256=_3mePVr9ALzZbOfnlMwcaaMnnLkd5kxhw5-BxkeCSMU,2281
132
133
  bumble/transport/unix.py,sha256=XbVakfqQiZVdAQnt05XWb4PymzkXIL7h0dn7Iq6xwlk,4240
133
134
  bumble/transport/usb.py,sha256=9np33CTM1Sj4mQsym8TqIZ-DN28suCC8gJfy1O-hHPA,22113
134
135
  bumble/transport/vhci.py,sha256=-S9M6iqSpdmNobliDBaUamWJtYTiQEMt_mSdfxKZypY,2281
135
- bumble/transport/ws_client.py,sha256=zq7kdg9KNYMC86vtD0oamHpDINXKoDzGrnehp8-6X0Y,1795
136
- bumble/transport/ws_server.py,sha256=huCChKKXsw2wq5n1F68O_5_8xmRKC7Xpuj1TGsL1f48,3358
136
+ bumble/transport/ws_client.py,sha256=qgPUpfnp1i5DxeilhJbKXwceVeNowXCVL05TyaBtiL0,1811
137
+ bumble/transport/ws_server.py,sha256=ttVIGfcd7Rqlo4JM8tIeJAeLGKV96vciv58fVjQCYC8,3714
137
138
  bumble/transport/grpc_protobuf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
139
  bumble/transport/grpc_protobuf/emulated_bluetooth_device_pb2.py,sha256=NFz7pja_rxMEyU3fI-SgHLghTw4KeN1gXUjT4uglrEQ,7959
139
140
  bumble/transport/grpc_protobuf/emulated_bluetooth_device_pb2.pyi,sha256=O0qhb2L_oAekmSnqCElidwIg4PZ3XjAyQ4oEy4ycD-A,8385
@@ -175,9 +176,9 @@ bumble/vendor/android/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
175
176
  bumble/vendor/android/hci.py,sha256=LcV4_OBpzoLtpSiP2su7F4r3bDrHWxcQPR4OGnMVXDk,10485
176
177
  bumble/vendor/zephyr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
178
  bumble/vendor/zephyr/hci.py,sha256=ysct40uIVohaKKLrWjcWo-7YqozU17xGia2dWeHoMoI,3435
178
- bumble-0.0.218.dist-info/licenses/LICENSE,sha256=FvaYh4NRWIGgS_OwoBs5gFgkCmAghZ-DYnIGBZPuw-s,12142
179
- bumble-0.0.218.dist-info/METADATA,sha256=EdHBIsGq3Uaq02oNiTArIIVLe5BkYbWmCX34jclv5Qo,6154
180
- bumble-0.0.218.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
181
- bumble-0.0.218.dist-info/entry_points.txt,sha256=mX5dzixNMRo4CTAEQqiYTr-JIaWF62TYrRvJOstjjL8,1081
182
- bumble-0.0.218.dist-info/top_level.txt,sha256=tV6JJKaHPYMFiJYiBYFW24PCcfLxTJZdlu6BmH3Cb00,7
183
- bumble-0.0.218.dist-info/RECORD,,
179
+ bumble-0.0.220.dist-info/licenses/LICENSE,sha256=FvaYh4NRWIGgS_OwoBs5gFgkCmAghZ-DYnIGBZPuw-s,12142
180
+ bumble-0.0.220.dist-info/METADATA,sha256=hHYv58aAzscV6kj0CR1totVeNRmjn2W4r_P-l5tLSuo,6157
181
+ bumble-0.0.220.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
182
+ bumble-0.0.220.dist-info/entry_points.txt,sha256=mX5dzixNMRo4CTAEQqiYTr-JIaWF62TYrRvJOstjjL8,1081
183
+ bumble-0.0.220.dist-info/top_level.txt,sha256=tV6JJKaHPYMFiJYiBYFW24PCcfLxTJZdlu6BmH3Cb00,7
184
+ bumble-0.0.220.dist-info/RECORD,,