
    3LGf#                        d dl m Z d dlmZmZmZ d dlmZmZm	Z	 d dl
mZ d dlmZ d dlmZ 	 d dlmZ n# e$ rZdZY dZ[ndZ[ww xY wd	Zd
Z ee          j         ee          j        ddgZddgZ G d de          ZdS )    )gettext)NotFound
BadRequestUnauthorized)ShortcutHandlerShortcutExceptionInvalidShortcutException)SourcesListShortcutHandler)URIShortcutHandler)urlparse)	LaunchpadNz5https://ppa.launchpadcontent.net/{team}/{ppa}/ubuntu/z=https://private-ppa.launchpadcontent.net/{team}/{ppa}/ubuntu/zppa.launchpad.netzprivate-ppa.launchpad.netmain
main/debugc                        e Zd Zd fd	Zed             Zed             Zed             Zed             Zed             Z	ed             Z
d fd
	Z fdZd Zd Zd Zd Zd Z xZS )PPAShortcutHandlerFc           	          t          t          |           j        |fi | | | _        d | _        d | _        d | _        d | _        d| _        t          | 
                    |          |                     |          |                     |          f          s!t          d          |z  }t          |          | j        d| j        | _        |                                  | j        r3	 | j         n*# t(          $ r t          t          d                    w xY w| j        s| j        }|sdg}| j        j        rt1          d           | j        j        rt4          nt6          }|                    | j        | j                  }| j        d|d| j        dd                    |          }|                      |           d S d S )	NFz%ERROR: '%s' is not a valid ppa formatz-ubuntu-zERROR: Can't find ppar   zDPPA publishes dbgsym, you may need to include 'main/debug' component)teamppa )!superr   __init___lp_anon_signing_key_data_lp_lpteam_lpppa_is_sourceslistany
_match_ppa
_match_uri_match_sourceslist_r	   teamnameppaname	_filebase	_set_authlpppar   _source_entry
componentspublish_debug_symbolsprintprivatePRIVATE_PPA_URI_FORMATPPA_URI_FORMATformatbinary_typedistjoin_set_source_entry)
selfshortcutloginkwargsmsgcomps
uri_formaturiline	__class__s
            8/usr/lib/python3/dist-packages/softwareproperties/ppa.pyr   zPPAShortcutHandler.__init__6   s    0 $''0DDVDDD!	!%$ DOOH--OOH--++H557 8 8 	0 <==HC*3///+/===$,,G  	KK


$ K K K.q1H/I/IJJJK ! 	)OE b:3 b`aaa 48:3EY//>J##DL#IIC%)%5%5%5sssDIIIsxxPUWD""4(((((	) 	)s   ,C4 4'Dc                     t           sd S | j        sG| j        rt           j        }nt           j        } || j        d| j        j        dd          | _        | j        S )N.
productiondevel)service_rootversion)r   r   r   login_anonymously
login_with
__module__r=   __name__)r4   
login_funcs     r>   lpzPPAShortcutHandler.lp_   sq     	4x 	3} 2&8

&1
!zT___dn>U>U"V/;*13 3 3DH x    c                 0   | j         s	 | j                            | j                  | _         nc# t          $ r' t          d          | j        z  }t          |          t          $ r' t          d          | j        z  }t          |          w xY w| j         S )Nz8ERROR: user/team '%s' not found (use --login if private)z"ERROR: invalid user/team name '%s')r   rJ   peopler#   r   r"   r   r   r4   r8   s     r>   lpteamzPPAShortcutHandler.lpteamm   s    | 	--#w~~dm<< - - -STTW[Wdd',,, - - -=>>N',,,- |s
   $. A Bc                 @   | j         s	 | j                            | j                  | _         nj# t          $ r. t          d          | j        | j        fz  }t          |          t          $ r' t          d          | j        z  }t          |          w xY w| j         S )N)namez5ERROR: ppa '%s/%s' not found (use --login if private)zERROR: invalid ppa name '%s')	r   rO   getPPAByNamer$   r   r"   r#   r   r   rN   s     r>   r'   zPPAShortcutHandler.lpppaz   s    { 		--"k66DL6II - - -PQQt|45',,, - - -7884<G',,,- {s
   %/ A'Bc                     | j         j        S N)r'   descriptionr4   s    r>   rU   zPPAShortcutHandler.description   s    z%%rK   c                     | j         j        S rT   )r'   web_linkrV   s    r>   rX   zPPAShortcutHandler.web_link   s    z""rK   c                    | j         s| j                                        }| j        j        }|st	          t          d                     nd|v rt	          t          d                     n`||                     |          vrIt          d          |d                    |                     |                    fz  }t          |          || _         | j         S )NzHWarning: could not get PPA signing_key_fingerprint from LP, using anywayredactedzAPrivate PPA fingerprint redacted, using key anyway (LP: #1879781)z6Fingerprints do not match, not importing: '%s' != '%s',)	r   r'   getSigningKeyDatasigning_key_fingerprintr+   r"   fingerprintsr2   r   )r4   keyfingerprintr8   s       r>   trustedparts_contentz'PPAShortcutHandler.trustedparts_content   s    % 	)*..00C*<K -abccdddd{**a[\\]]]] D$5$5c$:$:::QRR#SXXd.?.?.D.D%E%EFG',,,%(D"%%rK   Nc                     t          t          |                               |          }|| j        k    s| j        r|S t          t          |j                  t          dg          z
            |_        |S )N)pkgtyper   )r   r   SourceEntrysource_typer)   listsetr9   )r4   rc   entryr=   s      r>   rd   zPPAShortcutHandler.SourceEntry   sm    ($//;;G;LLd&&&$/&L
 3u{++c<..A.AABBrK   c                 :   t          t          |                               |           t          |                                 j                  t          t                    z
  }|r4t          t          d          d	                    |          z             d S d S )Nz*Warning: components '%s' not valid for PPAr   )
