Ë âkŒ^¡âkãó,—dZddlmZddlZddlZddlZddlmZddlm Z ddl m Z Gd„d e «Z ed¬ «dd „«Z ed¬ «dd „«Zed¬ «dd „«Zed¬ «dd„«Zed¬ «dd„«Zed¬ «dd„«Zd gZy)zAndroid.é)Ú annotationsN)Ú lru_cache)Úcasté)ÚPlatformDirsABCcó0—eZdZdZedd„«Zedd„«Zedd„«Zedd„«Zedd„«Z edd„«Z edd„«Z edd „«Z edd „«Z edd „«Zedd „«Zedd „«Zedd„«Zedd„«Zedd„«Zedd„«Zy)ÚAndroida$ Follows the guidance `from here `_. Makes use of the `appname `, `version `, `ensure_exists `. cóR—|jttt««d«S)zd:return: data directory tied to the user, e.g. ``/data/user///files/``Úfiles©Ú_append_app_name_and_versionrÚstrÚ_android_folder©Úselfs ú9/usr/lib/python3.12/site-packages/platformdirs/android.pyÚ user_data_dirzAndroid.user_data_diró!€ð×0Ñ0´´c¼?Ó;LÓ1MÈwÓWÐWócó—|jS)z@:return: data directory shared by users, same as `user_data_dir`©rrs rÚ site_data_dirzAndroid.site_data_diró€ð×!Ñ!Ð!rcóR—|jttt««d«S)z‡ :return: config directory tied to the user, e.g. ``/data/user///shared_prefs/`` Ú shared_prefsr rs rÚuser_config_dirzAndroid.user_config_dir s!€ð ×0Ñ0´´c¼?Ó;LÓ1MÈ~Ó^Ð^rcó—|jS)zH:return: config directory shared by the users, same as `user_config_dir`)rrs rÚsite_config_dirzAndroid.site_config_dir(s€ð×#Ñ#Ð#rcóR—|jttt««d«S)zj:return: cache directory tied to the user, e.g. e.g. ``/data/user///cache/``Úcacher rs rÚuser_cache_dirzAndroid.user_cache_dir-rrcó—|jS)zB:return: cache directory shared by users, same as `user_cache_dir`)r!rs rÚsite_cache_dirzAndroid.site_cache_dir2s€ð×"Ñ"Ð"rcó—|jS)zB:return: state directory tied to the user, same as `user_data_dir`rrs rÚuser_state_dirzAndroid.user_state_dir7rrcóv—|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`` Úlog©r!ÚopinionÚosÚpathÚjoin©rr+s rÚ user_log_dirzAndroid.user_log_dir<ó/€ð ×"Ñ"ˆØ �<Š<Ü—7‘7—<‘<  eÓ,ˆD؈ rcó—t«S)zT:return: documents directory tied to the user e.g. ``/storage/emulated/0/Documents``)Ú_android_documents_folderrs rÚuser_documents_dirzAndroid.user_documents_dirGó €ô)Ó*Ð*rcó—t«S)zT:return: downloads directory tied to the user e.g. ``/storage/emulated/0/Downloads``)Ú_android_downloads_folderrs rÚuser_downloads_dirzAndroid.user_downloads_dirLr3rcó—t«S)zR:return: pictures directory tied to the user e.g. ``/storage/emulated/0/Pictures``)Ú_android_pictures_folderrs rÚuser_pictures_dirzAndroid.user_pictures_dirQs €ô(Ó)Ð)rcó—t«S)zS:return: videos directory tied to the user e.g. ``/storage/emulated/0/DCIM/Camera``)Ú_android_videos_folderrs rÚuser_videos_dirzAndroid.user_videos_dirVs €ô&Ó'Ð'rcó—t«S)zL:return: music directory tied to the user e.g. ``/storage/emulated/0/Music``)Ú_android_music_folderrs rÚuser_music_dirzAndroid.user_music_dir[s €ô%Ó&Ð&rcó—y)zP:return: desktop directory tied to the user e.g. ``/storage/emulated/0/Desktop``z/storage/emulated/0/Desktop©rs rÚuser_desktop_dirzAndroid.user_desktop_dir`s€ð-rcóv—|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 rÚuser_runtime_dirzAndroid.user_runtime_direr/rcó—|jS)zF:return: runtime directory shared by users, same as `user_runtime_dir`)rErs rÚsite_runtime_dirzAndroid.site_runtime_dirps€ð×$Ñ$Ð$rN©Úreturnr)Ú__name__Ú __module__Ú __qualname__Ú__doc__Úpropertyrrrrr!r#r%r.r2r6r9r<r?rBrErGrArrr r sM„ñðòXóðXðò"óð"ðò_óð_ðò$óð$ðòXóðXðò#óð#ðò"óð"ðòóððò+óð+ðò+óð+ðò*óð*ðò(óð(ðò'óð'ðò-óð-ðòóððò%óñ%rr )ÚmaxsizecóF— ddlm}|d«}|j«j«j «}|S#t $rYt jd«}tjD]+}|j|«sŒ|jd«d}Y|Sd}Y|SwxYw)zE:return: base folder for the Android OS or None if it cannot be foundr©Ú autoclassúandroid.content.Contextz /data/(data|user/\d+)/(.+)/filesz/filesN) ÚjniusrRÚ getFilesDirÚ getParentFileÚgetAbsolutePathÚ ExceptionÚreÚcompileÚsysr+ÚmatchÚsplit)rRÚcontextÚresultÚpatternr+s rrrvsŸ€ðå#áÐ5Ó6ˆØ$×0Ñ0Ó2×@Ñ@ÓB×RÑRÓTˆð €Møô òä—*‘*Ð@ÓAˆÜ—H”HˆDØ�}‰}˜TÕ"ØŸ™ HÓ-¨aÑ0�Ùð €Mð ð ‰FØ €Mðús‚:>¾AB ÂB ÂB ÂB cóª— ddlm}|d«}|d«}|j|j«j «}|S#t $rd}Y|SwxYw)z,:return: documents folder for the Android OSrrQrSúandroid.os.Environmentz/storage/emulated/0/Documents)rTrRÚgetExternalFilesDirÚDIRECTORY_DOCUMENTSrWrX)rRr^Ú environmentÚ documents_dirs rr1r1‹óc€ð8Ý#áÐ5Ó6ˆÙÐ 8Ó9ˆ Ø$×8Ñ8¸×9XÑ9XÓY×iÑiÓkˆ ð Ðøô ò8Ø7‰ à Ðð8úó‚?AÁ AÁAcóª— ddlm}|d«}|d«}|j|j«j «}|S#t $rd}Y|SwxYw)z,:return: downloads folder for the Android OSrrQrSrbz/storage/emulated/0/Downloads)rTrRrcÚDIRECTORY_DOWNLOADSrWrX)rRr^reÚ downloads_dirs rr5r5›rgrhcóª— ddlm}|d«}|d«}|j|j«j «}|S#t $rd}Y|SwxYw)z+:return: pictures folder for the Android OSrrQrSrbz/storage/emulated/0/Pictures)rTrRrcÚDIRECTORY_PICTURESrWrX)rRr^reÚ pictures_dirs rr8r8«sc€ð6Ý#áÐ5Ó6ˆÙÐ 8Ó9ˆ Ø#×7Ñ7¸ ×8VÑ8VÓW×gÑgÓiˆ ð Ðøô ò6Ø5‰ à Ðð6úrhcóª— ddlm}|d«}|d«}|j|j«j «}|S#t $rd}Y|SwxYw)z):return: videos folder for the Android OSrrQrSrbz/storage/emulated/0/DCIM/Camera)rTrRrcÚDIRECTORY_DCIMrWrX)rRr^reÚ videos_dirs rr;r;»sc€ð7Ý#áÐ5Ó6ˆÙÐ 8Ó9ˆ Ø!×5Ñ5°k×6PÑ6PÓQ×aÑaÓcˆ ð Ðøô ò7Ø6‰ à Ðð7úrhcóª— ddlm}|d«}|d«}|j|j«j «}|S#t $rd}Y|SwxYw)z(:return: music folder for the Android OSrrQrSrbz/storage/emulated/0/Music)rTrRrcÚDIRECTORY_MUSICrWrX)rRr^reÚ music_dirs rr>r>Ësc€ð0Ý#áÐ5Ó6ˆÙÐ 8Ó9ˆ Ø ×4Ñ4°[×5PÑ5PÓQ×aÑaÓcˆ ð Ðøô ò0Ø/‰ à Ðð0úrh)rIz str | NonerH)rMÚ __future__rr*rYr[Ú functoolsrÚtypingrÚapirr rr1r5r8r;r>Ú__all__rArrÚrzsÎðÙå"ã Û Û ÝÝå ôe%ˆoôe%ñP �1Ôòóðñ( �1Ôò óð ñ �1Ôò óð ñ �1Ôò óð ñ �1Ôò óð ñ �1Ôò óð ð ð �r