geowatch.cli.validate_annotation_schemas module

CommandLine

python ~/code/watch/dev/validate_annotation_schemas.py

Prereq:

TEST_DPATH=$HOME/tmp/test_smart_schema mkdir -p $TEST_DPATH cd $TEST_DPATH git clone git@smartgitlab.com:TE/annotations.git git clone git@smartgitlab.com:infrastructure/docs.git

pip install jsonschema ubelt -U

SeeAlso:

~/code/watch/geowatch/geoannots/geomodels.py ~/code/watch/geowatch/cli/validate_annotation_schemas.py ~/code/watch/geowatch/cli/fix_region_models.py

References

https://smartgitlab.com/TE/annotations/-/issues/17 https://smartgitlab.com/TE/standards/-/snippets/18

Example

DVC_DATA_DPATH=$(geowatch_dvc –tags=’phase2_data’ –hardware=auto)

python -m geowatch.cli.validate_annotation_schemas

–site_models=”$DVC_DATA_DPATH”/annotations/drop7/site_models –region_models=”$DVC_DATA_DPATH”/annotations/drop7/region_models

python -m geowatch.cli.validate_annotation_schemas

–site_models=”<path-to-site-models>” –region_models=”<path-to-region-models>”

python -m geowatch.cli.validate_annotation_schemas

–region_models=”$DVC_DATA_DPATH”/annotations/drop6/region_models/AE_C001.geojson

class geowatch.cli.validate_annotation_schemas.ValidateAnnotationConfig(*args, **kwargs)[source]

Bases: DataConfig

Validate the site / region model schemas

Valid options: []

Parameters:
  • *args – positional arguments for this data config

  • **kwargs – keyword arguments for this data config

default = {'fixup': <Value(False)>, 'io_workers': <Value('avail')>, 'models': <Value(None)>, 'region_models': <Value(None)>, 'site_models': <Value(None)>, 'strict': <Value(False)>}
main(**kwargs)

Example

>>> import ubelt as ub
>>> import sys, ubelt
>>> from geowatch.cli.validate_annotation_schemas import ValidateAnnotationConfig
>>> from geowatch.geoannots import geomodels
>>> dpath = ub.Path.appdir('geowatch', 'tests', 'test_validate_geoannot_schema')
>>> dpath.ensuredir()
>>> region, sites = geomodels.RegionModel.random(with_sites=True)
>>> region_fpath = dpath / (region.region_id + '.geojson')
>>> region_fpath.write_text(region.dumps())
>>> for site in sites:
>>>     site_fpath = dpath / (site.site_id + '.geojson')
>>>     site_fpath.write_text(site.dumps())
>>> kwargs = {
>>>     'models': str(dpath / '*.geojson')
>>> }
>>> cmdline = 0
>>> ValidateAnnotationConfig.main(cmdline=cmdline, **kwargs)
geowatch.cli.validate_annotation_schemas.main(cmdline=1, **kwargs)[source]

Example

>>> import ubelt as ub
>>> import sys, ubelt
>>> from geowatch.cli.validate_annotation_schemas import ValidateAnnotationConfig
>>> from geowatch.geoannots import geomodels
>>> dpath = ub.Path.appdir('geowatch', 'tests', 'test_validate_geoannot_schema')
>>> dpath.ensuredir()
>>> region, sites = geomodels.RegionModel.random(with_sites=True)
>>> region_fpath = dpath / (region.region_id + '.geojson')
>>> region_fpath.write_text(region.dumps())
>>> for site in sites:
>>>     site_fpath = dpath / (site.site_id + '.geojson')
>>>     site_fpath.write_text(site.dumps())
>>> kwargs = {
>>>     'models': str(dpath / '*.geojson')
>>> }
>>> cmdline = 0
>>> ValidateAnnotationConfig.main(cmdline=cmdline, **kwargs)
geowatch.cli.validate_annotation_schemas.validate_data_contents(region_model_infos, site_model_infos)[source]

Content validation (i.e. dates look sane)

geowatch.cli.validate_annotation_schemas.validate_schemas(region_model_infos, site_model_infos, strict=False)[source]
geowatch.cli.validate_annotation_schemas.validate_region_model_content(region_df, fpath)[source]
geowatch.cli.validate_annotation_schemas.validate_site_content(site_df, site_fpath)[source]