TrigDroid Module

The main TrigDroid public API module provides classes and functions for interacting with the framework.

Main API

Main TrigDroid API for programmatic usage.

class trigdroid.api.main.TrigDroidAPI(config, device=None, logger=None)[source]

Bases: object

Main API class for TrigDroid library usage.

This class provides a clean, context-manager-based interface for running TrigDroid tests programmatically.

Examples

# Basic usage config = TestConfiguration(package=’com.example.app’) with TrigDroidAPI(config) as api:

result = api.run_tests()

# Advanced usage with custom device device_manager = DeviceManager() device = device_manager.connect_to_device(‘emulator-5554’)

config = TestConfiguration(

package=’com.example.app’, acceleration=5, battery_rotation=3, min_runtime=2

)

with TrigDroidAPI(config, device=device) as api:

result = api.run_tests()

# Async usage async with TrigDroidAPI(config) as api:

result = await api.run_tests_async()

Parameters:
__init__(config, device=None, logger=None)[source]

Initialize TrigDroid API.

Parameters:
__enter__()[source]

Enter context manager.

Return type:

TrigDroidAPI

__exit__(exc_type, exc_val, exc_tb)[source]

Exit context manager with cleanup.

async __aenter__()[source]

Async context manager entry.

Return type:

TrigDroidAPI

async __aexit__(exc_type, exc_val, exc_tb)[source]

Async context manager exit.

run_tests()[source]

Run TrigDroid tests synchronously.

Returns:

TestResult object containing test results and metadata

Raises:
Return type:

TestResult

async run_tests_async()[source]

Run TrigDroid tests asynchronously.

Returns:

TestResult object containing test results and metadata

Return type:

TestResult

get_device_info()[source]

Get information about the connected Android device.

Returns:

Dictionary containing device information

Return type:

Dict[str, Any]

list_installed_packages()[source]

Get list of installed packages on the device.

Returns:

List of package names

Return type:

List[str]

is_package_installed(package_name)[source]

Check if a package is installed on the device.

Parameters:

package_name (str) – Package name to check

Returns:

True if package is installed, False otherwise

Return type:

bool

install_package(apk_path)[source]

Install an APK package on the device.

Parameters:

apk_path (str) – Path to APK file

Returns:

True if installation successful, False otherwise

Return type:

bool

trigdroid.api.main.quick_test(package, device_id=None, **test_options)[source]

Quick test function for simple use cases.

Parameters:
  • package (str) – Package name to test

  • device_id (str | None) – Optional device ID

  • **test_options – Additional test configuration options

Returns:

TestResult object

Return type:

TestResult

Example

result = quick_test(‘com.example.app’, acceleration=5, battery_rotation=3)

Configuration

Configuration classes for TrigDroid API.

class trigdroid.api.config.TestConfiguration(package='', device_id=None, min_runtime=1, background_time=0, acceleration=0, gyroscope=0, light=0, pressure=0, battery_rotation=0, wifi=None, data=None, bluetooth=None, bluetooth_mac=None, install_dummy_apps=<factory>, uninstall_apps=<factory>, grant_permissions=<factory>, revoke_permissions=<factory>, frida_hooks=False, frida_constants=None, adb_enabled=None, uptime_offset=0, geolocation=None, language=None, baseband=None, build_properties=<factory>, log_level=LogLevel.INFO, log_file=None, suppress_console_logs=False, extended_log_format=False, log_filter_include=<factory>, log_filter_exclude=<factory>, disable_changelog=False, changelog_file='changelog.txt', interaction=False, no_unroot=False)[source]

Bases: object

Test configuration for TrigDroid API.

This class provides a clean, type-safe interface for configuring TrigDroid tests programmatically. All parameters have sensible defaults for quick setup.

Examples

# Minimal configuration config = TestConfiguration(package=’com.example.app’)

# Full configuration config = TestConfiguration(

