python-jsonschema / check-jsonschema

A CLI and set of pre-commit hooks for jsonschema validation with built-in support for GitHub Workflows, Renovate, Azure Pipelines, and more!
https://check-jsonschema.readthedocs.io/en/stable
Other
191 stars 38 forks source link

Warn when using schema features annotated with `"deprecated": true` #331

Open edgarrmondragon opened 9 months ago

edgarrmondragon commented 9 months ago

New in draft 2019-09 The deprecated keyword is a boolean that indicates that the instance value the keyword applies to should not be used and may be removed in the future.[1]

It'd be nice if the CLI could emit warnings regarding deprecated features.

sirosen commented 9 months ago

Cool idea. I'll need to look into how we could gather up this info. I'm not sure when I could prioritize working on this, but certainly I'd be open to a PR or useful info about how to implement it on top of jsonschema.

edgarrmondragon commented 9 months ago

Ha, I don't know why I didn't think of first opening an issue over there. Thanks!

UPDATE: https://github.com/python-jsonschema/jsonschema/issues/1170

sirosen commented 9 months ago

I'm removing the label for requiring an upstream change after the pretty productive thread on jsonschema. Short term, it's probably wiser not to wait for an ideal solution but to try to do something as a client of that lib.

The main questions I have coming out of that is

If erroring out isn't okay, it's going to be extremely hard to support this (I'd say infeasible). If it is, then just to consider and play around with a phrasing...

check-jsonschema --reject deprecated,readOnly

Looks decent to me. I like the brevity of --reject as a name for it, but it could also be something like --error-on.

emilal commented 4 months ago

The main questions I have coming out of that is

  • is erroring on deprecations acceptable?

My expectation would be that they're warnings by default (and could become errors in a strict mode).

That is also generally the use case for deprecations: Using the feature isn't an error, but will likely become so in the future, and it is desirable for users of the feature to find some alternate solution.