o
    uvXj	  ã                   @   s`   d dl Z d dlZd dlmZmZmZmZmZ d dlm	Z	 eZ
dd„ Zdd„ Zdd	„ Zd
d„ ZdS )é    N)ÚabspathÚdirnameÚjoinÚnormcaseÚsep)ÚSuspiciousFileOperationc                 C   ó   | S )z:Always return a unicode path (did something for Python 2).© ©Úpathr	   r	   úM/var/www/html/myproject/venv/lib/python3.10/site-packages/django/utils/_os.pyÚupath   s   r   c                 C   r   )zu
    Always return a native path, that is unicode on Python 3 and bytestring on
    Python 2. Noop for Python 3.
    r	   r
   r	   r	   r   Únpath   s   r   c                 G   sj   t t| g|¢R Ž ƒ}t | ƒ}t|ƒ t|t ƒ¡s3t|ƒt|ƒkr3tt|ƒƒt|ƒkr3td ||¡ƒ‚|S )zî
    Join one or more path components to the base path component intelligently.
    Return a normalized, absolute version of the final path.

    Raise ValueError if the final path isn't located inside of the base path
    component.
    zGThe joined path ({}) is located outside of the base path component ({}))r   r   r   Ú
startswithr   r   r   Úformat)ÚbaseÚpathsÚ
final_pathÚ	base_pathr	   r	   r   Ú	safe_join   s   þr   c               
   C   s†   t  ¡ �5} tj | d¡}tj | d¡}t |¡ z
t ||¡ d}W n ttfy/   d}Y nw |W  d  ƒ S 1 s<w   Y  dS )z¶
    Return whether or not creating symlinks are supported in the host platform
    and/or if they are allowed to be created (e.g. on Windows it requires admin
    permissions).
    ÚoriginalÚsymlinkTFN)	ÚtempfileÚTemporaryDirectoryÚosr   r   Úmakedirsr   ÚOSErrorÚNotImplementedError)Útemp_dirÚoriginal_pathÚsymlink_pathÚ	supportedr	   r	   r   Úsymlinks_supported2   s   

ÿ$÷r"   )r   r   Úos.pathr   r   r   r   r   Údjango.core.exceptionsr   Úabspathur   r   r   r"   r	   r	   r	   r   Ú<module>   s    