package=’com.example.app’, device_id=’emulator-5554’, acceleration=5, gyroscope=3, battery_rotation=4, min_runtime=5, log_level=LogLevel.DEBUG, frida_hooks=True, install_dummy_apps=[‘com.dummy.app1’, ‘com.dummy.app2’]

)

# Load from file config = TestConfiguration.from_yaml_file(‘config.yaml’)

# Convert to dictionary config_dict = config.to_dict()

Parameters:
  • package (str)

  • device_id (str | None)

  • min_runtime (int)

  • background_time (int)

  • acceleration (int)

  • gyroscope (int)

  • light (int)

  • pressure (int)

  • battery_rotation (int)

  • wifi (bool | None)

  • data (bool | None)

  • bluetooth (bool | None)

  • bluetooth_mac (str | None)

  • install_dummy_apps (List[str])

  • uninstall_apps (List[str])

  • grant_permissions (List[str])

  • revoke_permissions (List[str])

  • frida_hooks (bool)

  • frida_constants (str | None)

  • adb_enabled (bool | None)

  • uptime_offset (int)

  • geolocation (str | None)

  • language (str | None)

  • baseband (str | None)

  • build_properties (Dict[str, str])

  • log_level (LogLevel)

  • log_file (str | None)

  • suppress_console_logs (bool)

  • extended_log_format (bool)

  • log_filter_include (List[str])

  • log_filter_exclude (List[str])

  • disable_changelog (bool)

  • changelog_file (str)

  • interaction (bool)

  • no_unroot (bool)

package: str = ''
device_id: str | None = None
min_runtime: int = 1
background_time: int = 0
acceleration: int = 0
gyroscope: int = 0
light: int = 0
pressure: int = 0
battery_rotation: int = 0
wifi: bool | None = None
data: bool | None = None
bluetooth: bool | None = None
bluetooth_mac: str | None = None
install_dummy_apps: List[str]
uninstall_apps: List[str]
grant_permissions: List[str]
revoke_permissions: List[str]
frida_hooks: bool = False
frida_constants: str | None = None
adb_enabled: bool | None = None
uptime_offset: int = 0
geolocation: str | None = None
language: str | None = None
baseband: str | None = None
build_properties: Dict[str, str]
log_level: LogLevel = 'INFO'
log_file: str | None = None
suppress_console_logs: bool = False
extended_log_format: bool = False
log_filter_include: List[str]
log_filter_exclude: List[str]
disable_changelog: bool = False
changelog_file: str = 'changelog.txt'
interaction: bool = False
no_unroot: bool = False
__post_init__()[source]

Validate configuration after initialization.

is_valid()[source]

Check if configuration is valid.

Returns:

True if valid, False otherwise

Return type:

bool

property validation_errors: List[str]

Get list of validation errors.

Returns:

List of validation error messages

to_dict()[source]

Convert configuration to dictionary.

Returns:

Dictionary representation of configuration

Return type:

Dict[str, Any]

to_yaml(file_path=None)[source]

Convert configuration to YAML format.

Parameters:

file_path (str | None) – Optional path to save YAML file

Returns:

YAML string representation

Return type:

str

classmethod from_dict(data)[source]

Create configuration from dictionary.

Parameters:

data (Dict[str, Any]) – Dictionary containing configuration values

Returns:

TestConfiguration instance

Return type:

TestConfiguration

classmethod from_yaml_file(file_path)[source]

Load configuration from YAML file.

Parameters:

file_path (str) – Path to YAML configuration file

Returns:

TestConfiguration instance

Raises:

ConfigurationError – If file cannot be loaded or parsed

Return type:

TestConfiguration

classmethod from_command_line(args)[source]

Create configuration from command line arguments.

Parameters:

args (List[str]) – List of command line arguments

Returns:

TestConfiguration instance

Return type:

TestConfiguration

merge_with(other)[source]

Merge this configuration with another, with other taking precedence.

Parameters:

other (TestConfiguration) – Configuration to merge with

Returns:

