
    2 j_)                       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                     \ 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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    e/root/GenerationalWealth/GenerationalWealth/venv/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)   s     ###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`)r.   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   r8   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   rG   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                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)r7   r8   r9   r   r   r   s    r   user_bin_dirAndroid.user_bin_dirn   s%     ww||D(9:GUKKr   c                    U R                   $ )z?:returns: bin directory shared by users, same as `user_bin_dir`)r^   r   s    r   site_bin_dirAndroid.site_bin_dirs   rB   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_dirx   r   r   c                    U R                   $ )zQ:returns: applications directory shared by users, same as `user_applications_dir`)rd   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``tmpr5   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`)rk   r   s    r   site_runtime_dirAndroid.site_runtime_dir   s     $$$r   rY   Nreturnr   )__name__
__module____qualname____firstlineno____doc__propertyr   r   r    r#   r'   r*   r.   r1   r<   r@   rE   rJ   rN   rR   rV   rZ   r^   ra   rd   rg   rk   rn   __static_attributes__rY   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sysr8   matchsplit)resultr{   contextr~   patternr8   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   rD   rD      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   rI   rI      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   rM   rM      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   rQ   rQ      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   rU   rU     sc    0#56 89 44[5P5PQaac	   0/	0r   )rq   z
str | Nonerp   )rv   
__future__r   r7   r   r   	functoolsr   typingr   r   apir   r
   r   rD   rI   rM   rQ   rU   __all__rY   r   r   <module>r      s     " 	 	 
  &  @%o @%F 1, ,^ 1  1  1  1  1   r   