
    
_d                        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dgZy)    )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y)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>`.
    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    L/usr/lib/python3/dist-packages/pkg_resources/_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: state directory tied to the user, same as `user_data_dir`r   r   s    r   user_state_dirzAndroid.user_state_dir.   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_dir3   /     ""<<77<<e,Dr   c                    t               S )zf
        :return: documents directory tied to the user e.g. ``/storage/emulated/0/Documents``
        )_android_documents_folderr   s    r   user_documents_dirzAndroid.user_documents_dir>   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_dirE   r-   r   Nreturnr   )__name__
__module____qualname____doc__propertyr   r   r   r   r!   r#   r,   r0   r3    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)zB:return: base folder for the Android OS or None if cannot be foundr   	autoclassandroid.content.Contextz /data/(data|user/\d+)/(.+)/filesz/filesN)jniusr?   getFilesDirgetParentFilegetAbsolutePath	Exceptionrecompilesysr)   matchsplit)r?   Contextresultpatternr)   s        r   r   r   Q   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   r>   r@   zandroid.os.Environmentz/storage/emulated/0/Documents)rA   r?   getExternalFilesDirDIRECTORY_DOCUMENTSrD   rE   )r?   rK   Environmentdocuments_dirs       r   r/   r/   f   sc    8#56 89$889X9XYiik   878s   ?A AA)r5   z
str | Noner4   )
__future__r   r(   rF   rH   	functoolsr   typingr   apir   r	   r   r/   __all__r;   r   r   <module>rX      sg    " 	 	 
    Bo BJ 1 ( 1   r   