\bg8#dZddlmZddlZddlZddlZddlmZddlm Z m Z ddl m Z Gdd e Z ed dd Zed ddZed ddZed ddZed ddZed ddZd gZdS)zAndroid.) annotationsN) lru_cache) TYPE_CHECKINGcast)PlatformDirsABCceZdZdZeddZeddZeddZeddZeddZ edd Z edd Z edd Z edd Z edd ZeddZeddZeddZeddZeddZeddZdS)Androida" Follows the guidance `from here `_. Makes use of the `appname `, `version `, `ensure_exists `. returnstrcl|tttdS)zd:return: data directory tied to the user, e.g. ``/data/user///files/``files_append_app_name_and_versionrr _android_folderselfs x/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/setuptools/_vendor/platformdirs/android.py user_data_dirzAndroid.user_data_dir*00c?;L;L1M1MwWWWc|jS)z@:return: data directory shared by users, same as `user_data_dir`rrs r site_data_dirzAndroid.site_data_dir !!rcl|tttdS)z :return: config directory tied to the user, e.g. ``/data/user///shared_prefs/`` shared_prefsrrs ruser_config_dirzAndroid.user_config_dir!s* 00c?;L;L1M1M~^^^rc|jS)zH:return: config directory shared by the users, same as `user_config_dir`)rrs rsite_config_dirzAndroid.site_config_dir)s ##rcl|tttdS)ze:return: cache directory tied to the user, e.g.,``/data/user///cache/``cacherrs ruser_cache_dirzAndroid.user_cache_dir.rrc|jS)zB:return: cache directory shared by users, same as `user_cache_dir`)r#rs rsite_cache_dirzAndroid.site_cache_dir3s ""rc|jS)zB:return: state directory tied to the user, same as `user_data_dir`rrs ruser_state_dirzAndroid.user_state_dir8rrcb|j}|jr tj|d}|S)z :return: log directory tied to the user, same as `user_cache_dir` if not opinionated else ``log`` in it, e.g. ``/data/user///cache//log`` logr#opinionospathjoinrr-s r user_log_dirzAndroid.user_log_dir=0 " < -7<<e,,D rctS)zT:return: documents directory tied to the user e.g. ``/storage/emulated/0/Documents``)_android_documents_folderrs ruser_documents_dirzAndroid.user_documents_dirH)***rctS)zT:return: downloads directory tied to the user e.g. ``/storage/emulated/0/Downloads``)_android_downloads_folderrs ruser_downloads_dirzAndroid.user_downloads_dirMr5rctS)zR:return: pictures directory tied to the user e.g. ``/storage/emulated/0/Pictures``)_android_pictures_folderrs ruser_pictures_dirzAndroid.user_pictures_dirRs()))rctS)zS:return: videos directory tied to the user e.g. ``/storage/emulated/0/DCIM/Camera``)_android_videos_folderrs ruser_videos_dirzAndroid.user_videos_dirWs&'''rctS)zL:return: music directory tied to the user e.g. ``/storage/emulated/0/Music``)_android_music_folderrs ruser_music_dirzAndroid.user_music_dir\s%&&&rcdS)zP:return: desktop directory tied to the user e.g. ``/storage/emulated/0/Desktop``z/storage/emulated/0/Desktoprs ruser_desktop_dirzAndroid.user_desktop_diras -,rcb|j}|jr tj|d}|S)z :return: runtime directory tied to the user, same as `user_cache_dir` if not opinionated else ``tmp`` in it, e.g. ``/data/user///cache//tmp`` tmpr*r/s ruser_runtime_dirzAndroid.user_runtime_dirfr1rc|jS)zF:return: runtime directory shared by users, same as `user_runtime_dir`)rGrs rsite_runtime_dirzAndroid.site_runtime_dirqs $$rNr r )__name__ __module__ __qualname____doc__propertyrrrr r#r%r'r0r4r8r;r>rArDrGrIrCrrr r s*XXXXX"""X"___X_$$$X$XXXXX###X#"""X"X+++X++++X+***X*(((X('''X'---X-X%%%X%%%rr )maxsizer str | Nonec"d}tst ddlm}td|}|}n#t$rd}YnwxYw|] ddl m }|d}|}n#t$rd}YnwxYw|Wtj d}tjD]4}||r|dd}n5d}|Wtj d}tjD]4}||r|dd}n5d}|S) zE:return: base folder for the Android OS or None if it cannot be foundNr) mActivityandroid.content.Context autoclassz /data/(data|user/\d+)/(.+)/filesz/filesz7/mnt/expand/[a-fA-F0-9-]{36}/(data|user/\d+)/(.+)/files)randroidrSrgetApplicationContext getFilesDir getParentFilegetAbsolutePath ExceptionjniusrVrecompilesysr-matchsplit)resultrScontextrVpatternr-s rrrwsF   ) ) ) ) ) )4i6U6U6W6WXXG((**88::JJLLFF   FFF  ~  ( ' ' ' ' 'i 9::G((**88::JJLLFF   FFF  ~*@AAH  D}}T"" H--a0 F ~*WXXH  D}}T"" H--a0 F Ms%A A,, A;:A;A C CCr c ddlm}|d}|d}||j}n#t $rd}YnwxYw|S)z,:return: documents folder for the Android OSrrUrTandroid.os.Environmentz/storage/emulated/0/Documents)r]rVgetExternalFilesDirDIRECTORY_DOCUMENTSr[r\)rVrd environment documents_dirs rr3r38######)566i 899 $889XYYiikk 8887 8 AA AAc ddlm}|d}|d}||j}n#t $rd}YnwxYw|S)z,:return: downloads folder for the Android OSrrUrTrgz/storage/emulated/0/Downloads)r]rVrhDIRECTORY_DOWNLOADSr[r\)rVrdrj downloads_dirs rr7r7rlrmc ddlm}|d}|d}||j}n#t $rd}YnwxYw|S)z+:return: pictures folder for the Android OSrrUrTrgz/storage/emulated/0/Pictures)r]rVrhDIRECTORY_PICTURESr[r\)rVrdrj pictures_dirs rr:r:s6######)566i 899 #77 8VWWggii 6665 6 rmc ddlm}|d}|d}||j}n#t $rd}YnwxYw|S)z):return: videos folder for the Android OSrrUrTrgz/storage/emulated/0/DCIM/Camera)r]rVrhDIRECTORY_DCIMr[r\)rVrdrj videos_dirs rr=r=s7######)566i 899 !55k6PQQaacc 7776 7 rmc ddlm}|d}|d}||j}n#t $rd}YnwxYw|S)z(:return: music folder for the Android OSrrUrTrgz/storage/emulated/0/Music)r]rVrhDIRECTORY_MUSICr[r\)rVrdrj music_dirs rr@r@s0######)566i 899  44[5PQQaacc 000/ 0 rm)r rQrJ)rN __future__rr,r^r` functoolsrtypingrrapirr rr3r7r:r=r@__all__rCrrrs"""""" &&&&&&&& f%f%f%f%f%of%f%f%R 1,,,,^ 1     1     1     1     1      r