Giter Site home page Giter Site logo

passthrough's Introduction

Passthrough - Template-Driven PDS4 Data Product Generation in Python

The Passthrough software library seeks to provide PDS4 data processors with an integrated solution for generating output labels based on declarative product type templates. It serves as a complementary counterpart to the PDS4 Tools read-in library, enabling processors to interact natively with the PDS4 format without the need for intermediary internal product representations or separate file formats.

To learn more, visit the project's documentation.

Installation

The Passthrough library lives on PyPI and can be installed with pip:

pip install passthrough

You'll need to have installed Python 3.6 or newer, and the package will pull in lxml and numpy as dependencies.

Development setup

The project uses Poetry to manage dependencies and packaging. After cloning the repository and installing Poetry (e.g. pipx install poetry), the following steps (executed from the project root directory) will initialise the development environment.

Create venv (substitute for the version you want to work against):

poetry env use python3.6  

Fetch dependencies defined in pyproject.toml and install project in development mode:

poetry install  

Please refer to the Poetry documentation for further information on its usage.

Feature roadmap

Near term / high priority

  • Documentation revamp (MkDocs, tutorial, api) - in progress
  • Helpers on the API side for working with File_Area_Observational - in progress
  • Automated test suite
  • Continuous integration

Longer term / lower priority

  • Validation entry point script capable of statically checking templates
  • If needed: strict property which actively discards non-required elements: in the fetch context, even if a source element is found; in the non-fetch context, even if the element is populated
  • If needed: ignore property which allows unpopulated elements to remain in the exported label (for when a downstream tool will perform modifications to the product before it is validated for correctness / ingested in the archive)
  • If needed: the ability to add element XML attributes via the template (unlikely?)
  • Support for no-default-prefix XPath expressions via internal substitution (supporting XPath predicates etc. will require a tokenizer/parser be built/commandeered, which is low on the priority list)

Completed

  • Adopt Poetry for packaging and dependency management
  • Full support for logging
  • Interoperability with pds4_tools loaded source labels
  • Common label interrogation/manipulation functionality exposed for clients to use
  • Add support for multi-fill (fill node in node-set based on which multi branch context node belongs to)
  • Add support for fill string formatting (if node is populated and contains a {}-pair, substitute in fill result)
  • Create extension plugin support (3rd party XPath functions)

passthrough's People

Contributors

landingellipse avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.