outleap 0.7.1__py3-none-any.whl → 0.7.3__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.
outleap/api_wrappers.py CHANGED
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import abc
4
+ import asyncio
4
5
  import pathlib
5
6
  import uuid
6
7
  from typing import *
@@ -224,7 +225,7 @@ class LLWindowAPI(LEAPAPIWrapper):
224
225
  payload = self._build_mouse_payload(x=x, y=y, path=path, mask=mask, button=button)
225
226
  return self._client.command(self._pump_name, "mouseUp", payload)
226
227
 
227
- def mouse_click(
228
+ async def mouse_click(
228
229
  self,
229
230
  /,
230
231
  *,
@@ -233,16 +234,15 @@ class LLWindowAPI(LEAPAPIWrapper):
233
234
  path: UI_PATH_TYPE = None,
234
235
  mask: MASK_TYPE = None,
235
236
  button: str,
236
- ) -> Awaitable[Dict]:
237
+ sleep_time: float = 0.0,
238
+ ) -> Dict:
237
239
  """Simulate a mouse down and immediately following mouse up event"""
238
240
  # We're going to ignore the mouseDown response, so use void_command instead.
239
241
  # Most side effects are actually executed on mouseUp.
240
- self._client.void_command(
241
- self._pump_name,
242
- "mouseDown",
243
- self._build_mouse_payload(x=x, y=y, path=path, mask=mask, button=button),
244
- )
245
- return self.mouse_up(x=x, y=y, path=path, mask=mask, button=button)
242
+ await self.mouse_down(x=x, y=y, path=path, mask=mask, button=button)
243
+ if sleep_time:
244
+ await asyncio.sleep(sleep_time)
245
+ return await self.mouse_up(x=x, y=y, path=path, mask=mask, button=button)
246
246
 
