Skip to content

Commit deb5d37

Browse files
committed
1 parent aacaf10 commit deb5d37

File tree

4 files changed

+68
-66
lines changed

4 files changed

+68
-66
lines changed

adbe/adb_enhanced.py

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -206,20 +206,22 @@ def get_current_rotation_direction() -> int:
206206
print_verbose(f"Return value is {direction}")
207207
if not direction or direction == "null":
208208
return 0 # default direction is 0, vertical straight
209+
209210
try:
210211
return int(direction)
211212
except ValueError as e:
212213
print_error(f'Failed to get direction, error: "{e}"')
214+
return 0
213215

214216

215-
def handle_layout(value: bool) -> None:
216-
cmd = "setprop debug.layout true" if value else "setprop debug.layout false"
217+
def handle_layout(*, turn_on: bool) -> None:
218+
cmd = "setprop debug.layout true" if turn_on else "setprop debug.layout false"
217219
execute_adb_shell_command_and_poke_activity_service(cmd)
218220

219221

220222
# Source: https://stackoverflow.com/questions/10506591/turning-airplane-mode-on-via-adb
221-
def handle_airplane(turn_on: bool):
222-
state = (1 if turn_on else 0)
223+
def handle_airplane(*, turn_on: bool):
224+
state = 1 if turn_on else 0
223225
return_code, su_path, _ = execute_adb_shell_command2("which su")
224226
if not return_code and su_path and len(su_path):
225227
cmd = f"put global airplane_mode_on {state:d}"
@@ -252,8 +254,8 @@ def handle_airplane(turn_on: bool):
252254
if return_code_wifi != 0 or return_code_data != 0 or return_code_airplane != 0:
253255
print_error('Failed to put "Global" settings states. Proceeding anyway ...')
254256

255-
handle_mobile_data(False)
256-
set_wifi(False)
257+
handle_mobile_data(turn_on=False)
258+
set_wifi(turn_on=False)
257259
else:
258260
return_code_wifi, last_wifi_state, _ = execute_adb_shell_settings_command2("get global adbe_wifi")
259261
return_code_data, last_data_state, _ = execute_adb_shell_settings_command2("get global adbe_data")
@@ -266,14 +268,14 @@ def handle_airplane(turn_on: bool):
266268
print_error("Failed to change airplane mode.")
267269

268270
if last_data_state:
269-
handle_mobile_data(last_data_state == "1")
271+
handle_mobile_data(turn_on=last_data_state == "1")
270272
else:
271-
handle_mobile_data(True)
273+
handle_mobile_data(turn_on=True)
272274

273275
if last_wifi_state:
274-
set_wifi(last_wifi_state == "1")
276+
set_wifi(turn_on=last_wifi_state == "1")
275277
else:
276-
set_wifi(True)
278+
set_wifi(turn_on=True)
277279
return None
278280

279281

@@ -300,7 +302,7 @@ def get_battery_saver_state() -> str:
300302
# Source:
301303
# https://stackoverflow.com/questions/28234502/programmatically-enable-disable-battery-saver-mode
302304
@partial(print_state_change_decorator, title="Battery saver", get_state_func=get_battery_saver_state)
303-
def handle_battery_saver(turn_on: bool) -> None:
305+
def handle_battery_saver(*, turn_on: bool) -> None:
304306
_error_if_min_version_less_than(19)
305307
cmd = "put global low_power 1" if turn_on else "put global low_power 0"
306308

@@ -340,7 +342,7 @@ def handle_battery_reset() -> None:
340342

341343

342344
# https://developer.android.com/training/monitoring-device-state/doze-standby.html
343-
def handle_doze(turn_on: bool) -> None:
345+
def handle_doze(*, turn_on: bool) -> None:
344346
_error_if_min_version_less_than(23)
345347

346348
enable_idle_mode_cmd = "dumpsys deviceidle enable"
@@ -583,7 +585,7 @@ def get_wifi_state() -> str:
583585

584586

