
    vKg):                         S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	  S SK
Jr   \" 5       r " S S5      r " S S5      rS
S\R                   \   4S	 jjrg)    N)
exceptions)	typecheckc                   *   \ rS rSrSrS\S\R                  \\	4   S\R                  S\S\R                  \R                  \      SS	4S
 jrS r\S 5       rS\R                  4S jrS\R                  SS	4S jrSS jrS\4S jrS\4S jrS rSrg	)_Option   )nametypespecvalue_defaultchoiceshelpr   r	   defaultr   r   returnNc                     [         R                  " XU5        Xl        X l        X0l        [
        U l        [        R                  " U5      R                  5       R                  SS5      U l        XPl        g )N
 )r   check_option_typer   r	   r   unsetr
   textwrapdedentstripreplacer   r   selfr   r	   r   r   r   s         l/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/seleniumwire/thirdparty/mitmproxy/optmanager.py__init___Option.__init__   sU     	##D8<	 
OOD)//199$D	    c                 R    SR                  U R                  5       U R                  S9$ )Nz{value} [{type}])r
   type)formatcurrentr	   r   s    r   __repr___Option.__repr__(   s"    !((t||~DMM(RRr   c                 B    [         R                  " U R                  5      $ N)copydeepcopyr   r#   s    r   r   _Option.default+   s    }}T]]++r   c                     U R                   [        L a  U R                  nOU R                   n[        R                  " U5      $ r'   )r
   r   r   r(   r)   )r   vs     r   r"   _Option.current/   s/    ::A

A}}Qr   r
   c                 f    [         R                  " U R                  XR                  5        Xl        g r'   )r   r   r   r	   r
   )r   r
   s     r   set_Option.set6   s    ##DIIummD
r   c                     [         U l        g r'   )r   r
   r#   s    r   reset_Option.reset:   s	    
r   c                 <    U R                  5       U R                  :g  $ r'   )r"   r   r#   s    r   has_changed_Option.has_changed=   s    ||~--r   c                 ^    U R                    H  n[        X5      [        X5      :w  d  M    g   g)NFT)	__slots__getattr)r   otheris      r   __eq___Option.__eq__@   s*    At75#44   r   c                     [        U R                  U R                  U R                  U R                  U R
                  5      nU R                  5       (       a  U R                  5       Ul        U$ r'   )	r   r   r	   r   r   r   r5   r"   r
   )r   _os      r   __deepcopy___Option.__deepcopy__F   sN    IIt}}dllDIIt||
 llnAGr   )r   r   r   r   r	   r
   )r   N)__name__
__module____qualname____firstlineno__r8   strtypingUnionr    objectAnyOptionalSequencer   r$   propertyr   r"   r/   r2   boolr5   r<   rA   __static_attributes__ r   r   r   r      s    LI ,,tV|, 	
  !56 
 S , ,     .T .t r   r   c                     ^  \ rS rSrSrS r S)S\S\R                  \	\
