
    Vh(                        d dl mZ d dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZ  G d de      Z G d d	ee      Z G d
 dee      Z G d dee      Z G d dee      Zy)    )annotationsN)Sequence)	text_type)to_bytesto_text	to_nativec                  :    e Zd ZdZdZdZdZd Zd Z e	ee      Z
y)AnsibleBaseYAMLObjectz
    the base class used to sub-class python built-in objects
    so that we can add attributes to them during yaml parsing

    Nr   c                H    | j                   | j                  | j                  fS N)_data_source_line_number_column_numberselfs    L/home/dcms/DCMS/lib/python3.12/site-packages/ansible/parsing/yaml/objects.py_get_ansible_positionz+AnsibleBaseYAMLObject._get_ansible_position&   s!    !!4#4#4d6I6IJJ    c                x    	 |\  }}}|| _        || _        || _        y # t         t        f$ r t        d      w xY w)Nzaansible_pos can only be set with a tuple/list of three values: source, line number, column number)	TypeError
ValueErrorAssertionErrorr   r   r   )r   objsrclinecols        r   _set_ansible_positionz+AnsibleBaseYAMLObject._set_ansible_position)   sV    	"S$   ! :& 	 F 	s    9)__name__
__module____qualname____doc__r   r   r   r   r   propertyansible_pos r   r   r
   r
      s3    
 LLNK
" 02GHKr   r
   c                      e Zd ZdZy)AnsibleMappingz sub class for dictionaries Nr   r   r    r!   r$   r   r   r&   r&   8   s    &r   r&   c                      e Zd ZdZy)AnsibleUnicodez sub class for unicode objects Nr'   r$   r   r   r)   r)   =   s    )r   r)   c                      e Zd ZdZy)AnsibleSequencez sub class for lists Nr'   r$   r   r   r+   r+   B   s    r   r+   c                      e Zd ZdZdZdZdZed        Z fdZ	e
d        Zej                  d        Zd Zd	 Zd
 Zd Zd Zd ZdMdZd ZdNdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#e#Z$d Z%d  Z&d! Z'd" Z(d# Z)d$e*jV                  fd%Z,d$e*jV                  fd&Z-dOd'Z.d$e*jV                  fd(Z/d) Z0d* Z1d$e*jV                  fd+Z2d, Z3d- Z4d. Z5d/ Z6d0 Z7d1 Z8d2 Z9d3 Z:d4 Z;d5 Z<d6 Z=d7 Z>d8 Z?d9 Z@d: ZAdPd;ZBeCj                  ZDd< ZEdQd=ZFd$e*jV                  fd>ZGd$e*jV                  fd?ZHd@ ZIdA ZJdPdBZKdRdCZLdRdDZMdSdEZNd$e*jV                  fdFZOdPdGZPdH ZQdI ZRdJ ZSdK ZTdL ZU xZVS )TAnsibleVaultEncryptedUnicodezJUnicode like object that is not evaluated (decrypted) until it needs to beTz!vaultc                t    |s|j                  d|z        |j                  ||      } | |      }||_        |S )NzHError creating AnsibleVaultEncryptedUnicode, invalid vault (%s) provided)AnsibleVaultErrorencryptvault)clsseqr1   secret
ciphertextavus         r   from_plaintextz+AnsibleVaultEncryptedUnicode.from_plaintextM   sB    ))*tw|*|}}]]3/
*o	
r   c                X    t         t        |           d| _        t	        |      | _        y)a  A AnsibleUnicode with a Vault attribute that can decrypt it.

        ciphertext is a byte string (str on PY2, bytestring on PY3).

        The .data attribute is a property that returns the decrypted plaintext
        of the ciphertext as a PY2 unicode or PY3 string object.
        N)superr-   __init__r1   r   _ciphertext)r   r5   	__class__s     r   r:   z%AnsibleVaultEncryptedUnicode.__init__W   s)     	*D:< 