585587
@partial(print_state_change_decorator, title="Wi-Fi", get_state_func=get_wifi_state)
586-
def set_wifi(turn_on: bool) -> None:
588+
def set_wifi(*, turn_on: bool) -> None:
587589
cmd = "svc wifi enable" if turn_on else "svc wifi disable"
588590
return_code, _, _ = execute_adb_shell_command2(cmd)
589591
if return_code != 0:
@@ -593,14 +595,14 @@ def set_wifi(turn_on: bool) -> None:
593595
# Source:
594596
# https://stackoverflow.com/questions/26539445/the-setmobiledataenabled-method-is-no-longer-callable-as-of-android-l-and-later
595597
@partial(print_state_change_decorator, title="Mobile data", get_state_func=get_mobile_data_state)
596-
def handle_mobile_data(turn_on: bool) -> None:
598+
def handle_mobile_data(*, turn_on: bool) -> None:
597599
cmd = "svc data enable" if turn_on else "svc data disable"
598600
return_code, _, _ = execute_adb_shell_command2(cmd)
599601
if return_code != 0:
600602
print_error_and_exit("Failed to change mobile data setting")
601603

602604

603-
def force_rtl(turn_on: bool) -> None:
605+
def force_rtl(*, turn_on: bool) -> None:
604606
_error_if_min_version_less_than(19)
605607
cmd = "put global debug.force_rtl 1" if turn_on else "put global debug.force_rtl 0"
606608
execute_adb_shell_settings_command_and_poke_activity_service(cmd)
@@ -689,7 +691,7 @@ def get_mobile_data_saver_state():
689691

690692
# https://developer.android.com/training/basics/network-ops/data-saver.html
691693
@partial(print_state_change_decorator, title="Mobile data saver", get_state_func=get_mobile_data_saver_state)
692-
def handle_mobile_data_saver(turn_on: bool) -> None:
694+
def handle_mobile_data_saver(*, turn_on: bool) -> None:
693695
cmd = "cmd netpolicy set restrict-background true" if turn_on else "cmd netpolicy set restrict-background false"
694696
return_code, _, _ = execute_adb_shell_command2(cmd)
695697
if return_code != 0:
@@ -719,7 +721,7 @@ def get_dont_keep_activities_in_background_state():
719721
@partial(print_state_change_decorator,
720722
title="Don't keep activities",
721723
get_state_func=get_dont_keep_activities_in_background_state)
722-
def handle_dont_keep_activities_in_background(turn_on: bool) -> None:
724+
def handle_dont_keep_activities_in_background(*, turn_on: bool) -> None:
723725
# Till Api 25, the value was True/False, above API 25, 1/0 work. Source: manual testing
724726
use_true_false_as_value = get_device_android_api_version() <= 25
725727

@@ -735,7 +737,7 @@ def handle_dont_keep_activities_in_background(turn_on: bool) -> None:
735737
execute_adb_shell_command_and_poke_activity_service(cmd2)
736738

737739

738-
def toggle_animations(turn_on: bool) -> None:
740+
def toggle_animations(*, turn_on: bool) -> None:
739741
value = 1 if turn_on else 0
740742

741743
# Source: https://github.com/jaredsburrows/android-gif-example/blob/824c493285a2a2cf22f085662431cf0a7aa204b8/.travis.yml#L34
@@ -764,7 +766,7 @@ def get_show_taps_state():
764766

765767

766768
@partial(print_state_change_decorator, title="Show user taps", get_state_func=get_show_taps_state)
767-
def toggle_show_taps(turn_on: bool) -> None:
769+
def toggle_show_taps(*, turn_on: bool) -> None:
768770
value = 1 if turn_on else 0
769771

770772
# Source: https://stackoverflow.com/a/32621809/434196
@@ -790,7 +792,7 @@ def get_stay_awake_while_charging_state():
790792
@partial(print_state_change_decorator,
791793
title="Stay awake while charging",
792794
get_state_func=get_stay_awake_while_charging_state)
793-
def stay_awake_while_charging(turn_on: bool) -> None:
795+
def stay_awake_while_charging(*, turn_on: bool) -> None:
794796
# 1 for USB charging, 2 for AC charging, 4 for wireless charging. Add them together to get 7.
795797
value = 7 if turn_on else 0
796798
cmd1 = f"put global stay_on_while_plugged_in {value:d}"
@@ -833,7 +835,7 @@ def list_permission_groups() -> None:
833835
print_message(stdout)
834836

