
    `~h/#                       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	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dS )zAndroid.    )annotationsN)	lru_cache)TYPE_CHECKING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edd            Zedd            ZdS )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>`.

    returnstrc                l    |                      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selfs    b/var/www/html/prod/cognitive/venv/lib/python3.11/site-packages/pip/_vendor/platformdirs/android.pyuser_data_dirzAndroid.user_data_dir   *     00c?;L;L1M1MwW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                l    |                      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?;L;L1M1M~^^^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                l    |                      t          t          t                                d          S )ze:return: cache directory tied to the user, 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_dir3   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_dir8   r   r   c                b    | 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-   s     r   user_log_dirzAndroid.user_log_dir=   0     "< 	-7<<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_dirH        )***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_dirM   r5   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_dirR   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_dirW   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_dir\   s     %&&&r   c                    dS )zP:return: desktop directory tied to the user e.g. ``/storage/emulated/0/Desktop``z/storage/emulated/0/Desktop r   s    r   user_desktop_dirzAndroid.user_desktop_dira   s
     -,r   c                b    | j         }| j        r t          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_dirf   r1   r   c                    | j         S )zF:return: runtime directory shared by users, same as `user_runtime_dir`)rG   r   s    r   site_runtime_dirzAndroid.site_runtime_dirq   s     $$r   Nr   r   )__name__
__module____qualname____doc__propertyr   r   r   r    r#   r%   r'   r0   r4   r8   r;   r>   rA   rD   rG   rI   rC   r   r   r
   r
      s*         X X X XX " " " X" _ _ _ X_ $ $ $ X$ X X X XX # # # X# " " " X"    X + + + X+ + + + X+ * * * X* ( ( ( X( ' ' ' X' - - - X-    X % % % X% % %r   r
   )maxsizer   
str | Nonec                 "   d} t           st	 ddlm} t          d|                                          }|                                                                                                } n# t          $ r d} Y nw xY w| ]	 ddl	m
}  |d          }|                                                                                                } n# t          $ r d} Y nw xY w| Wt          j        d          }t          j        D ]4}|                    |          r|                    d          d         }  n5d} | Wt          j        d          }t          j        D ]4}|                    |          r|                    d          d         }  n5d} | S )	zE:return: base folder for the Android OS or None if it cannot be foundNr   )	mActivityandroid.content.Context	autoclassz /data/(data|user/\d+)/(.+)/filesz/filesz7/mnt/expand/[a-fA-F0-9-]{36}/(data|user/\d+)/(.+)/files)r   androidrS   r   getApplicationContextgetFilesDirgetParentFilegetAbsolutePath	ExceptionjniusrV   recompilesysr-   matchsplit)resultrS   contextrV   patternr-   s         r   r   r   w   s    F  	))))))4i6U6U6W6WXXG((**88::JJLLFF 	 	 	FFF	~	 ('''''i 9::G((**88::JJLLFF 	 	 	FFF	~ *@AAH 	 	D}}T"" H--a0 F~ *WXXH 	 	D}}T"" H--a0 FMs%   A A, ,A;:A;A	C CCr   c                     	 ddl m}   | d          } | d          }|                    |j                                                  }n# t
          $ r d}Y nw xY w|S )z,:return: documents folder for the Android OSr   rU   rT   android.os.Environmentz/storage/emulated/0/Documents)r]   rV   getExternalFilesDirDIRECTORY_DOCUMENTSr[   r\   )rV   rd   environmentdocuments_dirs       r   r3   r3          8######)566i 899$889XYYiikk 8 8 878    AA AAc                     	 ddl m}   | d          } | d          }|                    |j                                                  }n# t
          $ r d}Y nw xY w|S )z,:return: downloads folder for the Android OSr   rU   rT   rg   z/storage/emulated/0/Downloads)r]   rV   rh   DIRECTORY_DOWNLOADSr[   r\   )rV   rd   rj   downloads_dirs       r   r7   r7      rl   rm   c                     	 ddl m}   | d          } | d          }|                    |j                                                  }n# t
          $ r d}Y nw xY w|S )z+:return: pictures folder for the Android OSr   rU   rT   rg   z/storage/emulated/0/Pictures)r]   rV   rh   DIRECTORY_PICTURESr[   r\   )rV   rd   rj   pictures_dirs       r   r:   r:      s    6######)566i 899#778VWWggii 6 6 656 rm   c                     	 ddl m}   | d          } | d          }|                    |j                                                  }n# t
          $ r d}Y nw xY w|S )z):return: videos folder for the Android OSr   rU   rT   rg   z/storage/emulated/0/DCIM/Camera)r]   rV   rh   DIRECTORY_DCIMr[   r\   )rV   rd   rj   
videos_dirs       r   r=   r=      s    7######)566i 899!55k6PQQaacc

 7 7 76


7 rm   c                     	 ddl m}   | d          } | d          }|                    |j                                                  }n# t
          $ r d}Y nw xY w|S )z(:return: music folder for the Android OSr   rU   rT   rg   z/storage/emulated/0/Music)r]   rV   rh   DIRECTORY_MUSICr[   r\   )rV   rd   rj   	music_dirs       r   r@   r@      s    0######)566i 899 44[5PQQaacc		 0 0 0/			0 rm   )r   rQ   rJ   )rN   
__future__r   r,   r^   r`   	functoolsr   typingr   r   apir   r
   r   r3   r7   r:   r=   r@   __all__rC   r   r   <module>r      s    " " " " " " 				 				 



       & & & & & & & &            f% f% f% f% f%o f% f% f%R 1, , , ,^ 1    1    1    1    1     r   