
    As<g+                    ,   d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ  G d d	e      Z ed
      dd       Z ed
      dd       Z ed
      dd       Z ed
      dd       Z ed
      dd       Z ed
      dd       Zd	gZy)zAndroid.    )annotationsN)	lru_cache)cast   )PlatformDirsABCc                     e Zd ZdZedd       Zedd       Zedd       Zedd       Zedd       Z	edd       Z
edd       Zedd	       Zedd
       Zedd       Zedd       Zedd       Zedd       Zedd       Zy)Androida$  
    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                R    | j                  t        t        t                     d      S )zd:return: data directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/files/<AppName>``files_append_app_name_and_versionr   str_android_folderselfs    ^/home/kevstigneev/proxy/myenv/lib/python3.12/site-packages/pip/_vendor/platformdirs/android.pyuser_data_dirzAndroid.user_data_dir   !     00c?;L1MwWW    c                    | j                   S )z@:return: data directory shared by users, same as `user_data_dir`r   r   s    r   site_data_dirzAndroid.site_data_dir        !!!r   c                R    | j                  t        t        t                     d      S )z
        :return: config directory tied to the user, e.g.         ``/data/user/<userid>/<packagename>/shared_prefs/<AppName>``
        shared_prefsr   r   s    r   user_config_dirzAndroid.user_config_dir   s!     00c?;L1M~^^r   c                    | j                   S )zH:return: config directory shared by the users, same as `user_config_dir`)r   r   s    r   site_config_dirzAndroid.site_config_dir'   s     ###r   c                R    | j                  t        t        t                     d      S )zj:return: cache directory tied to the user, e.g. e.g. ``/data/user/<userid>/<packagename>/cache/<AppName>``cacher   r   s    r   user_cache_dirzAndroid.user_cache_dir,   r   r   c                    | j                   S )zB:return: cache directory shared by users, same as `user_cache_dir`)r!   r   s    r   site_cache_dirzAndroid.site_cache_dir1   s     """r   c                    | j                   S )zB:return: state directory tied to the user, same as `user_data_dir`r   r   s    r   user_state_dirzAndroid.user_state_dir6   r   r   c                v    | j                   }| j                  r t        j                  j	                  |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/<userid>/<packagename>/cache/<AppName>/log``
        logr!   opinionospathjoinr   r+   s     r   user_log_dirzAndroid.user_log_dir;   /     ""<<77<<e,Dr   c                    t               S )zT:return: documents directory tied to the user e.g. ``/storage/emulated/0/Documents``)_android_documents_folderr   s    r   user_documents_dirzAndroid.user_documents_dirF        )**r   c                    t               S )zT:return: downloads directory tied to the user e.g. ``/storage/emulated/0/Downloads``)_android_downloads_folderr   s    r   user_downloads_dirzAndroid.user_downloads_dirK   r3   r   c                    t               S )zR:return: pictures directory tied to the user e.g. ``/storage/emulated/0/Pictures``)_android_pictures_folderr   s    r   user_pictures_dirzAndroid.user_pictures_dirP   s     ())r   c                    t               S )zS:return: videos directory tied to the user e.g. ``/storage/emulated/0/DCIM/Camera``)_android_videos_folderr   s    r   user_videos_dirzAndroid.user_videos_dirU   s     &''r   c                    t               S )zL:return: music directory tied to the user e.g. ``/storage/emulated/0/Music``)_android_music_folderr   s    r   user_music_dirzAndroid.user_music_dirZ   s     %&&r   c                v    | j                   }| j                  r t        j                  j	                  |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/<userid>/<packagename>/cache/<AppName>/tmp``
        tmpr(   r-   s     r   user_runtime_dirzAndroid.user_runtime_dir_   r/   r   Nreturnr   )__name__
__module____qualname____doc__propertyr   r   r   r   r!   r#   r%   r.   r2   r6   r9   r<   r?   rB    r   r   r	   r	      s%    X X " " _ _ $ $ X X # # " "   + + + + * * ( ( ' '  r   r	   )maxsizec                 F   	 ddl m}   | d      }|j                         j                         j	                         }|S # t
        $ rY t        j                  d      }t        j                  D ]+  }|j                  |      s|j                  d      d   } Y |S  d}Y |S w xY w)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)jniusrN   getFilesDirgetParentFilegetAbsolutePath	Exceptionrecompilesysr+   matchsplit)rN   contextresultpatternr+   s        r   r   r   k   s    #56$002@@BRRT M  **@AHH 	D}}T"H-a0 M	
 FMs   :> AB B B B c                     	 ddl m}   | d      } | d      }|j                  |j                        j	                         }|S # t
        $ r d}Y |S w xY w)z,:return: documents folder for the Android OSr   rM   rO   android.os.Environmentz/storage/emulated/0/Documents)rP   rN   getExternalFilesDirDIRECTORY_DOCUMENTSrS   rT   )rN   rZ   environmentdocuments_dirs       r   r1   r1      c    8#56 89$889X9XYiik   878   ?A AAc                     	 ddl m}   | d      } | d      }|j                  |j                        j	                         }|S # t
        $ r d}Y |S w xY w)z,:return: downloads folder for the Android OSr   rM   rO   r^   z/storage/emulated/0/Downloads)rP   rN   r_   DIRECTORY_DOWNLOADSrS   rT   )rN   rZ   ra   downloads_dirs       r   r5   r5      rc   rd   c                     	 ddl m}   | d      } | d      }|j                  |j                        j	                         }|S # t
        $ r d}Y |S w xY w)z+:return: pictures folder for the Android OSr   rM   rO   r^   z/storage/emulated/0/Pictures)rP   rN   r_   DIRECTORY_PICTURESrS   rT   )rN   rZ   ra   pictures_dirs       r   r8   r8      sc    6#56 89#778V8VWggi   656rd   c                     	 ddl m}   | d      } | d      }|j                  |j                        j	                         }|S # t
        $ r d}Y |S w xY w)z):return: videos folder for the Android OSr   rM   rO   r^   z/storage/emulated/0/DCIM/Camera)rP   rN   r_   DIRECTORY_DCIMrS   rT   )rN   rZ   ra   
videos_dirs       r   r;   r;      sc    7#56 89!55k6P6PQaac
   76
7rd   c                     	 ddl m}   | d      } | d      }|j                  |j                        j	                         }|S # t
        $ r d}Y |S w xY w)z(:return: music folder for the Android OSr   rM   rO   r^   z/storage/emulated/0/Music)rP   rN   r_   DIRECTORY_MUSICrS   rT   )rN   rZ   ra   	music_dirs       r   r>   r>      sc    0#56 89 44[5P5PQaac	   0/	0rd   )rD   z
str | NonerC   )rH   
__future__r   r*   rU   rW   	functoolsr   typingr   apir   r	   r   r1   r5   r8   r;   r>   __all__rJ   r   r   <module>rv      s     " 	 	 
    [o [| 1 ( 1  1  1  1  1   r   