U C^@sRddlZddlZddlmZddlmZedZddZd dd Z d d d Z dS)N) xform_name)ResourceLoadExceptionz \[(.*)\]$cCsB|jjdkr2t|dr |ntd|jjt ||jjS)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``. Nloadz{0} has no load method!) metadatahasattrrrformat __class____name__jmespathsearch)parentpathr9/tmp/pip-install-6_kvzl1k/boto3/boto3/resources/params.pyget_data_members    rcCs|dkr i}|jD]x}|j}|j}|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'}]}} .*Nz[]) split enumerateINDEX_REr groupintlenstr isinstancelistappend) rrrr pospartsipartresultrrrres4       r)NN)N) rer Zbotocorer exceptionsrcompiler*rr"rrrrrs    2