Kea2-python 1.2.1__tar.gz → 1.2.2__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 (68) hide show
  1. {kea2_python-1.2.1 → kea2_python-1.2.2}/Kea2_python.egg-info/PKG-INFO +1 -1
  2. {kea2_python-1.2.1 → kea2_python-1.2.2}/PKG-INFO +1 -1
  3. kea2_python-1.2.2/kea2/assets/fastbot_libs/arm64-v8a/libfastbot_native.so +0 -0
  4. kea2_python-1.2.2/kea2/assets/fastbot_libs/armeabi-v7a/libfastbot_native.so +0 -0
  5. kea2_python-1.2.2/kea2/assets/fastbot_libs/x86/libfastbot_native.so +0 -0
  6. kea2_python-1.2.2/kea2/assets/fastbot_libs/x86_64/libfastbot_native.so +0 -0
  7. kea2_python-1.2.2/kea2/assets/monkeyq.jar +0 -0
  8. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/cli.py +1 -105
  9. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/fastbotManager.py +1 -1
  10. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/keaUtils.py +2 -0
  11. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/kea_launcher.py +11 -0
  12. {kea2_python-1.2.1 → kea2_python-1.2.2}/pyproject.toml +1 -1
  13. kea2_python-1.2.1/kea2/assets/fastbot_libs/arm64-v8a/libfastbot_native.so +0 -0
  14. kea2_python-1.2.1/kea2/assets/fastbot_libs/armeabi-v7a/libfastbot_native.so +0 -0
  15. kea2_python-1.2.1/kea2/assets/fastbot_libs/x86/libfastbot_native.so +0 -0
  16. kea2_python-1.2.1/kea2/assets/fastbot_libs/x86_64/libfastbot_native.so +0 -0
  17. kea2_python-1.2.1/kea2/assets/monkeyq.jar +0 -0
  18. {kea2_python-1.2.1 → kea2_python-1.2.2}/Kea2_python.egg-info/SOURCES.txt +0 -0
  19. {kea2_python-1.2.1 → kea2_python-1.2.2}/Kea2_python.egg-info/dependency_links.txt +0 -0
  20. {kea2_python-1.2.1 → kea2_python-1.2.2}/Kea2_python.egg-info/entry_points.txt +0 -0
  21. {kea2_python-1.2.1 → kea2_python-1.2.2}/Kea2_python.egg-info/requires.txt +0 -0
  22. {kea2_python-1.2.1 → kea2_python-1.2.2}/Kea2_python.egg-info/top_level.txt +0 -0
  23. {kea2_python-1.2.1 → kea2_python-1.2.2}/LICENSE +0 -0
  24. {kea2_python-1.2.1 → kea2_python-1.2.2}/README.md +0 -0
  25. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/__init__.py +0 -0
  26. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/adbUtils.py +0 -0
  27. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/assets/config_version.json +0 -0
  28. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/assets/fastbot-thirdpart.jar +0 -0
  29. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/assets/fastbot_configs/abl.strings +0 -0
  30. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/assets/fastbot_configs/awl.strings +0 -0
  31. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/assets/fastbot_configs/max.config +0 -0
  32. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/assets/fastbot_configs/max.fuzzing.strings +0 -0
  33. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/assets/fastbot_configs/max.schema.strings +0 -0
  34. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/assets/fastbot_configs/max.strings +0 -0
  35. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/assets/fastbot_configs/max.tree.pruning +0 -0
  36. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/assets/fastbot_configs/teardown.py +0 -0
  37. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/assets/fastbot_configs/widget.block.py +0 -0
  38. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/assets/framework.jar +0 -0
  39. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/assets/kea2-thirdpart.jar +0 -0
  40. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/assets/quicktest.py +0 -0
  41. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/fastbotx/ActivityTimes.py +0 -0
  42. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/fastbotx/ReuseEntry.py +0 -0
  43. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/fastbotx/ReuseModel.py +0 -0
  44. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/fastbotx/__init__.py +0 -0
  45. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/fbm_parser.py +0 -0
  46. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/fbm_plugin.py +0 -0
  47. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/fs_lock.py +0 -0
  48. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/kea2_api.py +0 -0
  49. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/logWatcher.py +0 -0
  50. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/mixin.py +0 -0
  51. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/report/__init__.py +0 -0
  52. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/report/bug_report_generator.py +0 -0
  53. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/report/mixin.py +0 -0
  54. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/report/report_merger.py +0 -0
  55. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/report/templates/bug_report_template.html +0 -0
  56. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/report/templates/merged_bug_report_template.html +0 -0
  57. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/report/utils.py +0 -0
  58. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/report/widget_coverage.py +0 -0
  59. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/result.py +0 -0
  60. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/resultSyncer.py +0 -0
  61. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/state.py +0 -0
  62. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/typedefs.py +0 -0
  63. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/u2Driver.py +0 -0
  64. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/utils.py +0 -0
  65. {kea2_python-1.2.1 → kea2_python-1.2.2}/kea2/version_manager.py +0 -0
  66. {kea2_python-1.2.1 → kea2_python-1.2.2}/setup.cfg +0 -0
  67. {kea2_python-1.2.1 → kea2_python-1.2.2}/tests/test_u2Selector.py +0 -0
  68. {kea2_python-1.2.1 → kea2_python-1.2.2}/tests/test_xpath.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Kea2-python
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: A python library for supporting and customizing automated UI testing for mobile apps
5
5
  Author-email: Xixian Liang <xixian@stu.ecnu.edu.cn>