#J/r   c                    | j                   st        | j                        S t        | j                   j                  | j                  |             S )N)r   )r1   r   r;   decryptr   s    r   dataz!AnsibleVaultEncryptedUnicode.datae   s?    zz4++,,tzz))$*:*:)EFFr   c                $    t        |      | _        y r   )r   r;   )r   values     r   r?   z!AnsibleVaultEncryptedUnicode.datak   s    #E?r   c                h    | j                   xr% | j                   j                  | j                        S r   )r1   is_encryptedr;   r   s    r   rC   z)AnsibleVaultEncryptedUnicode.is_encryptedo   s&    zzGdjj55d6F6FGGr   c                :    | j                   r|| j                  k(  S y)NFr1   r?   r   others     r   __eq__z#AnsibleVaultEncryptedUnicode.__eq__r   s    ::DII%%r   c                :    | j                   r|| j                  k7  S y)NTrE   rF   s     r   __ne__z#AnsibleVaultEncryptedUnicode.__ne__w   s    ::DII%%r   c                (    t        | d d d   d      S )Nsurrogate_or_stricterrorsr   r   s    r   __reversed__z)AnsibleVaultEncryptedUnicode.__reversed__|   s     tDbDz*?@@r   c                0    t        | j                  d      S NrM   rN   )r   r?   r   s    r   __str__z$AnsibleVaultEncryptedUnicode.__str__   s    +@AAr   c                0    t        | j                  d      S rS   )r   r?   r   s    r   __unicode__z(AnsibleVaultEncryptedUnicode.__unicode__   s    tyy)>??r   c                2    t        | j                  ||      S )N)encodingrO   )r   r?   )r   rX   rO   s      r   encodez#AnsibleVaultEncryptedUnicode.encode   s    		HVDDr   c                ,    t        | j                        S r   )reprr?   r   s    r   __repr__z%AnsibleVaultEncryptedUnicode.__repr__       DIIr   c                0    t        | j                  |      S )N)base)intr?   )r   r_   s     r   __int__z$AnsibleVaultEncryptedUnicode.__int__   s    4994((r   c                ,    t        | j                        S r   )floatr?   r   s    r   	__float__z&AnsibleVaultEncryptedUnicode.__float__   s    TYYr   c                ,    t        | j                        S r   )complexr?   r   s    r   __complex__z(AnsibleVaultEncryptedUnicode.__complex__   s    tyy!!r   c                ,    t        | j                        S r   )hashr?   r   s    r   __hash__z%AnsibleVaultEncryptedUnicode.__hash__   r]   r   c                r    t        |t              r| j                  |j                  k  S | j                  |k  S r   
isinstancer-   r?   r   strings     r   __lt__z#AnsibleVaultEncryptedUnicode.__lt__   /    f:;99v{{**yy6!!r   c                r    t        |t              r| j                  |j                  k  S | j                  |k  S r   rl   rn   s     r   __le__z#AnsibleVaultEncryptedUnicode.__le__   /    f:;99++yyF""r   c                r    t        |t              r| j                  |j                  kD  S | j                  |kD  S r   rl   rn   s     r   __gt__z#AnsibleVaultEncryptedUnicode.__gt__   rq   r   c                r    t        |t              r| j                  |j                  k\  S | j                  |k\  S r   rl   rn   s     r   __ge__z#AnsibleVaultEncryptedUnicode.__ge__   rt   r   c                V    t        |t              r|j                  }|| j                  v S r   rl   )r   chars     r   __contains__z)AnsibleVaultEncryptedUnicode.__contains__   s%    d8999Dtyy  r   c                ,    t        | j                        S r   )lenr?   r   s    r   __len__z$AnsibleVaultEncryptedUnicode.__len__   s    499~r   c                     | j                   |   S r   r?   )r   indexs     r   __getitem__z(AnsibleVaultEncryptedUnicode.__getitem__   s    yyr   c                P    t        |d      }t        |d      }| j                  || S )Nr   )maxr?   )r   startends      r   __getslice__z)AnsibleVaultEncryptedUnicode.__getslice__   s)    E1#qkyys##r   c                    t        |t              r| j                  |j                  z   S t        |t              r| j                  |z   S | j                  t	        |      z   S r   )rm   r-   r?   r   r   rF   s     r   __add__z$AnsibleVaultEncryptedUnicode.__add__   sL    e9:99uzz))y)99u$$yy75>))r   c                p    t        |t              r|| j                  z   S t        |      | j                  z   S r   )rm   r   r?   r   rF   s     r   __radd__z%AnsibleVaultEncryptedUnicode.__radd__   s.    eY'499$$u~		))r   c                     | j                   |z  S r   r   )r   ns     r   __mul__z$AnsibleVaultEncryptedUnicode.__mul__   s    yy1}r   c                     | j                   |z  S r   r   r   argss     r   __mod__z$AnsibleVaultEncryptedUnicode.__mod__   s    yy4r   c                    t        |      | z  S r   rP   )r   templates     r   __rmod__z%AnsibleVaultEncryptedUnicode.__rmod__   s    x 4''r   c                6    | j                   j                         S r   )r?   
capitalizer   s    r   r   z'AnsibleVaultEncryptedUnicode.capitalize   s    yy##%%r   c                6    | j                   j                         S r   )r?   casefoldr   s    r   r   z%AnsibleVaultEncryptedUnicode.casefold       yy!!##r   c                <     | j                   j                  |g| S r   )r?   centerr   widthr   s      r   r   z#AnsibleVaultEncryptedUnicode.center   s    tyy---r   r   c                t    t        |t              r|j                  }| j                  j                  |||      S r   )rm   r-   r?   countr   subr   r   s       r   r   z"AnsibleVaultEncryptedUnicode.count   -    c78((CyysE3//r   c                <    | j                   j                  |||      S r   )r?   endswith)r   suffixr   r   s       r   r   z%AnsibleVaultEncryptedUnicode.endswith   s    yy!!&%55r   c                8    | j                   j                  |      S r   )r?   
expandtabs)r   tabsizes     r   r   z'AnsibleVaultEncryptedUnicode.expandtabs       yy##G,,r   c                t    t        |t              r|j                  }| j                  j                  |||      S r   )rm   r-   r?   findr   s       r   r   z!AnsibleVaultEncryptedUnicode.find   s-    c78((Cyy~~c5#..r   c                :     | j                   j                  |i |S r   )r?   format)r   r   kwdss      r   r   z#AnsibleVaultEncryptedUnicode.format   s    tyy...r   c                8    | j                   j                  |      S r   )r?   
format_map)r   mappings     r   r   z'AnsibleVaultEncryptedUnicode.format_map   r   r   c                <    | j                   j                  |||      S r   )r?   r   r   s       r   r   z"AnsibleVaultEncryptedUnicode.index   s    yysE3//r   c                6    | j                   j                         S r   )r?   isalphar   s    r   r   z$AnsibleVaultEncryptedUnicode.isalpha       yy  ""r   c                6    | j                   j                         S r   )r?   isalnumr   s    r   r   z$AnsibleVaultEncryptedUnicode.isalnum  r   r   c                6    | j                   j                         S r   )r?   isasciir   s    r   r   z$AnsibleVaultEncryptedUnicode.isascii  r   r   c                6    | j                   j                         S r   )r?   	isdecimalr   s    r   r   z&AnsibleVaultEncryptedUnicode.isdecimal      yy""$$r   c                6    | j                   j                         S r   )r?   isdigitr   s    r   r   z$AnsibleVaultEncryptedUnicode.isdigit
  r   r   c                6    | j                   j                         S r   )r?   isidentifierr   s    r   r   z)AnsibleVaultEncryptedUnicode.isidentifier  s    yy%%''r   c                6    | j                   j                         S r   )r?   islowerr   s    r   r   z$AnsibleVaultEncryptedUnicode.islower  r   r   c                6    | j                   j                         S r   )r?   	isnumericr   s    r   r   z&AnsibleVaultEncryptedUnicode.isnumeric  r   r   c                6    | j                   j                         S r   )r?   isprintabler   s    r   r   z(AnsibleVaultEncryptedUnicode.isprintable  s    yy$$&&r   c                6    | j                   j                         S r   )r?   isspacer   s    r   r   z$AnsibleVaultEncryptedUnicode.isspace  r   r   c                6    | j                   j                         S r   )r?   istitler   s    r   r   z$AnsibleVaultEncryptedUnicode.istitle  r   r   c                6    | j                   j                         S r   )r?   isupperr   s    r   r   z$AnsibleVaultEncryptedUnicode.isupper  r   r   c                8    | j                   j                  |      S r   )r?   join)r   r3   s     r   r   z!AnsibleVaultEncryptedUnicode.join"  s    yy~~c""r   c                <     | j                   j                  |g| S r   )r?   ljustr   s      r   r   z"AnsibleVaultEncryptedUnicode.ljust%      tyyu,t,,r   c                6    | j                   j                         S r   )r?   lowerr   s    r   r   z"AnsibleVaultEncryptedUnicode.lower(      yy  r   c                8    | j                   j                  |      S r   )r?   lstripr   charss     r   r   z#AnsibleVaultEncryptedUnicode.lstrip+      yy&&r   c                8    | j                   j                  |      S r   )r?   	partitionr   seps     r   r   z&AnsibleVaultEncryptedUnicode.partition0  s    yy""3''r   c                    t        |t              r|j                  }t        |t              r|j                  }| j                  j                  |||      S r   )rm   r-   r?   replace)r   oldnewmaxsplits       r   r   z$AnsibleVaultEncryptedUnicode.replace3  sC    c78((Cc78((Cyy  c844r   c                t    t        |t              r|j                  }| j                  j                  |||      S r   )rm   r-   r?   rfindr   s       r   r   z"AnsibleVaultEncryptedUnicode.rfind:  r   r   c                <    | j                   j                  |||      S r   )r?   rindexr   s       r   r   z#AnsibleVaultEncryptedUnicode.rindex?  s    yyUC00r   c                <     | j                   j                  |g| S r   )r?   rjustr   s      r   r   z"AnsibleVaultEncryptedUnicode.rjustB  r   r   c                8    | j                   j                  |      S r   )r?   
