Ë
    x[h
  ã                   ó   —  G d „ d«      Z y)c                   ó:   — e Zd ZdZdZd„ Zdeddfd„Zdeddfd	„Z	y)
ÚCloudInitPickleMixinaÁ  Scaffolding for versioning of pickles.

    This class implements ``__getstate__`` and ``__setstate__`` to provide
    lightweight versioning of the pickles that are generated for classes which
    use it.  Versioning is done at the class level.

    The current version of a class's pickle should be set in the class variable
    ``_ci_pkl_version``, as an int.  If not overridden, it will default to 0.

    On unpickle, the object's state will be restored and then
    ``self._unpickle`` is called with the version of the stored pickle as the
    only argument: this is where classes should implement any deserialization
    fixes they require.  (If the stored pickle has no version, 0 is passed.)
    é    c                 ój   — | j                   j                  «       }t        | «      j                  |d<   |S )aL  Persist instance state, adding a pickle version attribute.

        This adds a ``_ci_pkl_version`` attribute to ``self.__dict__`` and
        returns that for serialisation.  The attribute is stripped out in
        ``__setstate__`` on unpickle.

        The value of ``_ci_pkl_version`` is ``type(self)._ci_pkl_version``.
        Ú_ci_pkl_version)Ú__dict__ÚcopyÚtyper   )ÚselfÚstates     ú7/usr/lib/python3/dist-packages/cloudinit/persistence.pyÚ__getstate__z!CloudInitPickleMixin.__getstate__   s0   € ð —‘×"Ñ"Ó$ˆÜ#'¨£:×#=Ñ#=ˆÐÑ Øˆó    r   ÚreturnNc                 ó€   — |j                  dd«      }| j                  j                  |«       | j                  |«       y)aE  Restore instance state and handle missing attributes on upgrade.

        This will be called when an instance of this class is unpickled; the
        previous instance's ``__dict__`` is passed as ``state``.  This method
        removes the pickle version from the stored state, restores the
        remaining state into the current instance, and then calls
        ``self._unpickle`` with the version (or 0, if no version is found in
        the stored state).

        See https://docs.python.org/3/library/pickle.html#object.__setstate__
        for further background.
        r   r   N)Úpopr   ÚupdateÚ	_unpickle)r
   r   Úversions      r   Ú__setstate__z!CloudInitPickleMixin.__setstate__'   s3   € ð —)‘)Ð-¨qÓ1ˆØ�‰×Ñ˜UÔ#Ø�‰�wÕr   Úci_pkl_versionc                  ó   — y)a>  Perform any deserialization fixes required.

        By default, this does nothing.  Classes using this mixin should
        override this method if they have fixes they need to apply.

        ``ci_pkl_version`` will be the version stored in the pickle for this
        object, or 0 if no version is present.
        N© )r
   r   s     r   r   zCloudInitPickleMixin._unpickle8   s   � r   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   Údictr   Úintr   r   r   r   r   r      s9   „ ñð €Oòð  $ð  ¨4ó  ð"¨ð °ô r   r   N)r   r   r   r   ú<module>r      s   ð÷8ò 8r   