New TestConfiguration instance with merged values

Return type:

TestConfiguration

copy()[source]

Create a copy of this configuration.

Returns:

New TestConfiguration instance

Return type:

TestConfiguration

__init__(package='', device_id=None, min_runtime=1, background_time=0, acceleration=0, gyroscope=0, light=0, pressure=0, battery_rotation=0, wifi=None, data=None, bluetooth=None, bluetooth_mac=None, install_dummy_apps=<factory>, uninstall_apps=<factory>, grant_permissions=<factory>, revoke_permissions=<factory>, frida_hooks=False, frida_constants=None, adb_enabled=None, uptime_offset=0, geolocation=None, language=None, baseband=None, build_properties=<factory>, log_level=LogLevel.INFO, log_file=None, suppress_console_logs=False, extended_log_format=False, log_filter_include=<factory>, log_filter_exclude=<factory>, disable_changelog=False, changelog_file='changelog.txt', interaction=False, no_unroot=False)
Parameters:
  • package (str)

  • device_id (str | None)

  • min_runtime (int)

  • background_time (int)

  • acceleration (int)

  • gyroscope (int)

  • light (int)

  • pressure (int)

  • battery_rotation (int)

  • wifi (bool | None)

  • data (bool | None)

  • bluetooth (bool | None)

  • bluetooth_mac (str | None)

  • install_dummy_apps (List[str])

  • uninstall_apps (List[str])

  • grant_permissions (List[str])

  • revoke_permissions (List[str])

  • frida_hooks (bool)

  • frida_constants (str | None)

  • adb_enabled (bool | None)

  • uptime_offset (int)

  • geolocation (str | None)

  • language (str | None)

  • baseband (str | None)

  • build_properties (Dict[str, str])

  • log_level (LogLevel)

  • log_file (str | None)

  • suppress_console_logs (bool)

  • extended_log_format (bool)

  • log_filter_include (List[str])

  • log_filter_exclude (List[str])

  • disable_changelog (bool)

  • changelog_file (str)

  • interaction (bool)

  • no_unroot (bool)

Return type:

None

Device Management

Device management classes for TrigDroid API.

class trigdroid.api.devices.AndroidDevice(device_id, logger=None)[source]

Bases: object

Represents an Android device for testing.

This class provides a simplified interface over the more complex infrastructure AndroidDevice class.

Parameters:
__init__(device_id, logger=None)[source]
Parameters:
execute_command(command)[source]

Execute ADB command on device.

Parameters:

command (str)

install_app(apk_path)[source]

Install APK on device.

Parameters:

apk_path (str)

Return type:

bool

uninstall_app(package_name)[source]

Uninstall app from device.

Parameters:

package_name (str)

Return type:

bool

is_app_installed(package_name)[source]

Check if app is installed.

Parameters:

package_name (str)

Return type:

bool

start_app(package_name)[source]

Start an application.

Parameters:

package_name (str)

Return type:

bool

stop_app(package_name)[source]

Stop an application.

Parameters:

package_name (str)

Return type:

bool

get_device_info()[source]

Get device information.

Return type:

Dict[str, str]

grant_permission(package_name, permission)[source]

Grant permission to app.

Parameters:
  • package_name (str)

  • permission (str)

Return type:

bool

revoke_permission(package_name, permission)[source]

Revoke permission from app.

Parameters:
  • package_name (str)

  • permission (str)

Return type:

bool

class trigdroid.api.devices.DeviceManager(logger=None)[source]

Bases: object

Manages Android device connections and discovery.

Parameters:

logger (Logger | None)

__init__(logger=None)[source]
Parameters:

logger (Logger | None)

list_devices()[source]

List all connected Android devices.

Returns:

List of device information dictionaries

Return type:

List[Dict[str, str]]

connect_to_device(device_id=None)[source]

Connect to a specific device or auto-select if only one available.

Parameters:

device_id (str | None) – Specific device ID to connect to, or None for auto-select