rpartitionr   s     r   r   z'AnsibleVaultEncryptedUnicode.rpartitionE  s    yy##C((r   c                8    | j                   j                  |      S r   )r?   rstripr   s     r   r   z#AnsibleVaultEncryptedUnicode.rstripH  r   r   c                :    | j                   j                  ||      S r   )r?   splitr   r   r   s      r   r   z"AnsibleVaultEncryptedUnicode.splitK  s    yysH--r   c                :    | j                   j                  ||      S r   )r?   rsplitr   s      r   r   z#AnsibleVaultEncryptedUnicode.rsplitN  s    yyX..r   c                8    | j                   j                  |      S r   )r?   
splitlines)r   keependss     r   r   z'AnsibleVaultEncryptedUnicode.splitlinesQ  s    yy##H--r   c                <    | j                   j                  |||      S r   )r?   
startswith)r   prefixr   r   s       r   r   z'AnsibleVaultEncryptedUnicode.startswithT  s    yy##FE377r   c                8    | j                   j                  |      S r   )r?   stripr   s     r   r   z"AnsibleVaultEncryptedUnicode.stripW      yyu%%r   c                6    | j                   j                         S r   )r?   swapcaser   s    r   r   z%AnsibleVaultEncryptedUnicode.swapcaseZ  r   r   c                6    | j                   j                         S r   )r?   titler   s    r   r   z"AnsibleVaultEncryptedUnicode.title]  r   r   c                4     | j                   j                  | S r   )r?   	translater   s     r   r  z&AnsibleVaultEncryptedUnicode.translate`  s    "tyy""D))r   c                6    | j                   j                         S r   )r?   upperr   s    r   r  z"AnsibleVaultEncryptedUnicode.upperc  r   r   c                8    | j                   j                  |      S r   )r?   zfill)r   r   s     r   r  z"AnsibleVaultEncryptedUnicode.zfillf  r   r   )NN)
   )   r   )rL   )NrL   )F)Wr   r   r    r!   
__UNSAFE____ENCRYPTED__yaml_tagclassmethodr7   r:   r"   r?   setterrC   rH   rJ   rQ   rT   rV   rY   r\   ra   rd   rg   rj   rp   rs   rv   rx   r{   r~   r   r   r   r   r   __rmul__r   r   r   r   r   _sysmaxsizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   str	maketransr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  __classcell__)r<   s   @r   r-   r-   G   s   TJMH 0 G G
 
[[+ +H

A
B@E) ""
#
"
#
!
 $
**
 H (&$.  !dll 0
 &'DLL 6-  T\\ /
/-  !dll 0###%#(#%'####-!' I(5  !dll 0
 !"t|| 1-)'./. ()dll 8&$!*!&r   r-   )
__future__r   sysr  collections.abcr   ansible.module_utils.sixr   +ansible.module_utils.common.text.convertersr   r   r   objectr
   dictr&   r)   listr+   r-   r$   r   r   <module>r     se   $ #  $ . T TIF I8	*D 	
	*I 	
	+T 	
`&8-B `&r   