This library implements validation against WMO Core Metadata Profile 1.3, specifically Part 2, Section 2.
python3 -m venv pywcmp
cd pywcmp
. bin/activate
git clone https://github.com/wmo-im/pywcmp.git
cd pywcmp
pip3 install -r requirements.txt
python3 setup.py build
python3 setup.py install
From command line:
# fetch version
pywcmp --version
# abstract test suite
# validate metadata against abstract test suite (file on disk)
pywcmp ats validate --file /path/to/file.xml
# validate metadata against abstract test suite (URL)
pywcmp ats validate --url http://example.org/path/to/file.xml
# adjust debugging messages (CRITICAL, ERROR, WARNING, INFO, DEBUG) to stdout
pywcmp ats validate --url http://example.org/path/to/file.xml --verbosity DEBUG
# write results to logfile
pywcmp ats validate --url http://example.org/path/to/file.xml --verbosity DEBUG --logfile /tmp/foo.txt
# key performance indicators # note: running KPIs automatically runs the ats
pywcmp kpi validate --url http://example.org/path/to/file.xml --verbosity DEBUG
# test a file on disk
>>> from lxml import etree
>>> from pywcmp.ats import ats
>>> exml = etree.parse('/path/to/file.xml')
>>> ts = ats.WMOCoreMetadataProfileTestSuite13(exml)
>>> ts.run_tests() # raises ValueError error stack on exception
# test a URL
>>> from urllib2 import urlopen
>>> from StringIO import StringIO
>>> content = StringIO(urlopen('http://....').read())
>>> exml = etree.parse(content)
>>> ts = ats.WMOCoreMetadataProfileTestSuite13(exml)
>>> ts.run_tests() # raises ValueError error stack on exception
# handle ats.TestSuiteError
# ats.TestSuiteError.errors is a list of errors
>>> try:
... ts.run_tests()
... except ats.TestSuiteError as err:
... print('\n'.join(err.errors))
>>> ...
>>> from pywcmp.kpi import WMOCoreMetadataProfileKeyPerformanceIndicators
>>> kpis = WMOCoreMetadataProfileKeyPerformanceIndicators(exml)
>>> kpis['totals']
python3 -m venv pywcmp
cd pywcmp
source bin/activate
git clone https://github.com/wmo-im/pywcmp.git
pip3 install -r requirements.txt
pip3 install -r requirements-dev.txt
python3 setup.py install
# via setuptools
python3 setup.py test
# manually
python3 tests/run_tests.py
python3 setup.py sdist bdist_wheel --universal
twine upload dist/*
Issues are managed at https://github.com/wmo-im/pywcmp/issues