HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib/python3.10/site-packages/boto3/resources/__pycache__/params.cpython-310.pyc
o

�h��@sRddlZddlZddlmZddlmZe�d�Zdd�Zddd	�Z	d
d
d�Z
dS)�N)�
xform_name�)�ResourceLoadExceptionz	\[(.*)\]$cCsB|jjdurt|d�r|��n	t|jj�d���t�||jj�S)aE
    Get a data member from a parent using a JMESPath search query,
    loading the parent if required. If the parent cannot be loaded
    and no data is present then an exception is raised.

    :type parent: ServiceResource
    :param parent: The resource instance to which contains data we
                   are interested in.
    :type path: string
    :param path: The JMESPath expression to query
    :raises ResourceLoadException: When no data is present and the
                                   resource cannot be loaded.
    :returns: The queried data or ``None``.
    N�loadz has no load method!)	�meta�data�hasattrrr�	__class__�__name__�jmespath�search)�parent�path�r�I/usr/local/CyberCP/lib/python3.10/site-packages/boto3/resources/params.py�get_data_members

�rcCs�|duri}|jD];}|j}|j}|dkrt|t|j��}n|dkr)t||j�}n|dvr1|j}n|dkr6q	t	d|����t
||||�q	|S)aX
    Handle request parameters that can be filled in from identifiers,
    resource data members or constants.

    By passing ``params``, you can invoke this method multiple times and
    build up a parameter dict over time, which is particularly useful
    for reverse JMESPath expressions that append to lists.

    :type parent: ServiceResource
    :param parent: The resource instance to which this action is attached.
    :type request_model: :py:class:`~boto3.resources.model.Request`
    :param request_model: The action request model.
    :type params: dict
    :param params: If set, then add to this existing dict. It is both
                   edited in-place and returned.
    :type index: int
    :param index: The position of an item within a list
    :rtype: dict
    :return: Pre-filled parameters to be sent to the request operation.
    N�
identifierr)�string�integer�boolean�inputzUnsupported source type: )�params�source�target�getattrr�namerr�value�NotImplementedError�build_param_structure)r
�
request_modelr�index�paramrrrrrr�create_request_parameters3s 
r"c	CsP|}|�d�}t|�D]�\}}t�|�}|r�|�d�r>|�d�dkr)|dd�}nt|�d��}|dtt|�d��}nd}|dd�}||vsQt||t	�sUg||<|dur_t||�}t||�|krv||�
i�t||�|ksg|t|�dkr�||||<q|||}q||vr�i||<|t|�dkr�|||<q||}qdS)a
    This method provides a basic reverse JMESPath implementation that
    lets you go from a JMESPath-like string to a possibly deeply nested
    object. The ``params`` are mutated in-place, so subsequent calls
    can modify the same element by its index.

        >>> build_param_structure(params, 'test[0]', 1)
        >>> print(params)
        {'test': [1]}

        >>> build_param_structure(params, 'foo.bar[0].baz', 'hello world')
        >>> print(params)
        {'test': [1], 'foo': {'bar': [{'baz': 'hello, world'}]}}

    �.��*N���z[]���)�split�	enumerate�INDEX_REr�group�int�len�str�
isinstance�list�append)	rrrr �pos�parts�i�part�resultrrrrds8


�

�r)NN)N)�rer�botocorer�
exceptionsr�compiler*rr"rrrrr�<module>s


1