ó
    x[h
  ã                   ó   •  " S  S5      r g)c                   óF   • \ rS rSrSrSrS rS\SS4S jrS	\	SS4S
 jr
Srg)ÚCloudInitPickleMixiné   a™  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   • U R                   R                  5       n[        U 5      R                  US'   U$ )a$  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__Ú!CloudInitPickleMixin.__getstate__   s0   € ð —‘×"Ñ"Ó$ˆÜ#'¨£:×#=Ñ#=ˆÐÑ Øˆó    r   ÚreturnNc                 ó€   • UR                  SS5      nU R                  R                  U5        U R                  U5        g)aý  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__Ú!CloudInitPickleMixin.__setstate__'   s3   € ð —)‘)Ð-¨qÓ1ˆØ�‰×Ñ˜UÔ#Ø�‰�wÕr   Úci_pkl_versionc                 ó   • g)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   ÚCloudInitPickleMixin._unpickle8   s   � r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Údictr   Úintr   Ú__static_attributes__r   r   r   r   r      s9   † ñð €Oòð  $ð  ¨4ô  ð"¨ð °÷ r   r   N)r   r   r   r   Ú<module>r%      s   ð÷8ò 8r   