uiautodev 0.13.0__tar.gz → 0.13.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.

Potentially problematic release.


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

Files changed (43) hide show
  1. {uiautodev-0.13.0 → uiautodev-0.13.1}/PKG-INFO +6 -9
  2. {uiautodev-0.13.0 → uiautodev-0.13.1}/README.md +5 -9
  3. {uiautodev-0.13.0 → uiautodev-0.13.1}/pyproject.toml +1 -1
  4. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/__init__.py +1 -1
  5. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/app.py +4 -17
  6. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/cli.py +22 -6
  7. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/command_proxy.py +2 -2
  8. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/common.py +4 -3
  9. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/provider.py +1 -1
  10. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/router/android.py +1 -1
  11. {uiautodev-0.13.0 → uiautodev-0.13.1}/LICENSE +0 -0
  12. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/__main__.py +0 -0
  13. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/appium_proxy.py +0 -0
  14. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/binaries/scrcpy_server.jar +0 -0
  15. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/case.py +0 -0
  16. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/command_types.py +0 -0
  17. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/driver/android/__init__.py +0 -0
  18. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/driver/android/adb_driver.py +0 -0
  19. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/driver/android/common.py +0 -0
  20. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/driver/android/u2_driver.py +0 -0
  21. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/driver/appium.py +0 -0
  22. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/driver/base_driver.py +0 -0
  23. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/driver/harmony.py +0 -0
  24. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/driver/ios.py +0 -0
  25. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/driver/mock.py +0 -0
  26. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/driver/testdata/layout.json +0 -0
  27. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/driver/udt/appium-uiautomator2-v5.12.4-light.apk +0 -0
  28. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/driver/udt/udt.py +0 -0
  29. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/exceptions.py +0 -0
  30. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/model.py +0 -0
  31. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/remote/android_input.py +0 -0
  32. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/remote/harmony_mjpeg.py +0 -0
  33. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/remote/keycode.py +0 -0
  34. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/remote/scrcpy.py +0 -0
  35. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/remote/touch_controller.py +0 -0
  36. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/router/device.py +0 -0
  37. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/router/proxy.py +0 -0
  38. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/router/xml.py +0 -0
  39. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/static/demo.html +0 -0
  40. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/utils/common.py +0 -0
  41. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/utils/envutils.py +0 -0
  42. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/utils/exceptions.py +0 -0
  43. {uiautodev-0.13.0 → uiautodev-0.13.1}/uiautodev/utils/usbmux.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: uiautodev
3
- Version: 0.13.0
3
+ Version: 0.13.1
4
4
  Summary: Mobile UI Automation, include UI hierarchy inspector, script recorder
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -83,24 +83,20 @@ uiauto.dev
83
83
  # Default driver is uiautomator2
84
84
  # Set the environment variable below to switch to adb driver
85
85
  export UIAUTODEV_USE_ADB_DRIVER=1
86
-
87
- # Set the env to enable DEBUG log
88
- export UIAUTODEV_DEBUG=1
89
86
  ```
90
87
 
91
88
  # Offline mode
92
89
 
93
- Currently, the frontend is deployed on a separate server, so internet connection is required.
94
- However, some users have limited network environments or restricted internet access. Therefore, an offline cache mode has been added.
95
- Create a `cache` directory in the directory where uiautodev starts to activate frontend caching.
90
+ Start with
96
91
 
97
92
  ```sh
98
- mkdir cache
99
- uiautodev
93
+ uiautodev server --offline
100
94
  ```
101
95
 
102
96
  Visit <http://localhost:20242> once, and then disconnecting from the internet will not affect usage.
103
97
 
98
+ > All frontend resources will be saved to cache/ dir.
99
+
104
100
  # DEVELOP
105
101
 
106
102
  see [DEVELOP.md](DEVELOP.md)
@@ -111,3 +107,4 @@ see [DEVELOP.md](DEVELOP.md)
111
107
 
112
108
  # LICENSE
113
109
  [MIT](LICENSE)
110
+
@@ -47,24 +47,20 @@ uiauto.dev
47
47
  # Default driver is uiautomator2
48
48
  # Set the environment variable below to switch to adb driver
49
49
  export UIAUTODEV_USE_ADB_DRIVER=1
50
-
51
- # Set the env to enable DEBUG log
52
- export UIAUTODEV_DEBUG=1
53
50
  ```
54
51
 
55
52
  # Offline mode
56
53
 
57
- Currently, the frontend is deployed on a separate server, so internet connection is required.
58
- However, some users have limited network environments or restricted internet access. Therefore, an offline cache mode has been added.
59
- Create a `cache` directory in the directory where uiautodev starts to activate frontend caching.
54
+ Start with
60
55
 
61
56
  ```sh
62
- mkdir cache
63
- uiautodev
57
+ uiautodev server --offline
64
58
  ```
65
59
 
66
60
  Visit <http://localhost:20242> once, and then disconnecting from the internet will not affect usage.
67
61
 
