SYMBOL INDEX (163 symbols across 16 files) FILE: src/mackup/application.py class ApplicationProfile (line 14) | class ApplicationProfile: method __init__ (line 17) | def __init__( method get_filepaths (line 35) | def get_filepaths(self, filename: str) -> tuple[str, str]: method copy_files_to_mackup_folder (line 50) | def copy_files_to_mackup_folder(self) -> None: method copy_files_from_mackup_folder (line 126) | def copy_files_from_mackup_folder(self) -> None: method link_install (line 185) | def link_install(self) -> None: method link (line 269) | def link(self) -> None: method link_uninstall (line 348) | def link_uninstall(self) -> None: FILE: src/mackup/appsdb.py class ApplicationsDatabase (line 15) | class ApplicationsDatabase: method __init__ (line 18) | def __init__(self) -> None: method get_config_files (line 75) | def get_config_files() -> set[str]: method get_name (line 134) | def get_name(self, name: str) -> str: method get_files (line 148) | def get_files(self, name: str) -> set[str]: method get_app_names (line 162) | def get_app_names(self) -> set[str]: method get_pretty_app_names (line 178) | def get_pretty_app_names(self) -> set[str]: FILE: src/mackup/config.py class Config (line 27) | class Config: method __init__ (line 30) | def __init__(self, filename: Optional[str] = None) -> None: method engine (line 62) | def engine(self) -> str: method path (line 74) | def path(self) -> str: method directory (line 87) | def directory(self) -> str: method fullpath (line 97) | def fullpath(self) -> str: method apps_to_ignore (line 110) | def apps_to_ignore(self) -> set[str]: method apps_to_sync (line 120) | def apps_to_sync(self) -> set[str]: method _setup_parser (line 129) | def _setup_parser( method _best_config_path (line 150) | def _best_config_path(self, filename: Optional[str] = None) -> str: method _warn_on_old_config (line 214) | def _warn_on_old_config(self) -> None: method _parse_engine (line 234) | def _parse_engine(self) -> str: method _parse_path (line 258) | def _parse_path(self) -> str: method _parse_directory (line 283) | def _parse_directory(self) -> str: method _parse_apps_to_ignore (line 308) | def _parse_apps_to_ignore(self) -> set[str]: method _parse_apps_to_sync (line 325) | def _parse_apps_to_sync(self) -> set[str]: class ConfigError (line 343) | class ConfigError(Exception): FILE: src/mackup/constants.py function _get_version (line 22) | def _get_version() -> str: FILE: src/mackup/mackup.py class Mackup (line 18) | class Mackup: method __init__ (line 21) | def __init__(self, config_file: Optional[str] = None) -> None: method check_for_usable_environment (line 28) | def check_for_usable_environment(self) -> None: method check_for_usable_backup_env (line 52) | def check_for_usable_backup_env(self) -> None: method check_for_usable_restore_env (line 57) | def check_for_usable_restore_env(self) -> None: method clean_temp_folder (line 68) | def clean_temp_folder(self) -> None: method create_mackup_home (line 72) | def create_mackup_home(self) -> None: method get_apps_to_backup (line 84) | def get_apps_to_backup(self) -> set[str]: FILE: src/mackup/main.py class ColorFormatCodes (line 55) | class ColorFormatCodes: function header (line 61) | def header(text: str) -> str: function bold (line 65) | def bold(text: str) -> str: function main (line 69) | def main() -> None: FILE: src/mackup/utils.py function confirm (line 26) | def confirm(question: str) -> bool: function delete (line 54) | def delete(filepath: str) -> None: function copy (line 76) | def copy(src: str, dst: str) -> None: function link (line 120) | def link(target: str, link_to: str) -> None: function chmod (line 153) | def chmod(target: str) -> None: function error (line 189) | def error(message: str) -> NoReturn: function get_dropbox_folder_location (line 201) | def get_dropbox_folder_location() -> str: function get_google_drive_folder_location (line 228) | def get_google_drive_folder_location() -> str: function get_icloud_folder_location (line 276) | def get_icloud_folder_location() -> str: function is_process_running (line 293) | def is_process_running(process_name: str) -> bool: function remove_acl (line 316) | def remove_acl(path: str) -> None: function remove_immutable_attribute (line 336) | def remove_immutable_attribute(path: str) -> None: function can_file_be_synced_on_current_platform (line 359) | def can_file_be_synced_on_current_platform(path: str) -> bool: FILE: tests/test_application.py class TestApplicationProfile (line 13) | class TestApplicationProfile(unittest.TestCase): method setUp (line 14) | def setUp(self): method tearDown (line 38) | def tearDown(self): method test_copy_files_to_mackup_folder_permission_error (line 52) | def test_copy_files_to_mackup_folder_permission_error(self): method test_files_are_sorted_for_deterministic_processing (line 85) | def test_files_are_sorted_for_deterministic_processing(self): method test_copy_files_to_mackup_folder_permission_error_verbose (line 96) | def test_copy_files_to_mackup_folder_permission_error_verbose(self): method test_copy_files_from_mackup_folder_permission_error (line 137) | def test_copy_files_from_mackup_folder_permission_error(self): method test_copy_files_from_mackup_folder_permission_error_verbose (line 170) | def test_copy_files_from_mackup_folder_permission_error_verbose(self): method test_copy_files_to_mackup_folder_with_directory_permission_error (line 211) | def test_copy_files_to_mackup_folder_with_directory_permission_error(s... method test_copy_files_from_mackup_folder_with_directory_permission_error (line 245) | def test_copy_files_from_mackup_folder_with_directory_permission_error... method test_copy_files_to_mackup_folder_dry_run_no_permission_error (line 279) | def test_copy_files_to_mackup_folder_dry_run_no_permission_error(self): method test_copy_files_from_mackup_folder_dry_run_no_permission_error (line 316) | def test_copy_files_from_mackup_folder_dry_run_no_permission_error(self): method test_copy_files_to_mackup_folder_decline_replace_skips_copy (line 353) | def test_copy_files_to_mackup_folder_decline_replace_skips_copy(self): method test_copy_files_from_mackup_folder_decline_replace_skips_copy (line 375) | def test_copy_files_from_mackup_folder_decline_replace_skips_copy(self): method test_link_uninstall_mackup_not_a_link (line 397) | def test_link_uninstall_mackup_not_a_link(self): method test_link_uninstall_mackup_points_to_wrong_target (line 437) | def test_link_uninstall_mackup_points_to_wrong_target(self): method test_link_uninstall_mackup_points_correctly (line 481) | def test_link_uninstall_mackup_points_correctly(self): method test_copy_files_to_mackup_folder_skips_already_linked_files (line 517) | def test_copy_files_to_mackup_folder_skips_already_linked_files(self): method test_copy_files_to_mackup_folder_skips_already_linked_files_verbose (line 563) | def test_copy_files_to_mackup_folder_skips_already_linked_files_verbos... method test_copy_files_to_mackup_folder_backs_up_symlink_to_different_location (line 620) | def test_copy_files_to_mackup_folder_backs_up_symlink_to_different_loc... FILE: tests/test_appsdb_xdg.py class TestApplicationsDatabaseXDG (line 9) | class TestApplicationsDatabaseXDG(unittest.TestCase): method setUp (line 12) | def setUp(self): method tearDown (line 23) | def tearDown(self): method test_legacy_custom_apps_dir (line 34) | def test_legacy_custom_apps_dir(self): method test_xdg_custom_apps_dir (line 42) | def test_xdg_custom_apps_dir(self): method test_legacy_takes_priority_over_xdg (line 52) | def test_legacy_takes_priority_over_xdg(self): method test_both_directories_merged (line 69) | def test_both_directories_merged(self): method test_xdg_default_fallback (line 81) | def test_xdg_default_fallback(self): method test_applications_database_loads_xdg_apps (line 93) | def test_applications_database_loads_xdg_apps(self): method test_applications_database_priority_loads_legacy (line 104) | def test_applications_database_priority_loads_legacy(self): FILE: tests/test_backup_after_link_install.py class TestBackupAfterLinkInstall (line 14) | class TestBackupAfterLinkInstall(unittest.TestCase): method setUp (line 17) | def setUp(self): method _cleanup_directory (line 39) | def _cleanup_directory(self, directory): method _restore_home (line 44) | def _restore_home(self, original_home): method tearDown (line 51) | def tearDown(self): method test_backup_after_link_install_does_not_delete_mackup_files (line 55) | def test_backup_after_link_install_does_not_delete_mackup_files(self): method test_backup_after_link_install_verbose_shows_skip_message (line 136) | def test_backup_after_link_install_verbose_shows_skip_message(self): FILE: tests/test_cli.py class TestCLI (line 13) | class TestCLI(unittest.TestCase): method setUp (line 16) | def setUp(self): method tearDown (line 68) | def tearDown(self): method test_backup_creates_mackup_folder (line 93) | def test_backup_creates_mackup_folder(self): method test_backup_copies_file (line 105) | def test_backup_copies_file(self): method test_restore_copies_file_back (line 126) | def test_restore_copies_file_back(self): method test_backup_and_restore_full_workflow (line 153) | def test_backup_and_restore_full_workflow(self): method test_backup_preserves_file_permissions (line 187) | def test_backup_preserves_file_permissions(self): method test_restore_with_missing_backup (line 205) | def test_restore_with_missing_backup(self): method test_backup_with_folder (line 222) | def test_backup_with_folder(self): method test_restore_with_folder (line 259) | def test_restore_with_folder(self): method test_restore_fails_when_mackup_folder_missing (line 302) | def test_restore_fails_when_mackup_folder_missing(self): method test_force_and_force_no_are_mutually_exclusive (line 315) | def test_force_and_force_no_are_mutually_exclusive(self): FILE: tests/test_config.py function assert_correct_config_read (line 18) | def assert_correct_config_read(testtype): class TestConfig (line 22) | class TestConfig(unittest.TestCase): method setUp (line 23) | def setUp(self): method test_config_envvar (line 31) | def test_config_envvar(self): method test_config_xdg (line 35) | def test_config_xdg(self): method test_config_find_correct_default (line 39) | def test_config_find_correct_default(self): method test_config_finds_correct_envvar (line 63) | def test_config_finds_correct_envvar(self): method test_config_no_config (line 72) | def test_config_no_config(self): method test_config_empty (line 92) | def test_config_empty(self): method test_config_engine_dropbox (line 110) | def test_config_engine_dropbox(self): method test_config_engine_filesystem_absolute (line 128) | def test_config_engine_filesystem_absolute(self): method test_config_engine_filesystem (line 146) | def test_config_engine_filesystem(self): method test_config_engine_google_drive (line 168) | def test_config_engine_google_drive(self): method test_config_engine_icloud (line 186) | def test_config_engine_icloud(self): method test_config_engine_filesystem_no_path (line 206) | def test_config_engine_filesystem_no_path(self): method test_config_engine_unknown (line 210) | def test_config_engine_unknown(self): method test_config_apps_to_ignore (line 214) | def test_config_apps_to_ignore(self): method test_config_apps_to_sync (line 232) | def test_config_apps_to_sync(self): method test_config_apps_to_ignore_and_sync (line 250) | def test_config_apps_to_ignore_and_sync(self): method test_config_old_config (line 268) | def test_config_old_config(self): FILE: tests/test_config_file_option.py class TestConfigFileOption (line 11) | class TestConfigFileOption(unittest.TestCase): method setUp (line 12) | def setUp(self): method test_config_with_relative_path (line 20) | def test_config_with_relative_path(self): method test_config_with_absolute_path (line 26) | def test_config_with_absolute_path(self): method test_mackup_with_config_file (line 33) | def test_mackup_with_config_file(self): method test_mackup_without_config_file (line 42) | def test_mackup_without_config_file(self): method test_config_file_does_not_exist (line 51) | def test_config_file_does_not_exist(self): FILE: tests/test_constants.py class TestConstants (line 7) | class TestConstants(unittest.TestCase): method test_get_version_returns_metadata_version (line 8) | def test_get_version_returns_metadata_version(self): method test_get_version_falls_back_when_metadata_missing (line 12) | def test_get_version_falls_back_when_metadata_missing(self): FILE: tests/test_main.py class TestMain (line 6) | class TestMain(unittest.TestCase): method test_main_header (line 7) | def test_main_header(self): method test_main_bold (line 10) | def test_main_bold(self): FILE: tests/test_utils.py function convert_to_octal (line 13) | def convert_to_octal(file_name): class TestMackup (line 20) | class TestMackup(unittest.TestCase): method test_confirm_yes (line 21) | def test_confirm_yes(self): method test_confirm_no (line 26) | def test_confirm_no(self): method test_confirm_typo (line 31) | def test_confirm_typo(self): method test_delete_file (line 36) | def test_delete_file(self): method test_delete_folder_recursively (line 49) | def test_delete_folder_recursively(self): method test_copy_file (line 79) | def test_copy_file(self): method test_copy_fail (line 105) | def test_copy_fail(self): method test_copy_file_to_dir (line 136) | def test_copy_file_to_dir(self): method test_copy_dir (line 172) | def test_copy_dir(self): method test_copy_dir_that_exists (line 206) | def test_copy_dir_that_exists(self): method test_link_file (line 250) | def test_link_file(self): method test_chmod_file (line 277) | def test_chmod_file(self): method test_error (line 314) | def test_error(self): method test_failed_backup_location (line 319) | def test_failed_backup_location(self): method test_dropbox_folder_location_with_malformed_host_db (line 342) | def test_dropbox_folder_location_with_malformed_host_db(self): method test_dropbox_folder_location_with_invalid_base64 (line 355) | def test_dropbox_folder_location_with_invalid_base64(self): method test_google_drive_folder_location_with_missing_path_entry (line 368) | def test_google_drive_folder_location_with_missing_path_entry(self): method test_google_drive_folder_location_uses_user_default_db (line 391) | def test_google_drive_folder_location_uses_user_default_db(self): method test_is_process_running (line 415) | def test_is_process_running(self): method test_can_file_be_synced_on_current_platform (line 420) | def test_can_file_be_synced_on_current_platform(self):