
    Cj.-                       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                  4   \ 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 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  Platform directories for Android.

Follows the guidance `from here <https://android.stackexchange.com/a/216132>`_. Directories are typically located
under the app's private storage (``/data/user/<userid>/<packagename>/``).

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

c                J    U R                  [        S[        5       5      S5      $ )ze:returns: data directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/files/<AppName>``strfiles_append_app_name_and_versionr   _android_folderselfs    f/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/platformdirs/android.pyuser_data_dirAndroid.user_data_dir   "     00e_=N1OQXYY    c                    U R                   $ )zA:returns: 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      $ )zn:returns: 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                   $ )zE:returns: config directory shared by users, same as `user_config_dir`r    r   s    r   site_config_dirAndroid.site_config_dir)        ###r   c                J    U R                  [        S[        5       5      S5      $ )zf:returns: 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                   $ )zC:returns: cache directory shared by users, same as `user_cache_dir`)r)   r   s    r   site_cache_dirAndroid.site_cache_dir3        """r   c                    U R                   $ )zC:returns: 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                   $ )zC:returns: state directory shared by users, same as `user_state_dir`)r0   r   s    r   site_state_dirAndroid.site_state_dir=   r.   r   c                    U R                   nU R                  (       a1  [        R                  R	                  US5      nU R                  U5        U$ )z:returns: 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_optionally_create_directoryr   r:   s     r   user_log_dirAndroid.user_log_dirB   =     ""<<77<<e,D--d3r   c                    U R                   $ )z?:returns: log directory shared by users, same as `user_log_dir`)r>   r   s    r   site_log_dirAndroid.site_log_dirK           r   c                    [        5       $ )zU:returns: documents directory tied to the user e.g. ``/storage/emulated/0/Documents``)_android_documents_folderr   s    r   user_documents_dirAndroid.user_documents_dirP        )**r   c                    [        5       $ )zU:returns: downloads directory tied to the user e.g. ``/storage/emulated/0/Downloads``)_android_downloads_folderr   s    r   user_downloads_dirAndroid.user_downloads_dirU   rI   r   c                    [        5       $ )zS:returns: pictures directory tied to the user e.g. ``/storage/emulated/0/Pictures``)_android_pictures_folderr   s    r   user_pictures_dirAndroid.user_pictures_dirZ   s     ())r   c                    [        5       $ )zT:returns: videos directory tied to the user e.g. ``/storage/emulated/0/DCIM/Camera``)_android_videos_folderr   s    r   user_videos_dirAndroid.user_videos_dir_   s     &''r   c                    [        5       $ )zM:returns: music directory tied to the user e.g. ``/storage/emulated/0/Music``)_android_music_folderr   s    r   user_music_dirAndroid.user_music_dird   s     %&&r   c                    g)zQ:returns: 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_diri   s     -r   c                    g)zS:returns: projects directory tied to the user e.g. ``/storage/emulated/0/Projects``z/storage/emulated/0/Projectsr[   r   s    r   user_projects_dirAndroid.user_projects_dirn   s     .r   c                    g)zU:returns: public share directory tied to the user e.g. ``/storage/emulated/0/Public``z/storage/emulated/0/Publicr[   r   s    r   user_publicshare_dirAndroid.user_publicshare_dirs   s     ,r   c                    g)zU:returns: templates directory tied to the user e.g. ``/storage/emulated/0/Templates``z/storage/emulated/0/Templatesr[   r   s    r   user_templates_dirAndroid.user_templates_dirx   s     /r   c                    g)zM:returns: fonts directory tied to the user e.g. ``/storage/emulated/0/fonts``z/storage/emulated/0/fontsr[   r   s    r   user_fonts_dirAndroid.user_fonts_dir}   s     +r   c                    U R                   $ )zL:returns: preference directory tied to the user, same as ``user_config_dir``r#   r   s    r   user_preference_dirAndroid.user_preference_dir   r&   r   c                h    [         R                  R                  [        S[	        5       5      SS5      $ )z^:returns: bin directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/files/bin``r   r   bin)r9   r:   r;   r   r   r   s    r   user_bin_dirAndroid.user_bin_dir   s%     ww||D(9:GUKKr   c                    U R                   $ )z?:returns: bin directory shared by users, same as `user_bin_dir`)ro   r   s    r   site_bin_dirAndroid.site_bin_dir   rD   r   c                    U R                   $ )zJ:returns: applications directory tied to the user, same as `user_data_dir`r   r   s    r   user_applications_dirAndroid.user_applications_dir   r   r   c                    U R                   $ )zQ:returns: applications directory shared by users, same as `user_applications_dir`)ru   r   s    r   site_applications_dirAndroid.site_applications_dir   s     )))r   c                    U R                   nU R                  (       a1  [        R                  R	                  US5      nU R                  U5        U$ )z:returns: 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``tmpr7   r=   s     r   user_runtime_dirAndroid.user_runtime_dir   r@   r   c                    U R                   $ )zG:returns: runtime directory shared by users, same as `user_runtime_dir`)r|   r   s    r   site_runtime_dirAndroid.site_runtime_dir   s     $$$r   r[   Nreturnr   )"__name__
__module____qualname____firstlineno____doc__propertyr   r   r    r$   r)   r,   r0   r3   r>   rB   rG   rL   rP   rT   rX   r\   r_   rb   re   rh   rk   ro   rr   ru   rx   r|   r   __static_attributes__r[   r   r   r
   r
      s+   	 Z Z " " a a $ $ Z Z # # " " # #   ! ! + + + + * * ( ( ' ' - - . . , , / / + + $ $ L L ! ! " " * *   % %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)	zF:returns: 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   androidr   r   getApplicationContextgetFilesDirgetParentFilegetAbsolutePath	Exceptionjniusr   recompilesysr:   matchsplit)resultr   contextr   patternr:   s         r   r   r      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-:returns: documents folder for the Android OSr   r   r   android.os.Environmentz/storage/emulated/0/Documents)r   r   getExternalFilesDirDIRECTORY_DOCUMENTSr   r   )r   r   environmentdocuments_dirs       r   rF   rF      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-:returns: downloads folder for the Android OSr   r   r   r   z/storage/emulated/0/Downloads)r   r   r   DIRECTORY_DOWNLOADSr   r   )r   r   r   downloads_dirs       r   rK   rK      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,:returns: pictures folder for the Android OSr   r   r   r   z/storage/emulated/0/Pictures)r   r   r   DIRECTORY_PICTURESr   r   )r   r   r   pictures_dirs       r   rO   rO      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*:returns: videos folder for the Android OSr   r   r   r   z/storage/emulated/0/DCIM/Camera)r   r   r   DIRECTORY_DCIMr   r   )r   r   r   
videos_dirs       r   rS   rS   
  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):returns: music folder for the Android OSr   r   r   r   z/storage/emulated/0/Music)r   r   r   DIRECTORY_MUSICr   r   )r   r   r   	music_dirs       r   rW   rW     sc    0#56 89 44[5P5PQaac	   0/	0r   )r   z
str | Noner   )r   
__future__r   r9   r   r   	functoolsr   typingr   r   apir   r
   r   rF   rK   rO   rS   rW   __all__r[   r   r   <module>r      s     " 	 	 
  &  Y%o Y%x 1, ,^ 1  1  1  1  1   r   