Edit File: validate.cpython-311.opt-2.pyc
� �����f�:�����������������������F���� �d�gZ�ddlZddlZddlZ�ej��������d������������Z�ej��������d������������Z�G�d��de������������Zd��Z d��Z d ��Z�G�d ��d������������Z�G�d��d ������������Z �G�d��d������������Z�G�d��d������������Z�G�d��d������������Zd��Zd��Zd��Zd��Zd��Zd��Zd��Zd��ZdS�)� validator�����Nz^[a-zA-Z][a-zA-Z0-9\-_]*$z[\000-\037]c�������������������������e�Zd�ZdS�)�WSGIWarningN)�__name__� __module__�__qualname__��������7/opt/alt/python311/lib64/python3.11/wsgiref/validate.pyr���r���y���s����������������r ���r���c�����������������������|�s t����������|���d�S��N)�AssertionError)�cond�argss��� r����assert_r���~���s��������$��d�#�#�$��$r ���c�����������������������t����������|�������������t����������u�r|�S�t����������d���������������������|t ����������|��������������������������������������)Nz!{0} must be of type str (got {1}))�type�strr����format�repr)�value�titles��� r����check_string_typer�������sF�������U�|�|�s����� �+�2�2�5�$�u�+�+�F�F�H��H��Hr ���c������������������������� ���fd�}|S�)Nc��������������������������t����������t����������|�������������dk����d�������������t����������|�d�������������|�\��}�t����������|�������������g����fd�}t����������|d���������������������|d<���t ����������|d���������������������|d<�����||������������}t����������|d�uo|dk����d�������������t����������|�������������t ����������|�������������S�) N����zTwo arguments required�No keyword arguments allowedc������������������������t����������t����������|�������������dk����pt����������|�������������dk����d|����������������t����������|�d�������������|�d���������}|�d���������}t����������|�������������dk����r |�d���������}nd�}t����������|�������������t����������|�������������t ����������||�������������t����������|�����������������������������������d��������������t������������|���������������S�)Nr�������zInvalid number of arguments: r���r�������)r����len�check_status� check_headers�check_content_type�check_exc_info�append�WriteWrapper)r����kw�status�headers�exc_info�start_response�start_response_starteds��� ��r����start_response_wrapperz;validator.<locals>.lint_app.<locals>.start_response_wrapper����s���������C��I�I��N�4�c�$�i�i�1�n��59�T�;� >�� >�� >���F�:�;�;�;��!�W�F��1�g�G��4�y�y�A�~�~���7������� � � ��'�"�"�"��v�w�/�/�/��8�$�$�$�"�)�)�$�/�/�/����� 5�6�6�6r ���� wsgi.input�wsgi.errorsFz>The application must return an iterator, if only an empty list)r���r!���� check_environ�InputWrapper�ErrorWrapper�check_iterator�IteratorWrapper)r���r(����environr.����iteratorr,���r-����applications��� @@�r����lint_appzvalidator.<locals>.lint_app����s������������D� � �Q�� 8�9�9�9��B��6�7�7�7�"&�����g�����"$�� 7�� 7�� 7�� 7�� 7�� 7�&�!-�W�\�-B� C� C����!-�g�m�.D�!E�!E�� ���;�w�(>�?�?�����$�:��U�):�L� N�� N�� N�� �x� � � ��x�)?�@�@�@r ���r ���)r8���r9���s���` r���r���r�������s.��������'A��'A��'A��'A��'A�R��Or ���c��������������������2�����e�Zd�Zd��Zd��Zd��Zd��Zd��Zd��ZdS�)r2���c�����������������������||�_���������d�S�r ���)�input)�self� wsgi_inputs��� r����__init__zInputWrapper.__init__����s �������� � � r ���c�����������������������t����������t����������|������������dk������������������|�j��������j��������|��}t����������t ����������|������������t ����������u��������������|S��Nr ���)r���r!���r<����readr����bytes�r=���r����vs��� r���rB���zInputWrapper.read����sH��������D� � �Q������D�J�O�T�"����Q���5� �!�!�!��r ���c�����������������������t����������t����������|������������dk������������������|�j��������j��������|��}t����������t ����������|������������t ����������u��������������|S�rA���)r���r!���r<����readliner���rC���rD���s��� r���rG���zInputWrapper.readline����sI��������D� � �Q������D�J���&����Q���5� �!�!�!��r ���c�����������������������t����������t����������|������������dk������������������|�j��������j��������|��}t����������t ����������|������������t ����������u��������������|D�]%}t����������t ����������|������������t����������u���������������&|S�rA���)r���r!���r<���� readlinesr����listrC���)r=���r����lines�lines��� r���rI���zInputWrapper.readlines����st��������D� � �Q�����$�� �$�d�+����U���t�#�$�$�$��� )�� )�D��D��J�J�%�'�(�(�(�(��r ���c��������������#����B���K���� �|�������������������������������������}|sd�S�|V����r ���)rG���)r=���rL���s��� r����__iter__zInputWrapper.__iter__����s3���������� ��=�=�?�?�D��� ����J�J�J� r ���c������������������&�����t����������dd�������������d�S�)Nr���z input.close() must not be called�r����r=���s��� r����closezInputWrapper.close����s��������5�6�6�6�6�6r ���N) r���r���r���r?���rB���rG���rI���rN���rR���r ���r ���r���r2���r2�������sn�������������� �� �� ���������������������7��7��7��7��7r ���r2���c��������������������,�����e�Zd�Zd��Zd��Zd��Zd��Zd��ZdS�)r3���c�����������������������||�_���������d�S�r ���)�errors)r=����wsgi_errorss��� r���r?���zErrorWrapper.__init__����� ������!����r ���c�����������������������t����������t����������|������������t����������u��������������|�j�����������������������������|�������������d�S�r ���)r���r���r���rU����write�r=����ss��� r���rY���zErrorWrapper.write����s6��������Q���3���������!�����r ���c������������������8�����|�j���������������������������������������������d�S�r ���)rU����flushrQ���s��� r���r]���zErrorWrapper.flush����s��������������r ���c������������������:�����|D�]}|�����������������������|��������������d�S�r ���)rY���)r=����seqrL���s��� r���� writelineszErrorWrapper.writelines����s0�������� �� �D��J�J�t����� �� r ���c������������������&�����t����������dd�������������d�S�)Nr���z!errors.close() must not be calledrP���rQ���s��� r���rR���zErrorWrapper.close����s��������6�7�7�7�7�7r ���N)r���r���r���r?���rY���r]���r`���rR���r ���r ���r���r3���r3�������s_��������������"��"��"����������������8��8��8��8��8r ���r3���c�������������������������e�Zd�Zd��Zd��ZdS�)r'���c�����������������������||�_���������d�S�r ���)�writer)r=����wsgi_writers��� r���r?���zWriteWrapper.__init__����rW���r ���c������������������v�����t����������t����������|������������t����������u��������������|����������������������|�������������d�S�r ���)r���r���rC���rd���rZ���s��� r����__call__zWriteWrapper.__call__����s.��������Q���5� �!�!�!����A�����r ���N)r���r���r���r?���rg���r ���r ���r���r'���r'�������s2��������������"��"��"���������r ���r'���c�������������������������e�Zd�Zd��Zd��ZdS�)�PartialIteratorWrapperc�����������������������||�_���������d�S�r ����r7���)r=���� wsgi_iterators��� r���r?���zPartialIteratorWrapper.__init__���s ������%�� � � r ���c������������������,�����t����������|�j��������d�������������S�r ���)r5���r7���rQ���s��� r���rN���zPartialIteratorWrapper.__iter__��s�������t�}�d�3�3�3r ���N)r���r���r���r?���rN���r ���r ���r���ri���ri�������s2��������������&��&��&�4��4��4��4��4r ���ri���c��������������������,�����e�Zd�Zd��Zd��Zd��Zd��Zd��ZdS�)r5���c������������������X�����||�_���������t����������|������������|�_��������d|�_��������||�_��������d�S�)NF)�original_iterator�iterr7����closed�check_start_response)r=���rl���rs���s��� r���r?���zIteratorWrapper.__init__ ��s.������!.����]�+�+�� ����$8��!�!�!r ���c�����������������������|�S�r ���r ���rQ���s��� r���rN���zIteratorWrapper.__iter__��s�������r ���c������������������������t����������|�j���������d�������������t����������|�j��������������������}t ����������|������������t ����������urt����������dd|�d��������������|�j���������t����������|�j��������d�������������d�|�_��������|S�)NzIterator read after closedFz!Iterator yielded non-bytestring (�)zjThe application returns and we started iterating over its body, but start_response has not yet been called)r���rr����nextr7���r���rC���rs���)r=���rE���s��� r����__next__zIteratorWrapper.__next__��s��������D�K��(� *�� *�� *���������7�7�%����E�E�Q�Q�Q�H�I�I�I��$�0��D�-�|� ~�� ~�� ~�(,�D�%��r ���c������������������t�����d|�_���������t����������|�j��������d������������r|�j��������������������������������������������d�S�d�S�)NTrR���)rr����hasattrrp���rR���rQ���s��� r���rR���zIteratorWrapper.close��sC����������4�)�7�3�3�� +��"�(�(�*�*�*�*�*� +�� +r ���c������������������|�����|�j���������st����������j�����������������������������d�������������t ����������|�j���������d�������������d�S�)Nz/Iterator garbage collected without being closed)rr����sys�stderrrY���r���rQ���s��� r����__del__zIteratorWrapper.__del__#��sP�������{�� C��J���A� C�� C�� C����=� ?�� ?�� ?�� ?�� ?r ���N)r���r���r���r?���rN���rx���rR���r~���r ���r ���r���r5���r5�����s_��������������9��9��9������ �� �� �+��+��+� ?��?��?��?��?r ���r5���c����������������������t����������t����������|�������������t����������u�dt����������|��������������d|��d��������������dD�]}t����������||�v�d|����������������dD�]#}t����������||�vd|�d|d d������������d ���������������$d|�vrt����������j��������dt �����������������������|������������������������������������D�]T}d |v�r�t����������t����������|�|���������������������t����������u�d|�dt����������|�|����������������������d|�|����������d���������������Ut����������t����������|�d���������������������t����������u�d|�d����������d��������������t����������|�d���������dv�d|�d���������z���������������t����������|�d����������������������t����������|�d����������������������|�d���������dvr#t����������j��������d|�d���������z��t �����������������������t����������|����������������������d�������������p|�d������������������������������d������������d|�d���������z���������������t����������|����������������������d�������������p|�d������������������������������d������������d|�d���������z���������������|����������������������d ������������r0t����������t����������|�d ���������������������d!k����d"|�d ���������z���������������|����������������������d������������st����������d|�v�d#�������������t����������|����������������������d������������dk����d$�������������d�S�)%Nz&Environment is not of the right type: z (environment: rv���) �REQUEST_METHOD�SERVER_NAME�SERVER_PORT�wsgi.versionr/���r0���zwsgi.multithreadzwsgi.multiprocessz wsgi.run_oncez"Environment missing required key: )�HTTP_CONTENT_TYPE�HTTP_CONTENT_LENGTHz%Environment should not have the key: z (use ����z instead)�QUERY_STRINGz�QUERY_STRING is not in the WSGI environment; the cgi module will use sys.argv when this variable is missing, so application errors are more likely�.zEnvironmental variable z is not a string: z (value: r����z wsgi.version should be a tuple (zwsgi.url_scheme)�http�httpszwsgi.url_scheme unknown: %rr/���r0���r����)�GET�HEAD�POST�OPTIONS�PATCH�PUT�DELETE�TRACEzUnknown REQUEST_METHOD: %r�SCRIPT_NAME�/z$SCRIPT_NAME doesn't start with /: %r� PATH_INFOz"PATH_INFO doesn't start with /: %r�CONTENT_LENGTHr���zInvalid CONTENT_LENGTH: %rzgOne of SCRIPT_NAME or PATH_INFO are required (PATH_INFO should at least be '/' if SCRIPT_NAME is empty)zOSCRIPT_NAME cannot be '/'; it should instead be '', and PATH_INFO should be '/')r���r����dict�warnings�warnr����keysr����tuple�check_input�check_errors�get� startswith�int)r6����keys��� r���r1���r1���*��s�������D��M�M�T�!�!���=�=�=�=�'�'�'� #�$��$��$�!��=��=��� ��w���69�c�;� =�� =�� =�� =��<��1��1����7�"�"�"%�#�#�s�1�2�2�w�w�w� 0� 1�� 1�� 1�� 1���W�$�$�� � 4�� � �� �� ���|�|�~�~��7��7���#�:�:����W�S�\�"�"�c�)�)��s�s�D����&�&�&�&������ 6� 7�� 7�� 7�� 7���D���(�)�)�U�2�2�18��1H�1H�1H�J�L��L��L��G�%�&�*;�;�%��0A�(B�B�D��D��D�����%�&�&�&����'�(�(�(���� ��)M��M��M�� �(�7�3C�+D�D�� �� �� ������M�*�*�*�� 6��}�%�0�0��5�5�.���1G�G�I��I��I������K�(�(�(�� 4��{�#�.�.�s�3�3�,�w�{�/C�C�E��E��E���{�{�#�$�$��F���G�,�-�.�.�!�3�(�7�3C�+D�D� F�� F�� F���;�;�}�%�%��?���w�&� >� ?�� ?�� ?���G�K�K� �&�&�#�-� "�#��#��#��#��#r ���c������������������X�����dD�]&}t����������t����������|�|������������d|��d|����������������'d�S�)N)rB���rG���rI���rN���zwsgi.input (�) doesn't have the attribute �r���rz���)r>����attrs��� r���r����r����k��sQ������=��"��"���� �D�)�)�)��z�z�4�4� !� "�� "�� "�� "�"��"r ���c������������������X�����dD�]&}t����������t����������|�|������������d|��d|����������������'d�S�)N)r]���rY���r`���z wsgi.errors (r����r����)rV���r����s��� r���r����r����q��sQ������0��#��#�����T�*�*�*��{�{�D�D� "� #�� #�� #�� #�#��#r ���c������������������n����t����������|�d������������}�|����������������������d�d������������d���������}t����������t����������|������������dk����d|z���������������t ����������|������������}t����������|dk����d|z���������������t����������|�������������dk�����s|�d���������d k����rt����������j��������d |�z��t�����������������������d�S�d�S�)N�Statusr ���r���r���z)Status codes must be three characters: %r�d���zStatus code is invalid: %r����� zjThe status string (%r) should be a three-digit integer followed by a single space and a status explanation)r����splitr���r!���r����r����r����r���)r)����status_code� status_ints��� r���r"���r"���w��s������� �v�x� 0� 0�F��,�,�t�Q�'�'��*�K��C�����!�3�k�A�C��C��C��[�!�!�J��J�#��;�j�H�I�I�I� �6�{�{�Q���&��)�s�*�*�� � B�� �!� #�� #�� #�� #�� #��+�*r ���c����������� �����������t����������t����������|�������������t����������u�d|��dt����������|����������������������������|�D��]�}t����������t����������|������������t����������u�d|�dt����������|���������������������������t����������t ����������|������������dk�����������������|\��}}t����������|d������������}t����������|d������������}t����������|�����������������������������������dk����d |z���������������t����������d |vod|vd|z���������������t����������t�������������������������������|������������d |z���������������t����������|� ��������������������d�������������o|� ��������������������d�������������d|z���������������t�������������������������������|������������rBt����������dd|�dt�������������������������������|���������������������������������d�������������d�����������������d�S�)Nz Headers (z) must be of type list: zIndividual headers (z) must be of type tuple: r����Header namezHeader valuer)���zyThe Status header cannot be used; it conflicts with CGI script, and HTTP status is not given through headers (value: %r).� �:z,Header names may not contain ':' or '\n': %rzBad header name: %r�-�_z#Names may not end in '-' or '_': %rr���zBad header value: z (bad char: rv���)r���r���rJ���r����r!���r����lower� header_re�search�endswith�bad_header_value_re�group)r*����item�namer���s��� r���r#���r#������s�������D��M�M�T�!�!��7�7�D��M�M�M� #�$��$��$����C��C����T� � �e�#�#��t�t�T�$�Z�Z�Z� !� "�� "�� "�� ��D� � �Q��������e� ��}�5�5��!�%��8�8���� � ����(� �"� #� $�� $�� $�� ��D� �4�S��_�;�d�B� D�� D�� D�� � � ��&�&�(=��(D�E�E�E��D�M�M�#�&�&�&�A�t�}�}�S�/A�/A�+A�1�D�8� :�� :�� :��%�%�e�,�,�� C��A�A��u�u�)�0�0��7�7�=�=�a�@�@�@�@�B�� C�� C�� C��%C��Cr ���c������������������B����t����������|�d������������}�t����������|����������������������d�d������������d���������������������}d}|D�]G\��}}t����������|d������������}|�����������������������������������dk����r||vr�d�S�t ����������dd|z����������������H||vrt ����������dd|z���������������d�S�d�S�) Nr����r ���r���)�����i0��r����zcontent-typezJContent-Type header found in a %s response, which must not return content.z,No Content-Type header found in headers (%s))r���r����r����r����r���)r)���r*����code�NO_MESSAGE_BODYr����r���s��� r���r$���r$������s������� �v�x� 0� 0�F��v�|�|�D�!�$�$�Q�'�(�(�D��!�O���B��B���e� ��}�5�5���:�:�<�<�>�)�)��?�*�*�����A��9�<@�A�� B�� B�� B���?�"�"���A�G�K�L�L�L�L�L��#�"r ���c����������� �������|�����t����������|�d�u�pt����������|�������������t����������u�d|��dt����������|����������������������������d�S�)Nz exc_info (z) is not a tuple: )r���r���r����)r+���s��� r���r%���r%������sO�������H���7��X���%� 7��.6�h�h��X����G�I��I��I��I��Ir ���c������������������\�����t����������t����������|�t����������t����������f�������������d�������������d�S�)NzwYou should not return a string as your application iterator, instead return a single-item list containing a bytestring.)r���� isinstancer���rC���rk���s��� r���r4���r4������s>�������� �8�c�5�\�2�2�2� E�F��F��F��F��Fr ���)�__all__�rer|���r�����compiler����r�����Warningr���r���r���r���r2���r3���r'���ri���r5���r1���r����r����r"���r#���r$���r%���r4���r ���r ���r����<module>r�������s���� i�T��-��� � � � �� � � � �������B�J�3�4�4� � �b�j��0�0������������'������� $��$��$�H��H��H�5��5��5�n!7��!7��!7��!7��!7��!7��!7��!7�F8��8��8��8��8��8��8��8�&���������������4��4��4��4��4��4��4��4�!?��!?��!?��!?��!?��!?��!?��!?�F?#��?#��?#�B"��"��"�#��#��#�#��#��#�C��C��C�2M��M��M� I��I��I� F��F��F��F��Fr ���