Git Product home page Git Product logo

dsss's Introduction

dsss: a dead-simple SDMX server

PyPI version badge Status badge for the "pytest" continuous testing workflow Codecov test coverage badge

A rudimentary implementation of the SDMX REST web service standard.

This code is developed mainly as an aid for prototyping and testing other code that generates SDMX or relies on SDMX REST web services being available. It is not currently intended and likely not ready for production use.

Implementation

The package depends only on:

  • sdmx1 —for the SDMX Information Model, file formats, URLs, URNs, and more.
  • starlette —as a base web service framework.

It provides a Store class and subclasses for storing the structures and data to be served by an instance.

Usage

Run a local server

  1. Install the package and uvicorn or another ASGI server:

    git clone [email protected]:khaeru/dsss.git
    cd dsss
    pip install . uvicorn
    

    The package is not yet published on PyPI.

  2. Indicate the directory containing stored structures and data:

    export DSSS_STORE=/path/to/store
    

    This directory should be laid out as a StructuredFileStore (not yet documented).

  3. Run:

    uvicorn --factory dsss:build_app
    

    The output will include a line like:

  4. Open a browser or use curl on the terminal to query this server:

    curl -i http://127.0.0.1:5000/codelist/AGENCY/CL_FOO/latest/all?detail=full
    

Deploy to Google App Engine

Not currently supported.

Roadmap

For a 1.0 release, the code will tolerate all the queries possible using the SDMX REST cheat sheet. ‘Tolerate’ means that DSSS will respond to them with an SDMX-ML message, although possibly an SDMX-ML ErrorMessage with code 501 indicating the given feature(s) are not implemented.

Thus the code will:

  • Respect optional path parts. (done)
  • Return appropriate error messages for unavailable resources. (done)
  • Filter structures (partial implementation). (done)
  • Filter data (partial implementation). (done)
  • Return footer or other messages when the response is not fully filtered per path and query parameters. (done)
  • Provide documentation in the README for example deployment.
  • Include an initial test suite.
  • Support, and be tested on, Ubuntu Linux and Python ≥ 3.11

After 1.0, some features that will likely be added include:

  • Provide complete documentation.
  • Provide a complete test suite.
  • Provide logging.
  • Support all maintained Python versions, macOS, and Windows.

License

Copyright 2014–2024, dsss developers

Licensed under the GNU General Public License, Version 3.0 (the “License”); you may not use these files except in compliance with the License. You may obtain a copy of the License:

dsss's People

Contributors

khaeru avatar

Stargazers

 avatar

Watchers

 avatar  avatar

dsss's Issues

Add ‘sdmx’ Topic: Boost Discoverability for SDMX Repositories

Dear repository owners, 🌟

As your repository is related to SDMX (Statistical Data and Metadata Exchange), please consider adding the sdmx topic to it. This will help other developers discover and engage with your project more easily.

To associate your repository with the sdmx topic, visit your repo's landing page and select 'manage topics'. Let's make SDMX-related projects more visible and accessible! 🚀

Thank you for contributing to the community! 🙌

For detailed instructions on how to add topics to your repository, refer to the GitHub documentation.

Happy coding! 🌐👩‍💻👨‍💻

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.