Mini Shell
3
�Mf�M � @ s d dl mZmZ d dlmZ d dlZd dlZejdd� d dlZd dl Z ddl
mZmZm
Z
ddlmZ dd lmZmZmZmZ dd
lmZ ddlmZ ddlmZmZmZ d dlZejd
�Zdd� Zej e�Z!dGdd�Z"dHdd�Z#dd� Z$dd� Z%dd� Z&dIdd�Z'dJdd�Z(dd � Z)dKd!d"�Z*d#d$� Z+d%d&� Z,dLd'd(�Z-G d)d*� d*e.�Z/G d+d,� d,e/�Z0G d-d.� d.e/�Z1G d/d0� d0e.�Z2G d1d2� d2e2�Z3G d3d4� d4e2�Z4G d5d6� d6e4�Z5d7d8� Z6G d9d:� d:e.�Z7G d;d<� d<e.�Z8d=d>� Z9dMd?d@�Z:dAdB� Z;ej e;�Z<dCdD� Z=dEdF� Z>dS )N� )�gt�lt)�DecimalNZBlockDevz2.0� )�DeviceError�PartitioningError�AlignmentError)�flags)�Device�PartitionDevice�
LUKSDevice�device_path_to_name)�Size)�_)� stringize�
unicodeize�compareZblivetc C s� d}| j }|j }|dk r$|dkr$dS |dkr8|dk r8dS |dk rR|dk rRt||�S | jrb|| j8 }|jrr||j7 }| jr�|j r�|d8 }n6| j r�|jr�|d7 }n|tt| j�t|j��d 7 }|t| j|j�d 8 }|t| j|j�d 7 }|t| j|j�d 8 }| j�r`|j�r`| j �r.|j�r.|d8 }n2| j�rJ|j �rJ|d7 }n|t| j|j�d 8 }t | j
d ��r�t |j
d ��r�|t| j
j|j
j�d
7 }|dk�r�d}n|dk �r�d}|S )
ag More specifically defined partitions come first.
< 1 => x < y
0 => x == y
> 1 => x > y
:param part1: the first partition
:type part1: :class:`devices.PartitionDevice`
:param part2: the other partition
:type part2: :class:`devices.PartitionDevice`
:return: see above
:rtype: int
r Nr i� �� �d �2 � �
mountpoint�
���r )�req_start_sectorr �weight� req_disks�len�req_primary�req_grow�
req_base_size�req_max_size�hasattr�formatr )Zpart1Zpart2�retZpart1_startZpart2_start� r% �"/usr/lib/python3.6/partitioning.py�partition_compare, sF
r'