§
    +" hj.  ã                  ót  — d Z ddlmZ ddlZddlZddlZddlZddlZddlmZ ddl	m
Z
 ddlZddlZddlmZ ddlmZ ddlmZmZ ej                             ej                             d	¦  «        d
d¦  «        Z e¦   «         Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Ze dk    r e¦   «         Z! ej"        e!¦  «         dS dS )z¦Starts an interactive Jira session in an ipython terminal.

Script arguments support changing the server and a persistent authentication
over HTTP BASIC or Kerberos.
é    )ÚannotationsN)Úgetpass)Ú	parse_qsl)ÚSIGNATURE_HMAC_SHA1)ÚOAuth1)ÚJIRAÚ__version__ú~z.jira-pythonzjirashell.iniFc                óÊ  — |€|                       d¦  «        }t          |t          |¬¦  «        }t          j        | dz   ||¬¦  «        }t          t          |j        ¦  «        ¦  «        }|                     dt          ¦  «        }|                     dt          ¦  «        }	|t          u s	|	t          u r]|                     d¦  «        }
|
�d|
› �}n1d	 
                    d
„ |                     ¦   «         D ¦   «         ¦  «        }t          |¦  «         |r3t          d¦  «         t          d|› �¦  «         t          d|	› �¦  «         | › d|› �}|rt          d|› �¦  «         n#t          j        |¦  «         t          d¦  «         t!          d| › d�¦  «        }|                     ¦   «         dk    rt          d¦  «         t          |t          |||	¬¦  «        }t          j        | dz   ||¬¦  «        }t          t          |j        ¦  «        ¦  «        }|r?t          d¦  «         t          d|d         › �¦  «         t          d|d         › �¦  «         |d         |d         ||dœS )NÚhttps)Úsignature_methodÚrsa_keyz$/plugins/servlet/oauth/request-token)ÚverifyÚauthÚoauth_tokenÚoauth_token_secretÚoauth_problemzOAuth error: ú c              3  ó*   K  — | ]\  }}|› d |› �V — ŒdS )ú:N© )Ú.0ÚkeyÚvalues      úHc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\jira/jirashell.pyú	<genexpr>zoauth_dance.<locals>.<genexpr>.   s4   è è € ÐRÐR±J°C¸ #Ð/Ð/¨Ð/Ð/ÐRÐRÐRÐRÐRÐRó    zRequest tokens received.z    Request token:        z    Request token secret: z-/plugins/servlet/oauth/authorize?oauth_token=z7Please visit this URL to authorize the OAuth request:
	zHYour browser is opening the OAuth authorization for this client session.z>Have you authorized this program to connect on your behalf to z? (y/n)ÚyzSAbandoning OAuth dance. Your partner faceplants. The audience boos. You feel shame.)r   r   Úresource_owner_keyÚresource_owner_secretz#/plugins/servlet/oauth/access-tokenzAccess tokens received.z    Access token:        z    Access token secret: )Úaccess_tokenÚaccess_token_secretÚconsumer_keyÚkey_cert)Ú
