§
    —Çj6(  ã                  ó  — U 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 ddlmZ  G d	„ d
e¦  «        Zdd„Z e
d¬¦  «        dd„¦   «         Z ej        dej        ¦  «        Zded<   dd„Zdd„Ze	dd„¦   «         Zd
gZdS )zAndroid.é    )ÚannotationsN)Úsuppress)ÚcacheÚ	lru_cache)ÚFinalé   )Ú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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î  Platform directories for Android.

    Follows the guidance `from here <https://android.stackexchange.com/a/216132>`_. Directories are typically located
    under the app's private storage (``/data/user/<userid>/<packagename>/``).

    Makes use of the `appname <platformdirs.api.PlatformDirsABC.appname>`, `version
    <platformdirs.api.PlatformDirsABC.version>`, `opinion <platformdirs.api.PlatformDirsABC.opinion>`, `ensure_exists
    <platformdirs.api.PlatformDirsABC.ensure_exists>`.

    ÚreturnÚstrc                óJ   — |                       t          ¦   «         dd¬¦  «        S )z\Data directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/files/<AppName>``.ÚfilesT©Úprivate©Ú_append_app_name_and_versionÚ_require_android_folder©Úselfs    úEC:\Projects\Historical\venv\Lib\site-packages\platformdirs/android.pyÚuser_data_dirzAndroid.user_data_dir   ó'   € ð ×0Ò0Õ1HÑ1JÔ1JÈGÐ]aÐ0ÑbÔbÐbó    c                ó   — | j         S )z8Data directory shared by users, same as `user_data_dir`.©r   r   s    r   Úsite_data_dirzAndroid.site_data_dir    ó   € ð Ô!Ð!r   c                óJ   — |                       t          ¦   «         dd¬¦  «        S )zeConfig directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/shared_prefs/<AppName>``.Úshared_prefsTr   r   r   s    r   Úuser_config_dirzAndroid.user_config_dir%   s'   € ð ×0Ò0Õ1HÑ1JÔ1JÈNÐdhÐ0ÑiÔiÐir   c                ó   — | j         S )z<Config directory shared by users, same as `user_config_dir`.©r!   r   s    r   Úsite_config_dirzAndroid.site_config_dir*   ó   € ð Ô#Ð#r   c                óJ   — |                       t          ¦   «         dd¬¦  «        S )z]Cache directory tied to the user, e.g.,``/data/user/<userid>/<packagename>/cache/<AppName>``.r   Tr   r   r   s    r   Úuser_cache_dirzAndroid.user_cache_dir/   r   r   c                ó   — | j         S )z:Cache directory shared by users, same as `user_cache_dir`.)r'   r   s    r   Úsite_cache_dirzAndroid.site_cache_dir4   ó   € ð Ô"Ð"r   c                ó   — | j         S )z:State directory tied to the user, same as `user_data_dir`.r   r   s    r   Úuser_state_dirzAndroid.user_state_dir9   r   r   c                ó   — | j         S )z:State directory shared by users, same as `user_state_dir`.)r,   r   s    r   Úsite_state_dirzAndroid.site_state_dir>   r*   r   c                ó�   — | j         }| j        r7t          j                             |d¦  «        }|                      |d¬¦  «         |S )zŸ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``.ÚlogTr   ©r'   ÚopinionÚosÚpathÚjoinÚ_optionally_create_directory©r   r4   s     r   Úuser_log_dirzAndroid.user_log_dirC   óJ   € ð Ô"ˆØŒ<ð 	BÝ”7—<’<  eÑ,Ô,ˆDØ×-Ò-¨d¸DÐ-ÑAÔAÐAØˆr   c                ó   — | j         S )z6Log directory shared by users, same as `user_log_dir`.)r8   r   s    r   Úsite_log_dirzAndroid.site_log_dirL   ó   € ð Ô Ð r   c                ó    — t          d¦  «        S )zLDocuments directory tied to the user e.g. ``/storage/emulated/0/Documents``.Ú	Documents©Ú_android_public_folderr   s    r   Úuser_documents_dirzAndroid.user_documents_dirQ   s   € õ & kÑ2Ô2Ð2r   c                ó    — t          d¦  «        S )zKDownloads directory tied to the user e.g. ``/storage/emulated/0/Download``.ÚDownloadr?   r   s    r   Úuser_downloads_dirzAndroid.user_downloads_dirV   ó   € õ & jÑ1Ô1Ð1r   c                ó    — t          d¦  «        S )zJPictures directory tied to the user e.g. ``/storage/emulated/0/Pictures``.ÚPicturesr?   r   s    r   Úuser_pictures_dirzAndroid.user_pictures_dir[   rE   r   c                ó    — t          d¦  «        S )zFVideos directory tied to the user e.g. ``/storage/emulated/0/Movies``.ÚMoviesr?   r   s    r   Úuser_videos_dirzAndroid.user_videos_dir`   s   € õ & hÑ/Ô/Ð/r   c                ó    — t          d¦  «        S )zDMusic directory tied to the user e.g. ``/storage/emulated/0/Music``.ÚMusicr?   r   s    r   Úuser_music_dirzAndroid.user_music_dire   s   € õ & gÑ.Ô.Ð.r   c                ó$   — t          ¦   «         › d�S )zRDesktop directory tied to the user e.g. ``/storage/emulated/0/Documents/Desktop``.z/Documents/Desktop©Ú_shared_storager   s    r   Úuser_desktop_dirzAndroid.user_desktop_dirk   s   € õ "Ñ#Ô#Ð7Ð7Ð7Ð7r   c                ó$   — t          ¦   «         › d�S )zTProjects directory tied to the user e.g. ``/storage/emulated/0/Documents/Projects``.z/Documents/ProjectsrP   r   s    r   Úuser_projects_dirzAndroid.user_projects_dirp   s   € õ "Ñ#Ô#Ð8Ð8Ð8Ð8r   c                ó$   — t          ¦   «         › d�S )zVPublic share directory tied to the user e.g. ``/storage/emulated/0/Documents/Public``.z/Documents/PublicrP   r   s    r   Úuser_publicshare_dirzAndroid.user_publicshare_diru   s   € õ "Ñ#Ô#Ð6Ð6Ð6Ð6r   c                ó$   — t          ¦   «         › d�S )zVTemplates directory tied to the user e.g. ``/storage/emulated/0/Documents/Templates``.z/Documents/TemplatesrP   r   s    r   Úuser_templates_dirzAndroid.user_templates_dirz   s   € õ "Ñ#Ô#Ð9Ð9Ð9Ð9r   c                ó$   — t          ¦   «         › d�S )zNFonts directory tied to the user e.g. ``/storage/emulated/0/Documents/fonts``.z/Documents/fontsrP   r   s    r   Úuser_fonts_dirzAndroid.user_fonts_dir   s   € õ "Ñ#Ô#Ð5Ð5Ð5Ð5r   c                ó   — | j         S )zCPreference directory tied to the user, same as ``user_config_dir``.r#   r   s    r   Úuser_preference_dirzAndroid.user_preference_dir„   r%   r   c                ó\   — t           j                             t          ¦   «         dd¦  «        S )zUBin directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/files/bin``.r   Úbin)r3   r4   r5   r   r   s    r   Úuser_bin_dirzAndroid.user_bin_dir‰   s#   € õ Œw�|Š|Õ3Ñ5Ô5°wÀÑFÔFÐFr   c                ó   — | j         S )z6Bin directory shared by users, same as `user_bin_dir`.)r_   r   s    r   Úsite_bin_dirzAndroid.site_bin_dirŽ   r<   r   c                ó   — | j         S )zAApplications directory tied to the user, same as `user_data_dir`.r   r   s    r   Úuser_applications_dirzAndroid.user_applications_dir“   r   r   c                ó   — | j         S )zHApplications directory shared by users, same as `user_applications_dir`.)rc   r   s    r   Úsite_applications_dirzAndroid.site_applications_dir˜   s   € ð Ô)Ð)r   c                ó�   — | j         }| j        r7t          j                             |d¦  «        }|                      |d¬¦  «         |S )z£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``.ÚtmpTr   r1   r7   s     r   Úuser_runtime_dirzAndroid.user_runtime_dir�   r9   r   c                ó   — | j         S )z>Runtime directory shared by users, same as `user_runtime_dir`.)rh   r   s    r   Úsite_runtime_dirzAndroid.site_runtime_dir¦   s   € ð Ô$Ð$r   N©r   r   ) Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r   r!   r$   r'   r)   r,   r.   r8   r;   rA   rD   rH   rK   rN   rR   rT   rV   rX   rZ   r\   r_   ra   rc   re   rh   rj   © r   r   r   r      sŽ  € € € € € ð	ð 	ð ðcð cð cñ „Xðcð ð"ð "ð "ñ „Xð"ð ðjð jð jñ „Xðjð ð$ð $ð $ñ „Xð$ð ðcð cð cñ „Xðcð ð#ð #ð #ñ „Xð#ð ð"ð "ð "ñ „Xð"ð ð#ð #ð #ñ „Xð#ð ðð ð ñ „Xðð ð!ð !ð !ñ „Xð!ð ð3ð 3ð 3ñ „Xð3ð ð2ð 2ð 2ñ „Xð2ð ð2ð 2ð 2ñ „Xð2ð ð0ð 0ð 0ñ „Xð0ð ð/ð /ð /ñ „Xð/ð
 ð8ð 8ð 8ñ „Xð8ð ð9ð 9ð 9ñ „Xð9ð ð7ð 7ð 7ñ „Xð7ð ð:ð :ð :ñ „Xð:ð ð6ð 6ð 6ñ „Xð6ð ð$ð $ð $ñ „Xð$ð ðGð Gð Gñ „XðGð ð!ð !ð !ñ „Xð!ð ð"ð "ð "ñ „Xð"ð ð*ð *ð *ñ „Xð*ð ðð ð ñ „Xðð ð%ð %ð %ñ „Xð%ð %ð %r   r   r   r   c                 óH   — t          ¦   «         x} €d}t          |¦  «        ‚| S )Nzfcannot find the Android app folder: python4android and pyjnius failed and no app folder is on sys.path)Ú_android_folderÚRuntimeError)ÚfolderÚmsgs     r   r   r   ¬   s+   € Ý!Ñ#Ô#Ð#ˆÐ,ØvˆÝ˜3ÑÔÐØ€Mr   )Úmaxsizeú