247
247
  def mouse_move(
248
248
  self, /, *, x: MOUSE_COORD_TYPE = None, y: MOUSE_COORD_TYPE = None, path: UI_PATH_TYPE = None
outleap/utils.py CHANGED
@@ -62,9 +62,11 @@ _READER_BUFFER_LIMIT = 10_000_000
62
62
  def _stdin_feeder(
63
63
  transport: asyncio.Transport, reader: asyncio.StreamReader, loop: asyncio.AbstractEventLoop
64
64
  ):
65
- while not transport.is_closing():
65
+ while True:
66
66
  data = os.read(0, _READER_BUFFER_LIMIT)
67
67
  if not data:
68
+ if transport.is_closing():
69
+ break
68
70
  time.sleep(0.0000001)
69
71
  continue
70
72
  loop.call_soon_threadsafe(reader.feed_data, data)
outleap/version.py CHANGED
@@ -5,7 +5,7 @@ from collections import namedtuple
5
5
  #: A namedtuple of the version info for the current release.
6
6
  _version_info = namedtuple("_version_info", "major minor micro status")
7
7
 
8
- parts = "0.7.1".split(".", 3)
8
+ parts = "0.7.3".split(".", 3)
9
9
  version_info = _version_info(
10
10
  int(parts[0]),
11
11
  int(parts[1]),
@@ -16,4 +16,4 @@ version_info = _version_info(
16
16
  # Remove everything but the 'version_info' from this module.
17
17
  del namedtuple, _version_info, parts
18
18
 
19
- __version__ = "0.7.1"
19
+ __version__ = "0.7.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: outleap
3
- Version: 0.7.1
3
+ Version: 0.7.3
4
4
  Summary: Tools for using asyncio to control a Second Life viewer over the LEAP protocol
5
5
  Author-email: Salad Dais <83434023+SaladDais@users.noreply.github.com>
6
6
  License: MIT License
@@ -1,20 +1,20 @@
1
1
  outleap/__init__.py,sha256=h0VTP95rggZ-iFH1Ke4rh85fiU3BTvfj_jkLW27Ln1k,689
2
- outleap/api_wrappers.py,sha256=SZWBLTA6R0zv-nsZ4pmlm92lWsELoq_5t36WhFoRdx8,26785
2
+ outleap/api_wrappers.py,sha256=YRpOqeqwRqb4nckjcp-kv9ceIVauhshgpiCLQQw0rCI,26793
3
3
  outleap/bridge.py,sha256=Q5tku2JP-K0wT9zVA8OyJpFEpumgbUgHaC1YeRQR8vE,1016
4
4
  outleap/client.py,sha256=4RFTOSiL2cCwpJ64_sux_DbFh_LjnwjVIlByutGg-ao,14545
5
5
  outleap/protocol.py,sha256=HeCnlzszGp6Yxgq__34KYYuii6tpxnfUi5La9SFxw0k,3725
6
6
  outleap/qt_helpers.py,sha256=qpdEx7y60T3nAJ4GFDvpcefKEgpgBBnt8dQ-c2IB-Zc,7766
7
7
  outleap/ui_elems.py,sha256=ndi3FDp_fu1rVD3rNpFp6hs8eU53U4D_dCtuwFmums0,11577
8
- outleap/utils.py,sha256=Ad1-mAU0ButNp8n4KeXQxxNa7AtFRuZWD5L2RVS5vLM,5863
9
- outleap/version.py,sha256=peWte9DMk6zS-DsPk9CFvGk2AQQ8bihUD-NMrs4elGc,517
8
+ outleap/utils.py,sha256=uRoP_A_dcwhlpaDPOQETzFLfQ_fDS3KQfrwwew-nSyI,5902
9
+ outleap/version.py,sha256=07qoZWqhgz4GolwfdmJOmXoAkoeyqGP15KjIf__tY8Q,517
10
10
  outleap/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  outleap/scripts/agent.py,sha256=YOXtkjqZY7ju9fLhBHRzdhsp9TdhPnDzsXiQo5-Dhfs,1984
12
12
  outleap/scripts/inspector.py,sha256=h_2So4ohXlE4qOcYzfFRFiKdMItXmPFnVh50KwfoXmM,10950
13
13
  outleap/scripts/repl.py,sha256=z20hpXY5_O68U2WX1Il5tRGRyafsKHa-FNeF9CoJpZk,1721
14
14
  outleap/scripts/ui/inspector.ui,sha256=CY-Tczsrpmc2groE6_7s_fIc7de6Oy2TuU2a4ZGzl7o,7269
15
- outleap-0.7.1.dist-info/licenses/COPYING,sha256=OPIPYHZUdL5ylRYaujIVg05CSvX4-AHW15qBGYz_fyY,1093
16
- outleap-0.7.1.dist-info/METADATA,sha256=Zp9FZl0H8SDUIUmXIHXfv3dfChA4fH4XMS8AXyWNNRw,4819
17
- outleap-0.7.1.dist-info/WHEEL,sha256=ck4Vq1_RXyvS4Jt6SI0Vz6fyVs4GWg7AINwpsaGEgPE,91
18
- outleap-0.7.1.dist-info/entry_points.txt,sha256=gi7UECBDlCTzn0jUU8xPvyMm_8lOQMZUJuNOe266I48,174
19
- outleap-0.7.1.dist-info/top_level.txt,sha256=dIQJmMy2IulmIzvBWuz8dup0dm9MV0b4p_hCtBRewfE,8
20
- outleap-0.7.1.dist-info/RECORD,,
15
+ outleap-0.7.3.dist-info/licenses/COPYING,sha256=OPIPYHZUdL5ylRYaujIVg05CSvX4-AHW15qBGYz_fyY,1093
16
+ outleap-0.7.3.dist-info/METADATA,sha256=PDe3j-r1Je8NDi9TCnFqym-uC4pXlG3wJvnZfhJqJoU,4819
17
+ outleap-0.7.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
18
+ outleap-0.7.3.dist-info/entry_points.txt,sha256=gi7UECBDlCTzn0jUU8xPvyMm_8lOQMZUJuNOe266I48,174
19
+ outleap-0.7.3.dist-info/top_level.txt,sha256=dIQJmMy2IulmIzvBWuz8dup0dm9MV0b4p_hCtBRewfE,8
20
+ outleap-0.7.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.0.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5