startswithr   r   ÚrequestsÚpostÚdictr   ÚtextÚgetÚSENTINELÚjoinÚitemsÚexitÚprintÚ
webbrowserÚopen_newÚinputÚlower)Úserverr#   Úkey_cert_dataÚprint_tokensr   ÚoauthÚrÚrequestÚrequest_tokenÚrequest_token_secretÚproblemÚmessageÚauth_urlÚapprovedÚaccesss                  r   Úoauth_dancerA      sØ  € Ø€~Ø×"Ò" 7Ñ+Ô+ˆõ ØÕ':ÀMðñ ô €Eõ 	ŒØÐ7Ñ7ÀÈUð	ñ 	ô 	€Aõ •9˜QœVÑ$Ô$Ñ%Ô%€GØ—K’K ­xÑ8Ô8€MØ"Ÿ;š;Ð';½XÑFÔFÐØ�Ð Ð Ð$8½HÐ$DÐ$DØ—+’+˜oÑ.Ô.ˆØÐØ/ gÐ/Ð/ˆGˆGà—h’hÐRÐRÀ'Ç-Â-Á/Ä/ÐRÑRÔRÑRÔRˆGÝˆW‰Œˆàð CÝÐ(Ñ)Ô)Ð)ÝÐ:¨=Ð:Ð:Ñ;Ô;Ð;ÝÐAÐ+?ÐAÐAÑBÔBÐBð ÐVÐVÀ}ÐVÐV€HØð 
ÝÐTÈ(ÐTÐTÑUÔUÐUÐUåÔ˜HÑ%Ô%Ð%ÝØVñ	
ô 	
ð 	
õ ØXÈÐXÐXÐXñô €Hð ‡~‚~ÑÔ˜3ÒÐÝØañ	
ô 	
ð 	
õ
 ØÝ,ØØ(Ø2ðñ ô €Eõ 	ŒØÐ6Ñ6¸vÈEð	ñ 	ô 	€Aõ •)˜AœFÑ#Ô#Ñ$Ô$€Fàð JÝÐ'Ñ(Ô(Ð(ÝÐA¨&°Ô*?ÐAÐAÑBÔBÐBÝÐH¨&Ð1EÔ*FÐHÐHÑIÔIÐIð ˜}Ô-Ø%Ð&:Ô;Ø$Ø!ð	ð ð r   c                 ó�  — t           j                             t          ¦  «        si i i i fS t	          j        ¦   «         } 	 |                      t          ¦  «         n2# t          j        $ r }t          dt          › d|› �¦  «         ‚ d }~ww xY w|  	                    d¦  «        r=i }|  
                    d¦  «        D ]$\  }}|dv r|                      d|¦  «        }|||<   Œ%ni }|  	                    d¦  «        r#t          |  
                    d¦  «        ¦  «        }ni }|  	                    d¦  «        r=i }|  
                    d¦  «        D ]$\  }}|dv r|                      d|¦  «        }|||<   Œ%ni }|  	                    d¦  «        r=i }|  
                    d¦  «        D ]$\  }}|d	v r|                      d|¦  «        }|||<   Œ%ni }||||fS )
Nz#Couldn't read config file at path: ú
Úoptions)r   ÚasyncÚ
basic_authr7   )rA   r6   Úkerberos_authÚuse_kerberos)ÚosÚpathÚexistsÚCONFIG_PATHÚconfigparserÚConfigParserÚreadÚParsingErrorr/   Úhas_sectionr-   Ú
getbooleanr(   )ÚparserÚerrrD   Úoptionr   rF   r7   rG   s           r   Úprocess_configrV   c   s0  € ÝŒ7�>Š>�+Ñ&Ô&ð Ø�2�r˜2ˆ~ÐåÔ&Ñ(Ô(€FðØ�Š•KÑ Ô Ð Ð øÝÔ$ð ð ð ÝÐHµKÐHÐHÀ3ÐHÐHÑIÔIÐIØøøøøðøøøð ×Ò˜)Ñ$Ô$ð ØˆØ#Ÿ\š\¨)Ñ4Ô4ð 	$ð 	$‰MˆF�EØÐ,Ð,Ð,Ø×)Ò)¨)°VÑ<Ô<�Ø#ˆG�F‰OˆOð	$ð
 ˆà×Ò˜,Ñ'Ô'ð Ý˜&Ÿ,š, |Ñ4Ô4Ñ5Ô5ˆ
ˆ
àˆ
à×Ò˜'Ñ"Ô"ð ØˆØ#Ÿ\š\¨'Ñ2Ô2ð 	"ð 	"‰MˆF�EØÐ8Ð8Ð8Ø×)Ò)¨'°6Ñ:Ô:�Ø!ˆE�&‰MˆMð	"ð
 ˆà×Ò˜/Ñ*Ô*ð ØˆØ#Ÿ\š\¨/Ñ:Ô:ð 	*ð 	*‰MˆF�EØ˜.Ð)Ð)Ø×)Ò)¨/¸6ÑBÔB�Ø$)ˆM˜&Ñ!Ð!ð	*ð
 ˆà�J  }Ð4Ð4s   ¿A ÁB	Á)BÂB	c                 óÆ  — t          j        d¬¦  «        } |                      d¦  «        }|                     ddd¬¦  «         |                     dd	d
