def __init__()

in src/core/src/package_managers/AptitudePackageManager.py [0:0]


    def __init__(self, env_layer, execution_config, composite_logger, telemetry_writer, status_handler):
        super(AptitudePackageManager, self).__init__(env_layer, execution_config, composite_logger, telemetry_writer, status_handler)

        # Apt constants config
        self.APT_SOURCES_LIST_PATH = '/etc/apt/sources.list'
        self.APT_SOURCES_DIR_PATH = '/etc/apt/sources.list.d/'
        self.APT_SOURCES_DIR_LIST_EXT = 'list'
        self.APT_SOURCES_DIR_SRC_EXT = 'sources'

        # Support to get packages and their dependencies
        custom_source_timestamp = self.env_layer.datetime.timestamp().replace(":",".")
        self.custom_source_list_template = os.path.join(execution_config.temp_folder, 'azgps-src-{0}-<FORMULA>.list'.format(str(custom_source_timestamp)))
        self.custom_source_parts_dir_template = os.path.join(execution_config.temp_folder, 'azgps-src-{0}-<FORMULA>.d'.format(str(custom_source_timestamp)))
        self.current_source_parts_dir = self.current_source_list = self.current_source_formula = None
        self.current_source_parts_file_name = "azgps-src-parts.sources"

        # Repo refresh
        self.cmd_repo_refresh_template = 'sudo apt-get -q update <SOURCES>'
        self.cmd_dist_upgrade_simulation_template = 'LANG=en_US.UTF8 sudo apt-get -s dist-upgrade <SOURCES> '  # Dist-upgrade simulation template - <SOURCES> needs to be replaced before use; sudo is used as sometimes the sources list needs sudo to be readable

        # Accept EULA (End User License Agreement) as per the EULA settings set by user
        optional_accept_eula_in_cmd = "ACCEPT_EULA=Y" if execution_config.accept_package_eula else ""

        # Package evaluations
        self.cmd_single_package_check_versions_template = 'apt-cache madison <PACKAGE-NAME>'
        self.cmd_single_package_find_install_dpkg_template = 'sudo dpkg -s <PACKAGE-NAME>'
        self.cmd_single_package_find_install_apt_template = 'sudo apt list --installed <PACKAGE-NAME>'
        self.single_package_upgrade_simulation_cmd = '''DEBIAN_FRONTEND=noninteractive ''' + optional_accept_eula_in_cmd + ''' LANG=en_US.UTF8 apt-get -y --only-upgrade true -s install '''
        self.single_package_dependency_resolution_template = 'DEBIAN_FRONTEND=noninteractive ' + optional_accept_eula_in_cmd + ' LANG=en_US.UTF8 apt-get -y --only-upgrade true -s install <PACKAGE-NAME> '

        # Package installation
        # --only-upgrade: upgrade only single package (only if it is installed)
        self.single_package_upgrade_cmd = '''sudo DEBIAN_FRONTEND=noninteractive LANG=en_US.UTF8 ''' + optional_accept_eula_in_cmd + ''' apt-get -y --only-upgrade true install '''
        self.install_security_updates_azgps_coordinated_cmd = '''sudo DEBIAN_FRONTEND=noninteractive LANG=en_US.UTF8 ''' + optional_accept_eula_in_cmd + ''' apt-get -y --only-upgrade true dist-upgrade <SOURCES> '''

        # Package manager exit code(s)
        self.apt_exitcode_ok = 0

        # auto OS updates
        self.update_package_list = 'APT::Periodic::Update-Package-Lists'
        self.unattended_upgrade = 'APT::Periodic::Unattended-Upgrade'
        self.os_patch_configuration_settings_file_path = '/etc/apt/apt.conf.d/20auto-upgrades'
        self.update_package_list_value = ""
        self.unattended_upgrade_value = ""

        # Miscellaneous
        os.environ['DEBIAN_FRONTEND'] = 'noninteractive'  # Avoid a config prompt
        self.set_package_manager_setting(Constants.PKG_MGR_SETTING_IDENTITY, Constants.APT)
        self.STR_DPKG_WAS_INTERRUPTED = "E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem."
        self.ESM_MARKER = "The following packages could receive security updates with UA Infra: ESM service enabled:"

        # Ubuntu Pro Client pre-requisite checks.
        self.__pro_client_prereq_met = False  # This flag will be used to determine if Ubuntu Pro Client can be used for querying reboot status or get packages list.
        self.ubuntu_pro_client = UbuntuProClient(env_layer, composite_logger)
        self.check_pro_client_prerequisites()

        self.ubuntu_pro_client_all_updates_cached = []
        self.ubuntu_pro_client_all_updates_versions_cached = []
        
        self.package_install_expected_avg_time_in_seconds = 90  # As per telemetry data, the average time to install package is around 81 seconds for apt.