+
    yj'                    d   ^ RI Ht ^ RIt^ RIt^ RIHt ^ RIHt ^ RI	H	t	 ^ RI
Ht ^ RIHt ^ RIt^ RIHt ^ R	IHt ^ R
IHt ^RIHt ^RIHt ]P4                  '       d   ^ RIHt ^ RIHt ^RIHt  ! R R]P@                  PB                  4      t!Rs"R R lt# ! R R]4      t$ ! R R]4      t%R# )    )annotationsN)contextmanager)	ExitStack)copy)TracebackType)urlsplit)	CliRunner)Client)Request)
ScriptInfo)SessionMixin)WSGIEnvironment)TestResponse)Flaskc                  B   a  ] tR t^tRtRR V 3R llltR R ltRtV ;t# )EnvironBuilderau  An :class:`~werkzeug.test.EnvironBuilder`, that takes defaults from the
application.

:param app: The Flask application to configure the environment from.
:param path: URL path being requested.
:param base_url: Base URL where the app is being served, which
    ``path`` is relative to. If not given, built from
    :data:`PREFERRED_URL_SCHEME`, ``subdomain``,
    :data:`SERVER_NAME`, and :data:`APPLICATION_ROOT`.
:param subdomain: Subdomain name to append to :data:`SERVER_NAME`.
:param url_scheme: Scheme to use instead of
    :data:`PREFERRED_URL_SCHEME`.
:param json: If given, this is serialized as JSON and passed as
    ``data``. Also defaults ``content_type`` to
    ``application/json``.
:param args: other positional arguments passed to
    :class:`~werkzeug.test.EnvironBuilder`.
:param kwargs: other keyword arguments passed to
    :class:`~werkzeug.test.EnvironBuilder`.
c               8    V ^8  d   QhRRRRRRRRRRR	R
RR
RR/# )   appr   pathstrbase_urlz
str | None	subdomain
url_schemeargst.AnykwargsreturnNone )formats   "A/var/www/html/2rare/lib/python3.14/site-packages/flask/testing.py__annotate__EnvironBuilder.__annotate__0   sZ     &: &:&: &: 	&:
 &: &: &: &: 
&:    c                	  < V'       g   V'       g	   V'       d$   VR J\        T;'       g    T4      8w  g   Q R4       hVEf   VP                  P                  R4      ;'       g    RpVP                  R,          p	V'       d   V RV 2pVf   VP                  R,          p\        V4      p
V
P                  ;'       g    T RV
P
                  ;'       g    T RV	P                  R4       2pV
P                  pV
P                  '       d>   \        V
P                  \        4      '       d   R	MR
pW+V
P                  ,           ,          pWn        \        SV `4  ! W#.VO5/ VB  R # )Nz8Cannot pass "subdomain" or "url_scheme" with "base_url".SERVER_NAME	localhostAPPLICATION_ROOT.PREFERRED_URL_SCHEMEz:///   ??)boolconfiggetr   schemenetloclstripr   query
isinstancebytesr   super__init__)selfr   r   r   r   r   r   r   	http_hostapp_rooturlsep	__class__s   &&&&&&*,    r"   r9   EnvironBuilder.__init__0   s<    	ZD ##
=
 	F F		F 
 

}5DDIzz"45H(k9+6	! ZZ(>?
4.C::++,C

0G0Gi/HHOOC()+  88Dyyy(E::dcii'9$9&9r%   c               $    V ^8  d   QhRRRRRR/# )r   objr   r   r   r   r    )r!   s   "r"   r#   r$   X   s!     2 2e 2u 2 2r%   c                P    V P                   P                  P                  ! V3/ VB # )zSerialize ``obj`` to a JSON-formatted string.

The serialization will be configured according to the config associated
with this EnvironBuilder's ``app``.
)r   jsondumps)r:   rB   r   s   &&,r"   
json_dumpsEnvironBuilder.json_dumpsX   s"     xx}}""31&11r%   r   )r,   NNN)	__name__
__module____qualname____firstlineno____doc__r9   rF   __static_attributes____classcell__r?   s   @r"   r   r      s    *&: &:P2 2r%   r    c                   V ^8  d   QhRR/# )r   r   r   r    )r!   s   "r"   r#   r#   d   s      s r%   c                 d    \         '       g    \        P                  P                  R 4      s \         # )werkzeug)_werkzeug_version	importlibmetadataversionr    r%   r"   _get_werkzeug_versionrY   d   s'     %..66zBr%   c                     a  ] tR t^mt$ RtR]R&   R V 3R llt]R R l4       tR R	 lt	R
 R lt
RRRR/R V 3R llltR R ltR R ltRtV ;t# )FlaskClienta  Works like a regular Werkzeug test client but has knowledge about
Flask's contexts to defer the cleanup of the request context until
the end of a ``with`` block. For general information about how to
use this class refer to :class:`werkzeug.test.Client`.

.. versionchanged:: 0.12
   `app.test_client()` includes preset default environment, which can be
   set after instantiation of the `app.test_client()` object in
   `client.environ_base`.

Basic usage is outlined in the :doc:`/testing` chapter.
r   applicationc               $    V ^8  d   QhRRRRRR/# )r   r   r   r   r   r   r    )r!   s   "r"   r#   FlaskClient.__annotate__}   s!     
 
e 
u 
 
r%   c                	   < \         SV `  ! V/ VB  R V n        . V n        \	        4       V n        RRRR\        4        2/V n        R# )FREMOTE_ADDRz	127.0.0.1HTTP_USER_AGENTz	Werkzeug/N)r8   r9   preserve_context_new_contextsr   _context_stackrY   environ_base)r:   r   r   r?   s   &*,r"   r9   FlaskClient.__init__}   sO    $)&) %<>'k;+@+B*CD
r%   c               $    V ^8  d   QhRRRRRR/# )r   r   r   r   r   zt.Iterator[SessionMixin]r    )r!   s   "r"   r#   r^      s$     /
 /
