\h+,dZddlmZddlZddlZddlZddlmZddlm Z ddl m Z Gdd e Z ed dd Z ed dd Zed dd Zed ddZed ddZed ddZd gZy)zAndroid.) annotationsN) lru_cache)cast)PlatformDirsABCc eZdZdZeddZeddZeddZeddZeddZ eddZ eddZ edd Z edd Z edd Zedd Zedd ZeddZeddZy)Androida$ Follows the guidance `from here `_. Makes use of the `appname `, `version `, `ensure_exists `. cR|jtttdS)zd:return: data directory tied to the user, e.g. ``/data/user///files/``files_append_app_name_and_versionrstr_android_folderselfs c/root/niggaflix-v3/playground/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/android.py user_data_dirzAndroid.user_data_dir!00c?;L1MwWWc|jS)z@:return: data directory shared by users, same as `user_data_dir`rrs r site_data_dirzAndroid.site_data_dir!!!rcR|jtttdS)z :return: config directory tied to the user, e.g. ``/data/user///shared_prefs/`` shared_prefsr rs ruser_config_dirzAndroid.user_config_dirs! 00c?;L1M~^^rc|jS)zH:return: config directory shared by the users, same as `user_config_dir`)rrs rsite_config_dirzAndroid.site_config_dir's###rcR|jtttdS)zj:return: cache directory tied to the user, e.g. e.g. ``/data/user///cache/``cacher rs 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_dir1s"""rc|jS)zB:return: state directory tied to the user, same as `user_data_dir`rrs ruser_state_dirzAndroid.user_state_dir6rrcv|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_dirF )**rctS)zT:return: downloads directory tied to the user e.g. ``/storage/emulated/0/Downloads``)_android_downloads_folderrs ruser_downloads_dirzAndroid.user_downloads_dirKr3rctS)zR:return: pictures directory tied to the user e.g. ``/storage/emulated/0/Pictures``)_android_pictures_folderrs ruser_pictures_dirzAndroid.user_pictures_dirPs ())rctS)zS:return: videos directory tied to the user e.g. ``/storage/emulated/0/DCIM/Camera``)_android_videos_folderrs ruser_videos_dirzAndroid.user_videos_dirUs &''rctS)zL:return: music directory tied to the user e.g. ``/storage/emulated/0/Music``)_android_music_folderrs ruser_music_dirzAndroid.user_music_dirZs %&&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_dir_r/rNreturnr)__name__ __module__ __qualname____doc__propertyrrrrr!r#r%r.r2r6r9r<r?rBrrr r s%XX""__$$XX##""++++**((''rr )maxsizecF ddlm}|d}|jjj }|S#t $rYt jd}tjD]+}|j|s|jdd}Y|Sd}Y|SwxYw)zE:return: base folder for the Android OS or None if it cannot be foundr autoclassandroid.content.Contextz /data/(data|user/\d+)/(.+)/filesz/filesN) jniusrN getFilesDir getParentFilegetAbsolutePath Exceptionrecompilesysr+matchsplit)rNcontextresultpatternr+s rrrks#56$002@@BRRT M **@AHH D}}T"H-a0 M   F Ms:>AB B B B c ddlm}|d}|d}|j|jj }|S#t $rd}Y|SwxYw)z,:return: documents folder for the Android OSrrMrOandroid.os.Environmentz/storage/emulated/0/Documents)rPrNgetExternalFilesDirDIRECTORY_DOCUMENTSrSrT)rNrZ environment documents_dirs rr1r1c8#56 89 $889X9XYiik   87 8?A AAc ddlm}|d}|d}|j|jj }|S#t $rd}Y|SwxYw)z,:return: downloads folder for the Android OSrrMrOr^z/storage/emulated/0/Downloads)rPrNr_DIRECTORY_DOWNLOADSrSrT)rNrZra downloads_dirs rr5r5rcrdc ddlm}|d}|d}|j|jj }|S#t $rd}Y|SwxYw)z+:return: pictures folder for the Android OSrrMrOr^z/storage/emulated/0/Pictures)rPrNr_DIRECTORY_PICTURESrSrT)rNrZra pictures_dirs rr8r8sc6#56 89 #77 8V8VWggi   65 6rdc ddlm}|d}|d}|j|jj }|S#t $rd}Y|SwxYw)z):return: videos folder for the Android OSrrMrOr^z/storage/emulated/0/DCIM/Camera)rPrNr_DIRECTORY_DCIMrSrT)rNrZra videos_dirs rr;r;sc7#56 89 !55k6P6PQaac   76 7rdc ddlm}|d}|d}|j|jj }|S#t $rd}Y|SwxYw)z(:return: music folder for the Android OSrrMrOr^z/storage/emulated/0/Music)rPrNr_DIRECTORY_MUSICrSrT)rNrZra music_dirs rr>r>sc0#56 89  44[5P5PQaac   0/ 0rd)rDz str | NonerC)rH __future__rr*rUrW functoolsrtypingrapirr rr1r5r8r;r>__all__rJrrrvs"  [o[| 1( 1   1   1   1   1    r