62
+ > All frontend resources will be saved to cache/ dir.
63
+
68
64
  # DEVELOP
69
65
 
70
66
  see [DEVELOP.md](DEVELOP.md)
@@ -74,4 +70,4 @@ see [DEVELOP.md](DEVELOP.md)
74
70
  - https://docs.tangoapp.dev/scrcpy/video/web-codecs/ H264解码器
75
71
 
76
72
  # LICENSE
77
- [MIT](LICENSE)
73
+ [MIT](LICENSE)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "uiautodev"
3
- version = "0.13.0"
3
+ version = "0.13.1"
4
4
  description = "Mobile UI Automation, include UI hierarchy inspector, script recorder"
5
5
  homepage = "https://uiauto.dev"
6
6
  authors = ["codeskyblue <codeskyblue@gmail.com>"]
@@ -5,4 +5,4 @@
5
5
  """
6
6
 
7
7
  # version is auto managed by poetry
8
- __version__ = "0.13.0"
8
+ __version__ = "0.13.1"
@@ -15,20 +15,20 @@ import httpx
15
15
  import uvicorn
16
16
  from fastapi import FastAPI, File, Request, Response, UploadFile, WebSocket
17
17
  from fastapi.middleware.cors import CORSMiddleware
18
- from fastapi.responses import (FileResponse, JSONResponse, RedirectResponse)
18
+ from fastapi.responses import FileResponse, JSONResponse, RedirectResponse
19
19
  from pydantic import BaseModel
20
- from rich.logging import RichHandler
21
20
  from starlette.websockets import WebSocketDisconnect
22
21
 
23
22
  from uiautodev import __version__
24
23
  from uiautodev.common import convert_bytes_to_image, get_webpage_url, ocr_image
24
+ from uiautodev.driver.android import ADBAndroidDriver, U2AndroidDriver
25
25
  from uiautodev.model import Node
26
26
  from uiautodev.provider import AndroidProvider, HarmonyProvider, IOSProvider, MockProvider
27
- from uiautodev.driver.android import ADBAndroidDriver, U2AndroidDriver
28
27
  from uiautodev.remote.scrcpy import ScrcpyServer
29
28
  from uiautodev.router.android import router as android_device_router
30
29
  from uiautodev.router.device import make_router
31
- from uiautodev.router.proxy import make_reverse_proxy, router as proxy_router
30
+ from uiautodev.router.proxy import make_reverse_proxy
31
+ from uiautodev.router.proxy import router as proxy_router
32
32
  from uiautodev.router.xml import router as xml_router
33
33
  from uiautodev.utils.envutils import Environment
34
34
 
@@ -36,19 +36,6 @@ logger = logging.getLogger(__name__)
36
36
 
37
37
  app = FastAPI()
38
38
 
39
-
40
- def enable_logger_to_console(level):
41
- _logger = logging.getLogger("uiautodev")
42
- _logger.setLevel(level)
43
- _logger.addHandler(RichHandler(enable_link_path=False))
44
-
45
-
46
- if os.getenv("UIAUTODEV_DEBUG"):
47
- enable_logger_to_console(level=logging.DEBUG)
48
- logger.debug("verbose logger enabled")
49
- else:
50
- enable_logger_to_console(level=logging.ERROR)
51
-
52
39
  app.add_middleware(
53
40
  CORSMiddleware,
54
41
  allow_origins=["*"],
@@ -20,6 +20,7 @@ import httpx
20
20
  import pydantic
21
21
  import uvicorn
22
22
  from retry import retry
23
+ from rich.logging import RichHandler
23
24
 
24
25
  from uiautodev import __version__, command_proxy
25
26
  from uiautodev.command_types import Command
@@ -38,12 +39,21 @@ HARMONY_PACKAGES = [
38
39
  "https://public.uiauto.devsleep.com/harmony/hypium-5.0.7.200.tar.gz",
39
40
  ]
40
41
 
42
+
43
+ def enable_logger_to_console(level):
44
+ _logger = logging.getLogger("uiautodev")
45
+ _logger.setLevel(level)
46
+ _logger.addHandler(RichHandler(enable_link_path=False))
47
+
48
+
41
49
  @click.group(context_settings=CONTEXT_SETTINGS)
42
50
  @click.option("--verbose", "-v", is_flag=True, default=False, help="verbose mode")
43
51
  def cli(verbose: bool):
44
52
  if verbose:
45
- os.environ['UIAUTODEV_DEBUG'] = '1'
53
+ enable_logger_to_console(level=logging.DEBUG)
46
54
  logger.debug("Verbose mode enabled")
55
+ else:
56
+ enable_logger_to_console(level=logging.INFO)
47
57
 
48
58
 
49
59
  def run_driver_command(provider: BaseProvider, command: Command, params: list[str] = None):
@@ -142,7 +152,8 @@ def pip_install(package: str):
142
152
  @click.option("--reload", is_flag=True, default=False, help="auto reload, dev only")
143
153
  @click.option("-f", "--force", is_flag=True, default=False, help="shutdown alrealy runningserver")
144
154
  @click.option("-s", "--no-browser", is_flag=True, default=False, help="silent mode, do not open browser")
145
- def server(port: int, host: str, reload: bool, force: bool, no_browser: bool):
155
+ @click.option("--offline", is_flag=True, default=False, help="offline mode, do not use internet")
156
+ def server(port: int, host: str, reload: bool, force: bool, no_browser: bool, offline: bool):
146
157
  click.echo(f"uiautodev version: {__version__}")
147
158
  if force:
148
159
  try:
@@ -154,8 +165,13 @@ def server(port: int, host: str, reload: bool, force: bool, no_browser: bool):
154
165
  if platform.system() == 'Windows':
155
166
  use_color = False
156
167
 
168
+ if offline:
169
+ from uiautodev.router.proxy import cache_dir
170
+ cache_dir.mkdir(parents=True, exist_ok=True)
171
+ logger.info("offline mode enabled, cache dir: %s", cache_dir)
172
+
157
173
  if not no_browser:
158
- th = threading.Thread(target=open_browser_when_server_start, args=(f"http://{host}:{port}",))
174
+ th = threading.Thread(target=open_browser_when_server_start, args=(f"http://{host}:{port}", offline))
159
175
  th.daemon = True
160
176
  th.start()
161
177
  uvicorn.run("uiautodev.app:app", host=host, port=port, reload=reload, use_colors=use_color)
@@ -169,16 +185,16 @@ def shutdown(port: int):
169
185
  pass
170
186
 
171
187
 
172
- def open_browser_when_server_start(server_url: str):
188
+ def open_browser_when_server_start(local_server_url: str, offline: bool = False):
173
189
  deadline = time.time() + 10
174
190
  while time.time() < deadline:
175
191
  try:
176
- httpx.get(f"{server_url}/api/info", timeout=1)
192
+ httpx.get(f"{local_server_url}/api/info", timeout=1)
177
193
  break
178
194
  except Exception as e:
179
195
  time.sleep(0.5)
180
196
  import webbrowser
181
- web_url = get_webpage_url()
197
+ web_url = get_webpage_url(local_server_url if offline else None)
182
198
  logger.info("open browser: %s", web_url)
183
199
  webbrowser.open(web_url)
184
200
 
@@ -13,8 +13,8 @@ from typing import Callable, Dict, List, Optional, Union
13
13
  from pydantic import BaseModel
14
14
 
15
15
  from uiautodev.command_types import AppLaunchRequest, AppTerminateRequest, By, Command, CurrentAppResponse, \
16
- DumpResponse, FindElementRequest, FindElementResponse, InstallAppRequest, InstallAppResponse, SendKeysRequest, TapRequest, \
17
- WindowSizeResponse
16
+ DumpResponse, FindElementRequest, FindElementResponse, InstallAppRequest, InstallAppResponse, SendKeysRequest, \
17
+ TapRequest, WindowSizeResponse
18
18
  from uiautodev.driver.base_driver import BaseDriver
19
19
  from uiautodev.exceptions import ElementNotFoundError
20
20
  from uiautodev.model import AppInfo, Node
@@ -8,7 +8,7 @@
8
8
  import io
9
9
  import locale
10
10
  import logging
11
- from typing import List
11
+ from typing import List, Optional
12
12
 
13
13
  from PIL import Image
14
14
 
@@ -26,8 +26,9 @@ def is_chinese_language() -> bool:
26
26
  return False
27
27
 
28
28
 
29
- def get_webpage_url() -> str:
30
- web_url = "https://uiauto.dev"
29
+ def get_webpage_url(web_url: Optional[str] = None) -> str:
30
+ if not web_url:
31
+ web_url = "https://uiauto.dev"
31
32
  # code will be enabled until uiauto.devsleep.com is ready
32
33
  # if is_chinese_language():
33
34
  # web_url = "https://uiauto.devsleep.com"
@@ -11,7 +11,7 @@ from typing import Type
11
11
 
12
12
  import adbutils
13
13
 
14
- from uiautodev.driver.android import U2AndroidDriver, ADBAndroidDriver
14
+ from uiautodev.driver.android import ADBAndroidDriver, U2AndroidDriver
15
15
  from uiautodev.driver.base_driver import BaseDriver
16
16
  from uiautodev.driver.harmony import HDC, HarmonyDriver
17
17
  from uiautodev.driver.ios import IOSDriver
@@ -6,7 +6,7 @@ from typing import Dict, Optional
6
6
  from fastapi import APIRouter, Request, Response
7
7
  from pydantic import BaseModel
8
8
 
9
- from uiautodev.driver.android import U2AndroidDriver, ADBAndroidDriver
9
+ from uiautodev.driver.android import ADBAndroidDriver, U2AndroidDriver
10
10
  from uiautodev.model import ShellResponse
11
11
 
12
12
  logger = logging.getLogger(__name__)
File without changes
File without changes