B @`]$@s>dgZddlmZddlmZddlmZGdddeZdS) TableData)xrange)Options) _process_datac@speZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZdS)rzY A class used to read/write data from/to a table in an external data source. cCs d|_d|_t|_d|j_dS)z Constructor N)_info_dataroptionsncolumns)selfr >/tmp/pip-unpacked-wheel-bi3529v6/pyomo/dataportal/TableData.py__init__szTableData.__init__cCsdS)z] Returns: Return :const:`True` if the data manager is available. Tr )r r r r available"szTableData.availablecKs|d|_|jf|dS)z Initialize the data manager with keyword arguments. The `filename` argument is recognized here, and other arguments are passed to the :func:`add_options` method. filenameN)popr add_options)r kwdsr r r initialize)s zTableData.initializecKs|j|dS)z` Add the keyword options to the :class:`Options` object in this object. N)r update)r rr r r r3szTableData.add_optionscCsdS)z( Open the data manager. Nr )r r r r open:szTableData.opencCsdS)z2 Read data from the data manager. Fr )r r r r read@szTableData.readcCsdS)z1 Write data to the data manager. Fr )r datar r r writeFszTableData.writecCsdS)z) Close the data manager. Nr )r r r r closeLszTableData.closec Cs^|dkr|jj}|jj|kr(i||jj<t|j|||jj||j|jj|jj|jj|jj d S)zc Process the data that was extracted from this data manager and return it. N)indexsetparamr ) r model namespacerrrrrrr )r rrdefaultr r r processRs   zTableData.processcCs d|_dS)zC Clear the data that was extracted from this table N)r)r r r r clearfszTableData.clearcCsddlm}ddlm}g}|jjdkrJxjtt|D]}||q6WnJxH|jjD]<}y|| t |WqTt dt |YqTXqTWt||j_ |jj dk r"t|jj ttfkr|jj f|j_ g}x@|jj D]4}t||r||j_||jq||qWt||j_ t|jj|rP|jj|j_|jjj|j_t|jj |r|jj |j_|jj j|j_ njt|jj ttgkrg} xB|jj D]6} t| |r| | j| |j_n | | qWt| |j_ |jjdkr>|jjdk rd|j_n|jj dk r&d|j_|jjdkrftdn(|jjdkrf|jj dkrfd} t| |jjdkr|jj dk rd } t| t |jj d|jjd g|_x:|D]2} |jj d kr|jt| n |j| qWn|jjd krn|jj dk rd } t| t |jj d|jjdg|_|j|d d|jd x|D]} |j| qTWn||jjdkrd|jj dddg|_|j|d d|jd x|D]} |j| qWn|jjdkr2d|jj ddg|_|j|d d|jd x|D]} |j| qWn|jjdkr|jj dk rbdd|jj dg|_n ddg|_x|jj D]} |j| qvW|jd x.|D]&} x|D]}|j| |qWqWt||j_ nd} t| |jjdS)Nr)Set)Paramz:Model declaration '%s' not found in returned query columnsrtablez#Unspecified format and data optionz1Must specify the set or parameter option for dataz7Cannot specify index for data with the 'set' format: %sz:=rZ set_arrayz=Cannot specify index for data with the 'set_array' format: %s:Ztransposed_arrayrz(tr)arrayzUnknown parameter format: '%s')Zpyomo.core.base.setr#Zpyomo.core.base.paramr$r selectrlenappendrstrprintr rtypelisttuple isinstancer local_namerformat ValueErrorIOErrorrextend)r headersrowsr#r$Z header_indexi_paramsptmpvalmsgrowrr r r _set_datals                        zTableData._set_datac Cs,ddlm}g}|jjdk r*||jj|jjdk r|jjdkrg}x.t|jjjD]}||jjjt |qXW|||jj dk rx|t |jjD].}|jjjdkr|t |q||gqWn|jj }n |jj g}xp|dD]d}|dkrfg}n"t|t tfkrt |}n|g}x |D]} ||| |qW||qRW|jjdkr(g}x4tt|dt|D]}|dt |qWx|D]} || qW|d||S)Nr)valuerI)Zpyomo.core.exprr@r columnsr*rrZdimenr1r+sortsortedr.rr-r/r)insert) r r@r;colsr8rZ_paramrr>rr r r _get_tablesP            zTableData._get_tableN)__name__ __module__ __qualname____doc__rrrrrrrrr!r"r?rGr r r r rs  pN) __all__Z six.movesrZpyomo.common.collectionsrZpyomo.dataportal.process_datarobjectrr r r r  s