�
�Udac @` s� d d l m Z m Z m Z e Z d d l m Z d d l m Z m
Z
m Z m Z d d l
m Z d d l m Z m Z m Z d d l m Z d � Z d e e f d � � YZ d
e f d � � YZ e e � d e f d
� � Y� Z d S( i ( t absolute_importt divisiont print_function( t ABCMeta( t Containert Mappingt Sequencet Set( t
ImmutableDict( t
add_metaclasst binary_typet text_type( t Singletonc C` sL t | t t f � r | St | t � r� i } xF | j � D]8 \ } } t | t � ri t | � | | <q; | | | <q; Wt | � St | t � r� t � } x@ | D]8 } t | t � r� | j
t | � � q� | j
| � q� Wt | � St | t � rHg } x@ | D]8 } t | t � r-| j
t | � � q| j
| � qWt | � S| S( sR Recursively convert a container and objects inside of it into immutable data types( t
isinstanceR R
R t itemsR t _make_immutableR R t sett addt frozensetR t appendt tuple( t objt temp_dictt keyt valuet temp_sett
temp_sequence( ( sA /usr/lib/python2.7/site-packages/ansible/utils/context_objects.pyR s0
t
_ABCSingletonc B` s e Z d Z RS( s�
Combine ABCMeta based classes with Singleton based classes
Combine Singleton and ABCMeta so we have a metaclass that unambiguously knows which can override
the other. Useful for making new types of containers which are also Singletons.
( t __name__t
__module__t __doc__( ( ( sA /usr/lib/python2.7/site-packages/ansible/utils/context_objects.pyR 5 s t CLIArgsc B` s&