o sa@sddlZddlZddlmZddlmZdZdZdeZGdddej Z Gd d d ej Z Gd d d e Z Gd dde ZGddde ZdS)N)six)get_close_matchesaNote: AWS CLI version 2, the latest major version of the AWS CLI, is now stable and recommended for general use. For more information, see the AWS CLI version 2 installation instructions at: https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.htmlzbTo see help text, you can run: aws help aws help aws help zQ %s usage: aws [options] [ ...] [parameters] csDeZdZdZfddZd ddZeddZejd dZZ S) CommandActionzCustom action for CLI command arguments Allows the choices for the argument to be mutable. The choices are dynamically retrieved from the keys of the referenced command table c s*||_tt|j||fd|ji|dS)Nchoices) command_tablesuperr__init__r)selfoption_stringsdestrkwargs __class__2/usr/lib/python3/dist-packages/awscli/argparser.pyr1s  zCommandAction.__init__NcCst||j|dSN)setattrr )r parser namespacevalues option_stringrrr__call__7szCommandAction.__call__cCst|jSr)listrkeys)r rrrr:szCommandAction.choicescCsdSrr)r valrrrr>sr) __name__ __module__ __qualname____doc__rrpropertyrsetter __classcell__rrr rr*s   rcs0eZdZejZdZddZdfdd ZZ S) CLIArgParserc Cs|jdurd||jvrfdg}tt|jdd|jD] }g}|j|||jD] }|d|q(|d|qt||jdd}|r[d|g}|D] } |d| qL||t |d |dSdS) z It's probably not a great idea to override a "hidden" method but the default behavior is pretty ugly and there doesn't seem to be any other way to change it. Nz#Invalid choice, valid choices are: z%-40sz | g?)cutoffz' Invalid choice: %r, maybe you meant: z * %s ) rrangelenChoicesPerLineappendjoinrextendargparse ArgumentError) r actionvaluemsgicurrentchoicepossibleextrawordrrr _check_valueNs  zCLIArgParser._check_valueNc stt|||\}}ttjdd}|durd}t|D]:\}}t|t j r2t ||| |qt|t rXg}|D]} t| t j rL|| |q;|| q;t |||q||fS)Nencodingzutf-8)rr"parse_known_argsgetattrsysstdinvarsitems isinstancer binary_typerdecoderr)) r argsrparsed remainingterminal_encodingargr/encodedvr rrr9ds      zCLIArgParser.parse_known_argsr) rrrr,RawTextHelpFormatter Formatterr(r7r9r!rrr rr"Gs r"cs6eZdZejZ dfdd ZddZddZZ S) MainArgParserNcs0tt|j|jdd|t|d||||dS)NFresolve)formatter_classadd_helpconflict_handler descriptionusageprog)rrKrrJUSAGE_build)r rversion_stringrPargument_tablerRr rrr}s zMainArgParser.__init__cCs"d}t|D]}|d|7}q|S)Nz* %s )sorted)r rhelp_strr3rrr_create_choice_helps z!MainArgParser._create_choice_helpcCsB|D] }||}||q|jdd|dd|jdt|ddS)Nz --versionversionz Display the version of this tool)r.r[helpcommandr.r add_to_parser add_argumentr)r rrUrV argument_nameargumentrrrrTs  zMainArgParser._buildr) rrrr,rIrJrrZrTr!rrr rrKzs  rKcs$eZdZfddZddZZS)ServiceArgParsercs.tt|jtjddtd||||_dS)NFrL)rMrNrOrQ)rrdrr,rIrSrT _service_name)r operations_table service_namer rrrs   zServiceArgParser.__init__cCs|jdt|ddS)N operationr^)rar)r rfrrrrTs zServiceArgParser._build)rrrrrTr!rrr rrds  rdcs8eZdZdZd fdd ZddZd fdd ZZS) ArgTableArgParserz*CLI arg parser based on an argument table.Ncs6tt|j|jdtdd|duri}|||dS)NFrL)rMrNrQrO)rrirrJrSrT)r rVrr rrrs zArgTableArgParser.__init__cCs:|D] }||}||q|r|jdt|dddSdS)N subcommand?)r.rnargsr_)r rVrarg_namercrrrrTs  zArgTableArgParser._buildcs@t|dkr|ddkrt}d|_|gfStt|||S)Nrr\)r'r, Namespacer\rrir9)r rBrr rrr9s z"ArgTableArgParser.parse_known_argsr)rrrrrrTr9r!rrr rris  ri)r,r; awscli.compatrdifflibrAWS_CLI_V2_MESSAGE HELP_BLURBrSActionrArgumentParserr"rKrdrirrrrs"    3