o .&aB@sddlZddlZddlmZddlmZddlmZddlZddl m Z ddl m Z m Z ddlmZmZddlmZdd lmZdd lmZdd lmZdd lmZeeZeZGd dde Z!GdddeZ"GdddeZ#GdddeZ$dS)N)model) OrderedDictvalidate_parameters)ArgTableArgParser)unpack_argumentunpack_cli_arg)CustomArgument!create_argument_model_from_schema)OperationDocumentEventHandler) CLICommand) docevents) HelpCommand)SchemaTransformerc@seZdZddZdS) _FromFilecOs8d|_|r tjj||_d|vr|d|_dSt|_dS)aS ``**kwargs`` can contain a ``root_module`` argument that contains the root module where the file contents should be searched. This is an optional argument, and if no value is provided, will default to ``awscli``. This means that by default we look for examples in the ``awscli`` module. N root_module)filenameospathjoinrawscli)selfpathskwargsr@/usr/lib/python3/dist-packages/awscli/customizations/commands.py__init__s   z_FromFile.__init__N)__name__ __module__ __qualname__rrrrrrs rc@seZdZdZdZdZdZdZgZgZ e Z ddZ ddZ d d Zd d Zd dZddZddZddZddZddZddZeddZeddZedd Zed!d"Zed#d$Zejd%d$Zd&S)' BasicCommandzBasic top level command with no subcommands. If you want to create a new command, subclass this and provide the values documented below. commandnamezdescribe the commandcCs||_d|_d|_|g|_dSN)_session _arg_table_subcommand_table_lineage)rsessionrrrrzs zBasicCommand.__init__c Cs`||_||_dd|j}|jj||j||jdt|j |j }| |\}}t | D]N\}}d} |dd} | |j vrH|j | } t|jd|j| |}|| |rz|jjdd|jf| |dd} | durn| }nt| |}|| j|t|||q2t|d r|||dSt|d ddur|rtd d ||||S|j |j||S) Nz(before-building-argument-table-parser.%s.)argument_tableargsr(_-customzprocess-cli-arg.%s.%s) cli_argumentvalue operationhelp subcommandzUnknown options: %s,)_build_subcommand_tabler&_build_arg_tabler%r lineage_namesr$emitr arg_tablesubcommand_tableparse_known_argsvarsitemsreplacername_should_allow_plugins_overrideemit_first_non_none_responser_validate_value_against_schemaargument_modelsetattrhasattr _display_helpgetattr ValueError _run_mainr3) rr+parsed_globalseventparser parsed_args remainingkeyr0r/xformedoverriderrr__call__sX            zBasicCommand.__call__cCst||dSr#r)rrr0rrrrBz+BasicCommand._validate_value_against_schemacCs|r |jdur |dur dSdS)NTF)rC)rparamr0rrrr@sz+BasicCommand._should_allow_plugins_overridecCstd)NrI)NotImplementedError)rrMrJrrrrIs zBasicCommand._run_maincCsZt}|jD]}|d}|d}||j||<q|jjd|j||j|d|||S)Nr? command_classzbuilding-command-table.%s) command_tabler(command_object)r SUBCOMMANDSr$r8NAME _add_lineage)rr:r3subcommand_namesubcommand_classrrrr5s  z$BasicCommand._build_subcommand_tablecCs|}|||dSr#)create_help_command)rrMrJ help_commandrrrrFszBasicCommand._display_helpcCs&i}|jr |}t|j|||jdS)N)rWr9)rYcreate_help_command_table BasicHelpr$r9)rcommand_help_tablerrrr^s  z BasicCommand.create_help_commandcCs4i}|jD] }|d|j||d<q|||S)zj Create the command table into a form that can be handled by the BasicDocHandler. rVr?)rYr$r[)rcommandscommandrrrr`s   z&BasicCommand.create_help_command_tablecCsft}|jjd|j|jd|jD]}d|vr#t|d}||d<tdi|}|||d<q|S)Nzbuilding-arg-table.%s)r9schemarCr?r)rr$r8rZ ARG_TABLEr popr )rr9arg_datarCcustom_argumentrrrr6s zBasicCommand._build_arg_tablecCs$|D] }||}|j|g|_qdSr#)lineage)rrWrd command_objrrrr[szBasicCommand._add_lineagecC|jdur ||_|jSr#)r%r6rrrrr9   zBasicCommand.arg_tablecCrlr#)r&r5rmrrrr:rnzBasicCommand.subcommand_tablecKs||||j<dSr#rZ)clsrWr(rrrr add_commandszBasicCommand.add_commandcC|jSr#rormrrrr?zBasicCommand.namecCrrr#r'rmrrrrj!rszBasicCommand.lineagecCs ||_dSr#rt)rr0rrrrj% N)rrr__doc__rZ DESCRIPTIONSYNOPSISEXAMPLESrfrYr FROM_FILErrRrBr@rIr5rFr^r`r6r[propertyr9r: classmethodrqr?rjsetterrrrrr *s@  @        r csleZdZ dfdd ZeddZeddZedd Zed d Zed d Z ddZ ddZ Z S)raNcsDtt||||||durt}||_|j|_|j|_|j |_ dSr#) superrarBasicDocHandlerEventHandlerClassrw _descriptionrx _synopsisry _examples)rr(rXrWr9event_handler_class __class__rrr,s zBasicHelp.__init__cCs|jjSr#)objrZrmrrrr?<szBasicHelp.namecC |dS)Nr_get_doc_contentsrmrrr description@ruzBasicHelp.descriptioncCr)NrrrmrrrsynopsisDruzBasicHelp.synopsiscCr)NrrrmrrrexamplesHruzBasicHelp.examplescCsd|jjS)Nr))rrr7rmrrr event_classLszBasicHelp.event_classcCst||}t|tjrL|jdur|j}n tj|j|d}|j }tjtj tj |j d|}t | }|WdS1sEwYdS|S)Nz.rstr)rG isinstancer rzrrrrr?rabspathdirname__file___openread)r attr_namer0 trailing_pathrdoc_pathfrrrrPs    $zBasicHelp._get_doc_contentscCs6||}t|j||j|j|dSr#) rr generate_eventsr(rendererrenderdocgetvalue unregister)rr+rJinstancerrrrR`s  zBasicHelp.__call__r#) rrrrr{r?rrrrrrR __classcell__rrrrra*s     racsteZdZfddZddZfddZddZfd d Zd d Zd dZ ddZ ddZ ddZ ddZ ZS)rcstt|||j|_dSr#)r~rrr)rr_rrrrms zBasicDocHandler.__init__cKs6|jjd|j|j|jj||dS)N Description)rstyleh2writer new_paragraph_add_top_level_args_referencerr_rrrrdoc_descriptionqs zBasicDocHandler.doc_descriptionc sP|jstt|jdd|i|dS|jjd|jj|j|jdS)Nr_Synopsisr) rr~rdoc_synopsis_startrrrstart_codeblockwritelnrrrrrws  z"BasicDocHandler.doc_synopsis_startcKs|jsd|j}|j|}|jr|j}n?|j|jvr6|j|jvr dSddd|j|jD}|j|jn|jdkrAd|j }n|j dkrLd|j }nd|j }|j s[|j s[d |}| d|dS dS) Nz | cSsg|]}|jqSr)cli_name).0arrr sz7BasicDocHandler.doc_synopsis_option..booleanz%s+z%s [...]z %s z[%s])rrr9 group_name _arg_groups_documented_arg_groupsrappend cli_type_namernargsrequiredpositional_argr)rarg_namer_rrargument option_strrrrdoc_synopsis_options.          z#BasicDocHandler.doc_synopsis_optionc s4|jstt|jdd|i|dS|jjdS)Nr_r)rr~rdoc_synopsis_endrr end_codeblockrrrrrs z BasicDocHandler.doc_synopsis_endcKs*|jr|jjd|j|jdSdS)NExamples)rrrrrrrrr doc_examplesszBasicDocHandler.doc_examplescKs*|jr|j}|jd|jdSdS)NzAvailable Commands)rWrrrtoctree)rr_rrrrrdoc_subitems_starts  z"BasicDocHandler.doc_subitems_startcKs |jr|j}|j|dSdSr#)rWrrtocitem)r command_namer_rrrrr doc_subitemszBasicDocHandler.doc_subitemcKdSr#rrrrrdoc_subitems_endz BasicDocHandler.doc_subitems_endcKrr#r)rr_ event_namerrrr doc_outputrzBasicDocHandler.doc_outputcKs||dSr#)rrrrrdoc_options_endrSzBasicDocHandler.doc_options_end)rrrrrrrrrrrrrrrrrrrrks   r)%loggingrbotocorerbotocore.compatrbotocore.validaterrawscli.argparserrawscli.argprocessrrawscli.argumentsr r awscli.clidocsr awscli.clidriverr awscli.bcdocr awscli.helpr awscli.schemar getLoggerrLOGopenrobjectrr rarrrrrs,          A