Ë
    ��h5#  ã                  ó0  — 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y)zAndroid.é    )ÚannotationsN)Ú	lru_cache)ÚTYPE_CHECKINGÚcasté   )ÚPlatformDirsABCc                  ó0  — 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y)Ú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>`.

    c                óJ   — | j                  t        dt        «       «      d«      S )zd:return: data directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/files/<AppName>``ÚstrÚfiles©Ú_append_app_name_and_versionr   Ú_android_folder©Úselfs    ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/android.pyÚuser_data_dirzAndroid.user_data_dir   ó"   € ð ×0Ñ0´°e¼_Ó=NÓ1OÐQXÓYÐYó    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                óJ   — | j                  t        dt        «       «      d«      S )z‡
        :return: config directory tied to the user, e.g.         ``/data/user/<userid>/<packagename>/shared_prefs/<AppName>``
        r   Úshared_prefsr   r   s    r   Úuser_config_dirzAndroid.user_config_dir!   s"   € ð ×0Ñ0´°e¼_Ó=NÓ1OÐQ_Ó`Ð`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                óJ   — | j                  t        dt        «       «      d«      S )ze:return: cache directory tied to the user, e.g.,``/data/user/<userid>/<packagename>/cache/<AppName>``r   Ú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                ó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_dir=   ó/   € ð ×"Ñ"ˆØ�<Š<Ü—7‘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   r4   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                 ó   — y)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                ó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_dirf   r0   r   c                ó   — | j                   S )zF:return: runtime directory shared by users, same as `user_runtime_dir`)rF   r   s    r   Úsite_runtime_dirzAndroid.site_runtime_dirq   s   € ð ×$Ñ$Ð$r   N©Úreturnr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r   r   r   r"   r$   r&   r/   r3   r7   r:   r=   r@   rC   rF   rH   rB   r   r   r
   r
      sM  „ ñð òZó ðZð ò"ó ð"ð òaó ðað ò$ó ð$ð òZó ðZð ò#ó ð#ð ò"ó ð"ð òó ðð ò+ó ð+ð ò+ó ð+ð ò*ó ð*ð ò(ó ð(ð ò'ó ð'ð ò-ó ð-ð òó ðð ò%ó ñ%r   r
   )Úmaxsizec                 óÄ  — d} t         sM	 ddlm} t        d|j	                  «       «      }|j                  «       j                  «       j                  «       } | €;	 ddl	m
}  |d«      }|j                  «       j                  «       j                  «       } | €St        j                  d«      }t        j                  D ])  }|j                  |«      sŒ|j!                  d«      d   }  n d} | €Tt        j                  d«      }t        j                  D ]*  }|j                  |«      sŒ|j!                  d«      d   }  | S  d} | S # t        $ r d} Y Œ÷w xY w# t        $ r d} Y ŒËw xY w)	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   ÚandroidrR   r   ÚgetApplicationContextÚgetFilesDirÚgetParentFileÚgetAbsolutePathÚ	ExceptionÚjniusrU   ÚreÚcompileÚsysr,   ÚmatchÚsplit)ÚresultrR   ÚcontextrU   Úpatternr,   s         r   r   r   w   sf  € ð €Fõ ð	å)äÐ4°i×6UÑ6UÓ6WÓXˆGØ×(Ñ(Ó*×8Ñ8Ó:×JÑJÓLˆFð €~ð	õ (áÐ 9Ó:ˆGØ×(Ñ(Ó*×8Ñ8Ó:×JÑJÓLˆFð €~ô —*‘*Ð@ÓAˆÜ—H‘Hò 	ˆDØ�}‰}˜TÕ"ØŸ™ HÓ-¨aÑ0�Ùð	ð
 ˆFØ€~ô —*‘*ÐWÓXˆÜ—H‘Hò 	ˆDØ�}‰}˜TÕ"ØŸ™ HÓ-¨aÑ0�Øð €Mð	ð
 ˆFØ€MøôA ò 	ØŠFð	ûô ò 	ØŠFð	ús$   ŠAE  Á:E Å EÅEÅEÅE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   rT   rS   úandroid.os.Environmentz/storage/emulated/0/Documents)r\   rU   ÚgetExternalFilesDirÚDIRECTORY_DOCUMENTSrZ   r[   )rU   rc   ÚenvironmentÚdocuments_dirs       r   r2   r2   §   óc   € ð8Ý#áÐ5Ó6ˆÙÐ 8Ó9ˆØ$×8Ñ8¸×9XÑ9XÓY×iÑiÓkˆð Ðøô ò 8Ø7‰àÐð8úó   ‚?A ÁAÁAc                 óª   — 	 ddl m}   | d«      } | d«      }|j                  |j                  «      j	                  «       }|S # t
        $ r d}Y |S w xY w)z,:return: downloads folder for the Android OSr   rT   rS   rf   z/storage/emulated/0/Downloads)r\   rU   rg   ÚDIRECTORY_DOWNLOADSrZ   r[   )rU   rc   ri   Údownloads_dirs       r   r6   r6   ·   rk   rl   c                 óª   — 	 ddl m}   | d«      } | d«      }|j                  |j                  «      j	                  «       }|S # t
        $ r d}Y |S w xY w)z+:return: pictures folder for the Android OSr   rT   rS   rf   z/storage/emulated/0/Pictures)r\   rU   rg   ÚDIRECTORY_PICTURESrZ   r[   )rU   rc   ri   Úpictures_dirs       r   r9   r9   Ç   sc   € ð6Ý#áÐ5Ó6ˆÙÐ 8Ó9ˆØ#×7Ñ7¸×8VÑ8VÓW×gÑgÓiˆð Ðøô ò 6Ø5‰àÐð6úrl   c                 óª   — 	 ddl m}   | d«      } | d«      }|j                  |j                  «      j	                  «       }|S # t
        $ r d}Y |S w xY w)z):return: videos folder for the Android OSr   rT   rS   rf   z/storage/emulated/0/DCIM/Camera)r\   rU   rg   ÚDIRECTORY_DCIMrZ   r[   )rU   rc   ri   Ú
videos_dirs       r   r<   r<   ×   sc   € ð7Ý#áÐ5Ó6ˆÙÐ 8Ó9ˆØ!×5Ñ5°k×6PÑ6PÓQ×aÑaÓcˆ
ð Ðøô ò 7Ø6‰
àÐð7úrl   c                 óª   — 	 ddl m}   | d«      } | d«      }|j                  |j                  «      j	                  «       }|S # t
        $ r d}Y |S w xY w)z(:return: music folder for the Android OSr   rT   rS   rf   z/storage/emulated/0/Music)r\   rU   rg   ÚDIRECTORY_MUSICrZ   r[   )rU   rc   ri   Ú	music_dirs       r   r?   r?   ç   sc   € ð0Ý#áÐ5Ó6ˆÙÐ 8Ó9ˆØ ×4Ñ4°[×5PÑ5PÓQ×aÑaÓcˆ	ð Ðøô ò 0Ø/‰	àÐð0úrl   )rJ   z
str | NonerI   )rN   Ú
__future__r   r+   r]   r_   Ú	functoolsr   Útypingr   r   Úapir   r
   r   r2   r6   r9   r<   r?   Ú__all__rB   r   r   ú<module>r~      sÏ   ðÙ å "ã 	Û 	Û 
Ý ß &å  ôf%ˆoô f%ñR �1Ôò,ó ð,ñ^ �1Ôòó ðñ �1Ôòó ðñ �1Ôòó ðñ �1Ôòó ðñ �1Ôòó ðð  ð�r   