3
ûâdeš  ã               @   sz   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�edœd	d
„ƒZ	edd�edœdd„ƒZ
dgZdS )é    N)Ú	lru_cacheé   )ÚPlatformDirsABCc               @   s²   e Zd ZdZeedœdd„ƒZeedœdd„ƒZeedœdd„ƒZeedœd	d
„ƒZ	eedœdd„ƒZ
eedœdd„ƒZeedœdd„ƒZeedœdd„ƒZe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>`.
    )Úreturnc             C   s   | j 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   ú?/tmp/pip-build-red6nood/pip/pip/_vendor/platformdirs/android.pyÚuser_data_dir   s    zAndroid.user_data_dirc             C   s   | j S )z@:return: data directory shared by users, same as `user_data_dir`)r   )r
   r   r   r   Úsite_data_dir   s    zAndroid.site_data_dirc             C   s   | j tƒ dƒS )z
        :return: config directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/shared_prefs/<AppName>``
        Zshared_prefs)r   r	   )r
   r   r   r   Úuser_config_dir   s    zAndroid.user_config_dirc             C   s   | j S )zH:return: config directory shared by the users, same as `user_config_dir`)r   )r
   r   r   r   Úsite_config_dir!   s    zAndroid.site_config_dirc             C   s   | j tƒ dƒS )zj:return: cache directory tied to the user, e.g. e.g. ``/data/user/<userid>/<packagename>/cache/<AppName>``Úcache)r   r	   )r
   r   r   r   Úuser_cache_dir&   s    zAndroid.user_cache_dirc             C   s   | j S )zB:return: state directory tied to the user, same as `user_data_dir`)r   )r
   r   r   r   Úuser_state_dir+   s    zAndroid.user_state_dirc             C   s   | 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   r   r   r   Úuser_log_dir0   s    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_folder)r
   r   r   r   Úuser_documents_dir;   s    zAndroid.user_documents_dirc             C   s   | 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``
        Útmp)r   r   r   r   r   )r
   r   r   r   r   Úuser_runtime_dirB   s    zAndroid.user_runtime_dirN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚpropertyÚstrr   r   r   r   r   r   r   r   r   r   r   r   r   r   	   s&   
r   )Úmaxsize)r   c              C   s~   y(ddl m}  | dƒ}|jƒ jƒ jƒ }W nP tk
rx   tjdƒ}x0tj	D ]}|j
|ƒrJ|jdƒd }P qJW tdƒ‚Y nX |S )z':return: base folder for the Android OSr   )Ú	autoclasszandroid.content.Contextz /data/(data|user/\d+)/(.+)/filesz/filesz&Cannot find path to android app folder)Újniusr%   ZgetFilesDirZgetParentFileÚgetAbsolutePathÚ	ExceptionÚreÚcompileÚsysr   ÚmatchÚsplitÚOSError)r%   ÚContextÚresultÚpatternr   r   r   r   r	   N   s    

r	   c              C   sN   y0ddl m}  | dƒ}| dƒ}|j|jƒjƒ }W n tk
rH   d}Y nX |S )z,:return: documents folder for the Android OSr   )r%   zandroid.content.Contextzandroid.os.Environmentz/storage/emulated/0/Documents)r&   r%   ZgetExternalFilesDirZDIRECTORY_DOCUMENTSr'   r(   )r%   r/   ÚEnvironmentZdocuments_dirr   r   r   r   c   s    
r   )r   r)   r+   Ú	functoolsr   Úapir   r   r#   r	   r   Ú__all__r   r   r   r   Ú<module>   s   E