835837

836-
def list_permissions(dangerous_only_permissions: bool) -> None:
838+
def list_permissions(*, dangerous_only_permissions: bool) -> None:
837839
# -g is to group permissions by permission groups.
838840
cmd = "pm list permissions -g -d" if dangerous_only_permissions else "pm list permissions -g"
839841
return_code, stdout, stderr = execute_adb_shell_command2(cmd)
@@ -1249,14 +1251,13 @@ def calculate_standby_mode(args) -> str:
12491251

12501252
# Source: https://developer.android.com/preview/features/power
12511253
@ensure_package_exists
1252-
def apply_or_remove_background_restriction(package_name, set_restriction) -> None:
1254+
def apply_or_remove_background_restriction(package_name: str, *, set_restriction: bool) -> None:
12531255
_error_if_min_version_less_than(28)
1254-
appops_cmd = "cmd appops set {} RUN_ANY_IN_BACKGROUND {}".format(
1255-
package_name, "ignore" if set_restriction else "allow")
1256+
appops_cmd = f"cmd appops set {package_name} RUN_ANY_IN_BACKGROUND {'ignore' if set_restriction else 'allow'}"
12561257
execute_adb_shell_command(appops_cmd)
12571258

12581259

1259-
def list_directory(file_path, long_format, recursive, include_hidden_files) -> None:
1260+
def list_directory(file_path: str, *, long_format: bool, recursive: bool, include_hidden_files: bool) -> None:
12601261
cmd_prefix = "ls"
12611262
if long_format:
12621263
cmd_prefix += " -l"
@@ -1303,7 +1304,7 @@ def move_file(src_path, dest_path, force) -> None:
13031304

13041305
# Copies from remote_file_path on Android to local_file_path on the disk
13051306
# local_file_path can be None
1306-
def pull_file(remote_file_path, local_file_path, copy_ancillary=False) -> None:
1307+
def pull_file(remote_file_path: str, local_file_path: str, *, copy_ancillary=False) -> None:
13071308
if not _file_exists(remote_file_path):
13081309
print_error_and_exit(f"File {remote_file_path} does not exist")
13091310

@@ -1838,7 +1839,7 @@ def get_dark_mode() -> str:
18381839
# This code worked for emulator on API 29.
18391840
# It didn't work for unrooted device on API 30.
18401841
# I am not sure if the problem is rooting or API version
1841-
def set_dark_mode(force: bool) -> None:
1842+
def set_dark_mode(*, force: bool) -> None:
18421843
"""
18431844
:param force: if true, force dark mode, if false don't
18441845
"""

adbe/adb_helper.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ def get_adb_prefix() -> str:
2323
return _adb_prefix
2424

2525

26-
def set_adb_prefix(adb_prefix) -> None:
26+
def set_adb_prefix(adb_prefix: str) -> None:
2727
# pylint: disable=global-statement
2828
global _adb_prefix
2929
_adb_prefix = adb_prefix
3030

3131

32-
def get_adb_shell_property(property_name, device_serial=None) -> str | None:
32+
def get_adb_shell_property(property_name: str, device_serial=None) -> str | None:
3333
_, stdout, _ = execute_adb_shell_command2(f"getprop {property_name}", device_serial=device_serial)
3434
return stdout
3535

adbe/main.py

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ def main() -> None:
121121
_fail_with_python2_warning()
122122

123123
args: dict[str, typing.Any] = docopt.docopt(USAGE_STRING, version=_get_version())
124-
set_verbose(args["--verbose"])
124+
set_verbose(enabled=args["--verbose"])
125125