r   r   r3   rg   rd   r9   PPA_VALID_COMPSr+   r"   r2   )r4   r<   invalid_compsr=   s      r>   r3   z$PPAShortcutHandler._set_source_entry   s     $''99$???D,,..455O8L8LL 	]!@AACHH]D[D[[\\\\\	] 	]rK   c                 b   |                     d          \  }}}|                                dk    sdS |                    d          \  }}}|                    d          }d|v r9|                    d          \  }}}|                                dk    rdS d|v rdS || _        |pd| _        dS )N:r   F/~ubuntuT)
rpartitionlower	partitionlstripr#   r$   )r4   r5   prefixr"   r   r#   r$   rp   s           r>   r   zPPAShortcutHandler._match_ppa   s    #..s33C||~~&&5!$s!3!31g??3'''>>#*#4#4S#9#9 VQ||~~))ug~~u '%trK   c                 j    	 |                      t          |                    S # t          $ r Y dS w xY w)NF)_match_handlerr   r	   )r4   r5   s     r>   r    zPPAShortcutHandler._match_uri   sF    	&&'9('C'CDDD' 	 	 	55	s   !$ 
22c                 ~    	 |                      t          |                    }n# t          $ r Y dS w xY wd| _        |S )NFT)rw   r
   r	   r   )r4   r5   handlers      r>   r!   z%PPAShortcutHandler._match_sourceslist   sT    	))*DX*N*NOOGG' 	 	 	55	#s   "% 
33c                    t          |                                j                  }|j        t          vrdS |j                                                            d                              d          }t          |          dk     rdS |d         | _	        |d         | _
        |j        | _        |j        | _        |                     |                                j                   dS )NFrn      r      T)r   rd   r;   hostnamePPA_VALID_HOSTNAMESpathstripsplitlenr#   r$   username	_usernamepassword	_passwordr3   r<   )r4   ry   parsedr   s       r>   rw   z!PPAShortcutHandler._match_handler   s    '--//344"5555{  ""((--33C88t99q==5QAw ) )w22449:::trK   c                    | j         s| j        j        sd S | j        r	| j        rd S | j        j                                        D ]W}t          |          }|j	        
                    d| j         d| j         d          r|j        | _        |j        | _         d S Xt          d          | j        | j        fz  }t!          |          )Nrn   z/ubuntuzMCould not find PPA subscription for ppa:%s/%s, you may need to request access)r   r'   r,   r   r   rJ   megetArchiveSubscriptionURLsr   r   
startswithr#   r$   r   r   r"   r   )r4   urlr   r8   s       r>   r&   zPPAShortcutHandler._set_auth   s    = 	
 2 	F> 	dn 	F7:88:: 		) 		)Cc]]F{%%&O$-&O&O$,&O&O&OPP !'!'
 deeM4<01C#C(((rK   )FrT   )rH   rG   __qualname__r   propertyrJ   rO   r'   rU   rX   ra   rd   r3   r   r    r!   rw   r&   __classcell__)r=   s   @r>   r   r   5   sg       ') ') ') ') ') ')R   X 
 
 X
   X & & X& # # X# & & X&"	 	 	 	 	 	] ] ] ] ]  (      ") ) ) ) ) ) )rK   r   )r   r"   lazr.restfulclient.errorsr   r   r   "softwareproperties.shortcuthandlerr   r   r	   softwareproperties.sourceslistr
   softwareproperties.urir   urllib.parser   launchpadlib.launchpadr   ImportErrorer.   r-   r}   r~   rj   r    rK   r>   <module>r      sx  . !           J J J J J J J J J JJ J J J J J J J J J E E E E E E 5 5 5 5 5 5 ! ! ! ! ! !0000000   IIIIII IX H^%H#$$-  <(B) B) B) B) B) B) B) B) B) B)s   5 AAA