I'm making use of these in dbt, figured I'd upstream them:
NewPatternType for regex patterns, which acts like typing.NewType + register an encoder for it with the given pattern schema
HyphenatedJsonSchemaMixin, which overrides the field_mapping method to replace all underscores in field names with hyphens. It provides an opt-out metadata flag to avoid hyphenating single fields (This is nice for Project configs, for example)
ExtensibleJsonSchemaMixin - Exactly like our normal JsonSchemaMixin, except with the additonalProperties field set to True. We need this in a couple places where we consume opaque JSON objects that we only care about single fields in (registry results). It's a rare enough occurrence that I want to opt in to it, not opt out. A subclass is kind of a clunky way to do this, but it seems hard to annotate types themselves with this info.
I'm making use of these in dbt, figured I'd upstream them:
NewPatternType
for regex patterns, which acts like typing.NewType + register an encoder for it with the given pattern schemaHyphenatedJsonSchemaMixin
, which overrides the field_mapping method to replace all underscores in field names with hyphens. It provides an opt-out metadata flag to avoid hyphenating single fields (This is nice for Project configs, for example)ExtensibleJsonSchemaMixin
- Exactly like our normalJsonSchemaMixin
, except with the additonalProperties field set to True. We need this in a couple places where we consume opaque JSON objects that we only care about single fields in (registry results). It's a rare enough occurrence that I want to opt in to it, not opt out. A subclass is kind of a clunky way to do this, but it seems hard to annotate types themselves with this info.