/
&+/
	!/
r%   c              /  @  "   V P                   f   \        R4      hV P                  pVP                  ! V/ VB pV P	                  VP
                  P                  4       V;_uu_ 4        VP                  P                  W4P
                  4      pRRR4       Xf   \        R4      hVx  VP                  4       pVP                  P                  V4      '       d   R# V;_uu_ 4        VP                  P                  W5V4       RRR4       V P                  VP
                  P                  P                  R4      ^ ,          VP
                  P                   VP"                  P%                  R4      4       R#   + '       g   i     L; i  + '       g   i     L; i5i)a2  When used in combination with a ``with`` statement this opens a
session transaction.  This can be used to modify the session that
the test client uses.  Once the ``with`` block is left the session is
stored back.

::

    with client.session_transaction() as session:
        session['value'] = 42

Internally this is implemented by going through a temporary test
request context and since session handling could depend on
request variables this function accepts the same arguments as
:meth:`~flask.Flask.test_request_context` which are directly
passed through.
Nz>Cookies are disabled. Create a client with 'use_cookies=True'.z'Session backend did not open a session.:z
Set-Cookie)_cookies	TypeErrorr\   test_request_context_add_cookies_to_wsgirequestenvironsession_interfaceopen_sessionRuntimeErrorresponse_classis_null_sessionsave_session_update_cookies_from_responsehost	partitionr   headersgetlist)r:   r   r   r   ctxsessresps   &*,    r"   session_transactionFlaskClient.session_transaction   s:    ( == P  &&77!!#++"5"56S((55c;;GD  <HII
!!#  0066S!!..s$?  	**KK&&s+A.KKLL  .	
 S Ss>   A'F)&E8AFF'FA4F8F	FF	Fc                    V ^8  d   QhRRRR/# )r   otherr   r   r    )r!   s   "r"   r#   r^      s      ?  r%   c                	|    / V P                   CVCpV P                  '       d   V P                  P                  VR &   V# )zwerkzeug.debug.preserve_context)re   rb   rc   append)r:   r   outs   && r"   _copy_environFlaskClient._copy_environ   s?    ,"",e,   595G5G5N5NC12
r%   c               $    V ^8  d   QhRRRRRR/# )r   r   ztuple[t.Any, ...]r   zdict[str, t.Any]r   BaseRequestr    )r!   s   "r"   r#   r^      s$     	 	%	/?			r%   c                	    V P                  VP                  R / 4      4      VR &   \        V P                  .VO5/ VB p VP	                  4       VP                  4        #   TP                  4        i ; i)re   )r   r1   r   r\   get_requestclose)r:   r   r   builders   &&& r"   _request_from_builder_args&FlaskClient._request_from_builder_args   sb     "&!3!3FJJ~r4R!S~ !1!1CDCFC	&&(MMOGMMOs   A A1bufferedFfollow_redirectsc          
     ,    V ^8  d   QhRRRRRRRRRR/# )	r   r   r   r   r/   r   r   r   r   r    )r!   s   "r"   r#   r^      s<     + ++ + 	+
 + 
