
    ZCiSW                        S r SrSSKrSSKrSSKrSSKrSSKr\R                  S:  r\(       a  SSK	J
r  SSKJr  OSSKrSSKrS rS rS rS rS	 rS
 rS rS"S jrS"S jrSqS rS#S jrS\4S jrSr\S:X  Ga  \" \R@                  5      S:  d   S\R@                  ;   d  S\R@                  ;   a  \RB                  " \5        S\R@                  ;   a  \RB                  " S\-   5        \(       d  \RD                  S:X  a  \" 5       \l         \RD                  S:X  a  \" 5         SSK#J$r$  \$" 5       r%\%RM                  SSSS9  \%RO                  5       u  r(r)\R@                  S   r*\" \)S   \(RV                  S9r,\-" S 5        \-" S!\,-  5        g)$a  
Download utility as an easy way to get file from the net
 
  python -m wget <URL>
  python wget.py <URL>

Downloads: http://pypi.python.org/pypi/wget/
Development: http://bitbucket.org/techtonik/python-wget/

wget.py is not option compatible with Unix wget utility,
to make command line interface intuitive for new people.

Public domain by anatoly techtonik <techtonik@gmail.com>
Also available under the terms of MIT license
Copyright (c) 2010-2015 anatoly techtonik
z3.2    N)   r   c                     SSK Jn JnJnJnJn  SSKJnJn  UR                  R                  n/ Ul        XWl        UR                  R                  nXP" U5      /Ul        U " U5      Ul        U" 5       n	U" S5      n
U" X" U
5      5      nU
R                  n[!        ["        R$                  5      n/ nUS:  a9  X-
  n['        X5       H&  nUR)                  UU   R+                  S5      5        M(     U$ )zUses shell32.GetCommandLineArgvW to get sys.argv as a list of Unicode
strings.

Versions 2.x of Python don't support Unicode in sys.argv on
Windows, with the underlying Windows API instead replacing multi-byte
characters with '?'.
r   )POINTERbyrefcdllc_intwindll)LPCWSTRLPWSTRutf-8)ctypesr   r   r   r   r	   ctypes.wintypesr
   r   kernel32GetCommandLineWargtypesrestypeshell32CommandLineToArgvWvaluelensysargvrangeappendencode)r   r   r   r   r	   r
   r   r   r   cmdargcr   argnumsysnumresultstartis                    >/home/james-whalen/.local/lib/python3.13/site-packages/wget.pywin32_utf8_argvr$   '   s     ;:/mm33O!O%::#*GEN";!(

