diff options
author | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
---|---|---|
committer | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
commit | 4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch) | |
tree | ee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info | |
parent | cc961e04ba734dd72309fb548a2f97d67d578813 (diff) | |
download | gn-ai-master.tar.gz |
Diffstat (limited to '.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info')
6 files changed, 291 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/INSTALLER b/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/INSTALLER new file mode 100644 index 00000000..a1b589e3 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/LICENSE.txt b/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/LICENSE.txt new file mode 100644 index 00000000..aa689285 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright (c) 2013 Amazon.com, Inc. or its affiliates. All Rights Reserved + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, dis- +tribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the fol- +lowing conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- +ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/METADATA b/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/METADATA new file mode 100644 index 00000000..00fb771c --- /dev/null +++ b/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/METADATA @@ -0,0 +1,240 @@ +Metadata-Version: 2.1 +Name: jmespath +Version: 1.0.1 +Summary: JSON Matching Expressions +Home-page: https://github.com/jmespath/jmespath.py +Author: James Saryerwinnie +Author-email: js@jamesls.com +License: MIT +Platform: UNKNOWN +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Natural Language :: English +Classifier: License :: OSI Approved :: MIT License +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Requires-Python: >=3.7 + +JMESPath +======== + + +.. image:: https://badges.gitter.im/Join Chat.svg + :target: https://gitter.im/jmespath/chat + + +JMESPath (pronounced "james path") allows you to declaratively specify how to +extract elements from a JSON document. + +For example, given this document:: + + {"foo": {"bar": "baz"}} + +The jmespath expression ``foo.bar`` will return "baz". + +JMESPath also supports: + +Referencing elements in a list. Given the data:: + + {"foo": {"bar": ["one", "two"]}} + +The expression: ``foo.bar[0]`` will return "one". +You can also reference all the items in a list using the ``*`` +syntax:: + + {"foo": {"bar": [{"name": "one"}, {"name": "two"}]}} + +The expression: ``foo.bar[*].name`` will return ["one", "two"]. +Negative indexing is also supported (-1 refers to the last element +in the list). Given the data above, the expression +``foo.bar[-1].name`` will return "two". + +The ``*`` can also be used for hash types:: + + {"foo": {"bar": {"name": "one"}, "baz": {"name": "two"}}} + +The expression: ``foo.*.name`` will return ["one", "two"]. + + +Installation +============ + +You can install JMESPath from pypi with: + +.. code:: bash + + pip install jmespath + + +API +=== + +The ``jmespath.py`` library has two functions +that operate on python data structures. You can use ``search`` +and give it the jmespath expression and the data: + +.. code:: python + + >>> import jmespath + >>> path = jmespath.search('foo.bar', {'foo': {'bar': 'baz'}}) + 'baz' + +Similar to the ``re`` module, you can use the ``compile`` function +to compile the JMESPath expression and use this parsed expression +to perform repeated searches: + +.. code:: python + + >>> import jmespath + >>> expression = jmespath.compile('foo.bar') + >>> expression.search({'foo': {'bar': 'baz'}}) + 'baz' + >>> expression.search({'foo': {'bar': 'other'}}) + 'other' + +This is useful if you're going to use the same jmespath expression to +search multiple documents. This avoids having to reparse the +JMESPath expression each time you search a new document. + +Options +------- + +You can provide an instance of ``jmespath.Options`` to control how +a JMESPath expression is evaluated. The most common scenario for +using an ``Options`` instance is if you want to have ordered output +of your dict keys. To do this you can use either of these options: + +.. code:: python + + >>> import jmespath + >>> jmespath.search('{a: a, b: b}', + ... mydata, + ... jmespath.Options(dict_cls=collections.OrderedDict)) + + + >>> import jmespath + >>> parsed = jmespath.compile('{a: a, b: b}') + >>> parsed.search(mydata, + ... jmespath.Options(dict_cls=collections.OrderedDict)) + + +Custom Functions +~~~~~~~~~~~~~~~~ + +The JMESPath language has numerous +`built-in functions +<http://jmespath.org/specification.html#built-in-functions>`__, but it is +also possible to add your own custom functions. Keep in mind that +custom function support in jmespath.py is experimental and the API may +change based on feedback. + +**If you have a custom function that you've found useful, consider submitting +it to jmespath.site and propose that it be added to the JMESPath language.** +You can submit proposals +`here <https://github.com/jmespath/jmespath.site/issues>`__. + +To create custom functions: + +* Create a subclass of ``jmespath.functions.Functions``. +* Create a method with the name ``_func_<your function name>``. +* Apply the ``jmespath.functions.signature`` decorator that indicates + the expected types of the function arguments. +* Provide an instance of your subclass in a ``jmespath.Options`` object. + +Below are a few examples: + +.. code:: python + + import jmespath + from jmespath import functions + + # 1. Create a subclass of functions.Functions. + # The function.Functions base class has logic + # that introspects all of its methods and automatically + # registers your custom functions in its function table. + class CustomFunctions(functions.Functions): + + # 2 and 3. Create a function that starts with _func_ + # and decorate it with @signature which indicates its + # expected types. + # In this example, we're creating a jmespath function + # called "unique_letters" that accepts a single argument + # with an expected type "string". + @functions.signature({'types': ['string']}) + def _func_unique_letters(self, s): + # Given a string s, return a sorted + # string of unique letters: 'ccbbadd' -> 'abcd' + return ''.join(sorted(set(s))) + + # Here's another example. This is creating + # a jmespath function called "my_add" that expects + # two arguments, both of which should be of type number. + @functions.signature({'types': ['number']}, {'types': ['number']}) + def _func_my_add(self, x, y): + return x + y + + # 4. Provide an instance of your subclass in a Options object. + options = jmespath.Options(custom_functions=CustomFunctions()) + + # Provide this value to jmespath.search: + # This will print 3 + print( + jmespath.search( + 'my_add(`1`, `2`)', {}, options=options) + ) + + # This will print "abcd" + print( + jmespath.search( + 'foo.bar | unique_letters(@)', + {'foo': {'bar': 'ccbbadd'}}, + options=options) + ) + +Again, if you come up with useful functions that you think make +sense in the JMESPath language (and make sense to implement in all +JMESPath libraries, not just python), please let us know at +`jmespath.site <https://github.com/jmespath/jmespath.site/issues>`__. + + +Specification +============= + +If you'd like to learn more about the JMESPath language, you can check out +the `JMESPath tutorial <http://jmespath.org/tutorial.html>`__. Also check +out the `JMESPath examples page <http://jmespath.org/examples.html>`__ for +examples of more complex jmespath queries. + +The grammar is specified using ABNF, as described in +`RFC4234 <http://www.ietf.org/rfc/rfc4234.txt>`_. +You can find the most up to date +`grammar for JMESPath here <http://jmespath.org/specification.html#grammar>`__. + +You can read the full +`JMESPath specification here <http://jmespath.org/specification.html>`__. + + +Testing +======= + +In addition to the unit tests for the jmespath modules, +there is a ``tests/compliance`` directory that contains +.json files with test cases. This allows other implementations +to verify they are producing the correct output. Each json +file is grouped by feature. + + +Discuss +======= + +Join us on our `Gitter channel <https://gitter.im/jmespath/chat>`__ +if you want to chat or if you have any questions. + + diff --git a/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/RECORD b/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/RECORD new file mode 100644 index 00000000..aceaeda5 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/RECORD @@ -0,0 +1,24 @@ +../../../bin/__pycache__/jp.cpython-312.pyc,,
+../../../bin/jp.py,sha256=QqkstFmEBebFu244Ci7NXqHFil-QUg5IOAWyeqBZ8dc,1731
+jmespath-1.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
+jmespath-1.0.1.dist-info/LICENSE.txt,sha256=ZrMTzOgO0GI_x9s_JIY6DID9g-s0Gka1eGQViudPqlY,1084
+jmespath-1.0.1.dist-info/METADATA,sha256=gJiDKN4nzYpDr4qYCl88FqJlaKenmN5w0xZctn4L4RA,7555
+jmespath-1.0.1.dist-info/RECORD,,
+jmespath-1.0.1.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
+jmespath-1.0.1.dist-info/top_level.txt,sha256=vuy_oZ1ckpeSNrAi8JK8-yIGO6bduO3qvW2cCMQmPH8,9
+jmespath/__init__.py,sha256=WNf8QdWqpRhG6wwQZoFI_GCM_b8u2BzREN0egQsPq1w,281
+jmespath/__pycache__/__init__.cpython-312.pyc,,
+jmespath/__pycache__/ast.cpython-312.pyc,,
+jmespath/__pycache__/compat.cpython-312.pyc,,
+jmespath/__pycache__/exceptions.cpython-312.pyc,,
+jmespath/__pycache__/functions.cpython-312.pyc,,
+jmespath/__pycache__/lexer.cpython-312.pyc,,
+jmespath/__pycache__/parser.cpython-312.pyc,,
+jmespath/__pycache__/visitor.cpython-312.pyc,,
+jmespath/ast.py,sha256=SiHRM1mdQPRt12R2qkQu_Ezbd-ghk5HLy1Hl1jHAyv8,2130
+jmespath/compat.py,sha256=rMHpvmG3JAxX_lQ0yPK1dhLz-yOuEybMqdrEq6RRAr4,381
+jmespath/exceptions.py,sha256=5HRot4Bv3SCTdvh5lAQdQBsqSdaKjuTPSyGmk08zSvA,4128
+jmespath/functions.py,sha256=1BGD9j2TuOOo9VY399-TtsghORs1zUwyvFrhtKo16SA,12736
+jmespath/lexer.py,sha256=LE3-dM75ny9RMR8mXmWlKKRTIlz8njvWz-M-2y4t5WA,8574
+jmespath/parser.py,sha256=_duwQclOJi8wv-3Vy3Cm6qmPgRDx_cEJn3cyWNk9mes,19088
+jmespath/visitor.py,sha256=w4pEz62C7l9Qs30AP3NmOMEr55nuJWVV-kb-QhEYKRI,10834
diff --git a/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/WHEEL b/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/WHEEL new file mode 100644 index 00000000..becc9a66 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.37.1) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/top_level.txt b/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/top_level.txt new file mode 100644 index 00000000..45c1e038 --- /dev/null +++ b/.venv/lib/python3.12/site-packages/jmespath-1.0.1.dist-info/top_level.txt @@ -0,0 +1 @@ +jmespath |