Comments (1)
A workaround that seems to work for me (my use case is demarshalling based on string types, so YMMV). The __post_init__
code may not be necessary, or maybe you want to go the other way (convert from enum to int, although the enum inherits from int so it should not be necessary).
class Constant(dict):
def __getitem__(self, value):
if not value in self:
typ = type(value)
self[value] = Enum(f'<Constant_{typ.__name__}:{value}>', type=typ, names=[('value', value)])
return dict.__getitem__(self, value)
Constant = Constant()
@dataclass
class Rectangle(JsonSchemaMixin):
max_width: Constant[20] = Constant[20].value
x: int
y: int
def __post_init__(self):
self.max_width = Constant[20](self.max_width)
This generates {"type": "integer", "enum": [20], "default": 20}
which looks right.
from dataclasses-jsonschema.
Related Issues (20)
- Verify that literal values are valid when decoding HOT 2
- JsonSchemaMixin not working with multiple inheritance. HOT 1
- Optional object is not working HOT 3
- Support discriminators when used with Union types
- Dataclass from json schema
- support for range type?
- apply JsonSchema via class decorator (instead of inheritance)
- The declaration of `ForwardRef` in `get_class_type_hints` doesn't include `is_class`, which breaks evaluation on Python >=3.9.8
- _NULL_TYPE not JSON serializable
- Optional List of dataclasses does not allow None Value HOT 2
- Tuples don't work properly
- Order in `Union` field containing `JsonSchemaMixin` matters (i.e. throws for some orders)
- Support for Python 3.10
- Schema for tuple types incompatible with OpenAPI Spec 3.0
- FieldEncoder `json_schema` property not used by validator HOT 1
- Dataclass: Unable to create schema for 'str | None' HOT 1
- TypeError thrown from valid Union type HOT 2
- Pipe | as alternative of Union is not working properly HOT 3
- Validation: How to validate from "bad" dataclass object directly? HOT 1
- schema doesn't support inline definition
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dataclasses-jsonschema.