Returns:

AndroidDevice instance or None if connection fails

Return type:

AndroidDevice | None

get_device_info(device_id)[source]

Get detailed information about a device.

Parameters:

device_id (str) – Device ID to query

Returns:

Dictionary containing device information

Return type:

Dict[str, Any]

wait_for_device(device_id=None, timeout=30)[source]

Wait for a device to become available.

Parameters:
  • device_id (str | None) – Specific device to wait for, or None for any device

  • timeout (int) – Timeout in seconds

Returns:

AndroidDevice instance or None if timeout

Return type:

AndroidDevice | None

Test Results

Test result classes for TrigDroid API.

class trigdroid.api.results.TestResult(success, phase, error=None, config=None, start_time=<factory>, end_time=None, duration_seconds=None, device_info=<factory>, tests_run=<factory>, tests_passed=<factory>, tests_failed=<factory>, tests_skipped=<factory>, frida_hooks_loaded=0, frida_hooks_active=0, frida_errors=<factory>, sensor_tests_executed=<factory>, sensor_values_changed=<factory>, network_state_changes=<factory>, app_started=False, app_crashed=False, app_background_time=0.0, log_file_path=None, changelog_file_path=None, screenshot_paths=<factory>)[source]

Bases: object

Result of a TrigDroid test execution.

Contains all information about test execution including success status, timing information, configuration used, and any errors encountered.

Examples

# Successful test result = TestResult(success=True, phase=TestPhase.EXECUTION)

# Failed test result = TestResult(

success=False, phase=TestPhase.SETUP, error=”Device connection failed”, config=config

)

Parameters:
success: bool
phase: TestPhase
error: str | None = None
config: TestConfiguration | None = None
start_time: datetime
end_time: datetime | None = None
duration_seconds: float | None = None
device_info: Dict[str, Any]
tests_run: List[str]
tests_passed: List[str]
tests_failed: List[str]
tests_skipped: List[str]
frida_hooks_loaded: int = 0
frida_hooks_active: int = 0
frida_errors: List[str]
sensor_tests_executed: Dict[str, bool]
sensor_values_changed: Dict[str, int]
network_state_changes: Dict[str, bool]
app_started: bool = False
app_crashed: bool = False
app_background_time: float = 0.0
log_file_path: str | None = None
changelog_file_path: str | None = None
screenshot_paths: List[str]
__post_init__()[source]

Calculate derived fields after initialization.

mark_completed(success=None)[source]

Mark the test as completed.

Parameters:

success (bool | None) – Optional override for success status

Return type:

None

add_test_result(test_name, passed, error=None)[source]

Add result for a specific test.

Parameters:
  • test_name (str) – Name of the test

  • passed (bool) – Whether the test passed

  • error (str | None) – Optional error message

Return type:

None

skip_test(test_name, reason)[source]

Mark a test as skipped.

Parameters:
  • test_name (str) – Name of the test

  • reason (str) – Reason for skipping

Return type:

None

property total_tests: int

Total number of tests run.

property passed_tests: int

Number of tests that passed.

property failed_tests: int

Number of tests that failed.

property skipped_tests: int

Number of tests that were skipped.

property success_rate: float

Success rate as a percentage.

property result_enum: TestResult

Get the result as an enum value.

to_dict()[source]

Convert result to dictionary.

Returns:

Dictionary representation of the result

Return type:

Dict[str, Any]

summary()[source]

Get a human-readable summary of the results.

Returns:

Summary string

Return type:

str

__init__(success, phase, error=None, config=None, start_time=<factory>, end_time=None, duration_seconds=None, device_info=<factory>, tests_run=<factory>, tests_passed=<factory>, tests_failed=<factory>, tests_skipped=<factory>, frida_hooks_loaded=0, frida_hooks_active=0, frida_errors=<factory>, sensor_tests_executed=<factory>, sensor_values_changed=<factory>, network_state_changes=<factory>, app_started=False, app_crashed=False, app_background_time=0.0, log_file_path=None, changelog_file_path=None, screenshot_paths=<factory>)
Parameters:
Return type:

