o .&a@sdZddlZddlmZddlmZddlmZddlm Z e e Z e ZddZd d Zd d Zd dZGdddejZGdddejZdS)au Top Level Boolean Parameters ---------------------------- This customization will take a parameter that has a structure of a single boolean element and allow the argument to be specified without a value. Instead of having to say:: --ebs-optimized '{"Value": true}' --ebs-optimized '{"Value": false}' You can instead say `--ebs-optimized/--no-ebs-optimized`. N)partial)detect_shape_structure) arguments)#validate_mutually_exclusive_handlercCs|dtt|ddS)Nzbuilding-argument-table.ec2.* event_handler)registerr pull_up_boolrr D/usr/lib/python3/dist-packages/awscli/customizations/toplevelbool.pyregister_bool_params#s r cCsPt|dkr&|j}t|dkr&t|ddkr&t|djdkr&dSdS)Nzstructure(scalar)rValuebooleanTF)rmemberslenlistkeysvalues type_name) arg_modelrr r r _qualifies_for_simplification)s  rc Ksg}|dtt|dt|D]G\}}t|drY|j}t|rYt|j ||j |j |j |j d}|||j <d|j }t |||j |j dd|j|j |j d} | ||<||| fqdS) Nzoperation-args-parsed.ec2.*) boolean_pairsargument_model) group_nameserialized_namezno-%s store_truezno_%s)actiondestrr)rrvalidate_boolean_mutex_groupsritemshasattrrrPositiveBooleanArgumentname_operation_model_event_emitter_serialized_nameNegativeBooleanParameterpy_nameappend) argument_tablerkwargsrkeyvaluernew_arg negative_name negative_argr r r r 3s<     r cKsF|D]\}}t||jtur t||jtur td|j|jfqdS)Nz8Cannot specify both the "%s" option and the "%s" option.)getattrr(_NOT_SPECIFIED ValueErrorcli_name)r parsed_argsr+positivenegativer r r rYs  rcs8eZdZfddZeddZddZddZZS) r"cs$tt|j|||||d||_dS)N)r)superr"__init__ _group_name)selfr#roperation_model event_emitterrr __class__r r r9ds  z PositiveBooleanArgument.__init__cCs|jS)N)r:)r;r r r rksz"PositiveBooleanArgument.group_namecCs|j|j|jdtdddS)Nstore?)helprdefaultnargs) add_argumentr4 documentationr2)r;parserr r r add_to_parseros  z%PositiveBooleanArgument.add_to_parsercCs:|turdS|durddi||j<dS||||j<dS)NrT)r2r&_unpack_argumentr; parametersr-r r r add_to_paramsysz%PositiveBooleanArgument.add_to_params) __name__ __module__ __qualname__r9propertyrrHrL __classcell__r r r>r r"cs    r"cs*eZdZ  dfdd ZddZZS)r'rNc s&tt|j||||t|d||_dS)N)rCr)r8r'r9r2r:) r;r#rr<r=rrrrr>r r r9s  z!NegativeBooleanParameter.__init__cCs&|tur|rddi||j<dSdSdS)NrF)r2r&rJr r r rLs z&NegativeBooleanParameter.add_to_params)rNN)rMrNrOr9rLrQr r r>r r's r')__doc__logging functoolsrawscli.argprocessrawsclirawscli.customizations.utilsr getLoggerrMLOGobjectr2r rr r CLIArgumentr"BooleanArgumentr'r r r r s      & &