Edit File: repodiff.cpython-36.pyc
3 �gt`�,������������������@���sj���d�dl�mZ�d�dl�mZ�d�dlZd�dlmZ�d�dlZd�dlm Z �G�dd��dej �ZG�dd ��d ejj �ZdS�) �����)�absolute_import)�unicode_literalsN)�OptionParser)�_c�������������������s ���e�Zd�ZdZ��fdd�Z���ZS�)�RepoDiff�repodiffc����������������s,���t�t|��j||��|d�krd�S�|jt��d�S�)N)�superr����__init__Zregister_command�RepoDiffCommand)�self�base�cli)� __class__���/usr/lib/python3.6/repodiff.pyr ���$���s����zRepoDiff.__init__)�__name__� __module__�__qualname__�namer ���� __classcell__r���r���)r���r���r��� ���s���r���c���������������@���sL���e�Zd�ZdZed�Zedd���Zdd��Zdd��Z d d ��Z dd��Zd d��ZdS�)r ���r���z1List differences between two sets of repositoriesc���������� ���C���s����|�j�ddg�ddtd�d��|�j�ddg�dd td �d��|�j�ddd g�tjdtd�d��|�j�dddtd�d��|�j�ddtd�d��|�j�ddtd�d��|�j�ddtd�d��d�S�)Nz --repo-oldz-o�append�oldz2Specify old repository, can be used multiple times)�default�action�dest�helpz --repo-newz-n�newz2Specify new repository, can be used multiple timesz--archz --archlistz-a�archeszhSpecify architectures to compare, can be used multiple times. By default, only source rpms are compared.z--sizez-s� store_truez5Output additional data about the size of the changes.)r���r���z--compare-archzMCompare packages also by arch. By default packages are compared just by name.z--simplez7Output a simple one line message for modified packages.z--downgradezNSplit the data for modified packages between upgraded and downgraded packages.)�add_argumentr���r���Z_SplitCallback)�parserr���r���r���� set_argparser/���s���� zRepoDiffCommand.set_argparserc�������������C���s����|�j�j}d|_d|_d|_dg|�jj_|�jj �s:|�jj �rNtd�}tj j|��x<|�jjj��D�],}|j|�jj |�jj �kr�|j���q\|j���q\W�|�jjs�dg|�j_d�S�)NT�allz*Both old and new repositories must be set.�src)r ����demandsZsack_activationZavailable_repos� changelogsr���ZconfZdisable_excludes�optsr���r���r����dnf� exceptions�ErrorZreposr"����id�enable�disabler���)r���r$����msgZrepor���r���r���� configureM���s���� zRepoDiffCommand.configurec�������������C���s���|�j�jr|j|jfS�|jS�)N)r&����compare_archr����arch)r����pkgr���r���r����_pkgkey`���s����zRepoDiffCommand._pkgkeyc������� ���������s6��t��fdd�|D����t�j���}t��fdd�|D�����t��j���}t���}x:|j|d�D�]*}x$|j|jd�D�]}||�j|�<�qlW�qXW��jjj}t���fdd�||�D���fdd�||�D��|g�g�d�} xj|j |�D�]\} �| �}��| �}|j |j kr�q�||j |j �d k�r| d �j||f��q�| d�j||f��q�W�| S�)aN��compares packagesets old and new, returns dictionary with packages: added: only in new set removed: only in old set upgraded: in both old and new, new has bigger evr downgraded: in both old and new, new has lower evr obsoletes: dictionary of which old package is obsoleted by which new c����������������s���g�|�]}��j�|�|f�qS�r���)r2���)�.0�p)r���r���r���� <listcomp>m���s����z-RepoDiffCommand._repodiff.<locals>.<listcomp>c����������������s���g�|�]}��j�|�|f�qS�r���)r2���)r3���r4���)r���r���r���r5���o���s����)� obsoletes)Zprovidesc����������������s���g�|�]}��|��qS�r���r���)r3����k)�new_dr���r���r5���z���s����c����������������s���g�|�]}��|��qS�r���r���)r3���r7���)�old_dr���r���r5���{���s����)�added�removedr6����upgraded� downgradedr���r=���r<���)�dict�set�keys�filterr6���r2���r����sack�evr_cmp�intersection�evrr���) r���r���r���Zold_keysZnew_keysr6���Z obsoleterZ obsoletedrC���r���r7����pkg_old�pkg_newr���)r8���r9���r���r���� _repodiffe���s0���� zRepoDiffCommand._repodiffc������� ���������sh���fdd���dd��}���fdd�}t�ddddd�}x<t|d ��D�],}ttd �j��|����|d ��|j7��<�q@W�xjt|d��D�]Z}ttd�j��|����|d �j�j|��}|r�ttd�j��|����|d��|j7��<�q~W��jj �r�|d��r:ttd���x<t|d��D�],\}}|d��|j|j�7��<�|||���q W�|d��r�ttd���x�t|d��D�],\}}|d��|j|j�7��<�|||���q^W�n\|d�|d��} | �r�ttd���x8t| �D�],\}}|d��|j|j�7��<�|||���q�W�ttd���ttd�jt |d �����ttd�jt |d������jj �rlttd�jt |d�����ttd�jt |d�����n&ttd�jt |d��t |d�������jj�rdttd�j||d �����ttd�j||d������jj �s�ttd�j||d�|d������n4ttd�j||d�����ttd�j||d�����ttd�j||d �|d��|d��|d������d�S�) Nc����������������s �����j�jrt|��S�d|�j|�jf�S�)Nz%s-%s)r&���r/����strr���rE���)r1���)r���r���r����pkgstr����s����z'RepoDiffCommand._report.<locals>.pkgstrc�������������S���sX���t�|��}|�dkr.|djtjjj|��j���7�}n&|�dk�rT|djtjjj|���j���7�}|S�)Nr���z ({})z (-{}))rI����formatr'���r ���Z format_number�strip)Znumr-���r���r���r����sizestr����s����z(RepoDiffCommand._report.<locals>.sizestrc����������������sB��g�}�j�jr*|jd��|����|�f����n|jd��|jd��|����|�f���|jdt|d �����|�jrv|�jd�}nd�}x�|jD�]�}|r�|d�|d�k�r�P�n2|d�|d�kr�|d�|d�kr�|d�|d�kr�P�|jd |d�jd �tjj|d��tjj|d��f���q�W��j�j �r0|jt d�j|j |�j ����tdj |���d�S�)Nz%s -> %s���-����r���Z timestampZauthor�textz * %s %s %sz%a %b %d %YzSize change: {} bytes� ���)r&���Zsimpler����lenr%���Zstrftimer'���Zi18nZucd�sizer���rK����print�join)rF���rG���ZmsgsZ old_chlogZchlog)rJ���r���r���r����report_modified����s2���� z0RepoDiffCommand._report.<locals>.report_modifiedr���)r:���r;���r<���r=���r:���zAdded package : {}r;���zRemoved package: {}r6���zObsoleted by : {}r<���z Upgraded packagesr=���z Downgraded packagesz Modified packagesz SummaryzAdded packages: {}zRemoved packages: {}zUpgraded packages: {}zDowngraded packages: {}zModified packages: {}zSize of added packages: {}zSize of removed packages: {}zSize of modified packages: {}zSize of upgraded packages: {}zSize of downgraded packages: {}zSize change: {})r>����sortedrV���r���rK���rU����getr2���r&���Z downgraderT���) r���r���rM���rX���Zsizesr1���ZobsoletedbyrF���rG���Zmodifiedr���)rJ���r���r����_report����sf���� zRepoDiffCommand._reportc�������������C���s����|�j�jjtj�j|�jjd�}|�j�jjtj�j|�jjd�}|�jj rld|�jj krl|j |�jj d��|j |�jj d��|�jjr�|j dd��|j dd��n|j dd��|j dd��|j���|j���|�j |�j||���d�S�)N)Zreponame�*)r0���rP���)Zlatest_per_arch)Zlatest)r���rB���Zquery�hawkeyZIGNORE_EXCLUDESrA���r&���r���r���r���Zfiltermr/���Zapplyr[���rH���)r���Zq_newZq_oldr���r���r����run����s����zRepoDiffCommand.runN)r���) r���r���r����aliasesr���Zsummary�staticmethodr!���r.���r2���rH���r[���r^���r���r���r���r���r ���+���s���&ar ���)Z __future__r���r���Zdnf.clir'���Zdnf.cli.option_parserr���r]���Zdnfpluginscorer���ZPluginr���r ���ZCommandr ���r���r���r���r����<module>���s���