a `8a@shddlZddlZddlZddlmZddlmZddlmZm Z m Z ddl m Z dZ Gd d d e ZdS) N)deepcopy) Configuration)BooleanSetting ChoiceSetting ListSetting)Source)CommandLineSourcecsxeZdZdfdd ZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ dddZZS)r Ncstt||dur(tjdd|_n6t|tr@t ||_nt|t t frV||_nt d||_ |pji|_|pti|_|p~d|_dS)Nrz-arguments must be a string or list of strings)superr __init__sysargv arguments isinstance basestringshlexsplitlisttuple TypeErrorversionoptionsparser_options positional)selfrrrrr __class__r S/home/carl/code/landscape/setoptconf-tmp/build/lib/setoptconf/source/commandline.pyr s   zCommandLineSource.__init__cCsT|j|jvr,d|j|jvr,|j|jdSg}d|jdd}|||S)Nflagsz--%s_-)namerlowerreplaceappend)rsettingr flagr r r get_flags,s  zCommandLineSource.get_flagscCs.t|tr|jrdSdSt|tr&dSdSdS)N store_false store_truer&store)rrdefaultrrr'r r r get_action6s   zCommandLineSource.get_actioncCstjSN)argparseSUPPRESSr.r r r get_default?szCommandLineSource.get_defaultcCs.t|ttfrdSt|tr$|jjS|jSdSr0)rrrrsubtypesanitizer.r r rget_typeDs  zCommandLineSource.get_typecCs|jSr0)r#r.r r rget_destLszCommandLineSource.get_destcCst|tr|jSdSdSr0)rrchoicesr.r r r get_choicesOs zCommandLineSource.get_choicescCs0|j|jvr,d|j|jvr,|j|jdSdS)Nhelpr#rr.r r rget_helpUs zCommandLineSource.get_helpcCs0|j|jvr,d|j|jvr,|j|jdSdS)Nmetavarr;r.r r r get_metavar[s zCommandLineSource.get_metavarc Cs||}||}||}||}||}||}||}||} ||||d} |rj|| d<|rv|| d<| r| | d<|| fS)N)actionr-destr:typer8r=)r)r/r3r6r7r9r<r>) rr'r r?r-Zargtyper@r8Zarghelpr=argument_kwargsr r rbuild_argumentas(        z CommandLineSource.build_argumentc Cst|j}|ds"|r"|j|d<tjfi|}|jdu}|D]4}||\}}|j|i||r@|jdkr@d}q@|r|jddd|jd|j r|j D]\} } |j| fi| q|S)NprogrFz --versionz %(prog)s )r?r) rrgetr#r1ArgumentParserrrC add_argumentr) rsettingsmanagerrparserZ add_versionr'r rBr#rr r r build_parserzs$    zCommandLineSource.build_parserc Cs|||}||j}|D]}t||jrt||j|_q|jr~|r~i}|jD] \}} t||rPt||||<qPt|d|t ||dS)Nr)rHparent) rK parse_argsrhasattrr#getattrvaluersetattrr) rrHrIrLrJparsedr'rr#r!r r r get_configs      zCommandLineSource.get_config)NNNNN)NN)__name__ __module__ __qualname__r r)r/r3r6r7r9r<r>rCrKrS __classcell__r r rrr s"  r )r1rrcopyrconfigrr'rrrbaser __all__r r r r rs