+
    ÷¢i
  ã                   ó   €  ! R  R4      t R# )c                   óR   a € ] tR t^t o Rt^ tR tV 3R lR ltV 3R lR ltRt	V t
R# )	Ú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   € V P                   P                  4       p\        V 4      P                  VR&   V# )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   € ð —‘×"Ñ"Ó$ˆÜ#'¨£:×#=Ñ#=ˆÐÑ Øˆó    c                ó$   <€ V ^8„  d   QhRS[ RR/# )é   r
   ÚreturnN)Údict)ÚformatÚ__classdict__s   "€r   Ú__annotate__Ú!CloudInitPickleMixin.__annotate__'   s   ø€ ÷  ñ  ¡$ð  ¨4ñ  r   c                ó‚   € VP                  R^ 4      pV P                  P                  V4       V P                  V4       R# )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   N)Úpopr   ÚupdateÚ	_unpickle)r	   r
   Úversions   && r   Ú__setstate__Ú!CloudInitPickleMixin.__setstate__'   s3   € ð —)‘)Ð-¨qÓ1ˆØ‰×Ñ˜UÔ#Ø‰wÖr   c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Úci_pkl_versionr   N)Úint)r   r   s   "€r   r   r   8   s   ø€ ÷ ñ ©ð °ñ r   c                ó   € R# )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"   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r      s*   ø‡ € ñð €Oò÷ ð  ÷"ö r   r   N)r   r"   r   r   Ú<module>r+      s   ð÷8ó 8r   