Skip to main content
Glama

ClickUp Operator

by noah-vh
staticfiles.cpython-312.pyc11.5 kB
� �MMg� ����ddlmZddlZddlZddlZddlZddlZddlm Z ddl Z ddl Z ddl m Z ddlmZmZddlmZddlmZmZmZddlmZmZmZej6ed fZGd �d e�ZGd �d �Zy)�)� annotationsN)� parsedate)�get_route_path)�URL�Headers)� HTTPException)� FileResponse�RedirectResponse�Response)�Receive�Scope�Sendzos.PathLike[str]c�$��eZdZdZd�fd� Z�xZS)�NotModifiedResponse)z cache-controlzcontent-location�date�etag�expires�varyc ���t�|�d|j�D��cic]\}}||jvs�||��c}}��ycc}}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.pyrzNotModifiedResponse.__init__ sH��� ����4;�M�M�O�i�O�[�T�5�t�t�Oh�Oh�Gh�T�5�[�O�i� � ��is �A �A )rr)�__name__� __module__� __qualname__rr� __classcell__)rs@r rrs����� � �rc��eZdZdddddd� dd�Z d dd�Zdd�Zdd�Zdd �Zdd �Z d dd �Z dd �Z dd �Z y)� StaticFilesNFT)� directory�packages�html� check_dir�follow_symlinkc���||_||_|j||�|_||_d|_||_|r2|�/tjj|�std|�d���yyy)NF� Directory 'z' does not exist) r(r)�get_directories�all_directoriesr*�config_checkedr,�os�path�isdir� RuntimeError)rr(r)r*r+r,s r rzStaticFiles.__init__(su��#��� �� �#�3�3�I�x�H����� �#���,��� ��.�r�w�w�}�}�Y�7O���Y�K�7G�H�I� I�8P�.�9r%c��g}|�|j|�|xsgD]�}t|t�r|\}}nd}tjj |�}|� Jd|�d���|j � Jd|�d���tjjtjj|j d|��}tjj|�sJd|�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�originr2r3�normpath�joinr4)rr(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�|ddk(sJ�|js|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__Ws������V�}��&�&�&��"�"��#�#�%� %� %�"&�D� ��}�}�U�#���*�*�4��7�7���u�g�t�,�,�,� &��8��,�s3�*A<�A6�1A<�A8�A<�0A:�1A<�8A<�:A<c��t|�}tjjtjj|j d���S)z� Given the ASGI scope, return the `path` string to serve up, with OS specific path separators, and any '..', '.' components removed. �/)rr2r3r?r@�split)rrL� route_paths r rJzStaticFiles.get_pathes;�� $�E�*� ��w�w������ � �j�.>�.>�s�.C� D�E�Er%c��K�|ddvr td��� tjj|j|��d{���\}}|r2tj|j�r|j|||�S|r�tj|j�r�|jr�tj j#|d�}tjj|j|��d{���\}}|�}tj|j�r^|d j%d �s7t'|� �}|j)|j d z� �}t+|� �S|j|||�S|jrdtjj|jd��d{���\}}|r-tj|j�rt-||d��Std���7���#t $r td���t $r0}|jtjk(r td���|�d}~wwxYw7��V7���w)z` Returns an HTTP response, given the incoming path, method and request headers. �method)�GET�HEADi�)rNi�i�z index.htmlr3rR�rL)r3)�urlz404.html)� stat_resultr)r�anyio� to_thread�run_sync� lookup_path�PermissionError�OSError�errno� ENAMETOOLONG�stat�S_ISREG�st_mode� file_response�S_ISDIRr*r2r3r@�endswithr�replacer r )rr3rL� full_pathr[�exc� index_pathrZs r rKzStaticFiles.get_responsems����� ��?�/� 1��C�0� 0� �+0�?�?�+C�+C�D�DT�DT�VZ�+[�%[� "�I�{� �4�<�<� �(;�(;�<��%�%�i��e�D� D� �T�\�\�+�*=�*=�>�4�9�9������d�L�9�J�+0�?�?�+C�+C�D�DT�DT�V`�+a�%a� "�I�{��&�4�<�<� �8K�8K�+L��V�}�-�-�c�2��E�*�C��+�+�3�8�8�c�>�+�:�C�+��4�4��)�)�)�[�%�H�H� �9�9�+0�?�?�+C�+C�D�DT�DT�V`�+a�%a� "�I�{��t�|�|�K�,?�,?�@�#�I�;�TW�X�X���,�,�A&\��� 1��C�0� 0�� ��y�y�E�.�.�.�#��4�4��I��  ��&b��&b�s[�I�-H�G=�H� B.I�:I�;B?I�:I�;AI�=H�I �+I�I � I�Ic���|jD]�}tjj||�}|jr tjj |�}ntjj |�}tjj |�}tjj||g�|k7r�� |tj|�fcSy#ttf$rY��wxYw)N)�N) r0r2r3r@r,�abspath�realpath� commonpathrd�FileNotFoundError�NotADirectoryError)rr3r(� joined_pathrks r r_zStaticFiles.lookup_path�s����-�-�I��'�'�,�,�y�$�7�K��"�"��G�G�O�O�K�8� ��G�G�,�,�[�9� ����(�(��3�I��w�w�!�!�9�i�"8�9�Y�F�� � �"�'�'�)�"4�4�4�.���&�'9�:� �� �s�C�C-�,C-c��t|��}t|||��}|j|j|�rt |j�S|S)NrY)rr[)rr �is_not_modifiedrr)rrkr[rLr�request_headersrOs r rgzStaticFiles.file_response�sI��"��.��� �{�P[�\�� � � �� 0� 0�/� B�&�x�'7�'7�8� 8��r%c��K�|j�y tjjtj |j��d{���}t j|j�s9t j|j�std|j�d���yy7�]#t $rtd|j�d���wxYw�w)z� Perform a one-off configuration check that StaticFiles is actually pointed at a directory, so that we can raise loud errors rather than just returning 404 responses. NzStaticFiles directory 'z' does not exist.zStaticFiles path 'z' is not a directory.) r(r\r]r^r2rdrsr5rhrf�S_ISLNK)rr[s r rIzStaticFiles.check_config�s����� �>�>� !� � \� %��� 8� 8����$�.�.� Q�Q�K�� � �[�0�0�1�T�\�\�+�BU�BU�5V��!3�D�N�N�3C�CX�Y�Z� Z�6W�1�R�� � \��!8����8H�HY�Z�[� [� \�s/�C�;B,� B*� B,�AC�*B,�,#C�Cc�� |d}|d}||jd�D�cgc]}|jd���c}vry t|d�}t|d�}|�|�||k\ryycc}w#t$rY�8wxYw#t$rYywxYw) z� Given the request and response headers, return `True` if an HTTP "Not Modified" response could be returned instead. z if-none-matchr�,z W/Tzif-modified-sincez last-modifiedF)rS�strip�KeyErrorr)r�response_headersrx� if_none_matchr�tag�if_modified_since� last_modifieds r rwzStaticFiles.is_not_modified�s���  �+�O�<�M�#�F�+�D��M�4G�4G��4L�M�4L�S�� � �%�(�4L�M�M��N�  � )�/�:M�*N� O� �%�&6��&G�H�M� �,��1J�O`�dq�Oq����N��� � � ��� � �� �s2�A+�A&�A+�%A:�&A+�+ A7�6A7�: B�B) r(�PathLike | Noner)�"list[str | tuple[str, str]] | Noner*�boolr+r�r,r��return�None)NN)r(r�r)r�r�zlist[PathLike])rLr rMr rNrr�r�)rLr r��str)r3r�rLr r�r )r3r�r�z!tuple[str, os.stat_result | None])��) rk�PathLiker[zos.stat_resultrLr r�intr�r )r�r�)rrrxrr�r�) r!r"r#rr/rPrJrKr_rgrIrw�r%r r'r''s���&*�7;���$�J�#�J�5� J� � J� � J��J� �J�(&*�7;��"��5�� � �: -�F�(-�T�.� �� �$� �� � � � � �[� r%r') � __future__rrb�importlib.utilr;r2rd�typing� email.utilsrr\�anyio.to_thread�starlette._utilsr�starlette.datastructuresrr�starlette.exceptionsr�starlette.responsesr r r �starlette.typesr r r�Unionr�r�rr'r�r%r �<module>r�sa��"� �� � � �!� ��+�1�.�H�H�0�0� �<�<��/�/� 0�� �(� �"u�ur%

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/noah-vh/mcp-server-clickup'

If you have feedback or need assistance with the MCP directory API, please join our Discord server