+r%   c               	   < V'       EdS   \        V^ ,          \        P                  P                  \        \
        34      '       Ed   \        V^ ,          \        P                  P                  4      '       dN   \        V^ ,          4      pT P                  VP                  ;'       g    / 4      Vn        VP                  4       pM\        V^ ,          \        4      '       dH   \        P                  V^ ,          V P                  V P                  / 4      R7      P                  4       pMD\        V^ ,          4      pV P                  VP                  4      Vn        MV P                  W44      pV P                  P                  4        \         S	V `E  VVVR7      pV P                  P$                  Vn        V P(                  '       d8   V P(                  P+                  4       pV P                  P-                  V4       KI  V# )r   )r   re   )r   r   )r6   rT   testr   dictr   r   r   re   r   from_environr\   ro   r   rd   r   r8   openrD   json_modulerc   popenter_context)
r:   r   r   r   r   r   rn   responsecmr?   s
   &$$*,    r"   r   FlaskClient.open   s    4JGhmm22D+F
 
 $q'8==#?#?@@tAw-'+'9'9':N:N:T:TRT'U$!--/DGT**(55G!1!1@R@RSU@V 6 +- 
 tAw-"&"4"4W__"E 55dCG
 	!!#7<-   

  $//44    ##'')B--b1r%   c                   V ^8  d   QhRR/# )r   r   r[   r    )r!   s   "r"   r#   r^      s      ; r%   c                	N    V P                   '       d   \        R 4      hRV n         V # )zCannot nest client invocationsT)rb   rr   r:   s   &r"   	__enter__FlaskClient.__enter__   s'       ?@@ $r%   c               (    V ^8  d   QhRRRRRRRR/# )	r   exc_typeztype | None	exc_valuezBaseException | NonetbzTracebackType | Noner   r   r    )r!   s   "r"   r#   r^      s2     $ $$ ($ !	$
 
$r%   c                	H    R V n         V P                  P                  4        R# )FN)rb   rd   r   )r:   r   r   r   s   &&&&r"   __exit__FlaskClient.__exit__   s     !&!!#r%   )rd   rc   re   rb   )rI   rJ   rK   rL   rM   __annotations__r9   r   r~   r   r   r   r   r   rN   rO   rP   s   @r"   r[   r[   m   sg     
 
 /
 /
b	+ + "'	+ +Z$ $r%   r[   c                  H   a  ] tR tRtRtR V 3R lltRR V 3R llltRtV ;t# )	FlaskCliRunneri	  zA :class:`~click.testing.CliRunner` for testing a Flask app's
CLI commands. Typically created using
:meth:`~flask.Flask.test_cli_runner`. See :ref:`testing-cli`.
c               $    V ^8  d   QhRRRRRR/# )r   r   r   r   r   r   r   r    )r!   s   "r"   r#   FlaskCliRunner.__annotate__  s!     # #E #U #t #r%   c                	4   < Wn         \        SV `  ! R/ VB  R # )Nr    )r   r8   r9   )r:   r   r   r?   s   &&,r"   r9   FlaskCliRunner.__init__  s    "6"r%   c               (    V ^8  d   QhRRRRRRRR/# )r   clir   r   r   r   r    )r!   s   "r"   r#   r     s,     3 33',3?D3	3r%   c                   <a  Vf   S P                   P                  pRV9  d   \        V 3R lR7      VR&   \        SS `  ! W3/ VB # )a  Invokes a CLI command in an isolated environment. See
:meth:`CliRunner.invoke <click.testing.CliRunner.invoke>` for
full method documentation. See :ref:`testing-cli` for examples.

If the ``obj`` argument is not given, passes an instance of
:class:`~flask.cli.ScriptInfo` that knows how to load the Flask
app being tested.

:param cli: Command object to invoke. Default is the app's
    :attr:`~flask.app.Flask.cli` group.
:param args: List of strings to invoke the command with.

:return: a :class:`~click.testing.Result` object.
rB   c                    < S P                   # )NrH   r   s   r"   <lambda>'FlaskCliRunner.invoke.<locals>.<lambda>(  s	    $((r%   )
create_app)r   r   r   r8   invoke)r:   r   r   r   r?   s   f&&,r"   r   FlaskCliRunner.invoke  sB    " ;((,,C&2BCF5Mw~c2622r%   rH   )NN)	rI   rJ   rK   rL   rM   r9   r   rN   rO   rP   s   @r"   r   r   	  s!    
# #3 3 3r%   r   )&
__future__r   importlib.metadatarV   typingt
contextlibr   r   r   typesr   urllib.parser   werkzeug.testrT   click.testingr	   r
   werkzeug.wrappersr   r   r   r   sessionsr   TYPE_CHECKING_typeshed.wsgir   r   r   r   r   r   rU   rY   r[   r   r    r%   r"   <module>r      s    "   %     !  #   4  "???.*D2X]]11 D2N  Y$& Y$x!3Y !3r%   