C8Dc5;/DZZF]FFzu%AMM$q'..12 &M    c            	        ^^^^^^^^^^ ^! SS K m SSKJn JnJnJmJn  SSKJnJ	nJ
mJnJnJn  [        R                  m!U!4S jmT R!                  U 4S j5         U " UT5      " SUR"                  45      n	T" S5      n
T" S5      nU " TT5      " S	UR"                  45      mS
mSmU " XEU" T5      5      " SUR"                  45      mT" S5      R$                  mUUUUUUU4S jnS nS n['        [        R(                  S5      (       a  [        R(                  R+                  5       n['        [        R                  S5      (       a  [        R                  R+                  5       nSnS
nX:H  nUU:H  nU(       a  U	" U
5      nU" U5      (       a  SnU(       a  U	" U5      nU" U5      (       a  SnU(       d  U(       a  U " XEUTU" T5      U5      " SUR"                  45      m " UUUU4S jS5      nU(       a  U" WS US5      [        l        O"U" S [        R(                  US5      [        l        U(       a  U" WS US5      [        l        g U" S [        R                  US5      [        l        g g ! [,         a  nT" SU< S35         S nAg S nAff = f)Nr   )WINFUNCTYPEr	   r   r   r   )BOOLHANDLEDWORDr   r
   LPVOIDc                    > TR                  [        U [        5      (       a  U O
[        U 5      5        TR                  S5        g )N
)write
isinstancestrrepr)messageoriginal_stderrs    r#   	_complain(win32_unicode_console.<locals>._complainS   s1    GS)A)AgtG}Ud#r%   c                 6   > U S:X  a  TR                  S5      $ S $ )Ncp65001r   )lookup)namecodecss    r#   <lambda>'win32_unicode_console.<locals>.<lambda>W   s    49;Lw!7!VRV!Vr%   GetStdHandleGetFileType   i   GetConsoleModec                 r   > U T:X  d  U c  gT" U 5      T) -  T:g  =(       d    T" U T" T" 5       5      5      S:H  $ )NTr    )handler*   FILE_TYPE_CHARFILE_TYPE_REMOTErB   r@   INVALID_HANDLE_VALUEr   s    r#   not_a_console,win32_unicode_console.<locals>.not_a_consolec   sJ    -- (,<+<<O C%feEGn=BDr%   fileno   FWriteConsoleWc                   X   > \ rS rSrS rS rS rS rU4S jrU UUU4S jr	U4S jr
S	rg
),win32_unicode_console.<locals>.UnicodeOutput   c                     Xl         X l        X0l        SU l        SU l        SU l        SU l        X@l        U R                  5         g )NFwr   )		_hConsole_stream_filenoclosed	softspacemodeencodingr9   flush)selfhConsolestreamrL   r9   s        r#   __init__5win32_unicode_console.<locals>.UnicodeOutput.__init__   s;    %-N#)L#)L"'DK%*DN #DI$+DM $IJJLr%   c                     g)NFrE   r\   s    r#   isatty3win32_unicode_console.<locals>.UnicodeOutput.isatty   s     r%   c                     SU l         g )NT)rW   rb   s    r#   close2win32_unicode_console.<locals>.UnicodeOutput.close   s	    "&DKr%   c                     U R                   $ )N)rV   rb   s    r#   rL   3win32_unicode_console.<locals>.UnicodeOutput.fileno   s    <<'r%   c                    > U R                   c   U R                  R                  5         g g ! [         a-  nT" U R                  < SU< SU R                  < 35        e S nAff = f)Nz.flush: z from )rT   rU   r[   	Exceptionr9   )r\   er4   s     r#   r[   2win32_unicode_console.<locals>.UnicodeOutput.flush   sS    ~~-" LL..0 .  ) "%		1dll&[\!"s   , 
A#(AA#c                   >  U R                   c  [        (       d'  [        U[        5      (       a  UR	                  S5      nO1[        (       a&  [        U[
        5      (       a  UR	                  S5      nU R                  R                  U5        g [        (       d0  [        U[        5      (       d  [        U5      R                  S5      nO1[        (       a&  [        U[
        5      (       d  UR                  S5      n[        U5      nU(       a  T" S5      nT" U R                   U[        US5      T	" U5      S 5      nUS:X  d  UR                  S:X  a  [        SU< SUR                  < 35      eX#R                  -  nU(       d  g XR                  S  nU(       a  M  g g ! [         a  nT" U R                  < SU< 35        e S nAff = f)Nr   r   i'  zWriteConsoleW returned z, n.value = z.write: )rT   PY3Kr/   unicoder   r0   rU   r.   decoder   minr   IOErrorrk   r9   )
r\   text	remainingnretvalrl   r*   rN   r4   r   s
         r#   r.   2win32_unicode_console.<locals>.UnicodeOutput.write   sY   >>1#'4JtW,E,E'+{{7';!%*T3*?*?'+{{7'; LL..t4#'4
40I0I'*4y'7'7'@!%js.C.C'+{{7';(+D	I"+$)!H *7t~~tSQZ\aMbdijkdlnr)s#)Q;!''Q,*1_eghgngn2o*p$p )WW 4	'0$)'+GGH~ #,) % !DIIq"ABs%   BF C4F F 
G'GGc                    >  U H  nU R                  U5        M     g ! [         a  nT" U R                  < SU< 35        e S nAff = f)Nz.writelines: )r.   rk   r9   )r\   lineslinerl   r4   s       r#   
writelines7win32_unicode_console.<locals>.UnicodeOutput.writelines   sB    $)D JJt, %*$ !A"FGs    
AAA)rV   rT   rU   rW   rZ   rY   r9   rX   N)__name__
__module____qualname____firstlineno__r_   rc   rf   rL   r[   r.   r|   __static_attributes__)r*   rN   r4   r   s   r#   UnicodeOutputrP      s0    	!!'(" < r%   r   z<Unicode console stdout>z<Unicode redirected stdout>z<Unicode console stderr>z<Unicode redirected stderr>z
exception z* while fixing up sys.stdout and sys.stderr)r:   r   r'   r	   r   r   r   r   r(   r)   r*   r   r
   r+   r   stderrregisterr   r   hasattrstdoutrL   rk   )"r'   r	   r   r   r(   r)   r   r
   r+   r=   STD_OUTPUT_HANDLESTD_ERROR_HANDLErJ   old_stdout_filenoold_stderr_filenoSTDOUT_FILENOSTDERR_FILENOreal_stdoutreal_stderrhStdouthStderrr   rl   r*   rG   rH   rB   r@   rI   rN   r4   r   r:   r3   s"                          @@@@@@@@@@@r#   win32_unicode_consoler   K   s9   AALLjjO$ OOVWwS"651>6??2ST!#J :!%/0PQ!$T75>BDTV\VeVeCfg$Ry	D 	D ! 3::x(( #

 1 1 33::x(( #

 1 1 3(9(M9"#45GW%%#"#34GW%%#+'feWU^U[\^mouo~o~]  AMB BH *7D-Icd
*4=NPmn
*7D-Icd
*4=NPmn
_ &`  SaQRRSs   G+I* "I* *
J4JJc                 b    [         (       a  U $ [        U [        5      (       a  U $ [        U S5      $ )z/:return: filename decoded from utf-8 to unicoder   )ro   r/   rp   )filenames    r#   
to_unicoder      s/     t h((O8W--r%   c                     [         R                  R                  [        R                  " U 5      R                  5      n[	        UR                  S5      5      S:X  a  g[        U5      $ )z-:return: detected filename as unicode or Nonez 
	.r   N)ospathbasenameurlparser   stripr   )urlfnames     r#   filename_from_urlr      sM     GGX..s3889E
5;;x !Q&er%   c           	         [        U 5      [        :X  a  U R                  5       n [        U 5      [        :X  a+  [	        U  Vs/ s H  oR                  SS5      PM     sn5      n U R                  S5      nU(       d  gUR                  S5      n[        U5      S:X  a  gUS   R                  5       R                  5       S;  a  gUSS  Vs/ s H*  oR                  5       R                  S5      (       d  M(  UPM,     nn[        U5      S:  a  gUS   R                  S	5      S   R                  S
5      n[        R                  R                  U5      nU(       d  gU$ s  snf s  snf )zDetect filename from Content-Disposition headers if present.
http://greenbytes.de/tech/tc2231/

:param: headers as dict, list or string
:return: filename from content-disposition header or None
:rM   zContent-DispositionN;r   )inline
attachmentz	filename==z 	")typer0   
splitlineslistdictsplitgetr   r   lower
startswithr   r   r   )headersxcdispcdtypefnamesr9   s         r#   filename_from_headersr      s"    G}$$&G}9AQ9:KK-.E[[F
6{aay (@@IAwwy';';K'HaFI
6{Q!9??3"((0D77D!DK# : Js    E	'E 4E c                    SnU R                  SS5      u  p#[        R                  " U5       Vs/ s H  oDR                  U5      (       d  M  UPM     nnU Vs/ s H  oDR                  SS5      S   PM     nnU Vs/ s H  oDR	                  US5      PM     nnU Vs/ s H8  nUR                  S5      (       d  M  UR                  S5      (       d  M3  USS PM:     nnU Vs/ s H(  n[        U5      [        S	5      ::  d  M  [        U5      PM*     nnSnU(       a  U[        U5      S   -  nS
X(U4-  $ s  snf s  snf s  snf s  snf s  snf )zkExpands name portion of filename with numeric ' (x)' suffix to
return filename that doesn't exist already.
.rM   r    z ()rA   rC   
0123456789z
%s (%d).%s)	rsplitr   listdirr   replaceendswithsetintsorted)	r   dirnamer9   extr   namessuffixesindexesidxs	            r#   filename_fix_existingr     s4    GQ'ID

7+B+1||D/AQ+EB*/0%QXXc1a %E0-23U		$#UH3!) >All4( -.ZZ_ !BH > ( 31!fL 11 AG 3
Cvgr""4c*** C03>3s5   D4D4D9<D>E;E	E"EEc                    ^^^^^ [         R                  S:X  a  Sn SnSnSSKJnJnJn   SSKJmJmJ	m  UR                  R                  U5      n " U4S	 jS
U5      m " U4S jSU5      m " UUUU4S jSU5      nU" 5       nUR                  R!                  Xe" U5      5      n	U	S:X  a  gUR"                  R$                  S-   $ [         R                  S:X  aR  SSKJn
  SSKJn  SSKJn  U" SS/S-  5      n U
" [0        R2                  R5                  5       X5        US   US   4S   $ g! [         a    SSKJmJmJm   GNf = f! [6         a     N5f = f)zReturn width of available window area. Autodetection works for
Windows and POSIX platforms. Returns 80 for others

Code from http://bitbucket.org/techtonik/python-pager
ntir>   r?   r   )r	   	Structurer   )SHORTWORDr*   )c_shortc_ushortc_ulongc                   *   > \ rS rSrS Y 4S Y 4/rSrg) get_console_width.<locals>.COORDi5  XYrE   Nr~   r   r   r   _fields_r   r   s   r#   COORDr   5  s    esEl3Hr%   r   c                   :   > \ rS rSrS Y 4S Y 4S Y 4S Y 4/rSrg)%get_console_width.<locals>.SMALL_RECTi8  LeftTopRightBottomrE   Nr   r   s   r#   
SMALL_RECTr   8  s&    % %(8U*;=Hr%   r   c                   B   > \ rS rSrS Y 4S Y 4S Y4S Y4S Y4/rSrg)	5get_console_width.<locals>.CONSOLE_SCREEN_BUFFER_INFOi<  dwSizedwCursorPositionwAttributessrWindowdwMaximumWindowSizerE   Nr   )r   r*   r   r   s   r#   CONSOLE_SCREEN_BUFFER_INFOr   <  s2    !5)+U3&-#Z0.6	8Hr%   r   rM   posix)ioctl)
TIOCGWINSZ)arrayH   P   )r   r9   r   r	   r   r   r   r   r   r*   ImportErrorr   r   r   r   r=   GetConsoleScreenBufferInfor   r   fcntlr   termiosr   r   r   r   rL   rs   )STD_INPUT_HANDLEr   r   r	   r   r   console_handler   sbiretr   r   r   winsizer   r*   r   r   r   s                 @@@@@r#   get_console_widthr     sP    
ww$ 	43	F::
  556GH	4I 	4	= 	=	8 	8 	8 )*oo88E#J(!8||!!!##	G	&aS1W%	#**##%z; 
GAJ'**Q  	FF F	FH  		s#   
D, 9%E ,EE
EEc                     US-
  n[        [        R                  " [        U 5      U-  U-  5      5      nSSU-  -   SX4-
  -  -   S-   $ )a  Return thermometer style progress bar string. `total` argument
can not be zero. The minimum size of bar returned is 3. Example:

    [..........            ]

Control and trailing symbols ( and spaces) are not included.
See `bar_adaptive` for more information.
rA   [r    ])r   mathfloorfloat)currenttotalwidth
avail_dotsshaded_dotss        r#   bar_thermometerr  Y  sO     qJdjjw%!7*!DEFK[ 3
(>#??#EEr%   c                    U(       a  US:  a-  SU -  n[        U5      U:  a  U$ [        SU -  5      U:  a  SU -  $ SS[        SU-  5      S-  S-   S.n/ SQn/ nUnU H(  nXH   U:  d  M  UR                  U5        XtU   S-   -  nM*     S	n	U H|  nUS
:X  a!  U	SSU -  U-  -  R                  US
   5      -  n	O?US:X  a  U	[        XUS   U-   5      -  n	O#US:X  a  X< SU< 3R                  US   5      -  n	USS nU(       d  Mw  U	S-  n	M~     U	$ )a?  Return progress bar string for given values in one of three
styles depending on available width:

    [..  ] downloaded / total
    downloaded / total
    [.. ]

if total value is unknown or <= 0, show bytes counter using two
adaptive styles:

    %s / unknown
    %s

if there is not enough space on the screen, do not display anything

returned string doesn't include control characters like  used to
place cursor at the beginning of the line to erase previous content.

this function leaves one free character at the end of string to
avoid automatic linefeed on Windows.
r   z%s / unknownz%sr   r   rA   )percentbarsizerM   r   r  z%s%%d   r  r  z / Nr   )r   r   rjustr  )
r   r   r   msg	min_widthpriorityselectedavailfieldoutputs
             r#   bar_adaptiver  g  sW   0 EAIw&s8eJtg~&'>!  $,!A%I
 *H HE		E	!5!!##  F	)	6S7]e34;;Ii<PQQE>/')E2B52HIIF?/66y7HII!"h	#   Mr%   c                    [        S[        5       5      n[        R                  SS S:X  a  U S:X  a  SqO	[        U-  q[        nO[        X-  U5      nU" XRU5      nU(       a#  [        R
                  R                  SU-   5        gg)a  callback function for urlretrieve that is called when connection is
created and when once for each block

draws adaptive progress bar in terminal/console

use sys.stdout.write() instead of "print,", because it allows one more
symbol at the line end without linefeed on Windows

:param blocks: number of blocks transferred so far
:param block_size: in bytes
:param total_size: in bytes, can be -1 if server doesn't return it
:param bar_function: another callback function to visualize progress
r  Nr   )r   r   r   r   )rr   r   r   version_info__current_sizer   r.   )blocks
block_size
total_sizebar_functionr   current_sizeprogresss          r#   callback_progressr    s}      &()E
y(Q;Nj(N%6,j9Le<H

) r%   c                    [        SSSS9nU(       a  U=(       d    SUS'   U (       a  [        U 5      =(       d    SUS'   U(       a  [        U5      =(       d    SUS'   US   =(       d    US   =(       d    US   =(       d    U$ )zReturn filename for saving file. If no filename is detected from output
argument, url or headers, return default (download.wget)
r   )outr   r   r  r   r   )r   r   r   )r   r  r   defaultr   s        r#   detect_filenamer    sq     RR,E
ybe
(-3e09?Ri<F5+FuU|FwFr%   c                   ^ SnU(       a(  [         R                  R                  U5      (       a  UnSn[        X5      n[        R
                  " SUSS9u  pV[         R                  " U5        [         R                  " U5        U4S jnT(       a  UnOSn[        (       aR  [        [        R                  " U 5      5      n	[        R                  " U	S   5      U	S'   [        R                  " U	5      n	OU n	[        R                  " XU5      u  pj[        XU
5      nU(       a  US-   U-   n[         R                  R!                  U5      (       a  [#        U5      n[$        R&                  " Xk5        U$ )a5  High level function, which downloads URL into tmp file in current
directory and then renames it to filename autodetected from either URL
or HTTP headers.

:param bar: function to track download progress (visualize etc.)
:param out: output filename or directory
:return:    filename where URL is downloaded to
Nz.tmpr   )prefixdirc                    > [        XUTS9  g )N)r  )r  )r  r  r  r  s      r#   callback_charged"download.<locals>.callback_charged  s    &jsKr%   rA   /)r   r   isdirr  tempfilemkstemprf   unlinkro   r   r   urlsplitquote
urlunsplituliburlretrieveexistsr   shutilmove)r   r  r  outdirr!  fdtmpfiler$  callbackbinurlr   r   s     `         r#   downloadr8    s     F
rww}}S!! S&F$$VFDMRHHRLIIgL #th'',-NN6!9-q	$$V,))&8DWs1HC<(* 
ww~~h(2
KK" Or%   zuusage: wget.py [options] URL

options:
  -o --output FILE|DIR   output filename or directory
  -h --help
  --version
__main__rA   z-hz--helpz	--versionzwget.py win32)OptionParserz-oz--outputr  )destrM   )r  r   zSaved under %s)r   )NNNzdownload.wget).__doc____version__r   r1  r   r(  r   r  ro   urllib.requestrequestr.  urllib.parseparser   urllibr$   r   r   r   r   r   r   r  r  r  r  r  r8  usager~   r   r   exitplatformoptparser;  parser
add_option
parse_argsoptionsargsr   r  r   printrE   r%   r#   <module>rN     s  "     
6!!HEST.:+,8vFMd *>G  0f	 z
388}qDCHH,CHH0Dchhk)* CLLG+"$
||w%^F
dJX6'')OWd
((1+CQW^^4H	"I	
X
%&7r%   