a "e@slddlmZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z Gddde ZdS))absolute_importN) version_info)PackageManager)Processc@sleZdZeddZeddZeddZeddZed d Zed d Z ed dZ eddZ dS)SystemcCstjdrtd}i}gd}dd|D}|D] }|d\}}|d||<q4|d|vr|ddkr|d d krWd d S|dWd Sd |vr|d D]"}||vr|Wd SqWd n1s0YntSd S)z Checks if /etc/os-release exists, and if it does, uses it to divine the name of the distribution or distribution like. e.g It will return 'debian' on Ubuntu systems. Otherwise, revert to using distro.id() z/etc/os-release) gentoodebianrhelcentosolmageiaarcharcharmfedorasusecSsg|]}|r|qS)rstrip).0linerr;/usr/lib/python3.9/site-packages/tracer/resources/system.py 0z'System.distribution..="ZIDr Z VERSION_IDNcentos-7ZID_LIKE)ospathisfileopensplitstripdistroid)Zos_release_fileZos_release_dataZdistroslinesrZos_release_keyZos_release_value distributionrrrr%#s"   8zSystem.distributionc spfdd}dgdgddgddgdgddgdgdgdgddgdgd }t}||vrZd Sttt|||S) zMReturns instance of package manager according to installed linux distributioncs&|\}}t|}t||fiSN) importlib import_modulegetattr)Zpairrnamemodulekwargsrr get_instanceEs z,System.package_manager..get_instance)ztracer.packageManagers.portageZPortage)ztracer.packageManagers.dpkgZDpkg)ztracer.packageManagers.dnfZDnf)ztracer.packageManagers.yumZYum)ztracer.packageManagers.alpmZAlpm) rrr r rr r r rrrN)rr%rlistmap)r-r.Zmanagersr%rr,rpackage_managerAs2 zSystem.package_managercCstd}|dd}|S)zM Returns name of init system you are using e.g. init, systemd, upstart  r)rr*r )initr*rrr init_systemkszSystem.init_systemcCs*z tWSty$tYS0dSr&)psutil boot_timeAttributeErrorZ get_boot_timerrrrr7vs zSystem.boot_timecCsdtjtjtjS)Nz{}.{}.{})formatrmajorminormicrorrrrpython_version|szSystem.python_versioncCstttdS)N)rr1Z find_packagekernel_package_namerunamerrrrrunning_kernel_packageszSystem.running_kernel_packagecCsdS)z6 TODO: infer kernel package from current distribution Zkernelrrrrrr?szSystem.kernel_package_namecCs4z tWSty.ttdYS0dS)Nr)rgetloginOSErrorpwdgetpwuidgetuidrrrrusers z System.userN) __name__ __module__ __qualname__ staticmethodr%r1r5r7r=rAr?rGrrrrr!s   )     r)Z __future__rrrDr'r"r6sysrZtracer.resources.PackageManagerrZtracer.resources.processesrobjectrrrrrs