a j @ s d dl mZ d dl mZ ddlmZ d dlmZ d dlZd dl Zd dl Z dd Zd d Zdd Z d d Zedddddddddddddddddd d!d"d#d$d%d&d'Zd(d) Zd*d+ ZdS ), )absolute_import)unicode_literals )transaction)is_py3bytesNc C s t j| d}|tjtjB tjj}tjj }tj jrLt|d}t|d}tjj D ]&}tj jrlt|d}z|d|}W n> ttjfy } z tjdt| W Y d}~n d}~0 0 t|sqTzt|}W n" ty d}tj|Y n0 |d } d} d}zz|tj |}W n* tyH |tj |d}Y n0 |tj | } |tj | }| tjkr|r|d ||dfvr|} t|tj |tj |tj D ]b\}} }t|trt|d}||kr| tjkr|r|} ||kr| tjkr|r|}qW n tt t!fy2 Y n0 t"| rHt| d} t"| r\t| d} t"|rpt|d}| | |f S d S )zCalculate the release version for the system, including releasever_major and releasever_minor if they are overriden by the system-release-major or system-release-minor provides.)rootutf-8Zprovidesz Error: %sNz:Error: rpmdb failed to list provides. Try: rpm --rebuilddbversionutf8name)NNN)#r initReadOnlyTransactionZpushVSFlagsrpmZ_RPMVSF_NOSIGNATURESZ_RPMVSF_NODIGESTSdnfconstZDISTROVER_MAJOR_PKGZDISTROVER_MINOR_PKGZpycompZPY3bytesZDISTROVERPKGZdbMatch TypeErrorerror exceptionsErrorstrlennext StopIterationZRPMTAG_PROVIDENAMEindex ValueErrordecodeZRPMTAG_PROVIDEFLAGSZRPMTAG_PROVIDEVERSIONZRPMSENSE_EQUALzip isinstanceKeyError IndexErrorr )installroottsZdistrover_major_pkgZdistrover_minor_pkgZdistroverpkgidxehdrmsg releaseverZreleasever_majorZreleasever_minorZoffflagZverZprovide r( 4/usr/lib/python3.9/site-packages/dnf/rpm/__init__.pydetect_releasevers sn * r* c C s t | \}}}|S )z-Calculate the release version for the system.)r* )r r&