�
�f]� � � � d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl m
Z
ddlmZ ddl
mZ ddlmZ ddlmZ ddlmZ dd lmZ dd
lmZ ddlmZmZmZmZmZmZm Z m!Z!m"Z" ddl#Z#ddl$m%Z%m&Z& dd
l'm(Z( ddl)m*Z*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z9 e9Z8 ejx e=� Z>dZ?dZ@dZAdddd�ZBdZCdZDdZEdZFdZGdZHd ZId!ZJ eK e*j� � D � cg c]
} | d d"k( s�| �� c} � ZMerddlZdd#lNmOZOmPZP G d$� d%eP� ZQneRZQ G d&� d'e8� ZS G d(� d)e� ZTeeT ZU G d*� d+e� ZVeVj� d,e@ieVj� d,eAiiZY G d-� d.e� ZZ G d/� d0e� Z[ G d1� d2e� Z\dd3d4�d5eUd6ee] d7e]d8e]fd9�Z^ G d:� d;e_� Z` G d<� d=e`� Zad>� Zb d�d@eRd8e]fdA�Zcd8ee8 fdB�ZdeSfd eedCeRdDe]dEe e; fdF�Zf eefd �G� Zg eefdH�G� ZheSfdEe e; fdI�ZieSfdEe e; fdJ�ZjdK� Zkd�dCeRfdM�ZldNeRd8eem fdO�Zn d�dNeRdPeedQeedReed8eef
dS�ZodeVj� d?d?dLd?fd@eRdCeeR dTeVdPeedUeedReedVeed8eefdW�Zp G dX� dY� ZqdddZ�d[eRd\e]d]eRd^eeU d_eeU d8e!e]erf fd`�Zsdae]d8eeT fdb�Zt d�dce]dae]dde]d8e\fde�ZueVj� d?dfdce]dCeRdTeVdQeedde]d8eefdf�Zvdg� Zwdh� ZxdieRdje]d8ee] fdk�ZydieRdleRd8e]fdm�Zzd8e]fdn�Z{doeRdleRfdp�Z|doeRfdq�Z}dreRd8e]fds�Z~d�dCeRdleRd8e]fdt�ZdueQd8e]fdv�Z�dueQd8e]fdw�Z�d�dueQdCeeR d8e]fdx�Z�d8eRfdy�Z�dze�d8e]fd{�Z�d8e]fd|�Z�eVj� fdTeVd8eRfd}�Z�d�d~�Z�d� Z�d8ee]ee[ f fd��Z�d�� Z�d�� Z�e=d�k( r e�j e�� � yy# e:$ r e;Z8Y ���w xY wc c} w )�zFschema.py: Set of module functions for processing cloud-config schema.� N)�defaultdict)�Iterable)�suppress)�deepcopy)�Enum)�EACCES)�partial)�chain) �
TYPE_CHECKING�DefaultDict�List�
NamedTuple�Optional�Tuple�Type�Union�cast)�importer�safeyaml)�read_cfg_paths)�INCLUSION_TYPES_MAP�type_from_starts_with)�Paths)�DataSourceNotFoundException)�mkdtemp)�error�get_modules_from_dir�load_text_file�
write_file)�ValidationErrorz!versions.schema.cloud-config.jsonzschema-cloud-config-v1.jsonzschema-network-config-v1.json�true�false�null)TFNap
{name}
{title_underbar}
{title}
.. tab-set::
{prefix3}.. tab-item:: Summary
{description}
{prefix6}**Internal name:** ``{id}``
{prefix6}**Module frequency:** {frequency}
{prefix6}**Supported distros:** {distros}
{prefix6}{activate_by_schema_keys}
{prefix3}.. tab-item:: Config schema
{property_doc}
{prefix3}.. tab-item:: Examples
{prefix6}::
{examples}
� z5{prefix}* **{prop_name}:** ({prop_type}){description}zJ{prefix}* Each object in **{prop_name}** list supports the following keys:z&
# --- Example{example_count} ---
�
deprecatedzDEPRECATED: �#)�NotRequired� TypedDictc � � e Zd ZU eed< |