str | Nonec                 ón  — t          ¦   «         } | €Qt          j        dt          j        ¦  «        }t          j        D ]#}|                     |¦  «        x}r
|d         }  nŒ$d} | €Qt          j        dt          j        ¦  «        }t          j        D ]#}|                     |¦  «        x}r
|d         }  nŒ$d} | S )zF:returns: base folder for the Android OS or None if it cannot be foundNa3  
            (?P<folder>
                /data/(?:data|user/\d+)  # internal storage of the primary user or of user N
                /[^/]+                   # package name, one path segment
            )
            /files                       # the files directory the interpreter runs from
            ru   aˆ  
            (?P<folder>
                /mnt/expand/[a-fA-F0-9-]{36}  # adopted storage volume, named by its UUID
                /(?:data|user/\d+)             # the primary user or user N
                /[^/]+                         # package name, one path segment
            )
            /files                             # the files directory the interpreter runs from
            )Ú_python_for_android_folderÚreÚcompileÚVERBOSEÚsysr4   Úmatch)ÚresultÚpatternr4   r   s       r   rs   rs   ³   sè   € õ (Ñ)Ô)€FØ€~õ ”*ðõ ŒJñ	
ô 	
ˆõ ”Hð 	ð 	ˆDØŸš dÑ+Ô+Ð+ˆuð Ø˜xœ�Ø�ðð ˆFØ€~õ ”*ðõ ŒJñ

