o
    a+)h                     @  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 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)cast   )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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   r	   _android_folderself r   _C:\Users\User\Downloads\Proyecto_IoT\venv\Lib\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>``
        Z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_dir3      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_dirE   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   
str | Nonec                  C  sz   zddl m}  | d}|   }W |S  ty<   td}tj	D ]}|
|r6|dd } Y |S q$d}Y |S w )zB:return: base folder for the Android OS or None if cannot be foundr   	autoclassandroid.content.Contextz /data/(data|user/\d+)/(.+)/filesz/filesN)jniusr5   ZgetFilesDirZgetParentFilegetAbsolutePath	Exceptionrecompilesysr#   matchsplit)r5   Contextresultpatternr#   r   r   r   r   Q   s    



r   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   r4   r6   zandroid.os.Environmentz/storage/emulated/0/Documents)r7   r5   ZgetExternalFilesDirZDIRECTORY_DOCUMENTSr8   r9   )r5   r?   EnvironmentZdocuments_dirr   r   r   r(   f   s   r(   )r   r3   r,   )
__future__r   r"   r:   r<   	functoolsr   typingr   apir   r   r   r(   __all__r   r   r   r   <module>   s    E