None

Test Runners

Test runner wrapper classes for TrigDroid API.

class trigdroid.api.runners.TestRunner(logger=None)[source]

Bases: object

High-level test runner that wraps the infrastructure layer.

This class provides a simplified interface for running TrigDroid tests while maintaining all the power of the underlying infrastructure.

Examples

# Basic usage runner = TestRunner() result = runner.run_test(config, device)

# With custom logger runner = TestRunner(logger=my_logger) result = runner.run_test(config, device)

Parameters:

logger (Logger | None)

__init__(logger=None)[source]
Parameters:

logger (Logger | None)

run_test(config, device)[source]

Run a complete TrigDroid test.

Parameters:
Returns:

TestResult containing execution details

Raises:

TestExecutionError – If test execution fails

Return type:

TestResult

validate_config(config)[source]

Validate test configuration.

Parameters:

config (TestConfiguration) – Configuration to validate

Returns:

True if valid, False otherwise

Return type:

bool

get_test_info(config)[source]

Get information about what a test would do.

Parameters:

config (TestConfiguration) – Test configuration

Returns:

Dictionary with test information

Return type:

Dict[str, Any]

Quick Start

Quick start convenience functions for TrigDroid API.

trigdroid.api.quick_start.scan_devices()[source]

Quick scan for available Android devices.

Returns:

List of device information dictionaries

Return type:

List[Dict[str, str]]

Examples

devices = scan_devices() for device in devices:

print(f”Device {device[‘id’]}: {device[‘status’]}”)

trigdroid.api.quick_start.get_connected_devices()[source]

Get only connected Android devices.

Returns:

List of connected device information dictionaries

Return type:

List[Dict[str, str]]

trigdroid.api.quick_start.auto_select_device()[source]

Automatically select a device for testing.

If only one device is connected, selects it automatically. If multiple devices are connected, returns None.

Returns:

AndroidDevice instance or None

Return type:

AndroidDevice | None

Examples

device = auto_select_device() if device:

print(f”Selected device: {device.device_id}”)

else:

print(“Please specify a device ID”)

trigdroid.api.quick_start.quick_test(package, device_id=None, acceleration=3, verbose=False)[source]

Run a quick test with minimal configuration.

Parameters:
  • package (str) – Android package name to test

  • device_id (str | None) – Device ID (auto-select if None)

  • acceleration (int) – Test elaborateness level (0-10)

  • verbose (bool) – Enable verbose logging

Returns:

TestResult with execution details

Raises:

TrigDroidError – If test setup or execution fails

Return type:

TestResult

Examples

# Test with auto-selected device result = quick_test(“com.example.app”)

# Test with specific device result = quick_test(“com.example.app”, device_id=”emulator-5554”)

# Intensive test result = quick_test(“com.example.app”, acceleration=8)

trigdroid.api.quick_start.test_package(package, config_dict=None, device_id=None)[source]

Test a package with custom configuration.

Parameters:
  • package (str) – Android package name to test

  • config_dict (Dict[str, Any] | None) – Configuration dictionary (optional)

  • device_id (str | None) – Device ID (auto-select if None)

Returns:

TestResult with execution details

Return type:

TestResult

Examples

# Test with sensor manipulation result = test_package(“com.example.app”, {

“acceleration”: 5, “sensors”: [“accelerometer”, “gyroscope”], “network_states”: [“wifi”, “data”]

})

trigdroid.api.quick_start.validate_environment()[source]

Validate that the testing environment is ready.

Returns:

Dictionary with validation results

Return type:

Dict[str, bool]

Examples

status = validate_environment() if all(status.values()):

print(“Environment is ready!”)

else:

print(“Issues found:”, [k for k, v in status.items() if not v])

trigdroid.api.quick_start.setup_environment()[source]

