staticfiles.cpython-312.pyc•11.5 kB
�
�MMg� � �� � d dl mZ d dlZd dlZd dlZd dlZd dlZd dlm Z d dl
Z
d dlZ
d dlm
Z
d dlmZmZ d dlmZ d dlmZmZmZ d dlmZmZmZ ej6 ed f Z G d
� de� Z G d� d
� Zy)� )�annotationsN)� parsedate)�get_route_path)�URL�Headers)�
HTTPException)�FileResponse�RedirectResponse�Response)�Receive�Scope�Sendzos.PathLike[str]c �$ � � e Zd ZdZd� fd�Z� xZS )�NotModifiedResponse)z
cache-controlzcontent-location�date�etag�expires�varyc � �� t �| � d|j � D ��ci c] \ }}|| j v s�||�� c}}�� y c c}}w )Ni0 )�status_code�headers)�super�__init__�items�NOT_MODIFIED_HEADERS)�selfr �name�value� __class__s ��aC:\Users\noahv\Documents\GitHub\clickup-operator\.venv\Lib\site-packages\starlette/staticfiles.pyr zNotModifiedResponse.__init__ sH �� �
����4;�M�M�O�i�O�[�T�5�t�t�Oh�Oh�Gh�T�5�[�O�i� �
��is
�A�A)r r )�__name__�
__module__�__qualname__r r �
__classcell__)r s @r r r s �� ���
�
� r c � � e Zd Zdddddd� dd�Z d dd�Zdd�Zdd�Zdd �Zdd
�Z d dd�Z dd�Z
dd
�Zy)�StaticFilesNFT)� directory�packages�html� check_dir�follow_symlinkc �� � || _ || _ | j ||� | _ || _ d| _ || _ |r2|�/t j j |� st d|� d�� �y y y )NF�Directory 'z' does not exist)r( r) �get_directories�all_directoriesr* �config_checkedr, �os�path�isdir�RuntimeError)r r( r) r* r+ r, s r r zStaticFiles.__init__( su � � #��� ��
�#�3�3�I�x�H����� �#���,�����.�r�w�w�}�}�Y�7O���Y�K�7G�H�I�I� 8P�.�9r% c � � g }|�|j |� |xs g D ]� }t |t � r|\ }}nd}t j j |� }|�J d|�d�� �|j �J d|�d�� �t j j t j j |j d|� � }t j j |� sJ d|�d|�d�� �|j |� �� |S )z�
Given `directory` and `packages` arguments, return a list of all the
directories that should be used for serving static files from.
�staticszPackage z could not be found.z..r. z
' in package )�append�
isinstance�tuple� importlib�util� find_spec�originr2 r3 �normpath�joinr4 )r r( r) �directories�package�statics_dir�spec�package_directorys r r/ zStaticFiles.get_directories: s � � ��� ����y�)��~�2�~�G��'�5�)�'.�$���'���>�>�+�+�G�4�D��#�O�x��{�:N�%O�O�#��;�;�*�V�h�w�k�AU�,V�V�*� "��� 0� 0������d�k�k�4�Q\�1]� ^���7�7�=�=�!��
Y��[�O�=���CW�X�
Y� �
���0�1� &� �r% c � �� K � |d dk( sJ �| j s| j � � d{ ��� d| _ | j |� }| j ||� � d{ ��� } ||||� � d{ ��� y7 �I7 �7 � �w)z'
The ASGI entry point.
�type�httpNT)r1 �check_config�get_path�get_response)r �scope�receive�sendr3 �responses r �__call__zStaticFiles.__call__W s� � �� � �V�}��&�&�&��"�"��#�#�%�%�%�"&�D���}�}�U�#���*�*�4��7�7���u�g�t�,�,�,�
&�� 8��,�s3 �*A<�A6�1A<�A8�A<�0A:�1A<�8A<�:A<c � � t |� }t j j t j j |j d� � � S )z�
Given the ASGI scope, return the `path` string to serve up,
with OS specific path separators, and any '..', '.' components removed.
�/)r r2 r3 r? r@ �split)r rL �
route_paths r rJ zStaticFiles.get_pathe s; � �
$�E�*�
��w�w��������j�.>�.>�s�.C� D�E�Er% c � � K � |d dvrt d�� � t j j | j |� � d{ ��� \ }}|r2t j |j � r| j |||� S |r�t j |j � r�| j r�t j j# |d� }t j j | j |� � d{ ��� \ }}|�}t j |j � r^|d j% d
� s7t'