¬¦  «         |                     dd¬¦  «         |                     ddd¬¦  «         |                     ddd¬¦  «         |                      d¦  «        }|                     ddd¬¦  «         |                     ddd¬¦  «         |                     dddd¬¦  «         |                      d¦  «        }|                     dd dd!¬¦  «         |                     d"d#d$¬¦  «         |                     d%d&d'¬¦  «         |                     d(d)dd*¬¦  «         |                      d+¦  «        }|                     d,d-d.¬¦  «         |                     d/d0d1¬¦  «         |                      d2¦  «        }|                     d3dd4¬¦  «         |                     d5d6d7gd8¬9¦  «         |                      ¦   «         }i }|j        r
|j        |d:<   |j        r
|j        |d;<   |j        r
|j        |d<<   |j        r
|j        |d=<   d>|d?<   |j	        rd@|d?<   |j
        rt          ¦   «         |_        i }|j        r
|j        |dA<   |j        r
|j        |dB<   d }	|j        r@t          |j        ¦  «        5 }
|
                     ¦   «         }	d d d ¦  «         n# 1 swxY w Y   i }|j        rd>|j        |	|j        dCœ}n3|j        r,|j        r%|j        r|j        r|j        d@|j        |j        |	dDœ}dE|j        i}|j        r
|j        |dF<   ||||fS )GNz2Start an interactive Jira shell with the REST API.)ÚdescriptionzJira server connection optionsz-sz--serverz8The Jira instance to connect to, including context path.)Úhelpz-rz--rest-pathz%The root path of the REST API to use.z
--auth-urlzPath to URL to auth against.z-vz--rest-api-versionz0The version of the API under the specified name.z--no-verifyÚ
store_truez!do not verify the ssl certificate)ÚactionrY   zBASIC auth optionsz-uz
--usernamez3The username to connect to this Jira instance with.z-pz
--passwordz'The password associated with this user.z-Pz--prompt-for-passwordz,Prompt for the password at the command line.zOAuth optionsz-odz--oauth-dancez6Start a 3-legged OAuth authentication dance with Jira.z-ckz--consumer-keyzOAuth consumer key.z-kz
--key-certz˜Private key to sign OAuth requests with (should be the pair of the public key                                   configured in the Jira application link)z-ptz--print-tokensz8Print the negotiated OAuth tokens as they are retrieved.z5OAuth options for already-authenticated access tokensz-atz--access-tokenz OAuth access token for the user.z-atsz--access-token-secretz"Secret for the OAuth access token.zKerberos optionsz--use-kerberos-authzUse kerberos authz--mutual-authenticationÚOPTIONALÚDISABLEDzMutual authentication)ÚchoicesrY   r4   Ú	rest_pathr>   Úrest_api_versionTr   FÚusernameÚpassword)rA   r#   r$   r6   )r!   rA   r"   r#   r$   rH   Úmutual_authentication)ÚargparseÚArgumentParserÚadd_argument_groupÚadd_argumentÚ
parse_argsr4   r_   r>   r`   Ú	no_verifyÚprompt_for_passwordr   rb   ra   r$   ÚopenrO   rA   r#   r6   r!   r"   Úuse_kerberos_authrc   )rS   Ú
jira_groupÚbasic_auth_groupÚoauth_groupÚoauth_already_groupÚkerberos_groupÚargsrD   rF   r5   Úkey_cert_filer7   rG   s                r   Úprocess_command_linert   ‘   s  € ÝÔ$ØHðñ ô €Fð ×*Ò*Ð+KÑLÔL€JØ×ÒØØØGð ñ ô ð ð
 ×ÒØˆmÐ"Ið ñ ô ð ð ×Ò˜LÐ/MÐÑNÔNÐNØ×ÒØØØ?ð ñ ô ð ð ×ÒØ˜lÐ1Tð ñ ô ð ð ×0Ò0Ð1EÑFÔFÐØ×!Ò!ØˆlÐ!Vð "ñ ô ð ð ×!Ò!ØˆlÐ!Jð "ñ ô ð ð ×!Ò!ØØØØ;ð	 "ñ ô ð ð ×+Ò+¨OÑ<Ô<€KØ×ÒØØØØEð	 ñ ô ð ð ×Ò˜UÐ$4Ð;PÐÑQÔQÐQØ×ÒØØðMð ñ ô ð ð ×ÒØØØØGð	 ñ ô ð ð !×3Ò3Ø?ñô Ðð ×$Ò$ØÐÐ&Hð %ñ ô ð ð ×$Ò$ØÐ'Ð.Rð %ñ ô ð ð ×.Ò.Ð/AÑBÔB€NØ×ÒØ lÐ9Lð  ñ ô ð ð ×ÒØ!Ø˜ZÐ(Ø$ð  ñ ô ð ð
 ×ÒÑÔ€Dà€GØ„{ð (Ø œKˆ�Ñà„~ð .Ø#œ~ˆ�Ñà„}ð ,Ø"œmˆ�
ÑàÔð <Ø&*Ô&;ˆÐ"Ñ#à€GˆHÑØ„~ð "Ø!ˆ�ÑàÔð "Ý™	œ	ˆŒà€JØ„}ð /Ø!%¤ˆ
�:Ñà„}ð /Ø!%¤ˆ
�:Ñà€MØ„}ð 1Ý�$”-Ñ Ô ð 	1 MØ)×.Ò.Ñ0Ô0ˆMð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1ð €EØÔð 
àØ Ô-Ø%Ø Ô-ð	
ð 
ˆˆð 	Ôð
àÔ$ð
ð Ôð
ð ŒMð	
ð !Ô-Ø Ø#'Ô#;Ø Ô-Ø%ð
ð 
ˆð $ TÔ%;Ð<€MàÔ!ð LØ15Ô1KˆÐ-Ñ.à�J  }Ð4Ð4s   Ë	K*Ë*K.Ë1K.c                 ó  — t          ¦   «         \  } }}}t          ¦   «         \  }}}}|                      |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         | |||fS )N)rV   rt   Úupdate)rD   rF   r7   rG   Úcmd_optionsÚcmd_basic_authÚ	cmd_oauthÚcmd_kerberos_auths           r   Ú
get_configr{     s‡   € Ý0>Ñ0@Ô0@Ñ-€GˆZ˜ å@TÑ@VÔ@VÑ=€K� Ð,=à‡N‚N�;ÑÔÐØ×Ò�nÑ%Ô%Ð%Ø	‡L‚L�ÑÔÐØ×ÒÐ*Ñ+Ô+Ð+à�J  }Ð4Ð4r   c                ó&  — |                       d¦  «        r8| d         }t          d¦  «        dk    rt          j        || d         |¦  «         n;t	          d¦  «         t          j        || d         ¦  «        }|st          d¦  «        ‚| d         |fS )Nrb   z8Would you like to remember password in OS keyring? (y/n)r   ra   z Getting password from keyring...zNo password provided!)r*   r2   ÚkeyringÚset_passwordr/   Úget_passwordÚ
ValueError)r   r4   rb   s      r   Úhandle_basic_authr�   ,  s�   € Ø‡x‚x�
ÑÔð 6Ø˜
Ô#ˆÝÐKÑLÔLÐPSÒSÐSÝÔ  ¨¨jÔ)9¸8ÑDÔDÐDøåÐ0Ñ1Ô1Ð1ÝÔ'¨°°ZÔ0@ÑAÔAˆØð 	6ÝÐ4Ñ5Ô5Ð5Ø�
Ô˜XÐ%Ð%r   c                 ól  — 	 	 t            t          j        d¦  «         n# t          $ r Y nw xY wt	          ¦   «         \  } }}}|rt          || d         ¬¦  «        }|                     d¦  «        du r2t          | d         |d         |d         |d         | d	         ¦  «        }nat          |                     d
¦  «        |                     d¦  «        |                     d¦  «        |                     d¦  «        f¦  «        sd }|                     dd¦  «        }|d= t          | ||||¬¦  «        }dd l
}|j        d         dk    rddlm} nddlm}  |dt          z   dz   |j        z   dz   ¬¦  «        } |d¦  «         d S # t"          $ r&}	t%          |	t          j        ¬¦  «         Y d }	~	dS d }	~	ww xY w)Nz2Running ipython inside ipython isn't supported. :(r4   )r   r4   rA   Tr#   r$   r6   r   r!   r"   rH   F)rD   rF   ÚkerberosÚkerberos_optionsr7   r   é   )ÚInteractiveShellEmbedz<Jira Shell z (z)>)Úbanner1zA*** Jira shell active; client is in 'jira'. Press Ctrl-D to exit.)Úfileé   )Úget_ipythonÚsysr.   Ú	NameErrorr{   r�   r*   rA   Úallr   ÚIPythonÚversion_infoÚIPython.terminal.embedr†   ÚIPython.frontend.terminal.embedr	   Ú
server_urlÚ	Exceptionr/   Ústderr)
rD   rF   r7   rG   rH   ÚjirarŽ   r†   Úip_shellÚes
             r   Úmainr˜   9  s<  € ð8ð	KÝˆKõ ŒHÐIÑJÔJÐJÐJøõ ð 	ð 	ð 	ØˆDð	øøøõ
 5?±L´LÑ1ˆ�˜U Màð 	VÝ*°
À7È8ÔCTÐUÑUÔUˆJà�9Š9�]Ñ#Ô# tÐ+Ð+ÝØ˜Ô!Ø�nÔ%Ø�jÔ!Ø�nÔ%Ø˜Ô!ñô ˆEˆEõ à—	’	˜.Ñ)Ô)Ø—	’	Ð/Ñ0Ô0Ø—	’	˜.Ñ)Ô)Ø—	’	˜*Ñ%Ô%ð	ñ
ô 
ð 	ð ˆEà$×(Ò(¨¸Ñ?Ô?ˆØ˜.Ð)åØØ!Ø!Ø*Øð
ñ 
ô 
ˆð 	ˆˆˆð Ô Ô" aÒ'Ð'ØDÐDÐDÐDÐDÐDÐDàMÐMÐMÐMÐMÐMà(Ð(Ø"¥[Ñ0°4Ñ7¸$¼/ÑIÈDÑPð
ñ 
ô 
ˆð 	ˆÐTÑUÔUÐUÐUÐUøÝð ð ð Ýˆa•c”jÐ!Ñ!Ô!Ð!Øˆqˆqˆqˆqˆqøøøøðøøøs.   ƒ ŠF Ÿ
,©F «,¬EF Æ
F3ÆF.Æ.F3Ú__main__)FN)#Ú__doc__Ú
__future__r   rd   rM   rI   r‹   r0   r   Úurllib.parser   r}   r&   Úoauthlib.oauth1r   Úrequests_oauthlibr   r•   r   r	   rJ   r,   Ú
expanduserrL   Úobjectr+   rA   rV   rt   r{   r�   r˜   Ú__name__Ústatusr.   r   r   r   ú<module>r£      sœ  ððð ð
 #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø /Ð /Ð /Ð /Ð /Ð /Ø $Ð $Ð $Ð $Ð $Ð $à "Ð "Ð "Ð "Ð "Ð "Ð "Ð "àŒg�lŠl˜2œ7×-Ò-¨cÑ2Ô2°NÀOÑTÔT€Øˆ6‰8Œ8€ðEð Eð Eð EðP+5ð +5ð +5ð\K5ð K5ð K5ð\
5ð 
5ð 
5ð
&ð 
&ð 
&ð9ð 9ð 9ðx ˆzÒÐØˆT‰VŒV€FØ€C„HˆVÑÔÐÐÐð Ðr   