o
    Ëý°j¬  ã                   @  s~   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 G dd„ deƒZ	edd�ddd„ƒZ
edd�ddd„ƒZdgZdS )é    )ÚannotationsN)Ú	lru_cacheé   )ÚPlatformDirsABCc                   @  sŽ   e Zd Z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	eddd„ƒZ
eddd„ƒZeddd„ƒZeddd„ƒZdS )ÚAndroidzá
    Follows the guidance `from here <https://android.stackexchange.com/a/216132>`_. Makes use of the
    `appname <platformdirs.api.PlatformDirsABC.appname>` and
    `version <platformdirs.api.PlatformDirsABC.version>`.
    ÚreturnÚstrc                 C  ó   |   tƒ d¡S )zd:return: data directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/files/<AppName>``Úfiles©Ú_append_app_name_and_versionÚ_android_folder©Úself© r   ú“/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/android.pyÚuser_data_dir   ó   zAndroid.user_data_dirc                 C  ó   | j S )z@:return: data directory shared by users, same as `user_data_dir`©r   r   r   r   r   Úsite_data_dir   ó   zAndroid.site_data_dirc                 C  r	   )z
        :return: config directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/shared_prefs/<AppName>``
        Úshared_prefsr   r   r   r   r   Úuser_config_dir   s   zAndroid.user_config_dirc                 C  r   )zH:return: config directory shared by the users, same as `user_config_dir`)r   r   r   r   r   Úsite_config_dir#   r   zAndroid.site_config_dirc                 C  r	   )zj:return: cache directory tied to the user, e.g. e.g. ``/data/user/<userid>/<packagename>/cache/<AppName>``Úcacher   r   r   r   r   Úuser_cache_dir(   r   zAndroid.user_cache_dirc                 C  r   )zB:return: state directory tied to the user, same as `user_data_dir`r   r   r   r   r   Úuser_state_dir-   r   zAndroid.user_state_dirc                 C  ó   | j }| jrt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#   r   r   r   Úuser_log_dir2   ó   zAndroid.user_log_dirc                 C  s   t ƒ S )zf
        :return: documents directory tied to the user e.g. ``/storage/emulated/0/Documents``
        )Ú_android_documents_folderr   r   r   r   Úuser_documents_dir=   s   zAndroid.user_documents_dirc                 C  r   )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%   r   r   r   Úuser_runtime_dirD   r'   zAndroid.user_runtime_dirN©r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r   r   r   r   r   r&   r)   r+   r   r   r   r   r      s(    
r   )Úmaxsizer   r   c                  C  sx   zddl m}  | dƒ}| ¡  ¡  ¡ }W |S  ty;   t d¡}tj	D ]}| 
|¡r6| d¡d } Y |S q$tdƒ‚w )z':return: base folder for the Android OSr   ©Ú	autoclassúandroid.content.Contextz /data/(data|user/\d+)/(.+)/filesz/filesz&Cannot find path to android app folder)Újniusr4   ÚgetFilesDirÚgetParentFileÚgetAbsolutePathÚ	ExceptionÚreÚcompileÚsysr#   ÚmatchÚsplitÚOSError)r4   ÚContextÚresultÚpatternr#   r   r   r   r   P   s   
÷


ûør   c                  C  sL   zddl m}  | dƒ}| dƒ}| |j¡ ¡ }W |S  ty%   d}Y |S w )z,:return: documents folder for the Android OSr   r3   r5   zandroid.os.Environmentz/storage/emulated/0/Documents)r6   r4   ÚgetExternalFilesDirÚDIRECTORY_DOCUMENTSr9   r:   )r4   rA   ÚEnvironmentÚdocuments_dirr   r   r   r(   e   s   ýýr(   r,   )Ú
__future__r   r"   r;   r=   Ú	functoolsr   Úapir   r   r   r(   Ú__all__r   r   r   r   Ú<module>   s    Eÿ