a )g@sddlmZmZmZeZddlZddlmZ ddl m Z ddl m Z mZddlmZddlmZddlmZdd lmZdd lmZeZd gZGd d d ZdS) )absolute_importdivisionprint_functionN) constants)AnsibleParserError)to_text to_native)Play)PlaybookInclude)add_all_plugin_dirs)Display) unfrackpathPlaybookc@s<eZdZddZed ddZd ddZdd Zd d ZdS)rcCs(g|_ttdd|_||_d|_dS)NZsurrogate_or_strict)errors)_entriesrosgetcwd_basedir_loader _file_name)selfloaderr=/usr/lib/python3.9/site-packages/ansible/playbook/__init__.py__init__)szPlaybook.__init__NcCst|d}|j||d|S)N)r) file_namevariable_manager)r_load_playbook_data)rrrpbrrrload1s z Playbook.loadc s$tj|rtj||_n"tjtj|jtj||_|j}|j |jt |j||_ z|j tj |}Wn8ty}z td|t|fWYd}~n d}~00|dur|j |tdt||dnXt|ts|j |tdt|t|f|dn"|s:|j |tdt||D]ԉttsf|j |tddtfddtjDrtj|j||jd }|dur|j|jn>}tjD]} | vr| }qڐqtjd |tjd n tj||j|d } |j | q>|j |dS) Nz7Could not read playbook (%s) due to encoding issues: %sz!Empty playbook, nothing to do: %s)objz8A playbook must be a list of plays, got a %s instead: %sz-A playbook must contain at least one play: %szKplaybook entries must be either valid plays or 'import_playbook' statementsc3s|]}|vVqdSNr).0actionentryrr _z/Playbook._load_playbook_data..)Zbasedirrrz6skipping playbook '%s' due to conditional test failure)Zcolor)rrvars)!rpathisabsdirnamernormpathjoinrZ get_basedirZ set_basedirr rZload_from_filebasenameUnicodeDecodeErrorrrr isinstancelisttypedictanyCZ_ACTION_IMPORT_PLAYBOOKr rrextenddisplayZ COLOR_SKIPr append) rrrr(Z cur_basedirZdserwhichkZ entry_objrr$rr7sJ "  *           zPlaybook._load_playbook_datacCs|jSr!)rrrrr get_loaderqszPlaybook.get_loadercCs|jddSr!)rr<rrr get_playstszPlaybook.get_plays)NN)N) __name__ __module__ __qualname__r staticmethodrrr=r>rrrrr's   :)Z __future__rrrr2Z __metaclass__rZansiblerr5Zansible.errorsrZansible.module_utils._textrrZansible.playbook.playr Z!ansible.playbook.playbook_includer Zansible.plugins.loaderr Zansible.utils.displayr Zansible.utils.pathr r7__all__rrrrrs