o
    {,h	                     @   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	 d dl
mZ dd Zdd Zd	d
 ZdS )    N)abspathdirnamejoinnormcasesep)Path)SuspiciousFileOperationc                 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 SuspiciousFileOperation 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_path r   F/var/www/html/rh/venv/lib/python3.10/site-packages/django/utils/_os.py	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ospathr   makedirsr   OSErrorNotImplementedError)temp_diroriginal_pathsymlink_path	supportedr   r   r   symlinks_supported&   s   

$r   c                 C   s2   t | tr| S t | tstdt| j t| S )z@Convert value to a pathlib.Path instance, if not already a Path.zInvalid path type: %s)
isinstancer   str	TypeErrortype__name__)valuer   r   r   to_path8   s
   

r&   )r   r   os.pathr   r   r   r   r   pathlibr   django.core.exceptionsr   r   r   r&   r   r   r   r   <module>   s    