U xùb]5:ã@sddlmZddlZddlZddlZddlZddlZddlZd+dd„Zeƒd,dd„Z dZ e  d ¡Z d d „Z zeWn"ek r–ddlZejZYnXd d „ZddddddœZdd„Zdd„Zdd„Zdd„Zddddddifd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zed*kreƒdS)-é)Úprint_functionNÚDebiancCsÎzt}Wntk r t}YnXztd| ¡ƒ}Wn|k rRtdƒ}YnXt |¡}dd„|Dƒatt  ¡ƒa t j dd„dttt t Žƒdƒa | ¡d krÂd a t  d d d dddg¡| ¡dS)Nz/usr/share/distro-info/%s.csvz!/usr/share/distro-info/debian.csvcSs"i|]}|dr|d|d“qS)ÚversionZseries©)Ú.0Úrrrú-/usr/lib/python3/dist-packages/lsb_release.pyÚ .sz#get_distro_info..cSs t|dƒS©Nr)Úfloat)ÚnrrrÚ0óz!get_distro_info..©ÚkeyéZdebianzunknown.new.testingZstablezproposed-updatesÚtestingztesting-proposed-updatesÚunstableÚsid)ÚFileNotFoundErrorÚ NameErrorÚIOErrorÚopenÚlowerÚcsvZ DictReaderÚRELEASE_CODENAME_LOOKUPÚlistÚitemsÚRELEASES_ORDERÚsortÚzipÚTESTING_CODENAMEÚextendÚclose)ÚoriginZFileNotFoundExceptionZcsvfileÚreaderrrrÚget_distro_infos"    r&cCsRt d|¡}|s|St| d¡ƒdkr8d| dd¡}nd| d¡}t ||¡S)Nz(\d+)\.(\d+)(r(\d+))?réz%s.%séz%s)ÚreÚmatchÚintÚgrouprÚget)ÚreleaseÚunknownÚmZ shortreleaserrrÚlookup_codename<s r1z`lsb-core lsb-cxx lsb-graphics lsb-desktop lsb-languages lsb-multimedia lsb-printing lsb-securityzIlsb-(?P[a-z0-9]+)-(?P[^ ]+)(?: \(= (?P[0-9.]+)\))?cCsŒ|dkrddgS|dkrD|dkr&dgS|dkr6ddgSdddgSnB|dkrš|dkr\ddgS|dkrjdgS|d krxdgS|dkrŠdddgSddddgSnì|d kr|dkr¶ddd gS|dkrÄdgS|d krÔdd gS|d krâd gS|dkrødddd gSddddd gSn~|d kr†|dkr(ddd d gS|dkr8dgS|d krLdd d gS|d kr^d d gS|dkrvdddd d gSddddd d gS|gS) Nz3.0z2.0z3.1)ÚdesktopÚqt4Zcxxz3.2r2r3)ZprintingÚ languagesZ multimediaz4.0Zsecurityz4.1r)rÚmodulerrrÚvalid_lsb_versionsLsV             r6c Cs tj ¡}d|d<tjddddgt ¡|tjtjdd ¡d   d ¡}|sPgSt ƒ}| tj ¡D]¨}|spq | d d ¡\}}t  d |d ¡d }| d¡D]l}t  |¡}|s°qœ| ¡}| d¡rÖd|} | | ¡qœ|d} t|| ƒD]} | |d<d|} | | ¡qèqœqbt|ƒ}| ¡|S)NÚCÚLC_ALLz dpkg-queryz-fz${Version} ${Provides} z-WT©ÚenvÚstdoutÚstderrZ close_fdsrúutf-8ú rz[-+~]ú,rz%(module)s-%(version)s-%(arch)sr5)ÚosÚenvironÚcopyÚ subprocessÚPopenÚPACKAGESÚsplitÚPIPEÚ communicateÚdecodeÚsetÚlinesepr)Ú modnamereÚsearchÚ groupdictr-Úaddr6rr) ÚC_envÚoutputÚmodulesÚlinerZprovidesZpkgZmobZmgroupsr5ÚvrrrÚcheck_modules_installedˆsH üüü   rUrr$ÚsuiteÚ componentÚlabel)rTÚoÚaÚcÚlcCsXi}| d¡}|D]@}| dd¡}t|ƒdkr|dd…\}}|tkr||t|<q|S)Nr?ú=rr()rFÚlenÚ longnames)ÚdataZretvalÚbitsÚbitZkvÚkrTrrrÚparse_policy_line³s   rdcCsV|d d¡}|rR|tkr0tttƒt |¡ƒSz t|ƒWStk rPYdSXdS)NrrVr)r-rr+r^Úindexr Ú ValueError)ÚxrVrrrÚ release_index¾s rhcCsTtjdtddt|ƒ}t|ƒ}z ||WStk rN||k||kYSXdS)Nz^compare_release(x,y) is deprecated; please use the release_index(x) as key for sort() instead.r()Ú stacklevel)ÚwarningsÚwarnÚDeprecationWarningrhÚ TypeError)rgÚyZ suite_x_iZ suite_y_irrrÚcompare_releaseÊs rocCs²g}tj ¡}d|d<tjddg|tjtjdd ¡d d¡}| d ¡D]b}|  ¡}t   d |¡}|rtt |  d ¡ƒ}| d ¡rJ| d d ¡}t|ƒd krJ| |t|d ƒf¡qJ|S)NzC.UTF-8r8z apt-cacheÚpolicyTr9rr=Ú z(-?\d+)rr.r>)r@rArBrCrDrGrHrIrFÚstripr)r*r+r,Ú startswithr^Úappendrd)r`rPrprSr0ÚpriorityrarrrÚparse_apt_policyÔs.  üüü    rvÚmainZ experimentalú Debian Ports©zftp.ports.debian.orgzftp.debian-ports.orgcsxtƒ}|sdS‡‡‡‡‡fdd„|Dƒ}|s0dS|jdd„dd|dd‰‡fdd„|Dƒ}|jtd |dd S) Nc sšg|]’}|d dd¡ˆkrX|d dd¡ˆkrX|d dd¡ˆkrX|d dd¡ˆks’|d dd¡ˆkr|d dd¡ˆ |d dd¡¡kr|‘qS)rr$ÚrVrWrX)r-©rrg)Úalternate_olabelsrWÚ ignoresuitesrXr$rrÚ ós&úz*guess_release_from_apt..cSs|dSr r)Útuplerrrr ÿrz(guess_release_from_apt..T)rÚreversercsg|]}|dˆkr|‘qS)rrr{)Ú max_priorityrrr~s rr)rvrrh)r$rWr}rXr|Zreleasesr)r|rWr}rXrr$rÚguess_release_from_aptés   r‚c Csi}d|d<tj dd¡}tj |¡rÒzlt|ƒZ}|D]N}z4| dd¡\}}| ¡}| ¡}|dkrl||d<Wq6t k r‚Yq6Xq6W5QRXWn>t k rÐ}z t d|d t |ƒt jd W5d}~XYnXt|dƒt ¡d }|d krd ||d<n4|dkrd||d<n|dkr.||d<nd|d<d||d<tj dd¡}tj |¡r2z$t|ƒ} |  ¡ ¡} W5QRXWnDt k rÆ}z$t d|d t |ƒt jd d} W5d}~XYnX| d d… ¡söt| dƒ} | | | dœ¡n<|  d¡r*|  d¡ ¡dkr |  d¡ad|d<n| |d<| d¡sÒtƒ} | rÒ|  d¡} | d kr|  d!¡d"kr|  d#¡d$krd} |  d%d&i¡| r¢t| dƒ} n |  d%d&¡} | dkr¾t} nd'} | | | dœ¡| d¡rò|dd(|7<| d¡r|dd)|7<|S)*NrÚIDZLSB_ETC_DPKG_ORIGINS_DEFAULTz/etc/dpkg/origins/defaultz: rZvendorúUnable to open ú:©Úfiler)ZLinuxZHurdZNetBSDzGNU/ZOSZFreeBSDzGNU/k)z GNU/Linuxz GNU/kFreeBSDZGNUz %(ID)s %(OS)sÚ DESCRIPTIONZLSB_ETC_DEBIAN_VERSIONz/etc/debian_versionr/zn/a)ÚRELEASEÚCODENAMEz/sidrztesting/unstabler‰rŠrz1.0r$rxrXryrVrrz %(RELEASE)sz (%(CODENAME)s))r@rAr-ÚpathÚexistsrrFrrrrfrÚprintÚstrÚsysr<r&ÚunameÚreadÚisalphar1ÚupdateÚendswithÚrstripr!r‚) ÚdistinfoZetc_dpkg_origins_defaultZdpkg_origins_filerSÚheaderZcontentÚmsgZkernZetc_debian_versionZdebian_versionr.ÚcodenameZrinforrrÚguess_debian_release s|   .              *     ršc Cs.i}tj dd¡}tj |¡r*zÈt|ƒ¶}|D]ª}| ¡}|sBq0d|krLq0| dd¡\}}| d¡r||  d¡r||dd…}|r0|dkr–| ¡|d<q0|d kr¬| ¡|d <q0|d krÆ| ¡  ¡|d <q0|d kr0| ¡|d <q0W5QRXWn@t k r(}z t d|dt |ƒtjdW5d}~XYnX|S)NZLSB_OS_RELEASEz/usr/lib/os-releaser]rú"éÿÿÿÿZ VERSION_IDr‰ZVERSION_CODENAMErŠrƒZ PRETTY_NAMErˆr„r…r†)r@rAr-r‹rŒrrrrFrsr”ÚtitlerrrŽrr<)r–Z os_releaseZos_release_filerSÚvarÚargr˜rrrÚget_os_releasehs4  .r cCs4tƒ}dD]$}||kr tƒ}| |¡|Sq |S)N)rƒr‰rŠrˆ)r ršr“)Zlsbinforr–rrrÚget_distro_information‰s  r¡cCsttƒƒttƒƒdS)N)rr¡rUrrrrÚtest”s r¢Ú__main__)r)N)Z __future__rrrCr@r)rjrr&r1rEÚcompilerLr6rJrZsetsÚSetrUr_rdrhrorvr‚ršr r¡r¢Ú__name__rrrrÚsJ    5 (ÿ   ý !^!