3 \me @ s d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm Z m Z mZmZ d dl mZmZmZ d dlmZmZ d dlmZ ejeZdZddd dgZdZe e ee dddZG dd deZdS ) N)AnyIterableListMappingOptionalSequencecast)helperssubputil)PackageManagerUninstalledPackages)PER_INSTANCEapt-get(--option=Dpkg::Options::=--force-confold*--option=Dpkg::options::=--force-unsafe-io--assume-yes--quietz/var/lib/dpkg/lock-frontendz/var/lib/dpkg/lockz/var/cache/apt/archives/lockz/var/lib/apt/lists/lock )cfgreturnc C s | sd}dg}n8| j d}| j d}t|tr6|g}nt|tsHtdtj|stt|j dkr|rtj |d rt tt |S g S dS )a9 Parse the 'apt_get_wrapper' section of cloud-config. apt_get_wrapper may be defined in cloud-config: apt_get_wrapper: enabled: true command: ["eatmydata"] The function takes the value of "apt_get_wrapper" and returns the list of arguments to prefix to the apt-get command. autoZ eatmydataenabledcommandz,apt_wrapper command must be a string or listr N)get isinstancestrlist TypeErrorr Zis_truelowerr Zwhichr r )r r r r /usr/lib/python3.6/apt.pyget_apt_wrapper( s "r" c s e Zd ZdZf dddejee eee ee d fddZ e ejed ddd Zd d Z ejdd dd Zee dddZeedddZdddZdddZefddZ ZS )AptZaptN)apt_get_wrapper_commandapt_get_commandapt_get_upgrade_subcommand)runnerr$ r% r&