Skip to main content

Querying object structures neatly

Project description

PyOPath

Test-status: Status

Overview

PyOPath is a Python library designed to facilitate querying structures of objects within application space. Inspired by XPath, JSONPath, and ObjectPath, PyOPath extends the querying capabilities beyond traditional XML and JSON documents to include a broader range of data structures.

Key Features

  • Flexible Querying: PyOPath allows querying of any kind of model as long as it meets certain criteria, expanding beyond the limitations of XML and JSON documents.

  • Application Space Integration: Unlike traditional querying libraries, PyOPath enables querying directly within the application's data structures, leveraging Python's runtime introspection capabilities.

Getting Started

To begin using PyOPath in your project:

  1. Install PyOPath via pip:

    pip install pyopath
    
  2. Import PyOPath into your Python script:

    import pyopath
    
  3. Start querying your application's data structures using PyOPath's compact syntax.

Example

# Assume we have a data structure 'my_data' representing a nested dictionary

my_data = {
    "name": "John",
    "age": 30,
    "address": {
        "city": "New York",
        "zipcode": "10001"
    },
    "pets": [
        {"type": "dog", "name": "Buddy"},
        {"type": "cat", "name": "Whiskers"}
    ]
}

# Querying the data structure with PyOPath

result = pyopath.query(my_data, "/address/city")
print(result)  # Output: "New York"

Roadmap

Currently, PyOPath is focused on building a robust XPath AST. Future plans include expanding query capabilities and enhancing integration with various data structures and application models.

Contributing

Contributions to PyOPath are welcome! Feel free to submit bug reports, feature requests, or pull requests via GitHub.

License

PyOPath is licensed under the MIT License. See the LICENSE file for details.

Notes and links

ply docs https://github.com/dabeaz/ply/blob/master/doc/ply.md https://ply.readthedocs.io/en/latest/ply.html

good parser review https://tratt.net/laurie/blog/2020/which_parsing_approach.html

another xpathy thing using ply https://github.com/emory-libraries/eulxml/blob/master/eulxml/xpath/__init__.py

parsing c with ply https://github.com/dabeaz/ply/blob/master/example/ansic/cparse.py

Sanxion documentation https://www.saxonica.com/documentation12/index.html#!expressions

xpath language reference https://www.w3.org/TR/xpath-31/#doc-xpath31-PostfixExpr

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyopath-0.0.1.tar.gz (21.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

PyOPath-0.0.1-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

File details

Details for the file pyopath-0.0.1.tar.gz.

File metadata

  • Download URL: pyopath-0.0.1.tar.gz
  • Upload date:
  • Size: 21.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.9

File hashes

Hashes for pyopath-0.0.1.tar.gz
Algorithm Hash digest
SHA256 594143cb9d6eec5140e75e816ac5b5896a20f2306b55ba5e7f47daffd37c776e
MD5 5f18948cbb6ef89aea9f4851d90d7ba3
BLAKE2b-256 a511e707b885e82e1e68fb69eb05e1e14141e20a7deeb5fa128a3bd8f43790ef

See more details on using hashes here.

File details

Details for the file PyOPath-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: PyOPath-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.9

File hashes

Hashes for PyOPath-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3772f4d654a9ff34b532ece5c6c891dffc5c260b0b84d04f848f7abe7b540b2a
MD5 da7bbf442514e98e350f09224093a68a
BLAKE2b-256 c9fb3187fb9e26070ba2753f52b46f0acef113bcd1690157e2aad1d05c3d7077

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page