Attempt to setup the testing environment.

Returns:

True if setup successful, False otherwise

Return type:

bool

Examples

if setup_environment():

print(“Environment setup complete!”)

else:

print(“Setup failed - check logs”)

trigdroid.api.quick_start.get_device_info(device_id=None)[source]

Get detailed information about a device.

Parameters:

device_id (str | None) – Device ID (auto-select if None)

Returns:

Dictionary with device information

Return type:

Dict[str, Any]

Examples

info = get_device_info() print(f”Device: {info[‘model’]} running Android {info[‘version’]}”)

trigdroid.api.quick_start.list_installed_packages(device_id=None, filter_user=True)[source]

List installed packages on a device.

Parameters:
  • device_id (str | None) – Device ID (auto-select if None)

  • filter_user (bool) – Only show user-installed packages

Returns:

List of package names

Return type:

List[str]

Examples

packages = list_installed_packages() user_apps = [p for p in packages if not p.startswith(‘com.android’)]

trigdroid.api.quick_start.scan()

Quick scan for available Android devices.

Returns:

List of device information dictionaries

Return type:

List[Dict[str, str]]

Examples

devices = scan_devices() for device in devices:

print(f”Device {device[‘id’]}: {device[‘status’]}”)

trigdroid.api.quick_start.test(package, device_id=None, acceleration=3, verbose=False)

Run a quick test with minimal configuration.

Parameters:
  • package (str) – Android package name to test

  • device_id (str | None) – Device ID (auto-select if None)

  • acceleration (int) – Test elaborateness level (0-10)

  • verbose (bool) – Enable verbose logging

Returns:

TestResult with execution details

Raises:

TrigDroidError – If test setup or execution fails

Return type:

TestResult

Examples

# Test with auto-selected device result = quick_test(“com.example.app”)

# Test with specific device result = quick_test(“com.example.app”, device_id=”emulator-5554”)

# Intensive test result = quick_test(“com.example.app”, acceleration=8)

trigdroid.api.quick_start.validate()

Validate that the testing environment is ready.

Returns:

Dictionary with validation results

Return type:

Dict[str, bool]

Examples

status = validate_environment() if all(status.values()):

print(“Environment is ready!”)

else:

print(“Issues found:”, [k for k, v in status.items() if not v])

trigdroid.api.quick_start.setup()

Attempt to setup the testing environment.

Returns:

True if setup successful, False otherwise

Return type:

bool

Examples

if setup_environment():

print(“Environment setup complete!”)

else:

print(“Setup failed - check logs”)

Command Line Interface

Core Utilities

Core enumerations for TrigDroid.

class trigdroid.core.enums.LogLevel(value)[source]

Bases: Enum

Logging levels.

DEBUG = 'DEBUG'
INFO = 'INFO'
WARNING = 'WARNING'
ERROR = 'ERROR'
CRITICAL = 'CRITICAL'
class trigdroid.core.enums.TestPhase(value)[source]

Bases: Enum

Test execution phases.

SETUP = 'setup'
EXECUTION = 'execution'
TEARDOWN = 'teardown'
class trigdroid.core.enums.TestResult(value)[source]

Bases: Enum

Test execution results.

SUCCESS = 'success'
FAILURE = 'failure'
SKIPPED = 'skipped'
ERROR = 'error'
class trigdroid.core.enums.DeviceConnectionState(value)[source]

Bases: Enum

Android device connection states.

CONNECTED = 'connected'
DISCONNECTED = 'disconnected'
UNAUTHORIZED = 'unauthorized'
OFFLINE = 'offline'
class trigdroid.core.enums.SensorType(value)[source]

Bases: Enum

Android sensor types.

ACCELEROMETER = 'accelerometer'
GYROSCOPE = 'gyroscope'
LIGHT = 'light'
PRESSURE = 'pressure'
MAGNETOMETER = 'magnetometer'
TEMPERATURE = 'temperature'
PROXIMITY = 'proximity'
class trigdroid.core.enums.ConnectionType(value)[source]

