%PDF- %PDF-
Direktori : /usr/lib/python2.7/site-packages/salt/utils/ |
Current File : //usr/lib/python2.7/site-packages/salt/utils/dictupdate.pyc |
� ���^c @@ s� d Z d d l m Z m Z m Z y d d l m Z Wn! e k rY d d l m Z n Xd d l Z d d l Z d d l j j Z e j e � Z e e d � Z d � Z e d � Z d � Z e d � Z d d e d � Z d S( u] Alex Martelli's soulution for recursive dict update from http://stackoverflow.com/a/3233356 i ( t absolute_importt print_functiont unicode_literals( t MappingNc C@ s� t | t � s t | t � r/ t d � � n t | j � � } t t | j � � � t | � @sl t } n | r�x| D]} | | } y | j | d � } Wn t k r� d } n Xt | t � r� t | t � r� t | | d | �} | | | <qy t | t � rvt | t � rv| ret j | � } | j g | D] } | | k r9| ^ q9� | | | <q�| | | | <qy | | | | <qy W| Sy# x | D] } | | | | <q�WWn0 t k r�x | D] } | | | | <q�Wn X| Sd S( u� Recursive version of the default dict.update Merges upd recursively into dest If recursive_update=False, will use the classic dict.update, or fall back on a manual merge (helpful for non-dict types like FunctionWrapper) If merge_lists=True, will aggregate list object types instead of replace. The list in ``upd`` is added to the list in ``dest``, so the resulting list is ``dest[key] + upd[key]``. This behavior is only activated when recursive_update=True. By default merge_lists=False. .. versionchanged: 2016.11.6 When merging lists, duplicate values are removed. Values already present in the ``dest`` list are not added from the ``upd`` list. u9 Cannot update using non-dict types in dictupdate.update()t merge_listsN( t isinstanceR t TypeErrort listt keyst sett Falset gett Nonet AttributeErrort updatet copyt deepcopyt extend( t destt updt recursive_updateR t updkeyst keyt valt dest_subkeyt rett mergedt xt k( ( s9 /usr/lib/python2.7/site-packages/salt/utils/dictupdate.pyR sB " , c C@ sW i } xJ t j | � D]9 \ } } | | k rE | | | g | | <q | | | <q W| S( N( t sixt iteritems( t obj_at obj_bR R R ( ( s9 /usr/lib/python2.7/site-packages/salt/utils/dictupdate.pyt merge_listP s c C@ s"