ô 

ˆõ ”Hð 	ð 	ˆDØŸš dÑ+Ô+Ð+ˆuð Ø˜xœ�Ø�ðð ˆFØ€Mr   z¼
    /user/         # the per-user data root, under /data or an adopted /mnt/expand volume
    (?P<user>\d+)  # the Android user id
    /              # followed by the package folder
    r   Ú_USER_IDc                 ót   — t                                t          ¦   «         pd¦  «        x} r| d         nd}d|› �S )NÚ ÚuserÚ0z/storage/emulated/)r‚   Úsearchrs   )r   r…   s     r   rQ   rQ   ë   s?   € å&.§o¢oµoÑ6GÔ6GÐ6MÈ2Ñ&NÔ&NÐN˜UÐXˆ5�Œ=ˆ=ÐUX€DØ& Ð&Ð&Ð&r   c                 ó¦  — t          t          ¦  «        5  ddlm} m} t          | ¦  «        5   |d¦  «        j        x}€ |d¦  «        j        }|�P|                     ¦   «                              ¦   «          	                    ¦   «         cd d d ¦  «         cd d d ¦  «         S 	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d S )Nr   ©ÚJavaExceptionÚ	autoclasszorg.kivy.android.PythonActivityzorg.kivy.android.PythonService)
r   ÚImportErrorÚjniusrŠ   r‹   Ú	mActivityÚmServiceÚgetFilesDirÚgetParentFileÚgetAbsolutePath)rŠ   r‹   Úcontexts      r   rz   rz   ñ   sÁ  € Ý	•+Ñ	Ô	ð Oð OØ2Ð2Ð2Ð2Ð2Ð2Ð2Ð2å�mÑ$Ô$ð 	Oð 	Oà$˜9Ð%FÑGÔGÔQÐQ�ÐZØ#˜)Ð$DÑEÔEÔN�ØÐ"Ø×*Ò*Ñ,Ô,×:Ò:Ñ<Ô<×LÒLÑNÔNð	Oð 	Oð 	Oð 	Oñ 	Oô 	Oð 	OðOð Oð Oð Oñ Oô Oð Oð Oð #ð		Oð 	Oð 	Oñ 	Oô 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oøøøð 	Oð 	Oð 	Oð 	OðOð Oð Oñ Oô Oð Oð Oð Oð Oð Oð Oøøøð Oð Oð Oð Oð ˆ4s;   •C­AB/Â	CÂ#CÂ/B3	Â3CÂ6B3	Â7CÃC
ÃC
Únamec                óX  — t          t          ¦  «        5  ddlm}m} t          |¦  «        5   |d¦  «                             | ¦  «                             ¦   «         cd d d ¦  «         cd d d ¦  «         S # 1 swxY w Y   	 d d d ¦  «         n# 1 swxY w Y   t          ¦   «         › d| › �S )Nr   r‰   zandroid.os.Environmentú/)r   rŒ   r�   rŠ   r‹   Ú!getExternalStoragePublicDirectoryr’   rQ   )r”   rŠ   r‹   s      r   r@   r@   þ   s}  € å	•+Ñ	Ô	ð qð qØ2Ð2Ð2Ð2Ð2Ð2Ð2Ð2å�mÑ$Ô$ð 	qð 	qØ�9Ð5Ñ6Ô6×XÒXÐY]Ñ^Ô^×nÒnÑpÔpð	qð 	qð 	qð 	qñ 	qô 	qð 	qðqð qð qð qñ qô qð qð qð	qð 	qð 	qð 	qøøøð 	qð 	qð 	qð 	qð 	qðqð qð qñ qô qð qð qð qð qð qð qøøøð qð qð qð qõ
 ÑÔÐ(Ð( $Ð(Ð(Ð(s4   •B­0A6ÁBÁ6A:	Á:BÁ=A:	Á>BÂBÂBrk   )r   rx   )r”   r   r   r   )ro   Ú
__future__r   r3   r{   r~   Ú
contextlibr   Ú	functoolsr   r   Útypingr   Úapir	   r   r   rs   r|   r}   r‚   Ú__annotations__rQ   rz   r@   Ú__all__rq   r   r   ú<module>rŸ      sŠ  ðØ €€à "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð à  Ð  Ð  Ð  Ð  Ð  ðZ%ð Z%ð Z%ð Z%ð Z%ˆoñ Z%ô Z%ð Z%ðzð ð ð ð €�1ÐÑÔð*ð *ð *ñ Ôð*ðZ �"”*ðð
 „Jñô €ð ð ð ñ ð'ð 'ð 'ð 'ð
ð 
ð 
ð 
ð ð)ð )ð )ñ „ð)ð ð€€€r   