+
    AžÀj…'  ã                  óp  € ^ 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 ^RIHt ]P6                  '       d   ^ RIHt ^ RIHt ^RIH t   ! R R]PB                  PD                  4      t"Rs#R R lt$ ! R R]4      t% ! R R]4      t&R# )é    )ÚannotationsN)Úcontextmanager)Ú	ExitStack)Úcopy)ÚTracebackType)Úurlsplit)Ú	CliRunner)ÚResult)Ú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/mycamper/aliexpress-site/backend/venv/lib/python3.14/site-packages/flask/testing.pyÚ__annotate__ÚEnvironBuilder.__annotate__1   sZ   € ÷ %:ñ %:àð%:ð ð%:ð ð	%:ð
 ð%:ð ð%:ð ð%:ð ð%:ð 
ñ%:ó    c                	ól  <€ V'       g   V'       g	   V'       d$   VR J\        T;'       g    T4      8w  g   Q R4       hV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 R	V
P                   2pWn	        \        SV `,  ! 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   Úqueryr   ÚsuperÚ__init__)Úselfr   r   r   r   r   r   r   Ú	http_hostÚapp_rootÚurlÚ	__class__s   &&&&&&*,   €r#   r7   ÚEnvironBuilder.__init__1   s$  ø€ ÷ §	¯ZØ˜DÐ Ü�)×)Ð)˜zÓ*ô=+ð 	
ð Gó	
ð +ð ÒØŸ
™
Ÿ™ }Ó5×DÐD¸ˆIØ—z‘zÐ"4Õ5ˆHçØ(˜k¨¨9¨+Ð6�	àÒ!Ø ŸZ™ZÐ(>Õ?�
ä˜4“.ˆCà—:‘:×+Ð+ Ð,¨C°·
±
×0GÐ0G¸iÐ/HØ�H—O‘O CÓ(Ð)ð+ð ð —8‘8ˆDà�y�yˆyØ˜˜q §¡ Ð,�àŒÜ‰Ò˜Ð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ñ 2˜eð 2¨uð 2¸ñ 2r&   c                óP   € V P                   P                  P                  ! V3/ VB # )z›Serialize ``obj`` to a JSON-formatted string.

The serialization will be configured according to the config associated
with this EnvironBuilder's ``app``.
)r   ÚjsonÚdumps)r8   r?   r   s   &&,r#   Ú
json_dumpsÚEnvironBuilder.json_dumpsX   s"   € ð �x‰x�}‰}×"Ò" 3Ñ1¨&Ñ1Ð1r&   ©r   )r-   NNN)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r7   rC   Ú__static_attributes__Ú__classcell__©r<   s   @r#   r   r      s   ø† ñ÷*%:ò %:÷N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_versionrV   d   s'   € ÷ ÓÜ%×.Ñ.×6Ñ6°zÓ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)r6   r7   Úpreserve_contextÚ_new_contextsr   Ú_context_stackrV   Úenviron_base)r8   r   r   r<   s   &*,€r#   r7   Ú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Ú	TypeErrorrY   Ú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)r8   r   r   r   ÚctxÚsessÚresps   &*,    r#   Úsession_transactionÚFlaskClient.session_transaction‡   s:  é € ð( �=‰=Ò ÜØPóð ð ×ÑˆØ×&Ò&¨Ð7°Ñ7ˆØ×!Ñ! #§+¡+×"5Ñ"5Ô6çŠSØ×(Ñ(×5Ñ5°c¿;¹;ÓGˆD÷ ð Š<ÜÐHÓIÐIàŠ
Ø×!Ñ!Ó#ˆà× Ñ ×0Ñ0°×6Ò6ÙçŠSØ×!Ñ!×.Ñ.¨s¸$Ô?÷ ð 	×*Ñ*Ø�K‰K×Ñ×&Ñ& sÓ+¨AÕ.Ø�K‰K×ÑØ�L‰L× Ñ  Ó.ö	
÷ �Sú÷ �Süs>   ‚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)rb   r_   r`   Úappend)r8   r~   Úouts   && r#   Ú_copy_environÚFlaskClient._copy_environ¹   s?   € Ø,�×"Ñ"Ð, eÐ,ˆà× × Ð Ø59×5GÑ5G×5NÑ5NˆCÐ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)rb   )r‚   r1   r   rY   Úget_requestÚclose)r8   r   r   Úbuilders   &&& r#   Ú_request_from_builder_argsÚ&FlaskClient._request_from_builder_argsÁ   sb   € ð "&×!3Ñ!3°F·J±J¸~ÈrÓ4RÓ!Sˆˆ~ÑÜ  ×!1Ñ!1ÐC°DÒC¸FÑCˆð	Ø×&Ñ&Ó(à�M‰M�OøˆG�M‰M�Oús   ¿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(                   F  pV P                  P+                  V4       K   	  V P(                  P-                  4        V# )r   )r   rb   )rŒ   r�   )Ú
isinstancerQ   Útestr   Údictr…   r   r‚   rb   r‡   Úfrom_environrY   rl   rŠ   ra   rˆ   r6   ÚopenrA   Újson_moduler`   Úenter_contextÚclear)
r8   rŒ   r�   r   r   r‰   rk   ÚresponseÚcmr<   s
   &$$*,    €r#   r”   ÚFlaskClient.openÌ   s“  ø€ ÷ ˆ4”JØ��G”h—m‘m×2Ñ2´D¼+ÐF÷
ó 
ô ˜$˜q�'¤8§=¡=×#?Ñ#?×@Ò@Ü˜t A�w›-�Ø'+×'9Ñ'9¸'×:NÑ:N×:TÐ:TÐRTÓ'U�Ô$Ø!×-Ñ-Ó/‘Ü˜D �G¤T×*Ò*Ü(×5Ñ5Ø˜•G ×!1Ñ!1À×@RÑ@RÐSUÓ@Vð 6ó ç‘+“-ñ ô
 ˜t A�w›-�Ø"&×"4Ñ"4°W·_±_Ó"E�•ð ×5Ñ5°dÓCˆGð
 	×Ñ×!Ñ!Ô#ä‘7‘<ØØØ-ð  ó 
ˆð
  $×/Ñ/×4Ñ4ˆÔð ×$Ô$ˆBØ×Ñ×-Ñ-¨bÖ1ñ %ð 	×Ñ× Ñ Ô"Øˆr&   c               ó   € V ^8„  d   QhRR/# )r   r   rX   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)r_   ro   ©r8   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)r_   ra   rˆ   )r8   r¡   r¢   r£   s   &&&&r#   Ú__exit__ÚFlaskClient.__exit__ÿ   s   € ð !&ˆÔØ×Ñ×!Ñ!Ö#r&   )ra   r`   rb   r_   )rF   rG   rH   rI   rJ   Ú__annotations__r7   r   r{   r‚   rŠ   r”   rž   r¥   rK   rL   rM   s   @r#   rX   rX   m   sg   ø‡ ñð Ó÷
ð 
ð ô/
ó ð/
õbõ	ð+ð ð+ð "'÷	+ò +õZ÷$ó $r&   rX   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	  z¢A :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   r6   r7   )r8   r   r   r<   s   &&,€r#   r7   Ú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!   )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.
r?   c                 ó   <€ S P                   # )NrE   r�   s   €r#   Ú<lambda>Ú'FlaskCliRunner.invoke.<locals>.<lambda>(  s	   ø€ ¸$¿(º(r&   )Ú
create_app)r   r¯   r   r6   Úinvoke)r8   r¯   r   r   r<   s   f&&,€r#   rµ   ÚFlaskCliRunner.invoke  sB   ù€ ð" Š;Ø—(‘(—,‘,ˆCà˜ÔÜ&Ô2BÔCˆF�5‰Mä‰wŠ~˜cÑ2¨6Ñ2Ð2r&   rE   )NN)	rF   rG   rH   rI   rJ   r7   rµ   rK   rL   rM   s   @r#   r©   r©   	  s!   ø† ñ÷
#ð #÷3÷ 3ð 3r&   r©   )'Ú
__future__r   Úimportlib.metadatarS   ÚtypingÚtÚ
contextlibr   r   r   Útypesr   Úurllib.parser   Úwerkzeug.testrQ   Úclick.testingr	   r
   r   Úwerkzeug.wrappersr   r…   r¯   r   Úsessionsr   ÚTYPE_CHECKINGÚ_typeshed.wsgir   r   r   r   r‘   r   rR   rV   rX   r©   r!   r&   r#   Ú<module>rÄ      s…   ðÝ "ã Û Ý %Ý  Ý Ý Ý !ã Ý #Ý  Ý  Ý 4å Ý "à‡?‡?€?Ý.Ý*åôC2�X—]‘]×1Ñ1ô C2ðL Ð õôY$�&ô Y$ôx!3�Yö !3r&   