B @`@srddlZddlZddlZddlZddlZddlZddlZddlmZddl Z ddl Z ej rdddl Z nddlZ ddlmZddlmZe dZdejkrejejdZnTedrejejejdd d Zn ejejejd d d ZdZd ZdZ ddZ!ddZ"ddZ#ddZ$ddZ%ddZ&ddZ'ddZ(Gdd d e)Z*Gd!d"d"e)Z+Gd#d$d$e+Z,dFd&d'Z-Gd(d)d)ej.Z/d*d+Z0dGd-d.Z1e2d/Z3d0d1Z4d2d3Z5d4d5Z6Gd6d7d7e)Z7d8d9Z8ie8_9Gd:d;d;e)Z:Gdd?d?e;ZGdDdEdEe:Z?e?Z@ej rne?jAe?_Be?jCe?_De?jEe?_FdS)HN)wrap)xrange) deprecatedzpyomo.common.configPYOMO_CONFIG_DIR)Zwindowscygwin LOCALAPPDATAZPyomoHOMEz.pyomocCs.t|}|t|ks|dkr*td|f|S)zDomain validation function admitting strictly positive integers This domain will admit positive integers, as well as any types that are convertible to positive integers. rz&Expected positive int, but received %s)intfloat ValueError)valansr7/tmp/pip-unpacked-wheel-bi3529v6/pyomo/common/config.py PositiveInt=s  rcCs.t|}|t|ks|dkr*td|f|S)zDomain validation function admitting strictly negative integers This domain will admit negative integers, as well as any types that are convertible to negative integers. rz&Expected negative int, but received %s)r r r)rrrrr NegativeIntIs  rcCs.t|}|t|ks|dkr*td|f|S)zDomain validation function admitting non-positive integers (smaller than or equal to zero) This domain will admit non-positive integers, as well as any types that are convertible to non-positive integers. rz*Expected non-positive int, but received %s)r r r)rrrrrNonPositiveIntTs  rcCs.t|}|t|ks|dkr*td|f|S)zDomain validation function admitting non-negative integers (greater than or equal to zero) This domain will admit non-negative integers, as well as any types that are convertible to non-negative integers. rz*Expected non-negative int, but received %s)r r r)rrrrrNonNegativeInt_s  rcCs"t|}|dkrtd|f|S)zDomain validation function admitting strictly positive floating point numbers This domain will admit positive floating point numbers, as well as any types that are convertible to positive floating point numbers. rz(Expected positive float, but received %s)r r)rrrrr PositiveFloatjs  rcCs"t|}|dkrtd|f|S)zDomain validation function admitting strictly negative floating point numbers This domain will admit negative floating point numbers, as well as any types that are convertible to negative floating point numbers. rz(Expected negative float, but received %s)r r)rrrrr NegativeFloatus  rcCs"t|}|dkrtd|f|S)a Domain validation function admitting strictly non-positive floating point numbers (smaller than or equal to zero) This domain will admit non-positive floating point numbers, as well as any types that are convertible to non-positive floating point numbers. rz,Expected non-positive float, but received %s)r r)rrrrrNonPositiveFloats  rcCs"t|}|dkrtd|f|S)a Domain validation function admitting strictly non-negative floating point numbers (greater than or equal to zero) This domain will admit non-negative floating point numbers, as well as any types that are convertible to non-negative floating point numbers. rz,Expected non-negative float, but received %s)r r)rrrrrNonNegativeFloats  rc@s"eZdZdZdddZddZdS)InzbDomain validation function admitting a list of possible values that a variable can be assigned to.NcCs||_||_dS)N)_domain_cast)selfdomaincastrrr__init__sz In.__init__cCs>|jdk r||}n|}||jkr(|Std||jfdS)Nzvalue %s not in domain %s)rrr)rvaluevrrr__call__s    z In.__call__)N)__name__ __module__ __qualname____doc__r!r$rrrrrs rc@s&eZdZdZdZdddZddZdS)PathNFcCs ||_dS)N)basePath)rr*rrrr!sz Path.__init__c Cst|}|dkstjr|S|jr(|j}ntj}t|tkrB|}|dkrPd}n t|}|r|dd dkrt |dd}|r|dd dkrt |dd}t j t j t j t j t j |t j t j |}|S)Nrz${cwd})strr)SuppressPathExpansionr*BasePathtype ConfigValuer"lstriplowerosgetcwdpathnormpathabspathjoin expandvars expanduser)rr5baserrrrr$s&  z Path.__call__)N)r%r&r'r.r-r!r$rrrrr)s r)cseZdZfddZZS)PathListcs@t|dr*t|tjs*fdd|DStt|gSdS)N__iter__csg|]}tt|qSr)superr<r$).0i) __class__rrr sz%PathList.__call__..)hasattr isinstancesix string_typesr>r<r$)rdata)rA)rrr$szPathList.__call__)r%r&r'r$ __classcell__rr)rArr<sr<c Cs,|d||jddddddddd S) zGReturns the docstring with a formatted configuration arguments listing. z$Keyword Arguments ----------------- rz%s z %sr) block_start block_end item_start item_bodyitem_endindent_spacingwidthT)r8generate_documentation splitlines)Z docstringZ configdictZ indent_byrrradd_docstring_lists rUc@seZdZeddZdS) ConfigEnumcCs t|tkr||S||SdS)N)r/r,)clsargrrrfrom_enum_or_strings zConfigEnum.from_enum_or_stringN)r%r&r' classmethodrYrrrrrVsrVcOsPyddlm}Wntk r,dd}YnXdtks.dump_dump)Zyamlr[ ImportErrorglobalsAssertionError)r^kwdsr[rrrr_js r_TcCs.|rtdd|}tdd|}tdd|S)Nz\s-_z[^a-zA-Z0-9-_])resub)nameZ space_to_dashrrr _munge_nameysriz ^([ ]*)cCs|s|S|}x|r.|ds.|dqWt|dkrD|Stdd|ddD}tt|dd|kr|d|d<n|d|d |d<x4t |ddD] \}}||d ||d<qWd |S)Nrr css"|]}tt|dVqdS)rN)len _leadingSpacematchgroup)r?lrrr sz%_strip_indentation.. ) rTstrippoprjr1minrkrlrmrstrip enumerater8)doclinesZ minIndentr@rnrrr_strip_indentations rxcCs|}|dk ryf||kr|jn|}tt|jjddk rd|t|dd7}|drp|dd}n |t|7}Wn|tt |7}YnX|S)NT)default_flow_stylez...) _datagetattr _builtinsrAr%r_rtendswithr,r/)prefixr"obj_strr{rrr _value2strings rcCsv|}|dk rnyD||kr|jn|}|t|dd7}|drN|dd}Wn|tt|7}YnX|S)NT)ryz...rz)r{r_rtr~r,r/)rr"rrr{rrr _value2yamls rc@seZdZddZddZdS)_UnpickleableDomaincCst|j|_|d|_dS)NT)r/r%_typerh_name)rrrrrr!s z_UnpickleableDomain.__init__cCstd|j|jf|S)Nz%s %s was pickled with an unpicklable domain. The domain was stripped and lost during the pickle process. Setting new values on the restored object cannot be mapped into the correct domain. )loggingerrorrr)rrXrrrr$sz_UnpickleableDomain.__call__N)r%r&r'r!r$rrrrrsrcCsrt|}|tjkr(tj|r |St|Syt|dtj|<|Sttdt r\dtj|<t|SdS)NTrF) r/ _picklableknownrpickledumpsrDsysexc_info RuntimeError)fieldrZftyperrrrs    rc seZdZdZGdddeZd0ddZfdd Zd d Zeeeeeeeed f d dZ d1ddZ ddZ ddZ ddZ ddZddZddZddZd2d d!Zd3d#d$Zd4d*d+Zd,d-Zd.d/ZZS)5 ConfigBase) _parentr_userSet _userAccessedr{_defaultr _description_doc _visibility _argparsec@s eZdZdS)zConfigBase.NoArgumentN)r%r&r'rrrr NoArgumentsrNrcCsNd|_d|_d|_d|_d|_||_||_t||_t||_ ||_ d|_ dS)NF) rrrrr{rrrxrrrr)rdefaultr descriptionrv visibilityrrrr!s  zConfigBase.__init__cs\jjdtkri}ntt}|fddtjDt|d|d<d|d<|S)Nc3s|]}|t|fVqdS)N)r|)r?key)rrrrosz*ConfigBase.__getstate__..rr)rA__mro__rr> __getstate__update __slots__r)rstate)rA)rrrszConfigBase.__getstate__cCs*x$t|D]\}}t|||q WdS)N)rE iteritemsobject __setattr__)rrrrrrr __setstate__szConfigBase.__setstate__Fc Csi} |tjkr|jn|| d<|tjkr,|jn|| d<|tjkrD|jn|| d<t|tr|tjkrf|jn|| d<|tjkr~|jn|| d<|tjk rt dt |f|tjk rt dt |fnr|tjkr| n|| d<|tjkr|j n|| d <|tjk rt d t |f|tjk r6t d t |f|jf| } t|trx||jD]h} | sl| |jkrV|j| } | | d | j| <}| j| | |jkr| j| | |_| j|_qVWn| |tjk r| || S) Nrrvrimplicitimplicit_domainz3domain ignored by __call__(): class is a ConfigDictz4default ignored by __call__(): class is a ConfigDictrrz._get_subparser_or_groupcs}t|}d|kr|d}t|trxx\t|D]@\}}||\}}|s2|t|dkr2td|dfq2Wn||\}}d|krdd|d<d|kr|dd d krj dk rj j t krj j |d<nt d |d<|j|d tji|dS) Nrmr z9Could not find argparse subparser '%s' for Config item %sTdestz CONFIGBLOCK.metavarrr)rrFr)dictrrrDtuplerurjrrhgetrrAr/r%upperri add_argumentrSUPPRESS)_args_kwdsr_groupZ_idxrZ_issub)rrparserrrr_process_argparse_defs,      z=ConfigBase.initialize_argparse.._process_argparse_defr)_data_collectorr)rrrlevelrr"rrr)rrrrrinitialize_argparses  zConfigBase.initialize_argparsec Csx|ddD]\}}}}|jdkr&qxj|jD]`\}}d|kr`|d}||kr||j|q.d|d}||kr.||j||j|=q.WqW|S)Nrrz CONFIGBLOCK.T)rrr__dict__rh) rZ parsed_argsrrr"rrrZ_destrrrimport_argparses zConfigBase.import_argparser c Cs|tjkrtd|tjfg}|dkr.tj}x|dd|D]v\}}}} |dkrZ| jsZq>t||| } d||| dg||d<x.t|D]"\} } | dk r| | d|| <qWq>WdS)Nz0unknown content filter '%s'; valid values are %srruserdatarJrp) rcontent_filtersrrstdoutrrrruwrite) rZcontent_filterrQZostreamrZ_blockslvlrr"rrr@r#rrrdisplay s   zConfigBase.displayNc s>d}d}t|dd|}i}xj|D]b\}} } } t| | | } ||krVgdddd||<||d| ddt| t| jp~dfq$Wxt|D]}||} | t||tfd d ||dD| t|7t fd d ||dD}t||d|dkr>tfd d ||dD}n}||d <|||d<|||d<qWd}d}d}xpt|D]d}||d }||d|}||kr||kr|}nP||krP||kr|}|}qWt }|jr| | |jdx"|D]\}} } } t| | | } | jsX| d||| dq||krp|t|}n||d t|}| d||t| |dkr| d|||| n| | dd|| |t|t||}| dd||t| j|dd| dqW|S)Nz # rr)rGofflineoverrG:r c3s$|]\}}}|kr|n|VqdS)Nr)r?rrrv)_okrrro2sz4ConfigBase.generate_yaml_template..c3s$|]\}}}|krdVqdS)r Nr)r?rrrv)offsetrRrrro5sc3s(|] \}}}|kr|VqdS)Nr)r?rrrv)rrRrrro8srrrrprJz%%-%dsz )subsequent_indent)listrrrfindrjrsortedmaxsumrEStringIOrr1r8rgetvalue)rrQrRrZ minDocWidthcommentrGZ level_inforprerrrindentrrZmaxLvlZmaxDocpadZ_padrr3rZtxtArear)rrrRrgenerate_yaml_template#sz  (           z!ConfigBase.generate_yaml_template<\begin{description}[topsep=0pt,parsep=0.5em,itemsep=-0.4em] \end{description} \item[{%s}]\hfill \\%src Cst} g} |} d} x|dd|dD]\} }}}t| | krxt| | dkr`| dqDW| | d|kr| | || n|r| | || d|7} xdt| | kr| }|dk r| dd|} d|kr| | ||q|r| | |qW|} d|kr6| | ||n|rJ| | ||jp\|j p\d}|rd|k}d|kr||f}n |r|}|rt ||| d|| d|d}n|f}| d ||d d s| d d|kr| | ||q(|r(| | |q(Wx^| rz| }|dk r| dd|} d|krh| | ||n| | |qW| S) Nrr Tz%srJz )initial_indentrrp)rErrrjrrrhrrrrr writelinesr8r~r)rrLrMrNrOrPrQrRrr3rZlastObjrrrrr_lastrZ _wrapLinesZ doc_linesrrrrSisp "           z!ConfigBase.generate_documentationccs:|jr |Vx(|ddD]\}}}}|jr|VqWdS)Nrr)rr)rrrr"rrrr user_valuess zConfigBase.user_valuesccsF|jr|js|Vx.|ddD]\}}}}|jr |js |Vq WdS)Nrr)rrr)rrrr"rrrrunused_user_valuess   zConfigBase.unused_user_values)NNNNr)F)Nr NN)r rr)rrrrrr rr)r%r&r'rrrr!rrr$rhrrrrrrrrrrSrrrHrr)rArrsD   A %A  H @rc@s4eZdZdZddZd ddZddZdd d Zd S)r0aStore and manipulate a single configuration value. Parameters ---------- default: optional The default value that this ConfigValue will take if no value is provided. domain: callable, optional The domain can be any callable that accepts a candidate value and returns the value converted to the desired type, optionally performing any data validation. The result will be stored into the ConfigValue. Examples include type constructors like `int` or `float`. More complex domain examples include callable objects; for example, the :py:class:`In` class that ensures that the value falls into an acceptable set or even a complete :py:class:`ConfigDict` instance. description: str, optional The short description of this value doc: str, optional The long documentation string for this value visibility: int, optional The visibility of this ConfigValue when generating templates and documentation. Visibility supports specification of "advanced" or "developer" options. ConfigValues with visibility=0 (the default) will always be printed / included. ConfigValues with higher visibility values will only be included when the generation method specifies a visibility greater than or equal to the visibility of this object. cOstj|f|||dS)N)rr!r)rr^rcrrrr!szConfigValue.__init__TcCs|r d|_|jS)NT)rr{)rrrrrr"szConfigValue.valuecCs|||_d|_dS)NT)rr{r)rr"rrrrs zConfigValue.set_valueNFccs(|dk r||jkrdS||||fVdS)N)r)rrrrdocModerrrrszConfigValue._data_collector)T)NF)r%r&r'r(r!r"rrrrrrr0s " r0cs(eZdZfddZfddZZS)ImmutableConfigValuecs4|||jkr tt|dtt||dS)Nz is currently immutable)rr{rr,r>r r)rr")rArrrszImmutableConfigValue.set_valuecsXytt||jWn0t|jdr@tt||nYnXd|_d|_dS)Nr$F)r>r rrrCrr)r)rArrrs zImmutableConfigValue.reset)r%r&r'rrrHrr)rArr s r c@s eZdZdZddZddZdS) MarkImmutablea` Mark instances of ConfigValue as immutable. Parameters ---------- config_value: ConfigValue The ConfigValue instances that should be marked immutable. Note that multiple instances of ConfigValue can be passed. Examples -------- >>> config = ConfigDict() >>> config.declare('a', ConfigValue(default=1, domain=int)) >>> config.declare('b', ConfigValue(default=1, domain=int)) >>> locker = MarkImmutable(config.get('a'), config.get('b')) Now, config.a and config.b cannot be changed. To make them mutable again, >>> locker.release_lock() cGs\t|_y8x2|D]*}t|tk r(tdt|_|j|qWWn|YnXdS)Nz3Only ConfigValue instances can be marked immutable.) r_lockedr/r0rr rAr release_lock)rr^rXrrrr!s  zMarkImmutable.__init__cCs"x|jD] }t|_qWt|_dS)N)r r0rAr)rrXrrrr +s  zMarkImmutable.release_lockN)r%r&r'r(r!r rrrrr  s r cseZdZdZddZfddZddZejfdd Z d d Z d d Z ddZ d"ddZ ddZddZejfddZedddejfddZd#d d!ZZS)$ ConfigListamStore and manipulate a list of configuration values. Parameters ---------- default: optional The default value that this ConfigList will take if no value is provided. If default is a list or ConfigList, then each member is cast to the ConfigList's domain to build the default value, otherwise the default is cast to the domain and forms a default list with a single element. domain: callable, optional The domain can be any callable that accepts a candidate value and returns the value converted to the desired type, optionally performing any data validation. The result will be stored / added to the ConfigList. Examples include type constructors like `int` or `float`. More complex domain examples include callable objects; for example, the :py:class:`In` class that ensures that the value falls into an acceptable set or even a complete :py:class:`ConfigDict` instance. description: str, optional The short description of this list doc: str, optional The long documentation string for this list visibility: int, optional The visibility of this ConfigList when generating templates and documentation. Visibility supports specification of "advanced" or "developer" options. ConfigLists with visibility=0 (the default) will always be printed / included. ConfigLists with higher visibility values will only be included when the generation method specifies a visibility greater than or equal to the visibility of this object. cOsPtj|f|||jdkr&t|_nt|jtr4ntd|jd|_|dS)N)r)rr!rr0rDr)rr^rcrrrr!Xs   zConfigList.__init__cs*tt||}x|jD] }||_qWdS)N)r>r rr{r)rrr])rArrrcs zConfigList.__setstate__cCs*|j|}d|_t|tr"|S|SdS)NT)r{rrDr0r")rrrrrr __getitem__hs   zConfigList.__getitem__cCsPy|j|}d|_|SYnX|tjkr0dS|jdk rD||St|SdS)NT)r{rrrrr0)rrrrrrrrps    zConfigList.getcCs|j||dS)N)r{r)rrrrrr __setitem__szConfigList.__setitem__cCs |jS)N)r{__len__)rrrrrszConfigList.__len__cs&d_tfddttjDS)NTc3s|]}|VqdS)Nr)r?r@)rrrrosz&ConfigList.__iter__..)riterrrjr{)rr)rrr=szConfigList.__iter__Tcsr d|_fdd|jDS)NTcsg|]}|qSr)r")r?config)rrrrBsz$ConfigList.value..)rr{)rrr)rrr"szConfigList.valuecCsj|j}g|_y>t|tks$t|tr>x"|D]}||q*Wn ||Wn||_YnXd|_dS)NT)r{r/rrDr rr)rr"Z_oldrrrrrs   zConfigList.set_valuecCs&t|x|D] }d|_qWdS)NF)rrrr)rrrrrrs zConfigList.resetcCs`||}|dkrdS|j|||jd_dt|jdf|jd_d|jd_d|_dS)Nrz[%s]r T)rr{rrrjrr)rr"rrrrrs    zConfigList.appendz3ConfigList.add() has been deprecated. Use append()z5.7.2)versioncCs ||S)N)r)rr"rrrrszConfigList.addNFccs|dk r||jkrdS|r`||d|fV|j|dd||}t|x|D] }|VqNWdS|r|jsz||g|fVn||d|fV|dk r|d7}x.|jD]$}x||d||D] }|VqWqWdS)Nr z- )rrrrEnextr{)rrrrrZ subDomainr#r"rrrrs&    zConfigList._data_collector)T)NF)r%r&r'r(r!rrrrrrrr=r"rrrrrrrHrr)rArr 1s %    r cs eZdZdZdZdZeejZd>ddZfd d Z fd d Z d dZ ej fddZ ej fddZddZddZddZddZddZddZfdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd?d1d2Zd3d4Zd@d6d7Z dAd8d9Z!d:d;Z"dBdtt}|fddtjDt|d|d<|S)Nc3s|]}|t|fVqdS)N)r|)r?r)rrrrosz*ConfigDict.__getstate__..r)r>rrrrr)rr)rA)rrrszConfigDict.__getstate__cs0tt||}xt|jD] }||_qWdS)N)r>rrrE itervaluesr{r)rrr])rArrrszConfigDict.__setstate__cCs:d|_t|}t|j|tr,|j|S|j|SdS)NT)rr,rDr{r0r")rrrrrr!s zConfigDict.__getitem__cCsPd|_t|}||jkr"|j|S|tjkr0dS|jdk rD||St|SdS)NT)rr,r{rrrr0)rrrrrrr)s     zConfigDict.getcCsHd|_t|}||jkr"|j|S|tjkr8||dS|||SdS)NT)rr,r{rrr)rrrrrr setdefault5s    zConfigDict.setdefaultcCs4t|}||jkr |||n|j||dS)N)r,r{rr)rrrrrrr?s zConfigDict.__setitem__cCs$|j|=|j||j|dS)N)r{rremoverdiscard)rrrrr __delitem__Gs zConfigDict.__delitem__cCst|}||jkS)N)r,r{)rrrrr __contains__OszConfigDict.__contains__cCs |jS)N)rr)rrrrrSszConfigDict.__len__cCs |jS)N)rr=)rrrrr=VszConfigDict.__iter__cCs<||jkr0|dd}||jkr,td||}t||S)NrerJzUnknown attribute '%s')r{replacerrr)rrhrrrr __getattr__Ys     zConfigDict.__getattr__csF|tjkrtt|||n$||jkr4|dd}t|||dS)NrerJ)r _all_slotsr>rr{rr)rrhr")rArrrfs    zConfigDict.__setattr__cCs |jS)N)rr=)rrrriterkeysnszConfigDict.iterkeysccs$d|_x|jD]}||VqWdS)NT)rr)rrrrrrqs zConfigDict.itervaluesccs(d|_x|jD]}|||fVqWdS)NT)rr)rrrrrrvs zConfigDict.iteritemscCs t|S)N)rr )rrrrkeys{szConfigDict.keyscCs t|S)N)rr)rrrrvalues~szConfigDict.valuescCs t|S)N)rr)rrrritemsszConfigDict.itemscCst|}|jdk r2td||jd|df||jkrRtd||dfd|ksjd|ksjd|krtd||df||j|<|j|||_||_|S)NzKconfig '%s' is already assigned to ConfigDict '%s'; cannot reassign to '%s'Tz1duplicate config '%s' defined for ConfigDict '%s'rr]zLIllegal character in config '%s' for ConfigDict '%s': '.[]' are not allowed.)r,rrrhr{rrr)rrhrrrr_adds$    zConfigDict._addcCs|||}|j||S)N)r%rr)rrhrrrrrdeclares  zConfigDict.declarecCs`t|tstdxH|D]<}|r.||kr.q||krDtd|f|||j|qWdS)Nz8ConfigDict.declare_from() only accepts other ConfigDictszAConfigDict.declare_from passed a block with a duplicate field, %s)rDrrr r&r{)rotherskiprrrr declare_froms   zConfigDict.declare_fromcCsl|jstd||df|jdkrPt|tr>|||}qb||t|}n||||}d|_|S)NzKKey '%s' not defined in ConfigDict '%s' and Dict disallows implicit entriesT) rrrhrrDrr%r0r)rrhrrrrrrs  zConfigDict.addTcs(r d|_tfddt|jDS)NTc3s |]\}}||fVqdS)N)r")r?rhr)rrrrosz#ConfigDict.value..)rrrErr{)rrr)rrr"s zConfigDict.valuecCsP|dkr |St|tk r>t|ts>td|dt|jf|sF|Sg}i}xz|D]r}t|}||jkrt|||<qT| dd}||jkr||t|<qT|rqT|j r| |qTtd||dfqTW| d}yPx&|j D]}||kr|||||<qWx"t|D]}||||qWWn |||YnXd|_|S)Nz.Expected dict value for %s.set_value, found %sTrerJzVkey '%s' not defined for ConfigDict '%s' and implicit (undefined) keys are not allowedF)r/rrDrrrhr%r,r{rrrr"rrrrrr)rr"Z skip_implicitZ _implicitZ _decl_mapr_keyZ _old_datarrrrsJ           zConfigDict.set_valuecs8ddfddjDjdd<d_d_dS)NcSs*||jk}|r|j|n|j|=|S)N)rr{r)rrZkeeprrr_keeps  zConfigDict.reset.._keepcsg|]}|r|qSrr)r?r])r+rrrrBsz$ConfigDict.reset..F)rrr)rr)r+rrrs zConfigDict.resetccsv|dk r||jkrdS|r8||d|fV|dk r8|d7}x8|jD].}x(|j|||d||D] }|Vq`Wq@WdS)Nr z: )rrr{r)rrrrrrr#rrrrs  zConfigDict._data_collector)NNFNr)N)T)F)NF)%r%r&r'r(rrrrr!rrrrrrrrrrr=rrr rrr!r"r#r%r&r)rr"rrrrHrr)rArrsF         7r)rI)T)Grr3platformenumrErfrtextwraprrrPY3builtinsr} __builtin__Z six.movesrZpyomo.common.deprecationr getLoggerrenvironr5r7rsystemr2rr8rZ USER_OPTIONZADVANCED_OPTIONZDEVELOPER_OPTIONrrrrrrrrrrr)r<rUEnumrVr_ricompilerkrxrrrrrrr0r r r rZ ConfigBlockr r!rr"rr#rrrrs               %     h7'07