
    ԟf                        d dl Zd dlmZmZmZmZmZmZm	Z	m
Z
 ddlmZmZmZ dZd Zd Zdddd	ed
eeegef      de
d   defdZ ed      Ze	ddddeeef   dedeeeegef      defd       Ze	dddddeeef   dee   dedeeeegef      def
d       Ze	dddddeeef   dededeeeegef      def
d       ZeddddZy)    N)AnyCallableOptionalTypeTypeVarUnionoverloadLiteral   )DecodeErrorconvertto_builtins)encodedecodec                      t         S N)__all__     G/var/www/cvtools/html/venv/lib/python3.12/site-packages/msgspec/yaml.py__dir__r      s    Nr   c                 J    	 dd l }|S # t        $ r t        d|  d      d w xY w)Nr   z`msgspec.yaml.z` requires PyYAML be installed.

Please either `pip` or `conda` install it as follows:

  $ python -m pip install pyyaml  # using pip
  $ conda install pyyaml          # or using conda)yamlImportError)namer   s     r   _import_pyyamlr      sG    
   TF #A A

 	s    ")enc_hookorderobjr   r   )Ndeterministicsortedreturnc                    t        d      }t        |d|j                        }|j                  t	        | t
        j                  t
        j                  f||      gd|dd      S )a4  Serialize an object as YAML.

    Parameters
    ----------
    obj : Any
        The object to serialize.
    enc_hook : callable, optional
        A callable to call for objects that aren't supported msgspec types.
        Takes the unsupported object and should return a supported object, or
        raise a ``NotImplementedError`` if unsupported.
    order : {None, 'deterministic', 'sorted'}, optional
        The ordering to use when encoding unordered compound types.

        - ``None``: All objects are encoded in the most efficient manner
          matching their in-memory representations. The default.
        - `'deterministic'`: Unordered collections (sets, dicts) are sorted to
          ensure a consistent output between runs. Useful when
          comparison/hashing of the encoded binary output is necessary.
        - `'sorted'`: Like `'deterministic'`, but *all* object-like types
          (structs, dataclasses, ...) are also sorted by field name before
          encoding. This is slower than `'deterministic'`, but may produce more
          human-readable output.

    Returns
    -------
    data : bytes
        The serialized object.

    Notes
    -----
    This function requires that the third-party `PyYAML library
    <https://pyyaml.org/>`_ is installed.

    See Also
    --------
    decode
    r   CSafeDumper)builtin_typesr   r   zutf-8TF)encodingDumperallow_unicode	sort_keys)r   getattr
SafeDumperdump_all_to_builtins	_datetimedatetimedate)r   r   r   r   r'   s        r   r   r      sm    V (#DT=$//:F==(119>>B!		
    r   TT)strictdec_hookbufr2   r3   c                     y r   r   )r4   r2   r3   s      r   r   r   a   s     	r   .)typer2   r3   r6   c                     y r   r   r4   r6   r2   r3   s       r   r   r   k        	r   c                     y r   r   r8   s       r   r   r   v   r9   r   c                   t        d      }t        |d|j                        }t        | t        t
        f      st        t        |             } 	 |j                  | |      }|t        u r|S t        ||t        j                  t        j                  f||      S # |j                  $ r}t        t	        |            dd}~ww xY w)a  Deserialize an object from YAML.

    Parameters
    ----------
    buf : bytes-like or str
        The message to decode.
    type : type, optional
        A Python type (in type annotation form) to decode the object as. If
        provided, the message will be type checked and decoded as the specified
        type. Defaults to `Any`, in which case the message will be decoded
        using the default YAML types.
    strict : bool, optional
        Whether type coercion rules should be strict. Setting to False enables
        a wider set of coercion rules from string to non-string types for all
        values. Default is True.
    dec_hook : callable, optional
        An optional callback for handling decoding custom types. Should have
        the signature ``dec_hook(type: Type, obj: Any) -> Any``, where ``type``
        is the expected message type, and ``obj`` is the decoded representation
        composed of only basic YAML types. This hook should transform ``obj``
        into type ``type``, or raise a ``NotImplementedError`` if unsupported.

    Returns
    -------
    obj : Any
        The deserialized object.

    Notes
    -----
    This function requires that the third-party `PyYAML library
    <https://pyyaml.org/>`_ is installed.

    See Also
    --------
    encode
    r   CSafeLoaderN)r%   r2   r3   )r   r*   
SafeLoader
isinstancestrbytes
memoryviewload	YAMLError_DecodeErrorr   _convertr.   r/   r0   )r4   r6   r2   r3   r   Loaderr   excs           r   r   r      s    J (#DT=$//:FcC<(JsO$/iiV$ s{
 ))9>>:  >> /3s8$$./s   B C'B<<C)r/   r.   typingr   r   r   r   r   r   r	   r
    r   rD   r   rE   r   r-   r   r   r   r@   r   r1   r?   boolr6   r   r   r   r   <module>rK      s    S S S  " 046:	<	< xs
+,< 23	<
 <~ CL 
 59			ucz		 	 xsS 012		
 		 
	 
 59		ucz		 q'	 		
 xsS 012	 	 
	 
 59		ucz		 	 		
 xsS 012	 		 
	 D4 8r   