K i5#0dZddlmZddlZddlZddlZddlmZddlm Z m Z ddl m Z Gdd e Z ed dd Zed dd Zed dd Zed ddZed ddZed ddZd gZy)zAndroid.) annotationsN) lru_cache) TYPE_CHECKINGcast)PlatformDirsABCc0eZdZdZeddZeddZeddZeddZeddZ eddZ eddZ edd Z edd Z edd Zedd Zedd ZeddZeddZeddZeddZy)Androida" Follows the guidance `from here `_. Makes use of the `appname `, `version `, `ensure_exists `. cJ|jtdtdS)zd:return: data directory tied to the user, e.g. ``/data/user///files/``strfiles_append_app_name_and_versionr_android_folderselfs Z/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/platformdirs/android.py user_data_dirzAndroid.user_data_dir"00e_=N1OQXYYc|jS)z@:return: data directory shared by users, same as `user_data_dir`rrs r site_data_dirzAndroid.site_data_dir!!!rcJ|jtdtdS)z :return: config directory tied to the user, e.g. ``/data/user///shared_prefs/`` r shared_prefsrrs ruser_config_dirzAndroid.user_config_dir!s" 00e_=N1OQ_``rc|jS)zH:return: config directory shared by the users, same as `user_config_dir`)rrs rsite_config_dirzAndroid.site_config_dir)s###rcJ|jtdtdS)ze:return: cache directory tied to the user, e.g.,``/data/user///cache/``r 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_dir8rrcv|j}|jr tjj |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=/ "" <<77<<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_dirMr4rctS)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 %&&rcy)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-rcv|j}|jr tjj |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_dirfr0rc|jS)zF:return: runtime directory shared by users, same as `user_runtime_dir`)rFrs rsite_runtime_dirzAndroid.site_runtime_dirqs$$$rNreturnr )__name__ __module__ __qualname____doc__propertyrrrrr"r$r&r/r3r7r:r=r@rCrFrHrBrrr r sMZZ""aa$$ZZ##""++++**((''--%%rr )maxsizecd}tsM ddlm}td|j }|j j j}|; ddl m }|d}|j j j}|Stjd}tjD])}|j|s|j!dd}nd}|Ttjd}tjD]*}|j|s|j!dd}|Sd}|S#t$rd}YwxYw#t$rd}YwxYw) 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)randroidrRrgetApplicationContext getFilesDir getParentFilegetAbsolutePath ExceptionjniusrUrecompilesysr,matchsplit)resultrRcontextrUpatternr,s rrrwsfF   )4i6U6U6WXG((*88:JJLF~  ( 9:G((*88:JJLF~**@AHH D}}T"H-a0  F ~**WXHH D}}T"H-a0 M   F MA F  F s$A E:E E E EEc ddlm}|d}|d}|j|jj }|S#t $rd}Y|SwxYw)z,:return: documents folder for the Android OSrrTrSandroid.os.Environmentz/storage/emulated/0/Documents)r\rUgetExternalFilesDirDIRECTORY_DOCUMENTSrZr[)rUrc environment documents_dirs rr2r2c8#56 89 $889X9XYiik   87 8?A AAc ddlm}|d}|d}|j|jj }|S#t $rd}Y|SwxYw)z,:return: downloads folder for the Android OSrrTrSrfz/storage/emulated/0/Downloads)r\rUrgDIRECTORY_DOWNLOADSrZr[)rUrcri downloads_dirs rr6r6rkrlc ddlm}|d}|d}|j|jj }|S#t $rd}Y|SwxYw)z+:return: pictures folder for the Android OSrrTrSrfz/storage/emulated/0/Pictures)r\rUrgDIRECTORY_PICTURESrZr[)rUrcri pictures_dirs rr9r9sc6#56 89 #77 8V8VWggi   65 6rlc ddlm}|d}|d}|j|jj }|S#t $rd}Y|SwxYw)z):return: videos folder for the Android OSrrTrSrfz/storage/emulated/0/DCIM/Camera)r\rUrgDIRECTORY_DCIMrZr[)rUrcri videos_dirs rr<r<sc7#56 89 !55k6P6PQaac   76 7rlc ddlm}|d}|d}|j|jj }|S#t $rd}Y|SwxYw)z(:return: music folder for the Android OSrrTrSrfz/storage/emulated/0/Music)r\rUrgDIRECTORY_MUSICrZr[)rUrcri music_dirs rr?r?sc0#56 89  44[5P5PQaac   0/ 0rl)rJz str | NonerI)rN __future__rr+r]r_ functoolsrtypingrrapirr rr2r6r9r<r?__all__rBrrr~s" & f%of%R 1,,^ 1   1   1   1   1    r