Recent Releases of https://github.com/bcdev/xrlint
https://github.com/bcdev/xrlint - 0.5.0
What's Changed
Adjustments and Enhancements
Added support for validating Zarr and HDF-5 groups and their items. Rules can now validate
xarray.DataTreeobjects originating fromxarray.open_datatree()by implementing rule operation methodRuleOp.validate_datatree(ctx, node). (#54)Added a new core rule
var-missing-datathat checks for the recommended use of a variable's missing data.Added a new core rule
access-latencythat can be used to check the time it takes to open a dataset.Added HTML styling for both CLI output (
--format html) and rendering ofResultobjects in Jupyter notebooks.Rule
no-empty-chunkshas been taken off the"recommended"settings as there is no easy/efficient way to tell whether a dataset has been written usingwrite_emtpy_chunksoption or not. The rule message itself has been fixed. (#45)Adjusted messages of rules
var-unitsandtime-coordinateto be consistent with messages of other rules.Core rule
dataset-title-attrhas been moved intoxcubeplugin and renamed toxcube/dataset-titlebecause the core rulecontent-desccovers checking for dataset titles and other descriptive attributes.
Incompatible API changes
Changed general use of term verify into validate:
- prefixed
RuleOpmethods byvalidate_for clarity. - renamed
XRLint.verify_datasets()intovalidate_files() - renamed
Lint.verify_dataset()intovalidate()
- prefixed
Renamed nodes and node properties for clarity and consistency:
- renamed
DataArrayNodeintoVariableNode - renamed
DataArrayNode.data_arrayintoVariableNode.array
- renamed
Various changes for improved clarity regarding configuration management:
- introduced type aliases
ConfigLikeandConfigObjectLike. - renamed
ConfigintoConfigObject - renamed
ConfigList.configsintoconfig_objects - renamed
ConfigListintoConfig - renamed
ConfigList.compute_config()intocompute_config_object() - renamed
Result.configintoconfig_object - renamed
XRLint.load_config_list()intoinit_config() - added class method
from_config()toConfigList. - removed function
xrlint.config.merge_configsas it was no longer used.
- introduced type aliases
Removed class method
Result.new()as it was no longer used.
Other changes
- XRLint now works with zarr >=2,<3 and zarr >=3.0.2
- Added more tests so we finally reached 100% coverage.
- New
PluginMeta.docs_urlproperty. - Inserted copyright header into all source files.
Full Changelog: https://github.com/bcdev/xrlint/compare/v0.4.1...v0.5.0
- Python
Published by forman over 1 year ago
https://github.com/bcdev/xrlint - 0.4.1
Changes
- Added core rule
conventionsthat checks for theConventionsattribute. - Added core rule
context-descrthat checks content description - Added core rule
var-descrthat checks data variable description - Renamed rules for consistency:
-
var-units-attrsandvar-units -
flagsintovar-flags
-
Fixes
- Fixed an issue that prevented recursively traversing folders referred
to by URLs (such as
s3://<bucket>/<path>/) rather than local directory paths. (#39)
- Python
Published by forman over 1 year ago
https://github.com/bcdev/xrlint - 0.4.0
- Fixed and enhanced core rule
time-coordinate. `(#33) - New xcube rule
no-chunked-coords. (#29) - New xcube multi-level dataset rules:
ml-dataset-meta: verifies that a meta info file exists and is consistent;ml-dataset-xy: verifies that the levels have expected spatial resolutions;ml-dataset-time: verifies that the levels have expected time dimension, if any.
- Now supporting xcube multi-level datasets
*.levels:- Added xcube plugin processor
"xcube/multi-level-dataset"that is used inside the predefined xcube configurations "all" and "recommended".
- Added xcube plugin processor
- Introduced method
Plugin.define_configwhich defines a named plugin configuration. It takes a name and a configuration object or list of configuration objects. Changed the way how configuration is defined and exported from Python configuration files:
- Renamed function that exports configuration from
export_configsintoexport_config. - The returned value should be a list of values that can be
converted into configuration objects: mixed
Configinstances, dictionary, or a name that refers to a named configuration of a plugin.
- Renamed function that exports configuration from
Other changes:
- Property
configofLinternow returns aConfigListinstead of aConfigobject. - Directories that are recognized by file patterns associated with a non-empty configuration object are no longer recursively traversed.
- Node path names now contain the dataset index if a file path has been opened by a processor produced multiple datasets to validate.
- Changed type of
Plugin.configsfromdict[str, Config]todict[str, list[Config]]. - Inbuilt plugin rules now import their
plugininstance fromxrlint.plugins.<plugin>.pluginmodule. JsonSerializablenow recognizesdataclassinstances and no longer serializes property values that are also default values.- Pinned zarr dependency to be >=2.18, <3 until test
tests.plugins.xcube.processors.test_mldataset.MultiLevelDatasetProcessorTestis adjusted orfsspec's memory filesystem is updated. - Now making use of the
expectedproperty ofRuleTest.
- Property
Full Changelog: https://github.com/bcdev/xrlint/compare/v0.3.0...v0.4.0
- Python
Published by forman over 1 year ago
https://github.com/bcdev/xrlint - 0.3.0
- Added more rules
- core/CF rule "flags"
- core/CF rule "lon-coordinate"
- core/CF rule "lat-coordinate"
- core/CF rule "time-coordinate" (#15)
- core rule "no-empty-chunks"
- xcube rule "time-naming" (#15)
- Fixed problem where referring to values in modules via the form
"<module>:<attr>"raised. (#21) - Introduced factory method
new_pluginwhich simplifies creating plugin objects. - Refactored out new common mixin class
Operationwhich reduces amount of code and simplifies testing of operation classesRule,Processor,Formatter. - Improved overall test coverage.
- Switched to ruff as default linter and formatter.
Full Changelog: https://github.com/bcdev/xrlint/compare/v0.2.0...v0.3.0
- Python
Published by forman over 1 year ago
https://github.com/bcdev/xrlint - 0.2.0
- Rule description is now your
RuleOp's docstring ifdescriptionis not explicitly provided. - Supporting virtual plugins: plugins provided by Python
dictionaries with rules defined by the
RuleOpclasses. - Added more configuration examples in the
examplesfolder. - All
xcuberules now have references into the xcube dataset specification. - Introduced mixin classes
ValueConstructibleand derivedMappingConstructiblewhich greatly simplify flexible instantiation of XRLint's configuration objects and their children from Python and JSON/YAML values. - Made all docstrings comply to google-style.
- Python
Published by forman over 1 year ago
https://github.com/bcdev/xrlint - 0.1.0
- Added CLI option
--print-config PATH, see same option in ESLint - XRLint CLI now outputs single results immediately to console, instead only after all results have been collected.
- Refactored and renamed
CliEngineintoXRLint. Documented the class. new_linter()now uses a config name arg instead of a bool arg.- Split example notebook into two
- Python
Published by forman over 1 year ago
https://github.com/bcdev/xrlint - 0.0.3
- enhanced "simple" output format by colors and links
- new xcube rule "increasing-time"
- new xcube rule "data-var-colors"
- new
RuleExitexception to exit rule logic and stop further node traversal
- Python
Published by forman over 1 year ago
https://github.com/bcdev/xrlint - 0.0.2
- more rules
- more tests
- config list item can be config name
- xcube is no longer default plugin
- no rules by default, but no rules configured is an error
- CLI exit code 1 with max warnings exceeded
- CLI exit code 1 with no files given
- new CLI options
--plugin,--rule,--init - markdown rule reference in docs via
mkruleref.pytool - using
filesconfig option to specify valid filename extensions, see here - using default filename extensions
["**/*.zarr", "**/*.nc"] - using subset of minimatch syntax instead of the simple globs used by Python's
fnmatch - allow the CLI's
FILESargs to contain directories, which are automatically recursively traversed - rule
coords-for-dimsworks on dataset level - support for custom processors
- Python
Published by forman over 1 year ago
https://github.com/bcdev/xrlint - 0.0.1
Test release of a development snapshot.
- Python
Published by forman over 1 year ago