%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python2.7/site-packages/salt/serializers/
Upload File :
Create Path :
Current File : //lib/python2.7/site-packages/salt/serializers/yamlex.pyo

�
���^c@@sodZddlmZmZmZddlZddlZddlZddlm	Z	m
Z
ddlmZm
Z
mZddlmZddlZddlmZddlmZdd	lmZdd
lmZddd
gZeje�ZeZe edej!�Z"ej#rFyej$j%Z&Wq[e'k
rBej%Z&q[Xne edej%�Z&idd6Z(d�Z)d�Z*de"fd��YZ+e+j,de+j-�e+j,de+j.�e+j,de+j/�e+j,de+j0�e+j,de+j1�e+j2de+j3�e+j2de+j4�e+j2de+j5�e+j2de+j6�e+j2de+j7�e+j2d e+j8�e+j2d!e+j9�e+j2d"e+j:�e+j2d#e+j;�d$efd%��YZ<d&e=fd'��YZ>d(e<e
fd)��YZ?d*efd+��YZ@d,e&fd-��YZAeAjBeCd�eAjE�ejFroeAjBejGeAjH�eAjBejIeAjJ�eAjBeKeAjL�n,eAjBejGeAjM�eAjBejIeAjH�eAjBeNeAjO�eAjBePeAjQ�eAjBeReAjS�eAjBeTeAjU�eAjBeVeAjU�eAjBeWeAjX�eAjBeYeAjZ�eAjBej[eAj\�eAjBejeAj]�eAjBdeAj^�e_d.�Z`dS(/uW
    salt.serializers.yamlex
    ~~~~~~~~~~~~~~~~~~~~~~~~~~

    YAMLEX is a format that allows for things like sls files to be
    more intuitive.

    It's an extension of YAML that implements all the salt magic:
    - it implies omap for any dict like.
    - it implies that string like data are str, not unicode
    - ...

    For example, the file `states.sls` has this contents:

    .. code-block:: yaml

        foo:
          bar: 42
          baz: [1, 2, 3]

    The file can be parsed into Python like this

    .. code-block:: python

        from salt.serializers import yamlex

        with open('state.sls', 'r') as stream:
            obj = yamlex.deserialize(stream)

    Check that ``obj`` is an OrderedDict

    .. code-block:: python

        from salt.utils.odict import OrderedDict

        assert isinstance(obj, dict)
        assert isinstance(obj, OrderedDict)


    yamlex `__repr__` and `__str__` objects' methods render YAML understandable
    string. It means that they are template friendly.


    .. code-block:: python

        print '{0}'.format(obj)

    returns:

    ::

        {foo: {bar: 42, baz: [1, 2, 3]}}

    and they are still valid YAML:

    .. code-block:: python

        from salt.serializers import yaml
        yml_obj = yaml.deserialize(str(obj))
        assert yml_obj == obj

    yamlex implements also custom tags:

    !aggregate

         this tag allows structures aggregation.

        For example:


        .. code-block:: yaml

            placeholder: !aggregate foo
            placeholder: !aggregate bar
            placeholder: !aggregate baz

        is rendered as

        .. code-block:: yaml

            placeholder: [foo, bar, baz]

    !reset

         this tag flushes the computing value.

        .. code-block:: yaml

            placeholder: {!aggregate foo: {foo: 42}}
            placeholder: {!aggregate foo: {bar: null}}
            !reset placeholder: {!aggregate foo: {baz: inga}}

        is roughly equivalent to

        .. code-block:: yaml

            placeholder: {!aggregate foo: {baz: inga}}

    Document is defacto an aggregate mapping.
i(tabsolute_importtprint_functiontunicode_literalsN(tDeserializationErrortSerializationError(t	aggregatetMaptSequence(tOrderedDict(tMappingNode(tConstructorError(tScannerError(tsixudeserializeu	serializeu	availableuCSafeLoaderuCSafeDumperuIllegal tab characteru0found character '\t' that cannot start any tokencK@s�|jdt�ytj||�SWn�tk
r�}tjd�tj|j	d�}|j
jd}t|||j
j
��nWtk
r�}tjd�t|��n,tk
r�}tjd�t|��nXdS(u�
    Deserialize any string of stream like object into a Python data structure.

    :param stream_or_string: stream or string to deserialize.
    :param options: options given to lower yaml module.
    uLoaderu%Error encountered while deserializinguUnknown yaml render erroriN(t
setdefaulttLoadertyamltloadRtlogt	exceptiont	ERROR_MAPtgettproblemtproblem_marktlineRtbufferR
t	Exception(tstream_or_stringtoptionsterrorterr_typetline_num((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pytdeserialize�s 


cK@s�|jdt�|jdd�yHtj||�}|jd�rL|d S|jd�rc|d S|SWn,tk
r�}tjd�t	|��nXdS(	u�
    Serialize Python data to YAML.

    :param obj: the data structure to serialize
    :param options: options given to lower yaml module.
    uDumperudefault_flow_styleu
...
i����u
i����u#Error encountered while serializingN(
R
tDumpertNoneRtdumptendswithRRRR(tobjRtresponseR((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyt	serialize�s
RcB@s_eZdZdZdZdZd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZRS(u�
    Create a custom YAML loader that uses the custom constructor. This allows
    for the YAML loading defaults to be manipulated based on needs within salt
    to make things like sls file more intuitive.
    utag:yaml.org,2002:strutag:yaml.org,2002:sequtag:yaml.org,2002:omapcC@stj|�}d|_|S(Nu
!aggregate(t
BaseLoadertcompose_documentttag(tselftnode((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyR(�s	c	C@s]t�}t|t�s?tdddj|j�|j��n|j|�x
|j	D]�\}}|j
dk}|j
dkr�tjd�|j
|_
|j
|�d|_
n|j|dt�}yt|�Wn5tk
rdj|j|j�}t|��nX|j|dt�}||krK|rKt|||�}n|||<qVW|S(	u"
        Build the SLSMap
        u&expected a mapping node, but found {0}u!resetu
!aggregateu.!aggregate applies on values only, not on keysitdeepu;While constructing a mapping {0} found unacceptable key {1}N(tSLSMapt
isinstanceR	R
R!tformattidt
start_marktflatten_mappingtvalueR)Rtwarningtresolve_sls_tagtconstruct_objecttFalsethasht	TypeErrortmerge_recursive(	R*R+tsls_maptkey_nodet
value_nodetresettkeyterrR3((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pytconstruct_yaml_omap�s4	


cC@s4|j|�}tjr*|jd�}nt|�S(u&
        Build the SLSString.
        uutf-8(tconstruct_scalarRtPY2tencodet	SLSString(R*R+R$((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pytconstruct_sls_str�s	cC@sw|jdkrnX|jjd�rj|jjd�rj|jjd�|_|jdkrjd|_qjnt|j�S(ub
        Verify integers and pass them in correctly is they are declared
        as octal
        u0u0bu0xu(u0bu0x(R3t
startswithtlstriptint(R*R+((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pytconstruct_sls_int	scC@s�y|j|�\}}Wntk
r8td��nXtj|�}||_|j||�}|dkrvt�S||jkr�t	|�S||j
kr�t|�St|g�S(Nuunable to build reset(R5RR
tcopyR)R6R!tAggregatedSequencetDEFAULT_MAPPING_TAGt
AggregatedMaptDEFAULT_SEQUENCE_TAG(R*R+R)R,R$((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pytconstruct_sls_aggregates
	

cC@say|j|�\}}Wntk
r8td��nXtj|�}||_|j||�S(Nuunable to build reset(R5RR
RKR)R6(R*R+R)R,((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pytconstruct_sls_reset*s
	cC@s�t|tjj�rB|jtjj|jttg�}t}nZt|tjj�ri|j	}t}n3t|tjj
�r�|j}t}ntd��||fS(Nuunable to resolve tag(
R.Rtnodest
ScalarNodetresolveR3tTrueR7tSequenceNodeROR	RMR
(R*R+R)R,((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyR55s$					(
t__name__t
__module__t__doc__tDEFAULT_SCALAR_TAGRORMR(RARFRJRPRQR5(((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyR�s		(				u
!aggregateu!resetutag:yaml.org,2002:omaputag:yaml.org,2002:strutag:yaml.org,2002:intutag:yaml.org,2002:nullutag:yaml.org,2002:boolutag:yaml.org,2002:floatutag:yaml.org,2002:binaryutag:yaml.org,2002:timestamputag:yaml.org,2002:pairsutag:yaml.org,2002:setutag:yaml.org,2002:sequtag:yaml.org,2002:mapR-cB@s#eZdZd�Zdd�ZRS(uF
    Ensures that dict str() and repr() are YAML friendly.

    .. code-block:: python

        >>> mapping = OrderedDict([('a', 'b'), ('c', None)])
        >>> print mapping
        OrderedDict([('a', 'b'), ('c', None)])

        >>> sls_map = SLSMap(mapping)
        >>> print sls_map.__str__()
        {a: b, c: null}

    cC@st|dt�S(Ntdefault_flow_style(R&RU(R*((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyt__str__escC@st|dt�S(NR[(R&RU(R*t
_repr_running((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyt__repr__hsN(RWRXRYR\R!R^(((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyR-Us	REcB@s eZdZd�Zd�ZRS(u�
    Ensures that str str() and repr() are YAML friendly.

    .. code-block:: python

        >>> scalar = str('foo')
        >>> print 'foo'
        foo

        >>> sls_scalar = SLSString(scalar)
        >>> print sls_scalar
        "foo"

    cC@st|dd�S(Nt
default_styleu"(R&(R*((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyR\|scC@st|dd�S(NR_u"(R&(R*((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyR^s(RWRXRYR\R^(((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyREls	RNcB@seZRS((RWRX(((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyRN�sRLcB@seZRS((RWRX(((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyRL�sR cB@seZdZd�ZRS(u
    sls dumper.
    cC@s|jdt|j���S(Nutag:yaml.org,2002:map(trepresent_mappingtlisttitems(R*tdata((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pytrepresent_odict�s(RWRXRYRd(((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyR �scC@st|||dtdt�S(u!
    Merge obj_b into obj_a.
    t	map_classtsequence_class(RRNRL(tobj_atobj_btlevel((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyR:�s(aRYt
__future__RRRRKtdatetimetloggingtsalt.serializersRRtsalt.utils.aggregationRRRtsalt.utils.odictRRt
yaml.nodesR	tyaml.constructorR
tyaml.scannerRtsalt.extRt__all__t	getLoggerRWRRUt	availabletgetattrt
SafeLoaderR'tPY3tdumpert
SafeDumpert
BaseDumpertAttributeErrorRRR&Rtadd_constructorRPRQRARFRJtadd_multi_constructortconstruct_yaml_nulltconstruct_yaml_booltconstruct_yaml_floattconstruct_yaml_binarytconstruct_yaml_timestamptconstruct_yaml_pairstconstruct_yaml_settconstruct_yaml_seqtconstruct_yaml_mapR-tstrRERNRLR tadd_multi_representerttypeR!trepresent_noneRCtbinary_typet
represent_strt	text_typetrepresent_unicodetlongtrepresent_longtrepresent_binarytbooltrepresent_boolRIt
represent_inttfloattrepresent_floatRatrepresent_listttupletdictRdtsett
represent_settdatetrepresent_datetrepresent_datetimetrepresent_undefinedR7R:(((s;/usr/lib/python2.7/site-packages/salt/serializers/yamlex.pyt<module>es�	

			

Zerion Mini Shell 1.0