
    q"h5#                       S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	J
r
  SSKJr   " S S	\5      r\" SS
9SS j5       r\" SS
9SS j5       r\" SS
9SS j5       r\" SS
9SS j5       r\" SS
9SS j5       r\" SS
9SS j5       rS	/rg)zAndroid.    )annotationsN)	lru_cache)TYPE_CHECKINGcast   )PlatformDirsABCc                  X   \ rS rSrSr\SS j5       r\SS j5       r\SS j5       r\SS j5       r	\SS j5       r
\SS j5       r\SS	 j5       r\SS
 j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       rSrg)Android   a  
Follows the guidance `from here <https://android.stackexchange.com/a/216132>`_.

Makes use of the `appname <platformdirs.api.PlatformDirsABC.appname>`, `version
<platformdirs.api.PlatformDirsABC.version>`, `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.

c                J    U R                  [        S[        5       5      S5      $ )zd:return: data directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/files/<AppName>``strfiles_append_app_name_and_versionr   _android_folderselfs    R/var/www/html/env/lib/python3.13/site-packages/pip/_vendor/platformdirs/android.pyuser_data_dirAndroid.user_data_dir   "     00e_=N1OQXYY    c                    U R                   $ )z@:return: data directory shared by users, same as `user_data_dir`r   r   s    r   site_data_dirAndroid.site_data_dir        !!!r   c                J    U R                  [        S[        5       5      S5      $ )zw
:return: config directory tied to the user, e.g.         ``/data/user/<userid>/<packagename>/shared_prefs/<AppName>``
r   shared_prefsr   r   s    r   user_config_dirAndroid.user_config_dir!   s"     00e_=N1OQ_``r   c                    U R                   $ )zH:return: config directory shared by the users, same as `user_config_dir`)r    r   s    r   site_config_dirAndroid.site_config_dir)   s     ###r   c                J    U R                  [        S[        5       5      S5      $ )ze:return: cache directory tied to the user, e.g.,``/data/user/<userid>/<packagename>/cache/<AppName>``r   cacher   r   s    r   user_cache_dirAndroid.user_cache_dir.   r   r   c                    U R                   $ )zB:return: cache directory shared by users, same as `user_cache_dir`)r'   r   s    r   site_cache_dirAndroid.site_cache_dir3   s     """r   c                    U R                   $ )zB:return: state directory tied to the user, same as `user_data_dir`r   r   s    r   user_state_dirAndroid.user_state_dir8   r   r   c                    U R                   nU R                  (       a   [        R                  R	                  US5      nU$ )z
:return: log directory tied to the user, same as `user_cache_dir` if not opinionated else ``log`` in it,
  e.g. ``/data/user/<userid>/<packagename>/cache/<AppName>/log``
logr'   opinionospathjoinr   r4   s     r   user_log_dirAndroid.user_log_dir=   /     ""<<77<<e,Dr   c                    [        5       $ )zT:return: documents directory tied to the user e.g. ``/storage/emulated/0/Documents``)_android_documents_folderr   s    r   user_documents_dirAndroid.user_documents_dirH        )**r   c                    [        5       $ )zT:return: downloads directory tied to the user e.g. ``/storage/emulated/0/Downloads``)_android_downloads_folderr   s    r   user_downloads_dirAndroid.user_downloads_dirM   r>   r   c                    [        5       $ )zR:return: pictures directory tied to the user e.g. ``/storage/emulated/0/Pictures``)_android_pictures_folderr   s    r   user_pictures_dirAndroid.user_pictures_dirR   s     ())r   c                    [        5       $ )zS:return: videos directory tied to the user e.g. ``/storage/emulated/0/DCIM/Camera``)_android_videos_folderr   s    r   user_videos_dirAndroid.user_videos_dirW   s     &''r   c                    [        5       $ )zL:return: music directory tied to the user e.g. ``/storage/emulated/0/Music``)_android_music_folderr   s    r   user_music_dirAndroid.user_music_dir\   s     %&&r   c                    g)zP:return: desktop directory tied to the user e.g. ``/storage/emulated/0/Desktop``z/storage/emulated/0/Desktop r   s    r   user_desktop_dirAndroid.user_desktop_dira   s     -r   c                    U R                   nU R                  (       a   [        R                  R	                  US5      nU$ )z
:return: runtime directory tied to the user, same as `user_cache_dir` if not opinionated else ``tmp`` in it,
  e.g. ``/data/user/<userid>/<packagename>/cache/<AppName>/tmp``
tmpr1   r6   s     r   user_runtime_dirAndroid.user_runtime_dirf   r9   r   c                    U R                   $ )zF:return: runtime directory shared by users, same as `user_runtime_dir`)rU   r   s    r   site_runtime_dirAndroid.site_runtime_dirq   s     $$$r   rP   Nreturnr   )__name__
__module____qualname____firstlineno____doc__propertyr   r   r    r#   r'   r*   r-   r7   r<   rA   rE   rI   rM   rQ   rU   rX   __static_attributes__rP   r   r   r
   r
      sM    Z Z " " a a $ $ Z Z # # " "   + + + + * * ( ( ' ' - -   % %r   r
   )maxsizec                    Sn [         (       dM   SSKJn  [        SUR	                  5       5      nUR                  5       R                  5       R                  5       n U c;   SSK	J
n  U" S5      nUR                  5       R                  5       R                  5       n U c[  [        R                  " S5      n[        R                   H/  nUR                  U5      (       d  M  UR!                  S5      S   n   O   Sn U c\  [        R                  " S5      n[        R                   H0  nUR                  U5      (       d  M  UR!                  S5      S   n   U $    Sn U $ ! [         a    Sn  GNf = f! [         a    Sn  Nf = f)	zE:return: base folder for the Android OS or None if it cannot be foundNr   )	mActivityandroid.content.Context	autoclassz /data/(data|user/\d+)/(.+)/filesz/filesz7/mnt/expand/[a-fA-F0-9-]{36}/(data|user/\d+)/(.+)/files)r   androidre   r   getApplicationContextgetFilesDirgetParentFilegetAbsolutePath	Exceptionjniusrh   recompilesysr4   matchsplit)resultre   contextrh   patternr4   s         r   r   r   w   sd    F =	)4i6U6U6WXG((*88:JJLF ~	 ( 9:G((*88:JJLF ~ **@AHHD}}T""H-a0 
 F~ **WXHHD}}T""H-a0 M 
 FMA  	F	  	F	s$   AE :E+ E('E(+E:9E:c                      SSK Jn   U " S5      nU " S5      nUR                  UR                  5      R	                  5       nU$ ! [
         a    Sn U$ f = f)z,:return: documents folder for the Android OSr   rg   rf   android.os.Environmentz/storage/emulated/0/Documents)ro   rh   getExternalFilesDirDIRECTORY_DOCUMENTSrm   rn   )rh   rv   environmentdocuments_dirs       r   r;   r;      c    8#56 89$889X9XYiik   878   ?A AAc                      SSK Jn   U " S5      nU " S5      nUR                  UR                  5      R	                  5       nU$ ! [
         a    Sn U$ f = f)z,:return: downloads folder for the Android OSr   rg   rf   ry   z/storage/emulated/0/Downloads)ro   rh   rz   DIRECTORY_DOWNLOADSrm   rn   )rh   rv   r|   downloads_dirs       r   r@   r@      r~   r   c                      SSK Jn   U " S5      nU " S5      nUR                  UR                  5      R	                  5       nU$ ! [
         a    Sn U$ f = f)z+:return: pictures folder for the Android OSr   rg   rf   ry   z/storage/emulated/0/Pictures)ro   rh   rz   DIRECTORY_PICTURESrm   rn   )rh   rv   r|   pictures_dirs       r   rD   rD      sc    6#56 89#778V8VWggi   656r   c                      SSK Jn   U " S5      nU " S5      nUR                  UR                  5      R	                  5       nU$ ! [
         a    Sn U$ f = f)z):return: videos folder for the Android OSr   rg   rf   ry   z/storage/emulated/0/DCIM/Camera)ro   rh   rz   DIRECTORY_DCIMrm   rn   )rh   rv   r|   
videos_dirs       r   rH   rH      sc    7#56 89!55k6P6PQaac
   76
7r   c                      SSK Jn   U " S5      nU " S5      nUR                  UR                  5      R	                  5       nU$ ! [
         a    Sn U$ f = f)z(:return: music folder for the Android OSr   rg   rf   ry   z/storage/emulated/0/Music)ro   rh   rz   DIRECTORY_MUSICrm   rn   )rh   rv   r|   	music_dirs       r   rL   rL      sc    0#56 89 44[5P5PQaac	   0/	0r   )r[   z
str | NonerZ   )r`   
__future__r   r3   rp   rr   	functoolsr   typingr   r   apir   r
   r   r;   r@   rD   rH   rL   __all__rP   r   r   <module>r      s     " 	 	 
  &  f%o f%R 1, ,^ 1  1  1  1  1   r   