?????????? ????????? - ??????????????? - /usr/lib/python3.9/site-packages/ansible/utils/collection_loader/__pycache__/_collection_finder.cpython-39.pyc
???????
a �)g� � @ s� d dl mZmZmZ eZd dlZd dlZd dlZd dl Z d dl Z d dlmZ d dl mZ d dlmZmZmZ d dlmZmZ ddlmZ d d lmZ d d lmZ zd dlmZ W n ey� dd � ZY n0 zd dlm Z! W n ey� e Z!Y n0 zd dl"m#Z# W n e�y Y n0 zd dl$m%Z% W n e�yB dZ&Y n0 dZ&zddl'm(Z( W n e�yp dZ(Y n0 e)e*d��s�eZ+e �,d�-edf��Z.z e/j0Z1W n e2�y� dd� Z1Y n0 dZ3G dd� d�Z4G dd� d�Z5G dd� d�Z6G d d!� d!e6�Z7G d"d#� d#e6�Z8G d$d%� d%e6�Z9G d&d'� d'e6�Z:G d(d)� d)�Z;G d*d+� d+�Z<d,d-� Z=d.d/� Z>d@d0d1�Z?dAd2d3�Z@d4d5� ZAd6d7� ZBd8d9� ZCd:d;� ZDdBd<d=�ZEd>d?� ZFdS )C� )�absolute_import�division�print_functionN)� iskeyword)�Name)� to_native�to_text�to_bytes)�string_types�PY3� )�AnsibleCollectionConfig)�contextmanager)� ModuleType)� import_modulec C s t | � tj| S �N)� __import__�sys�modules)�name� r �V/usr/lib/python3.9/site-packages/ansible/utils/collection_loader/_collection_finder.pyr s r )�reload)�spec_from_loader�� FileFinderFT)�_meta_yml_to_dict�ModuleNotFoundError� z\Zc C s t t�t| ��S )z:Determine whether the given string is a Python identifier.)�bool�re�match�_VALID_IDENTIFIER_STRING_REGEX��selfr r r �is_python_identifierJ s r% )z.ymlz.yamlc @ sl e Zd Zddd�Zedd� �Zdd� Zd d � Zedd� �Z d d� Z dd� Zddd�Zddd�Z ddd�ZdS )�_AnsibleCollectionFinderNTc C s� t tj�ttjd j���| _t |t �r0|g}n|d u r<g }dd� |D �}|rZ|�tj� g }|D ]P}tj�|�dkr�tj�|�}||vrbtj� ttj�|d�dd��rb|�|� qb|| _d | _d | _g | _d S )N�ansiblec S s g | ]}t j�t|d d���qS )�surrogate_or_strict��errors)�os�path� expanduserr ��.0�pr r r � <listcomp>^ � z5_AnsibleCollectionFinder.__init__.<locals>.<listcomp>�ansible_collectionsr( r) )r r+ r, �dirnamer r r �__file__�_ansible_pkg_path� isinstancer �extend�basename�isdir�join�append�_n_configured_paths�_n_cached_collection_paths�$_n_cached_collection_qualified_paths�_n_playbook_paths)r$ �pathsZscan_sys_pathsZ good_pathsr0 r r r �__init__T s$ &z!_AnsibleCollectionFinder.__init__c C sv t jD ]}t|t�rt j�|� qt jD ]&}t|d�r(t|jt�r(t j�|� q(t j� � d t _t jd urrt d��d S )N�__self__zW_AnsibleCollectionFinder remove did not reset AnsibleCollectionConfig.collection_finder)r � meta_pathr7 r&