4   S\R                  S\S	\R                  \R                  \      S
S4S jjr\R                   S*S j5       rS rS rS)S jr\rS rU 4S jrS rS rS rS rS rS rS rS rS r S\S
\R                  4S jr!S r"S r#S  r$SS!.S" jr%S# r&S$\'S%\R                  \   S
\R                  4S& jr(S+S' jr)S(r*U =r+$ ),
OptManagerO   a  
OptManager is the base class from which Options objects are derived.

.changed is a blinker Signal that triggers whenever options are
updated. If any handler in the chain raises an exceptions.OptionsError
exception, all changes are rolled back, the exception is suppressed,
and the .errored signal is notified.

Optmanager always returns a deep copy of options to ensure that
mutation doesn't change the option state inadvertently.
c                     0 U l         [        R                  " 5       U l        [        R                  " 5       U l        0 U l        g r'   )deferredblinkerSignalchangederrored_optionsr#   s    r   r   OptManager.__init__[   s.    /1~~'~~' 79r   Nr   r	   r   r   r   r   c                 l    [        XX4U5      U R                  U'   U R                  R                  X1S9  g )Nupdated)r   r[   rY   sendr   s         r   
add_optionOptManager.add_optionc   s2     &dgWMd$/r   Fc              #   *  #    [         R                  " U R                  5      n S v   g ! [        R                   aS  nU R
                  R                  XS9  X0R                  S'   U R                  R                  XS9  U(       a  Ue S nAg S nAff = f7f)N)excr[   r^   )	r(   r)   r[   r   OptionsErrorrZ   r`   __dict__rY   )r   r_   reraiseoldes        r   rollbackOptManager.rollbackn   sw     mmDMM*		&& 	LLd*(+MM*%LLd4 	s+   !B) BBA	BBBBc                 &  ^ ^^^ T H,  nUT R                   ;  d  M  [        R                  " SU-  5      e   [        R                  R                  T5      m[        R                  " T5      UUUU 4S j5       mT R                  R                  TSS9  g)a  
Subscribe a callable to the .changed signal, but only for a
specified list of options. The callable should accept arguments
(options, updated), and may raise an OptionsError.

The event will automatically be unsubscribed if the callable goes out of scope.
No such option: %sc                    > UR                  [        T5      5      (       a3  T" 5       nU(       a	  U" X5        g TR                  R                  T5        g g r'   )intersectionr/   rY   
disconnect)optionsr_   f_callfuncoptsr   s      r   rs   #OptManager.subscribe.<locals>._call   sA    ##CI..Fg'LL++E2 /r   F)weakN)
r[   r   re   rW   _saferefsafe_ref	functoolswrapsrY   connect)r   rt   ru   r;   rs   s   ``` @r   	subscribeOptManager.subscribe|   s~     A% --.BQ.FGG  ((.			3 
	3 	U/r   c                 `    [        U[        5      (       a  U R                  UR                  :H  $ g)NF)
isinstancerS   r[   )r   r:   s     r   r<   OptManager.__eq__   s%    eZ((==ENN22r   c                 v    [        5       n[        R                  " U R                  U5      UR                  S'   U$ )Nr[   )rS   r(   r)   r[   rf   )r   memodictr@   s      r   rA   OptManager.__deepcopy__   s+    L!%t}}h!G

:r   c                 v    XR                   ;   a  U R                   U   R                  5       $ [        SU-  5      e)Nrm   )r[   r"   AttributeError)r   attrs     r   __getattr__OptManager.__getattr__   s5    == ==&..00 !5!<==r   c                    > U R                   R                  S5      nU(       d  [        TU ]  X5        g U R                  " S0 X0D6  g )Nr[   rQ   )rf   getsuper__setattr__update)r   r   r
   ru   	__class__s       r   r   OptManager.__setattr__   s:     }}  ,G,KK(4-(r   c                 H    [        U R                  R                  5       5      $ r'   )r/   r[   keysr#   s    r   r   OptManager.keys   s    4==%%'((r   c                 6    U R                   R                  5       $ r'   )r[   itemsr#   s    r   r   OptManager.items   s    }}""$$r   c                     XR                   ;   $ r'   )r[   )r   ks     r   __contains__OptManager.__contains__   s    MM!!r   c                     U R                   R                  5        H  nUR                  5         M     U R                  R	                  U [        U R                   R                  5       5      S9  g)z#
Restore defaults for all options.
r^   N)r[   valuesr2   rY   r`   r/   r   )r   r@   s     r   r2   OptManager.reset   sM     %%'AGGI ($DMM,>,>,@(ABr   c                    0 0 p2UR                  5        H  u  pEX@R                  ;   a  XRU'   M  XSU'   M      [        UR                  5       5      nU(       ak  U R	                  USS9   UR                  5        H#  u  pEU R                  U   R                  U5        M%     U R
                  R                  XS9  SSS5        U$ U$ ! , (       d  f       U$ = f)zX
Update and set all known options from kwargs. Returns a dictionary
of unknown options.
T)rg   r^   N)r   r[   r/   r   rj   rY   r`   )r   kwargsknownunknownr   r,   r_   s          r   update_knownOptManager.update_known   s    
 RwLLNDAMM!a
	 #
 ejjl#w5!KKMDAMM!$((+ *!!$!8 6 w	 65 s   &AC
Cc                 ^    U R                   " S0 UD6nU R                  R                  U5        g )NrQ   )r   rV   r   )r   r   r   s      r   update_deferOptManager.update_defer   s'    ##-f-W%r   c                     U R                   " S0 UD6nU(       a+  [        SSR                  UR                  5       5      -  5      eg )NUnknown options: %s, rQ   )r   KeyErrorjoinr   )r   r   us      r   r   OptManager.update   s=    ''0499QVVX3FFGG r   c                 T   ^ ^ TT R                   ;  a  [        ST-  5      eUU 4S jnU$ )z\
Generate a setter for a given attribute. This returns a callable
taking a single argument.
rm   c                     > [        TTU 5        g r'   )setattr)xr   r   s    r   setter!OptManager.setter.<locals>.setter   s    D$"r   )r[   r   )r   r   r   s   `` r   r   OptManager.setter   s,    
 t}}$/$677	#r   c                    ^ ^ TT R                   ;  a  [        ST-  5      eT R                   T   nUR                  [        :w  a  [	        S5      eUU 4S jnU$ )z^
Generate a toggler for a boolean attribute. This returns a callable
that takes no arguments.
rm   z-Toggler can only be used with boolean optionsc                  >   > [        TT [        TT 5      (       + 5        g r'   )r   r9   )r   r   s   r   toggle"OptManager.toggler.<locals>.toggle   s    D$GD$$7 78r   )r[   r   r	   rO   
ValueError)r   r   r@   r   s   ``  r   togglerOptManager.toggler   sR    
 t}}$/$677MM$::LMM	9r   optionc                 4    U R                   U   R                  $ r'   )r[   r   r   r   s     r   r   OptManager.default   s    }}V$,,,r   c                 <    U R                   U   R                  5       $ )z*
Has the option changed from the default?
)r[   r5   r   s     r   r5   OptManager.has_changed  s     }}V$0022r   c                     0 nUR                  5        H;  u  p4Uc  M
  [        U[        [        45      (       a  [	        X5      U-   X#'   M7  XBU'   M=     U R
                  " S0 UD6  g)z
Merge a dict of options into this object. Options that have None
value are ignored. Lists and tuples are appended to the current
option value.
NrQ   )r   r   listtupler9   r   )r   ru   tosetr   r,   s        r   mergeOptManager.merge  sZ     JJLDA}a$//&t/!3EH !H ! 	er   c                     [         R                  " U R                  SS9R                  S5      nSU;   a  SU-   S-   nSR	                  [        U 5      R                  [        U 5      R                  US9$ )N   )indentz {}r   z
    z{mod}.{cls}({{{options}}}))modclsrq   )pprintpformatr[   r   r!   r    rD   rC   )r   rq   s     r   r$   OptManager.__repr__  sl    ..q9??F7?(4/G+22T
%%T
## 3 
 	
r   )deferc                   0 n0 nU Hh  nUR                  SSS9n[        U5      S:X  a  US   SpO	US   US   pXpR                  ;   a#  U R                  U R                  U   U5      X7'   Md  XU'   Mj     U(       a  U R                  R                  U5        O=U(       a6  [        R                  " SSR                  UR                  5       5      -  5      eU R
                  " S0 UD6  g)	z
Takes a list of set specification in standard form (option=value).
Options that are known are updated immediately. If defer is true,
options that are not known are deferred, and will be set once they
are added.
=   )maxsplitr   Nr   r   rQ   )
splitlenr[   parse_setvalrV   r   r   re   r   r   )	r   r   specvalsr   r;   partsoptnameoptvals	            r   r/   OptManager.set   s     AGGC!G,E5zQ"'(D"'(E!H--' $ 1 1$--2H& Q#)   MM  )))*?$))GLLNB[*[\\dr   c                 "   0 nU R                   R                  5        H9  u  p#X R                  ;   d  M  U R                  U R                  U   U5      nX1U'   M;     U R                  " S0 UD6  UR                  5        H  nU R                   U	 M     g)z[
Processes options that were deferred in previous calls to set, and
have since been added.
NrQ   )rV   r   r[   r   r   r   )r   r   r   r   r   s        r   process_deferredOptManager.process_deferred9  s{    
 #}}224OG--'**4==+A6J"(w  5 	fAa  r   r@   optstrc                    UR                   [        [        R                  [           4;   a  U$ UR                   [        [        R                  [           4;   aK  U(       a   [	        U5      $ UR                   [        :X  a#  [        R                  " SUR                  -  5      egUR                   [        :X  aF  US:X  a  UR                  5       (       + $ U(       a  US:X  a  gUS:X  a  g[        R                  " S	5      eUR                   [        R                  [           :X  a"  U(       d  / $ [        XR                  5      U/-   $ [        S
UR                   5      e! [
         a    [        R                  " SU-  5      ef = f)z>
Convert a string to a value appropriate for the option type.
zNot an integer: %szOption is required: %sNr   trueTfalseFzRBoolean must be "true", "false", or have the value omitted (a synonym for "true").Unsupported option type: %s)r	   rG   rH   rL   intr   r   re   r   rO   r"   rM   r9   NotImplementedError)r   r@   r   s      r   r   OptManager.parse_setvalG  s=    ::#vs344MZZC!566Qv;& s" --.F.OPPZZ4!99;&Vv-7" --q  ZZ6??3//	tVV,x77!"?LL- " Q$112F2OPPQs   !
E $E?c           
         X R                   ;  a  gU R                   U   nS nU" X$5      nUR                  [        :X  a  UR                  SS9nU" US5      n	U" SU-   S5      n
U(       a&  UR                  (       a  U" SU-   U5      n
OU" X$5      n	UR
                  " U
SUS.6  UR
                  " U	SUUR                  S	.6  UR                  " S0 US0D6  gUR                  [        [        R                  [           4;   a%  UR
                  " US
[        UUR                  US.6  gUR                  [        [        R                  [           4;   a0  UR
                  " US
[        UUR                  UUR                  S.6  gUR                  [        R                  [           :X  a3  UR
                  " US[        UUR                  S-   UUR                  S.6  g[        SUR                  5      e)zj
Auto-Create a command-line parser entry for a named option. If the
option does not exist, it is ignored.
Nc                 l    U R                  SS5      n SU -  /nU(       a  UR                  SU-   5        U$ )Nr?   -z--%s)r   append)lsrr   s      r   mkf#OptManager.make_parser.<locals>.mkfs  s5    		#s#A!Aq!Hr   F)requiredzno-store_false)actiondest
store_true)r   r   r   store)r   r    r   r   metavar)r   r    r   r   r   r   r   z May be passed multiple times.r   rQ   )r[   r	   rO   add_mutually_exclusive_groupr   add_argumentr   set_defaultsr   rH   rL   rG   r   rM   r   )r   parserr   r   shortr@   r   flagsgonfofffs              r   make_parserOptManager.make_parseri  s   
 --'MM'"	 G#::33U3CAgt$Cuw-D99uw6Dg-CNN$
 NN#VV	 27D/2ZZC!566VV ZZC!566VV		 ZZ6??3//VV>>		 :AJJGGr   )r[   rY   rV   rZ   r'   )F)NN),rC   rD   rE   rF   __doc__r   rG   rH   rI   r    rJ   rK   rL   rM   ra   
contextlibcontextmanagerrj   r}   r<   rA   __copy__r   r   r   r   r   r2   r   r   r   r   r   r   r5   r   r$   r/   r   r   r   r  rP   __classcell__)r   s   @r   rS   rS   O   sL   
9 :>	0	0 ,,tV|,	0 		0
 	0 !56	0 
	0  0<

 H>))%"C&&H

-c -fjj -3
  % 2! Mg  Mvs/C  M

  MDGH GHr   rS   r   c                 .   0 nU(       a  UOU R                  5       n[        U5       Hj  nU R                  U   n[        R                  " UR
                  5      nUUR                  UR                  5       UR                  UR                  S.nXbU'   Ml     U$ )z
Dumps the options into a list of dict object.

Return: A list like: { "anticache": { type: "bool", default: false, value: true, help: "help text"} }
)r    r   r
   r   r   )
r   sortedr[   r   typespec_to_strr	   r   r"   r   r   )ru   r   options_dictr   r@   tr   s          r   
dump_dictsr    s     L4TYY[DD\MM!%%ajj1yyYY[FFyy
 !Q  r   r'   )r  r(   rz   r   r   rH   rW   blinker._saferef!seleniumwire.thirdparty.mitmproxyr   'seleniumwire.thirdparty.mitmproxy.utilsr   rJ   r   r   rS   ListrG   r  rQ   r   r   <module>r     s`            8 = 	7 7taH aHH6;;s+ r   