6
6
  Requires-Python: >=3.8
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Kea2-python
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: A python library for supporting and customizing automated UI testing for mobile apps
5
5
  Author-email: Xixian Liang <xixian@stu.ecnu.edu.cn>
6
6
  Requires-Python: >=3.8
@@ -108,89 +108,6 @@ def cmd_merge(args):
108
108
  logger.error(f"Error during merge operation: {e}")
109
109
 
110
110
 
111
- def cmd_mergefbm(args):
112
- """Merge all FBM files in the specified folder and its subfolders using sum mode"""
113
- from .fbm_parser import FBMMerger
114
- import glob
115
- import shutil
116
-
117
- try:
118
- # Validate input path
119
- input_path = Path(args.path).resolve()
120
- if not input_path.exists():
121
- logger.error(f"Input directory does not exist: {input_path}")
122
- return
123
- if not input_path.is_dir():
124
- logger.error(f"Input path is not a directory: {input_path}")
125
- return
126
-
127
- # Find all FBM files in the directory and its subdirectories
128
- fbm_files = glob.glob(str(input_path / "**" / "*.fbm"), recursive=True)
129
-
130
- if not fbm_files:
131
- logger.error(f"No FBM files found in {input_path} or its subdirectories")
132
- return
133
-
134
- logger.debug(f"Found {len(fbm_files)} FBM files to merge:")
135
- for fbm_file in fbm_files:
136
- logger.debug(f" - {fbm_file}")
137
-
138
- # Set default output file if not provided
139
- if not args.output:
140
- output_file = input_path / "merged.fbm"
141
- else:
142
- output_file = Path(args.output).resolve()
143
-
144
- # Initialize merger
145
- merger = FBMMerger()
146
-
147
- # Handle different cases
148
- if len(fbm_files) == 1:
149
- # Only one file, just copy it to output
150
- shutil.copyfile(fbm_files[0], output_file)
151
- logger.info(f"Only one FBM file found, copied to {output_file}")
152
- else:
153
- # Merge files iteratively: start with the first file and merge with each subsequent file
154
- # Create a temporary file for the intermediate merged result
155
- temp_output = input_path / f".tmp_merged.fbm"
156
-
157
- # Start with the first file as the initial merged result
158
- shutil.copyfile(fbm_files[0], temp_output)
159
-
160
- # Iterate through the remaining files and merge them one by one
161
- for i in range(1, len(fbm_files)):
162
- current_file = fbm_files[i]
163
- next_temp = input_path / f".tmp_merged_{i}.fbm"
164
-
165
- logger.debug(f"Merging {temp_output} and {current_file} into {next_temp}")
166
- success = merger.merge(str(temp_output), str(current_file), str(next_temp), merge_mode='sum')
167
-
168
- if not success:
169
- logger.error(f"Failed to merge {temp_output} and {current_file}")
170
- # Clean up temporary files
171
- for f in [temp_output, next_temp]:
172
- if f.exists() and f.name.startswith(".tmp_"):
173
- f.unlink()
174
- return
175
-
176
- # Remove the previous temporary file and update to the new one
177
- temp_output.unlink()
178
- temp_output = next_temp
179
-
180
- # Move the final merged file to the output location
181
- if temp_output != output_file:
182
- temp_output.replace(output_file)
183
-
184
- print(f"✅ All FBM files merged successfully!", flush=True)
185
- print(f"📊 Merged FBM file: {output_file}", flush=True)
186
- print(f"📈 Merged {len(fbm_files)} FBM files", flush=True)
187
-
188
- except Exception as e:
189
- logger.error(f"Error during FBM merge operation: {e}")
190
- import traceback
191
- logger.debug(traceback.format_exc())
192
-
193
-
194
111
  def cmd_run(args):
