Skip to main content

A Python implementation of the test suite for WMO Core Metadata Profile

Project description

pywcmp

Build Status

WMO Core Metadata Profile Test Suite

pywcmp provides validation and quality assessment capabilities for the WMO WIS Core Metadata Profile (WCMP).

Installation

pip

Install latest stable version from PyPI.

pip3 install pywcmp

From source

Install latest development version.

python3 -m venv pywcmp
cd pywcmp
. bin/activate
git clone https://github.com/World-Meteorological-Organization/pywcmp.git
cd pywcmp
pip3 install -r requirements.txt
pip3 install .

Running

From command line:

# fetch version
pywcmp --version

# sync supporting configuration bundle (schemas, topics, etc.)
pywcmp bundle sync

# abstract test suite

# validate WCMP2 metadata against abstract test suite (file on disk)
pywcmp ets validate /path/to/file.json

# validate WCMP2 metadata against abstract test suite (URL)
pywcmp ets validate https://example.org/path/to/file.json

# validate WCMP2 metadata against abstract test suite (URL), but turn JSON Schema validation off
pywcmp ets validate https://example.org/path/to/file.json --no-fail-on-schema-validation

# adjust debugging messages (CRITICAL, ERROR, WARNING, INFO, DEBUG) to stdout
pywcmp ets validate https://example.org/path/to/file.json --verbosity DEBUG

# write results to logfile
pywcmp ets validate https://example.org/path/to/file.json --verbosity DEBUG --logfile /tmp/foo.txt

# key performance indicators

# all key performance indicators at once
pywcmp kpi validate https://example.org/path/to/file.json --verbosity DEBUG

# all key performance indicators at once, but turn ETS validation off
pywcmp kpi validate https://example.org/path/to/file.json --no-fail-on-ets --verbosity DEBUG

# all key performance indicators at once, in summary
pywcmp kpi validate https://example.org/path/to/file.json --verbosity DEBUG --summary

# selected key performance indicator
pywcmp kpi validate --kpi title /path/to/file.json -v INFO

Using the API

>>> # test a file on disk
>>> import json
>>> from pywcmp.wcmp2.ets import WMOCoreMetadataProfileTestSuite2
>>> from pywcmp.errors import TestSuiteError
>>> with open('/path/to/file.json') as fh:
...     data = json.load(fh)
>>> # test ETS
>>> ts = WMOCoreMetadataProfileTestSuite2(datal)
>>> ts.run_tests()
>>> ts.raise_for_status()  # raises pywcmp.errors.TestSuiteError on exception with list of errors captured in .errors property
>>> # test a URL
>>> from urllib2 import urlopen
>>> from StringIO import StringIO
>>> content = StringIO(urlopen('https://....').read())
>>> data = json.loads(content)
>>> ts = WMOCoreMetadataProfileTestSuite2(data)
>>> ts.run_tests()
>>> ts.raise_for_status()  # raises pywcmp.errors.TestSuiteError on exception with list of errors captured in .errors property
>>> # test KPI
>>> from pywcmp.wcmp2.kpi import WMOCoreMetadataProfileKeyPerformanceIndicators
>>> kpis = WMOCoreMetadataProfileKeyPerformanceIndicators(data)
>>> results = kpis.evaluate()
>>> results['summary']

Development

python3 -m venv pywcmp
cd pywcmp
source bin/activate
git clone https://github.com/World-Meteorological-Organization/pywcmp.git
pip3 install -r requirements.txt
pip3 install -r requirements-dev.txt
python3 setup.py install

Running tests

python3 tests/run_tests.py

Releasing

# create release (x.y.z is the release version)
vi pywcmp/__init__.py  # update __version__
git commit -am 'update release version x.y.z'
git push origin master
git tag -a x.y.z -m 'tagging release version x.y.z'
git push --tags

# upload to PyPI
rm -fr build dist *.egg-info
python3 setup.py sdist bdist_wheel --universal
twine upload dist/*

# publish release on GitHub (https://github.com/World-Meteorological-Organization/pywcmp/releases/new)

# bump version back to dev
vi pywcmp/__init__.py  # update __version__
git commit -am 'back to dev'
git push origin master

Code Conventions

PEP8

Issues

Issues are managed at https://github.com/World-Meteorological-Organization/pywcmp/issues

Contact

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

pywcmp-0.13.1.tar.gz (22.7 kB view details)

Uploaded Source

Built Distribution

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

pywcmp-0.13.1-py2.py3-none-any.whl (29.0 kB view details)

Uploaded Python 2Python 3

File details

Details for the file pywcmp-0.13.1.tar.gz.

File metadata

  • Download URL: pywcmp-0.13.1.tar.gz
  • Upload date:
  • Size: 22.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for pywcmp-0.13.1.tar.gz
Algorithm Hash digest
SHA256 fc8cda6a6b9d8bd36a078149287c55988beefa248709b721199d615a7b054f24
MD5 17d832007a73c95170c35c2308e17467
BLAKE2b-256 db8b62a0b9401213cc0a8793ba5b21240829ea8e450462dc26dce7b7c8869c54

See more details on using hashes here.

File details

Details for the file pywcmp-0.13.1-py2.py3-none-any.whl.

File metadata

  • Download URL: pywcmp-0.13.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 29.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for pywcmp-0.13.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 f3c17b7df9e6087e356a93c2e6cb217dc04fc4809dcb00a6231530484c5bda78
MD5 8037528d12c4925b40978a2b610d9418
BLAKE2b-256 dd2657770c481057bad370e43ad7a18d04609273594fcc987aaef543a82e918f

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