File manager - Edit - /usr/local/CyberPanel/lib/python3.10/site-packages/tornado/__pycache__/web.cpython-310.pyc
Back
o �h�/ � @ s d Z ddlZddlZddlZddlZddlZddlZddlZddl Z ddl Zddlm Z ddlmZ ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZ ddl m!Z!m"Z" ddlm#Z# ddlm$Z$ dd l%m&Z& dd lm'Z' ddlm(Z( ddlm)Z) dd l*m+Z+m,Z,m-Z- ddlm.Z. ddl/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z<m=Z=m>Z> e9Z?ddl@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN ddlmOZO ddl@Z@e@jP�rddl@mQZQ eCeRe=eSejTejf ZUeCeVeReAeSeVf eAeSeRf f ZWdZX dZY dZZ dZ[ G dd� d�Z\e\� Z]G dd� de^�Z_eLde_d�Z`deKe` deKe` fdd �ZadeKe_ debfd!d"�Zcd#eHd$eDeEd f deHd$eDeEd f fd%d&�Zdd#eHd$eDeEd f deHd$eDeEd f fd'd(�ZeG d)d*� d*e8�ZfG d+d,� d,e6�ZgG d-d.� d.e'jh�ZiG d/d0� d0ej�ZkG d1d2� d2ej�ZlG d3d4� d4ek�ZmG d5d6� d6e_�ZnG d7d8� d8e_�ZoG d9d:� d:e_�ZpG d;d<� d<e_�ZqG d=d>� d>e^�ZrG d?d@� d@er�Zsd#eHd$eDeEd f deHd$eDeEd f fdAdB�ZtG dCdD� dDe^�ZuG dEdF� dFeu�ZvG dGdH� dHeu�ZwG dIdJ� dJeu�ZxG dKdL� dLe^�Zy dndMeWdNeVdOeCeVeRf dPeDeS dQeDeHg ezf dReDeS deRfdSdT�Z{e�|dU�Z}dOeRdeSfdVdW�Z~ X dodMeWdNeVdOeCdeVeRf dYezdQeDeHg ezf dZeDeS deDeR fd[d\�ZdMeCeVeRf dNeVdOeRdYezdQeHg ezf deDeR fd]d^�Z�dOeRdeFeSeReReReRf fd_d`�Z�dMeWdNeVdOeRdYezdQeHg ezf deDeR fdadb�Z�dOeCeVeRf deDeS fdcdd�Z�dMeCeVeRf deeCeVeRf deRfdfdg�Z�dMeCeVeRf dheRdeRfdidj�Z�dkeVdebfdldm�Z�dS )paP ``tornado.web`` provides a simple web framework with asynchronous features that allow it to scale to large numbers of open connections, making it ideal for `long polling <http://en.wikipedia.org/wiki/Push_technology#Long_polling>`_. Here is a simple "Hello, world" example app: .. testcode:: import asyncio import tornado class MainHandler(tornado.web.RequestHandler): def get(self): self.write("Hello, world") async def main(): application = tornado.web.Application([ (r"/", MainHandler), ]) application.listen(8888) await asyncio.Event().wait() if __name__ == "__main__": asyncio.run(main()) .. testoutput:: :hide: See the :doc:`guide` for additional information. Thread-safety notes ------------------- In general, methods on `RequestHandler` and elsewhere in Tornado are not thread-safe. In particular, methods such as `~RequestHandler.write()`, `~RequestHandler.finish()`, and `~RequestHandler.flush()` must only be called from the main thread. If you use multiple threads it is important to use `.IOLoop.add_callback` to transfer control back to the main thread before finishing the request, or to limit your use of other threads to `.IOLoop.run_in_executor` and ensure that your callbacks running in the executor do not refer to Tornado objects. � N)�isclass)�BytesIO)� urlencode)�Future�"future_set_result_unless_cancelled)�escape)�gen)� HTTPServer)�httputil)�iostream)�locale)� access_log�app_log�gen_log)�template)�utf8�_unicode)� AnyMatches�DefaultHostMatches�HostMatches�ReversibleRouter�Rule�ReversibleRuleRouter�URLSpec� _RuleList)� ObjectDict�unicode_type�_websocket_mask)�Dict�Any�Union�Optional� Awaitable�Tuple�List�Callable�Iterable� Generator�Type�TypeVar�cast�overload)� TracebackType)�Set� � c @ s e Zd ZdS )�_ArgDefaultMarkerN)�__name__� __module__�__qualname__� r4 r4 �A/usr/local/CyberPanel/lib/python3.10/site-packages/tornado/web.pyr0 � s r0 c s� e Zd ZdZdZi Ze�� Ze � d�ZdZdZ dZdZdddejd ed df� fdd�Zd�d d�ZeZ ed eeef fdd��Zded ed dfdd�ZeZeZeZeZeZeZ eZ!d e"e#d fdd�Z$d�dd�Z%d�dd�Z&d�dd�Z'd�dd�Z(d�de)de"e d dfd d!�Z*d e)fd"d#�Z+d$ed%e,d dfd&d'�Z-d$ed%e,d dfd(d)�Z.d$ed dfd*d+�Z/e � d,�Z0d%e,d efd-d.�Z1e2d�d$ed0ed1e3d efd2d3��Z4e2e5d/fd$ed0e6d1e3d efd4d3��Z4e2 /d�d$ed0dd1e3d e"e fd5d3��Z4e5d/fd$ed0e7dee6f d1e3d e"e fd6d3�Z4d�d$ed1e3d e8e fd7d8�Z9e5d/fd$ed0e7dee6f d1e3d e"e fd9d:�Z:d�d$ed1e3d e8e fd;d<�Z;e5d/fd$ed0e7dee6f d1e3d e"e fd=d>�Z<d�d$ed1e3d e8e fd?d@�Z= /d�d$ed0e7dee6f dAeee8e> f d1e3d e"e f dBdC�Z? /d�d$edAeee8e> f d1e3d e8e fdDdE�Z@d�d%e>d$e"e d efdFdG�ZAed eeeBjCjDf fdHdI��ZCd�d$ed0e"e d e"e fdJdK�ZE L d�dddddM�d$ed%e7ee>f dNe"e dOe"e7eFeGeHjHf dPedQe"eF dRe"e) dSe3dTe3dUe"e d ed dfdVdW�ZId$ed ed dfdXdY�ZJd ed dfdZd[�ZK \ d�d$ed%e7ee>f dQe"eF d]e"e) d ed dfd^d_�ZLeLZM d�d$ed%e7ee>f d]e"e) d e>fd`da�ZN b d�d$ed%e"e dceFdde"e) d e"e> f dedf�ZOeOZP d�d$ed%e"e d e"e) fdgdh�ZQeQZR d�diedje3dke"e) d dfdldm�ZSdne7ee>eTf d dfdodp�ZUdqed ed drfdsdt�ZVdueWe d efdvdw�ZXdxeWe> d e>fdydz�ZYd{eWe d efd|d}�ZZd~eWe> d e>fdd��Z[dqed ed e>fd�d��Z\d eeef fd�d��Z]d�ed e^j_fd�d��Z`d�d�e3d drfd�d��Zad�dne"e7ee>eTf d drfd�d��Zbd ecjdfd�d��Zed�d�d��Zfd�de)d ed dfd�d��Zgde)d ed dfd�d��Zhed eijjjkfd�d���Zjejjld%eijjjkd dfd�d���Zjd e"eijjjk fd�d��Zmd�d0ed eijjjkfd�d��Zned efd�d���Zoeojld%ed dfd�d���Zod efd�d��Zpd efd�d��Zqd e"e fd�d��Zred e>fd�d���Zsd eGe"e) e>eFf fd�d��Ztd�ed eGe"e) e"e> e"eF f fd�d��Zud�d�d��Zvd efd�d��Zw d�dPed�e"e3 d ed efd�d��Zxd�d$ed�ed dfd�d��Zyd$eded efd�d��Zzd e"e fd�d��Z{d�d�d��Z|d e3fd�d��Z}d�e8d� de>d e>d dfd�dĄZ~dne>d e"e#d fd�dƄZd�d�dȄZ�d efd�dʄZ�d�e�d dfd�d̈́Z�d�d�d%e"e� d�e"e� d dfd�d҄Z�d$ed�e�d� d e�d�ef fd�dׄZ�d�e�d�ef d e�d�ef fd�dڄZ�d�d�d܄Z�� Z�S )��RequestHandleraF Base class for HTTP request handlers. Subclasses must define at least one of the methods defined in the "Entry points" section below. Applications should not construct `RequestHandler` objects directly and subclasses should not override ``__init__`` (override `~RequestHandler.initialize` instead). )�GET�HEAD�POST�DELETE�PATCH�PUT�OPTIONSz[\x00-\x08\x0e-\x1f]FN�application�Application�request�kwargs�returnc s� t � �� |� _|� _d� _d� _d� _d � _t� fdd�|j � � D ��� _t� |j �� jd<