195
112
  base_dir = getProjectRoot()
196
113
  if base_dir is None:
@@ -251,28 +168,7 @@ _commands = [
251
168
  help="Output directory for merged report (optional)"
252
169
  )
253
170
  ]
254
- ),
255
- dict(
256
- action=cmd_mergefbm,
257
- command="mergefbm",
258
- help="merge all FBM files in the specified folder and its subfolders using sum mode",
259
- flags=[
260
- dict(
261
- name=["path"],
262
- args=["-p", "--path"],
263
- type=str,
264
- required=True,
265
- help="Path to the folder containing FBM files to merge"
266
- ),
267
- dict(
268
- name=["output"],
269
- args=["-o", "--output"],
270
- type=str,
271
- required=False,
272
- help="Output file path for merged FBM file (optional, default: merged.fbm in the input folder)"
273
- )
274
- ]
275
- )
171
+ )
276
172
  ]
277
173
 
278
174
 
@@ -189,7 +189,7 @@ class FastbotManager:
189
189
  "exec", "app_process",
190
190
  "/system/bin", "com.android.commands.monkey.Monkey",
191
191
  "--agent-u2",
192
- "reuseq",
192
+ self.options.fastbot_agent,
193
193
  "--running-minutes", f"{self.options.running_mins}",
194
194
  "--throttle", f"{self.options.throttle}",
195
195
  "--output-directory", f"{self.options.device_output_root}/output_{self.options.log_stamp}",
@@ -141,6 +141,8 @@ class Options:
141
141
  act_whitelist_file: str = None
142
142
  # Activity BlackList File
143
143
  act_blacklist_file: str = None
144
+ # Fastbot Agent
145
+ fastbot_agent: Literal["double-sarsa", "sarsa"] = "double-sarsa"
144
146
  # propertytest sub-commands args (eg. discover -s xxx -p xxx)
145
147
  propertytest_args: List[str] = None
146
148
  # period (N steps) to restart the app under test
@@ -162,6 +162,16 @@ def _set_runner_parser(subparsers: "argparse._SubParsersAction[argparse.Argument
162
162
  help="(Experimental) FBM merge at startup. When enabled, pull FBM(s) from the device at startup, merge them with local PC FBM data.",
163
163
  )
164
164
 
165
+ parser.add_argument(
166
+ "--fastbot-agent",
167
+ dest="fastbot_agent",
168
+ type=str,
169
+ choices=["double-sarsa", "sarsa"],
170
+ required=False,
171
+ default="double-sarsa",
172
+ help="Fastbot agent strategy.",
173
+ )
174
+
165
175
 
166
176
  parser.add_argument(
167
177
  "--act-whitelist-file",
@@ -301,6 +311,7 @@ def run(args=None) -> ReturnCode:
301
311
  unittest_args=args.unittest_args,
302
312
  extra_args=args.extra,
303
313
  merge_fbm=args.merge_fbm,
314
+ fastbot_agent=args.fastbot_agent,
304
315
  )
305
316
 
306
317
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "Kea2-python"
3
- version = "1.2.1"
3
+ version = "1.2.2"
4
4
  description = "A python library for supporting and customizing automated UI testing for mobile apps"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.8"
Binary file
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes