o >Ic @sBddlZddlZddlZddlZddlZddZGdddZdS)NcCstjdur tt_tjS)z'Return a singleton _Telemetry instance.N) _Telemetry _telemetryrr7/usr/lib/python3/dist-packages/DistUpgrade/telemetry.pygets rc@s@eZdZdZddZddZddZdd Zd d Zd d Z dS)rNcCsi|_i|_||_tjgdtjddd|jd<| dd|_ z t d}| |jd <WdWdS1s@wYWdSt yQYdSw) N) lsb_releasez-rz-sT)stdoutuniversal_newlinesrFromstartz/var/log/upgrade/telemetryz/var/log/installer/media-info InstallMedia)_metrics _stages_hist_get_current_uptime _start_time subprocessPopenPIPE communicatestrip add_stage _dest_pathopenreadlineFileNotFoundError)selffrrr__init__)s(    & z_Telemetry.__init__c Csd}z#td}t|d}WdW|S1swYW|StttfyD}ztdt |WYd}~|Sd}~ww)z6Get current uptime info. None if we couldn't fetch it.Nz /proc/uptimerz)Exception while fetching current uptime: ) rfloatreadsplitrOSError ValueErrorloggingwarningstr)ruptimererrrr8s  z_Telemetry._get_current_uptimecCs6|}|jdus |durdS||jt||j<dS)z(Record installer stage with current timeN)rrrint)r stage_namenowrrrrCsz_Telemetry.add_stagecC||jd<dS)zRecord updater typeTypeNr )r updater_typerrrset_updater_typeJz_Telemetry.set_updater_typecCr+)z*Record if the user had third party sourcesThirdPartySourcesNr-)rusingrrrset_using_third_party_sourcesNr0z(_Telemetry.set_using_third_party_sourcesc Cs|j|jd<tj|j}zrrrrrrrs