Bases: Enum

Network connection types.

WIFI = 'wifi'
DATA = 'data'
BLUETOOTH = 'bluetooth'
NFC = 'nfc'
class trigdroid.core.enums.BatteryRotationLevel(value)[source]

Bases: IntEnum

Battery rotation elaborateness levels.

DISABLED = 0
SUPER_FAST = 1
FAST = 2
DETAILED = 3
SUPER_DETAILED = 4
class trigdroid.core.enums.SensorElaboratenessLevel(value)[source]

Bases: IntEnum

Sensor test elaborateness levels.

DISABLED = 0
MINIMAL = 1
LOW = 2
MEDIUM = 3
HIGH = 4
VERY_HIGH = 5
EXTREME = 6
MAXIMUM = 7
ULTRA = 8
INSANE = 9
ULTIMATE = 10
class trigdroid.core.enums.PhoneType(value)[source]

Bases: IntEnum

Phone types from Android TelephonyManager.

NONE = 0
GSM = 1
CDMA = 2
SIP = 3
class trigdroid.core.enums.NetworkType(value)[source]

Bases: IntEnum

Network types from Android TelephonyManager.

UNKNOWN = 0
GPRS = 1
EDGE = 2
UMTS = 3
CDMA = 4
EVDO_0 = 5
EVDO_A = 6
RTT = 7
HSDPA = 8
HSUPA = 9
HSPA = 10
IDEN = 11
EVDO_B = 12
LTE = 13
EHRPD = 14
HSPAP = 15
GSM = 16
TD_SCDMA = 17
IWLAN = 18
NR = 20

Resource cleanup handlers for TrigDroid.

class trigdroid.core.cleanup.CleanupManager(logger=None)[source]

Bases: object

Manages cleanup of resources during TrigDroid execution.

This class ensures that temporary files, processes, and other resources are properly cleaned up when TrigDroid exits, even if execution is interrupted.

Examples

# Register a cleanup function cleanup = CleanupManager() cleanup.register_file(“/tmp/trigdroid_temp.log”) cleanup.register_callback(lambda: print(“Cleaning up…”))

# Use as context manager with CleanupManager() as cleanup:

cleanup.register_file(temp_file) # … do work …

# Cleanup happens automatically

Parameters:

logger (Logger | None)

__init__(logger=None)[source]
Parameters:

logger (Logger | None)

__enter__()[source]

Enter context manager.

Return type:

CleanupManager

__exit__(exc_type, exc_val, exc_tb)[source]

Exit context manager and perform cleanup.

register_file(file_path)[source]

Register a file for cleanup.

Parameters:

file_path (str) – Path to file to delete on cleanup

Return type:

None

register_directory(dir_path)[source]

Register a directory for cleanup.

Parameters:

dir_path (str) – Path to directory to delete on cleanup

Return type:

None

register_callback(callback)[source]

Register a callback function for cleanup.

Parameters:

callback (Callable[[], Any]) – Function to call during cleanup

Return type:

None

register_process(process)[source]

Register a process for termination.

Parameters:

process (Any) – Process object with terminate() method

Return type:

None

register_frida_session(session)[source]

Register a Frida session for detachment.

Parameters:

session (Any) – Frida session object

Return type:

None

create_temp_file(suffix='', prefix='trigdroid_')[source]

Create a temporary file that will be cleaned up.

Parameters:
  • suffix (str) – File suffix

  • prefix (str) – File prefix

Returns:

Path to temporary file

Return type:

Path

create_temp_dir(prefix='trigdroid_')[source]

Create a temporary directory that will be cleaned up.

Parameters:

prefix (str) – Directory prefix

Returns:

Path to temporary directory

Return type:

Path

cleanup()[source]

Perform all registered cleanup operations.

Return type:

None

classmethod cleanup_all()[source]

Cleanup all active CleanupManager instances.

Return type:

