Mini Shell
3
�Hdh�� � @ s� d Z ddlZddlZddlmZmZ ddlmZ ddlm Z ddl
mZ ed jZ
g Ze
jje
jje
jje
jje
jje
jje
jje
jje
jje
jje
jje
jje
jje
jjd�ZG d d
� d
e
j�Ze e�Zej d
� �dKdd
�Z!e
j"Z#e e
j"��dLdd��Z"ej d� e
j$Z%e e
j$��dMdd��Z$ej d� e
j&Z'e e
j&��dNdd��Z&ej d� e
j(Z)e e
j(��dOdd��Z(ej d� e
j*Z+e e
j*��dPdd��Z*ej d� e
j,Z-e e
j,��dQdd��Z,ej d� e
j.Z/e e
j.��dRdd��Z.ej d� e
j0Z1e e
j0��dSdd��Z0ej d� e
j2Z3e e
j2��dTdd ��Z2ej d � e
j4Z5e e
j4��dUd!d"��Z4ej d"� e
j6Z7e e
j6��dVd#d$��Z6ej d$� e
j8Z9e e
j8��dWd%d&��Z8ej d&� e
j:Z;e e
j:��dXd'd(��Z:ej d(� e
j<Z=e e
j<��dYd)d*��Z<ej d*� e
j>Z?e e
j>��dZd+d,��Z>ej d,� e
j@ZAe e
j@��d[d-d.��Z@ej d.� G d/d0� d0e
jB�ZBe eB�ZBej d0� G d1d2� d2e
jC�ZCe eC�ZCej d2� e
jDZEe e
jF�ddddde
jGjHdfd3d4��ZFej d4� e
jIZJe e
jI��d\d5d6��ZIej d6� e
jKZLe e
jM��d]d7d8��ZMej d8� e
jNZOe e
jN��d^d9d:��ZNej d:� e
jPZQe e
jP��d_d;d<��ZPej d<� e
jRZSe e
jR��d`d=d>��ZRej d>� e
jTZUe e
jT��dad?d@��ZTej d@� e
jVZWe e
jX��dbdAdB��ZXej dB� e
jYZZe e
jY��dcdCdD��ZYej dD� e
j[Z\e e
j[��dddEdF��Z[ej dF� e
j]Z^e e
j]��dgdHdI��Z]ej dI� e
j_Z`e e
j_��dhdJdK��Z_ej dK� e
jaZbe e
ja��didLdM��Zaej dM� e
jcZde e
jc��djdNdO��Zcej dO� e
jeZfe e
je��dkdPdQ��Zeej dQ� e
jgZhe e
jg��dldRdS��Zgej dS� e
jiZje e
ji��dmdTdU��Ziej dU� e
jkZle e
jk��dndVdW��Zkej dW� e
jmZne e
jm��dodXdY��Zmej dY� e
joZpe e
jo��dpdZd[��Zoej d[� e
jqZre e
jq��dqd\d]��Zqej d]� e
jsZte e
js��drd^d_��Zsej d_� e
juZve e
ju��dsd`da��Zuej da� e
jwZxe e
jw��dtdbdc��Zwej dc� e
jyZze e
jy��duddde��Zyej de� e
j{Z|e e
j{��dvdfdg��Z{ej dg� e
j}Z~e e
j}��dwdhdi��Z}ej di� e
jZ�e e
j��dxdjdk��Zej dk� e
j�Z�e e
j���dydldm��Z�ej dm� e
j�Z�e e
j���dzdndo��Z�ej do� e
j�Z�e e
j���d{dpdq��Z�ej dq� e
j�Z�e e
j���d|drds��Z�ej ds� y*e
j�Z�e e
j���d}dtdu��Z�ej du� W n e�k
�r� Y nX e
j�Z�e e
j���d~dvdw��Z�ej dw� e
j�Z�e e
j���ddxdy��Z�ej dy� e
j�Z�e e
j���d�dzd{��Z�ej d{� e
j�Z�e e
j���d�d|d}��Z�ej d}� e
j�Z�e e
j���d�d~d��Z�ej d� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j���d�d�d���Z�ej d�� e
j�Z�e e
j�d�d�d���Z�ej d�� e
j�Z�e e
j�d�d�d���Z�ej d�� e
j�Z�e e
jǃ�d�d�d���Z�ej d�� e
j�Z�e e
jɃ�d�d�d���Z�ej d�� e
j�Z�e e
j˃ddde
j�j�dfd�d���Z�ej d�� e
j�Z�e e
jσ�d�d�d���Z�ej d�� e
j�Z�e e
jу�d�d�d���Z�ej d�� e
j�Z�e e
jӃ�d�d�d���Z�ej d�� e
j�Z�e e
jՃ�d�d�d���Z�ej d�� e
j�Z�e e
j׃�d�d�d���Z�ej d�� e
j�Z�e e
jك�d�d�dÄ�Z�ej dà e
j�Z�e e
jۃddde
j�j�dfd�dń�Z�ej dŃ e
j�Z�e e
j݃�d�d�dDŽ�Z�ej dǃ e
j�Z�e e
j߃�d�d�dɄ�Z�ej dɃ e
j�Z�e e
j��d�d�d˄�Z�ej d˃ e
j�Z�e e
j��d�d�d̈́�Z�ej d̓ e
j�Z�e e
j��d�d�dτ�Z�ej dσ ej� d� j�dу�r�e
j�Z�e e
j��d�d�dӄ�Z�ej dӃ e
j�Z�e e
j��d�d�dՄ�Z�ej dՃ e
j�Z�e e
j��d�d�dׄ�Z�ej d׃ e
j�Z�e e
j��d�d�dل�Z�ej dك e
j�Z�e e
j��d�d�dۄ�Z�ej dۃ e
j�Z�e e
j��d�d�d݄�Z�ej d݃ e
j�Z�e e
j���d�d�d߄�Z�ej d߃ e
j�Z�e e
j���d�d�d��Z�ej d� e
j�Z�e e
j���d�d�d��Z�ej d� e
j�Z�e e
j���d�d�d��Z�ej d� e
j�Z�e e
j���d�d�d��Z�ej d� e
j��Z e e
j��dddde
�jj�dfd�d��Z�ej d� e
�j�Ze e
�j��d�d�d���Zej d� e
�j�Ze e
�j��d�d�d���Zej d� e
�j�Ze e
�j��d�d�d���Zej d� e
�j�Z e e
�j��d�d�d���Zej d� e
�j
�Ze e
�j
��d�d�d���Z
ej d� e
�j�Z
e e
�j��d�d�d����Zej d�� e
�j�Ze e
�j��d�d�d����Zej d�� e
�j�Ze e
�j��d�d�d����Zej d�� e
�j�Ze e
�j��d�d�d����Zej d�� e
�j�Ze e
�j��d�d�d����Zej d�� e
�j�Ze e
�j��d�d�d����Zej d�� e
�j�Ze e
�j��d��d �d���Zej �d� �d�d� �Zej �d� e�d�d�d�d�dg��ZG �d �d
� �d
�e��ZG �d�d� �d�e��Zej �d� G �d
�d� �d�e��Z ej �d� G �d�d� �d�e��Z!ej �d� G �d�d� �d�e��Z"ej �d� G �d�d� �d�e��Z#ej �d� G �d�d� �d�e��Z$ej �d� G �d�d� �d�e��Z%ej �d� G �d�d� �d�e��Z&ej �d� G �d�d� �d�e��Z'G �d�d� �d�e'��Z(G �d�d � �d �e(��Z)G �d!�d"� �d"�e(��Z*G �d#�d$� �d$�e(��Z+G �d%�d&� �d&�e(��Z,e�j-�d�� G �d'�d(� �d(�e��Z.ej �d(� G �d)�d*� �d*�e��Z/ej �d*� G �d+�d,� �d,�e��Z0G �d-�d.� �d.�e0��Z1e�j-�d G �d/�d0� �d0�e��Z2ej �d0� G �d1�d2� �d2�e��Z3ej �d2� G �d3�d4� �d4�e��Z4ej �d4� G �d5�d6� �d6�e��Z5ej �d6� G �d7�d8� �d8�e6�e��Z7ej �d8� �ee�j8e�j9�d9�d�e7��Z:�ee�j8d�d:�e1��Z;�ee�j8ddG�e(��Z<�ee�j8d�d:�e)��Z=�ee�j8ddАe*��Z>�ee�j8d�d;�e+��Z?�ee�j8d�d<�e,��Z@�e�d=e
e�j8�e fg�e:g��ZAej �d=� �e�d>e
e�j8�e!fg�e:g��ZBej �d>� �e�d?e
e�j8�e"fg�e:g��ZCej �d?� �e�d@e
e�j8�e#fg�e:g��ZDej �d@� �e�dAe
e�j8�e$fg�e:g��ZEej �dA� �e�dBe
e�j8�e%fg�e:g��ZFej �dB� �e�dCe
e�j8�e&fg�e:g��ZGej �dC� �e�dDe
e�j8�e'fg�e:�e<�e=�e>�e?�e@g��ZHej �dD� �e�dEe
e�j8�e.fg�e:g��ZIej �dE� �e�dFe
e�j8�e/fg�e:g��ZJej �dF� �e�dGe
e�j8�e0fg�e:�e;g��ZKej �dG� �e�dHe
e�j8�e4fg�e:g��ZLej �dH� �ed�e
e�j8�e2fg�e:g��ZMej dу �e�dIe
e�j8�e3fg��ZNej �dI� �e�dJe
e�j8�e5fg��ZOej �dJ� dS (� a�
This code wraps the bindings automatically created by gobject-introspection.
They allow for creating more pythonic bindings where necessary. For instance
this code allows many functions with default-value arguments to be called
without specifying values for such arguments.
A bit more special is the :class:`ErrorProxy` class defined in the second half
of this file. It enhances work with libblockdev in the area of error reporting
and exception handling. While native libblockdev functions only raise
GLib.GError instances via the GObject introspection it is desired to have the
exceptions more granular -- e.g. raise SwapError instances from swap-related
functions or even raise SwapErrorNoDev instances from swap-related functions if
the particular device passed as an argument doesn't exist etc. Also, it is
desired to be able to distinguish libblockdev errors/exceptions from other
GLib.GError errors/exceptions by having all libblockdev exception instances
inherited from a single class -- BlockDevError. That's what the
:class:`ErrorProxy` class and its instances (one for each libblockdev plugin)
implement. If for example ``BlockDev.swap.swapon("/dev/sda2")`` is used instead
of ``BlockDev.swap_swapon("/dev/sda2")`` (note the ``.`` instead of ``_``), then
if the function raises an error/exception, the exception is transformed into a
SwapError instance and thus can be caught by ``except BlockDev.SwapError`` or
even ``BlockDev.BlockDevError``. The ``BlockDev.swap`` object is an instance of
the :class:`ErrorProxy` class and makes sure the exception transformation
happens. It of course calls the ``swap_swapon`` function internally so there's
no code duplication and it propagates non-callable objects directly.
� N)�
namedtuple�defaultdict)�modules)�override)�GLib�BlockDev)�lvm�btrfs�crypto�dm�loop�swapZmdraid�mpath�kbd�part�fs�s390�nvdimm�vdoc @ s e Zd Zddd�ZdS )�ExtraArg� c C s t jj||�}| |_|S )N)r r �new� __class__)�cls�opt�val�ret� r � /usr/lib64/python3.6/BlockDev.py�__new__; s zExtraArg.__new__N)r )�__name__�
__module__�__qualname__r r r r r r : s r Tc C s� | rRt | t�r"dd� | j� D �}qVt | t�rDtdd� | D ��rD| }qVd}t|��ng }|rr|dd� |j� D �7 }n|dd� |j� D �7 }t|�dkr�d S |S ) Nc S s g | ]\}}t j||��qS r )r r )�.0�keyr r r r �
<listcomp>G s z_get_extra.<locals>.<listcomp>c s s | ]}t |tj�V qd S )N)�
isinstancer r )r# �argr r r � <genexpr>H s z_get_extra.<locals>.<genexpr>zLextra arguments can only be given as a list of ExtraArg items or a as a dictc S s g | ]\}}t jd | |��qS )z--)r r )r# r$ r r r r r% P s c S s g | ]\}}t j||��qS r )r r )r# r$ r r r r r% R s r )r&