126126
_validate_options(args)
127127
options = _get_generic_options_from_args(args)
@@ -148,8 +148,8 @@ def _get_actions(args: dict[str, typing.Any]) -> dict[tuple[str, str], typing.Ca
148148
app_name = args["<app_name>"]
149149
return {
150150
# Airplane mode
151-
("airplane", "on"): lambda: adb_enhanced.handle_airplane(True),
152-
("airplane", "off"): lambda: adb_enhanced.handle_airplane(False),
151+
("airplane", "on"): lambda: adb_enhanced.handle_airplane(turn_on=True),
152+
("airplane", "off"): lambda: adb_enhanced.handle_airplane(turn_on=False),
153153

154154
# Alarm
155155
("alarm", "all"): lambda: adb_enhanced.alarm_manager(adb_enhanced.AlarmEnum.ALL),
@@ -158,8 +158,8 @@ def _get_actions(args: dict[str, typing.Any]) -> dict[tuple[str, str], typing.Ca
158158
("alarm", "top"): lambda: adb_enhanced.alarm_manager(adb_enhanced.AlarmEnum.TOP),
159159

160160
# Animations
161-
("animations", "on"): lambda: adb_enhanced.toggle_animations(True),
162-
("animations", "off"): lambda: adb_enhanced.toggle_animations(False),
161+
("animations", "on"): lambda: adb_enhanced.toggle_animations(turn_on=True),
162+
("animations", "off"): lambda: adb_enhanced.toggle_animations(turn_on=False),
163163

164164
# App-related misc
165165
("app", "backup"): lambda: _perform_backup(app_name, args["<backup_tar_file_path>"]),
@@ -182,13 +182,13 @@ def _get_actions(args: dict[str, typing.Any]) -> dict[tuple[str, str], typing.Ca
182182
# Battery-related
183183
("battery", "level"): lambda: adb_enhanced.handle_battery_level(int(args["<percentage>"])),
184184
("battery", "reset"): adb_enhanced.handle_battery_reset,
185-
("battery", "saver", "on"): lambda: adb_enhanced.handle_battery_saver(True),
186-
("battery", "saver", "off"): lambda: adb_enhanced.handle_battery_saver(False),
185+
("battery", "saver", "on"): lambda: adb_enhanced.handle_battery_saver(turn_on=True),
186+
("battery", "saver", "off"): lambda: adb_enhanced.handle_battery_saver(turn_on=False),
187187
("cat",): lambda: adb_enhanced.cat_file(args["<file_path>"]),
188188

189189
# Dark mode
190-
("dark", "mode", "on"): lambda: adb_enhanced.set_dark_mode(True),
191-
("dark", "mode", "off"): lambda: adb_enhanced.set_dark_mode(False),
190+
("dark", "mode", "on"): lambda: adb_enhanced.set_dark_mode(force=True),
191+
("dark", "mode", "off"): lambda: adb_enhanced.set_dark_mode(force=False),
192192

193193
# List devices
194194
("devices",): adb_enhanced.handle_list_devices,
@@ -206,18 +206,18 @@ def _get_actions(args: dict[str, typing.Any]) -> dict[tuple[str, str], typing.Ca
206206
("clear-data",): lambda: adb_enhanced.clear_disk_data(app_name),
207207

208208
# Mobile Data
209-
("mobile-data", "saver", "on"): lambda: adb_enhanced.handle_mobile_data_saver(True),
210-
("mobile-data", "saver", "off"): lambda: adb_enhanced.handle_mobile_data_saver(False),
211-
("mobile-data", "on"): lambda: adb_enhanced.handle_mobile_data(True),
212-
("mobile-data", "off"): lambda: adb_enhanced.handle_mobile_data(False),
209+
("mobile-data", "saver", "on"): lambda: adb_enhanced.handle_mobile_data_saver(turn_on=True),
210+
("mobile-data", "saver", "off"): lambda: adb_enhanced.handle_mobile_data_saver(turn_on=False),
211+
("mobile-data", "on"): lambda: adb_enhanced.handle_mobile_data(turn_on=True),
212+
("mobile-data", "off"): lambda: adb_enhanced.handle_mobile_data(turn_on=False),
213213

214214
# Layout
215-
("layout", "on"): lambda: adb_enhanced.handle_layout(True),
216-
("layout", "off"): lambda: adb_enhanced.handle_layout(False),
215+
("layout", "on"): lambda: adb_enhanced.handle_layout(turn_on=True),
216+
("layout", "off"): lambda: adb_enhanced.handle_layout(turn_on=False),
217217

218218
# Location
219-
("location", "on"): lambda: adb_enhanced.toggle_location(True),
220-
("location", "off"): lambda: adb_enhanced.toggle_location(False),
219+
("location", "on"): lambda: adb_enhanced.toggle_location(turn_on=True),
220+
("location", "off"): lambda: adb_enhanced.toggle_location(turn_on=False),
221221
("notifications", "list"): adb_enhanced.print_notifications,
222222

223223
# Overdraw
@@ -229,16 +229,16 @@ def _get_actions(args: dict[str, typing.Any]) -> dict[tuple[str, str], typing.Ca
229229
("permissions", "grant"): lambda: _grant_revoke_permissions(app_name, args),
230230
("permissions", "revoke"): lambda: _grant_revoke_permissions(app_name, args),
231231
("permission-groups", "list", "all"): adb_enhanced.list_permission_groups,
232-
("permissions", "list", "all"): lambda: adb_enhanced.list_permissions(False),
233-
("permissions", "list", "dangerous"): lambda: adb_enhanced.list_permissions(True),
232+
("permissions", "list", "all"): lambda: adb_enhanced.list_permissions(dangerous_only_permissions=False),
233+
("permissions", "list", "dangerous"): lambda: adb_enhanced.list_permissions(dangerous_only_permissions=True),
234234

235235
# Pull files
236236
("pull",): lambda: adb_enhanced.pull_file(
237-
args["<file_path_on_android>"], args["<file_path_on_machine>"], args["-a"]),
237+
args["<file_path_on_android>"], args["<file_path_on_machine>"], copy_ancillary=args["-a"]),
238238
("push",): lambda: adb_enhanced.push_file(
239239
args["<file_path_on_machine>"], args["<file_path_on_android>"]),
240-
("restrict-background", "true"): lambda: adb_enhanced.apply_or_remove_background_restriction(app_name, True),
241-
("restrict-background", "false"): lambda: adb_enhanced.apply_or_remove_background_restriction(app_name, False),
240+
("restrict-background", "true"): lambda: adb_enhanced.apply_or_remove_background_restriction(app_name, set_restriction=True),
241+
("restrict-background", "false"): lambda: adb_enhanced.apply_or_remove_background_restriction(app_name, set_restriction=False),
242242

243243
# Rotate
244244
("rotate", "portrait"): lambda: adb_enhanced.handle_rotate("portrait"),
@@ -247,38 +247,39 @@ def _get_actions(args: dict[str, typing.Any]) -> dict[tuple[str, str], typing.Ca
247247
("rotate", "right"): lambda: adb_enhanced.handle_rotate("right"),
248248

249249
# RTL settings are not working as expected
250-
("rtl", "on"): lambda: adb_enhanced.force_rtl(True),
251-
("rtl", "off"): lambda: adb_enhanced.force_rtl(False),
250+
("rtl", "on"): lambda: adb_enhanced.force_rtl(turn_on=True),
251+
("rtl", "off"): lambda: adb_enhanced.force_rtl(turn_on=False),
252252

253253
# Files related
254254
("mv",): lambda: adb_enhanced.move_file(args["<src_path>"], args["<dest_path>"], args["-f"]),
255255
("rm",): lambda: adb_enhanced.delete_file(args["<file_path>"], args["-f"], args["-R"] or args["-r"]),
256256
# Always include hidden files, -a is left for backward-compatibility but is a no-op now.
257-
("ls",): lambda: adb_enhanced.list_directory(args["<file_path>"], args["-l"], args["-R"] or args["-r"], True),
258-
257+
("ls",): lambda: adb_enhanced.list_directory(
258+
args["<file_path>"], long_format=args["-l"], recursive=args["-R"] or args["-r"],
259+
include_hidden_files=True),
259260
# Screen
260261
("screen", "on"): lambda: adb_enhanced.switch_screen(adb_enhanced.SCREEN_ON),
261262
("screen", "off"): lambda: adb_enhanced.switch_screen(adb_enhanced.SCREEN_OFF),
262263
("screen", "toggle"): lambda: adb_enhanced.switch_screen(adb_enhanced.SCREEN_TOGGLE),
263-
("stay-awake-while-charging", "on"): lambda: adb_enhanced.stay_awake_while_charging(True),
264-
("stay-awake-while-charging", "off"): lambda: adb_enhanced.stay_awake_while_charging(False),
264+
("stay-awake-while-charging", "on"): lambda: adb_enhanced.stay_awake_while_charging(turn_on=True),
265+
("stay-awake-while-charging", "off"): lambda: adb_enhanced.stay_awake_while_charging(turn_on=False),
265266

266267
# Standby bucket
267268
("standby-bucket", "get"): lambda: adb_enhanced.get_standby_bucket(app_name),
268269
("standby-bucket", "set"): lambda: adb_enhanced.set_standby_bucket(
269270
app_name, adb_enhanced.calculate_standby_mode(args)),
270271
# Doze
271-
("doze", "on"): lambda: adb_enhanced.handle_doze(True),
272-
("doze", "off"): lambda: adb_enhanced.handle_doze(False),
272+
("doze", "on"): lambda: adb_enhanced.handle_doze(turn_on=True),
273+
("doze", "off"): lambda: adb_enhanced.handle_doze(turn_on=False),
273274

274275
# App start
275276
("start",): lambda: adb_enhanced.launch_app(app_name),
276277
("stop",): lambda: adb_enhanced.stop_app(app_name),
277278
("restart",): lambda: (adb_enhanced.force_stop(app_name), adb_enhanced.launch_app(app_name)),
278279

279280
# Wi-Fi
280-
("wifi", "on"): lambda: adb_enhanced.set_wifi(True),
281-
("wifi", "off"): lambda: adb_enhanced.set_wifi(False),
281+
("wifi", "on"): lambda: adb_enhanced.set_wifi(turn_on=True),
282+
("wifi", "off"): lambda: adb_enhanced.set_wifi(turn_on=False),
282283

283284
# Wireless debugging
284285
("wireless", "debugging", "enable"): adb_enhanced.enable_wireless_debug,
@@ -287,10 +288,10 @@ def _get_actions(args: dict[str, typing.Any]) -> dict[tuple[str, str], typing.Ca
287288
("force-stop",): lambda: adb_enhanced.force_stop(app_name),
288289

289290
# Configure UI
290-
("dont-keep-activities", "on"): lambda: adb_enhanced.handle_dont_keep_activities_in_background(True),
291-
("dont-keep-activities", "off"): lambda: adb_enhanced.handle_dont_keep_activities_in_background(False),
292-
("show-taps", "on"): lambda: adb_enhanced.toggle_show_taps(True),
293-
("show-taps", "off"): lambda: adb_enhanced.toggle_show_taps(False),
291+
("dont-keep-activities", "on"): lambda: adb_enhanced.handle_dont_keep_activities_in_background(turn_on=True),
292+
("dont-keep-activities", "off"): lambda: adb_enhanced.handle_dont_keep_activities_in_background(turn_on=False),
293+
("show-taps", "on"): lambda: adb_enhanced.toggle_show_taps(turn_on=True),
294+
("show-taps", "off"): lambda: adb_enhanced.toggle_show_taps(turn_on=False),
294295

295296
# Fetching info from UI
296297
("dump-ui",): lambda: adb_enhanced.dump_ui(args["<xml_file>"]),

adbe/output_helper.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
__VERBOSE_MODE: bool = False
44

55

6-
def set_verbose(enabled: bool) -> None:
6+
def set_verbose(*, enabled: bool) -> None:
77
global __VERBOSE_MODE
88
__VERBOSE_MODE = enabled
99

0 commit comments

Comments
 (0)