None

trigdroid.core.cleanup.get_global_cleanup_manager()[source]

Get the global cleanup manager instance.

Returns:

Global CleanupManager instance

Return type:

CleanupManager

trigdroid.core.cleanup.register_cleanup_file(file_path)[source]

Register a file for cleanup using the global manager.

Parameters:

file_path (str) – Path to file to delete on cleanup

Return type:

None

trigdroid.core.cleanup.register_cleanup_dir(dir_path)[source]

Register a directory for cleanup using the global manager.

Parameters:

dir_path (str) – Path to directory to delete on cleanup

Return type:

None

trigdroid.core.cleanup.register_cleanup_callback(callback)[source]

Register a callback for cleanup using the global manager.

Parameters:

callback (Callable[[], Any]) – Function to call during cleanup

Return type:

None

trigdroid.core.cleanup.create_temp_file(suffix='', prefix='trigdroid_')[source]

Create a temporary file using the global cleanup manager.

Parameters:
  • suffix (str) – File suffix

  • prefix (str) – File prefix

Returns:

Path to temporary file

Return type:

Path

trigdroid.core.cleanup.create_temp_dir(prefix='trigdroid_')[source]

Create a temporary directory using the global cleanup manager.

Parameters:

prefix (str) – Directory prefix

Returns:

Path to temporary directory

Return type:

Path

class trigdroid.core.cleanup.TempResource(cleanup_manager=None)[source]

Bases: object

Context manager for temporary resources with automatic cleanup.

Examples

# Temporary file with TempResource.file() as temp_file:

temp_file.write_text(“test data”) # … use file …

# File is automatically deleted

# Temporary directory with TempResource.dir() as temp_dir:

(temp_dir / “test.txt”).write_text(“test”) # … use directory …

# Directory is automatically deleted

Parameters:

cleanup_manager (CleanupManager | None)

__init__(cleanup_manager=None)[source]
Parameters:

cleanup_manager (CleanupManager | None)

classmethod file(suffix='', prefix='trigdroid_')[source]

Create a temporary file resource.

Parameters:
  • suffix (str) – File suffix

  • prefix (str) – File prefix

Returns:

TempFileResource context manager

Return type:

TempFileResource

classmethod dir(prefix='trigdroid_')[source]

Create a temporary directory resource.

Parameters:

prefix (str) – Directory prefix

Returns:

TempDirResource context manager

Return type:

TempDirResource

class trigdroid.core.cleanup.TempFileResource(suffix='', prefix='trigdroid_')[source]

Bases: object

Context manager for temporary files.

Parameters:
__init__(suffix='', prefix='trigdroid_')[source]
Parameters:
class trigdroid.core.cleanup.TempDirResource(prefix='trigdroid_')[source]

Bases: object

Context manager for temporary directories.

Parameters:

prefix (str)

__init__(prefix='trigdroid_')[source]
Parameters:

prefix (str)

Exceptions

Exception classes for TrigDroid.

exception trigdroid.exceptions.TrigDroidError[source]

Bases: Exception

Base exception for TrigDroid errors.

exception trigdroid.exceptions.ConfigurationError[source]

Bases: TrigDroidError

Configuration-related errors.

exception trigdroid.exceptions.DeviceError[source]

Bases: TrigDroidError

Android device-related errors.

exception trigdroid.exceptions.TestExecutionError[source]

Bases: TrigDroidError

Test execution errors.

exception trigdroid.exceptions.FridaError[source]

Bases: TrigDroidError

Frida-related errors.

exception trigdroid.exceptions.HookError[source]

Bases: FridaError

Hook compilation or injection errors.

exception trigdroid.exceptions.NetworkError[source]

Bases: TrigDroidError

Network communication errors.

exception trigdroid.exceptions.PermissionError[source]

Bases: DeviceError

Permission-related errors.

exception trigdroid.exceptions.PackageError[source]

Bases: DeviceError

Package installation/management errors.