swagger-marshmallow-codegen

concepts
- Code generation is better than meta programming
- Don't touch me(generated code) if you can
todo: write down detail.
examples
$ swagger-marshmallow-codegen definition.yaml > definition.py
definition.yaml
# todo: gentle example
definitions:
default:
properties:
string:
type: string
default: "default"
integer:
type: integer
default: 10
boolean:
type: boolean
default: true
date:
type: string
format: date
default: 2000-01-01
datetime:
type: string
format: date-time
default: 2000-01-01T01:01:01Z
object:
type: object
properties:
name:
type: string
default: foo
age:
type: integer
default: 20
default:
name: foo
age: 20
array:
type: array
items:
type: integer
default:
- 1
- 2
- 3
length-validation:
type: object
properties:
s0:
type: string
s1:
type: string
maxLength: 10
s2:
type: string
minLength: 5
s3:
type: string
maxLength: 10
minLength: 5
maximum-validation:
type: object
properties:
n0:
type: number
maximum: 100
n1:
type: number
maximum: 100
exclusiveMaximum: true
n2:
type: number
maximum: 100
exclusiveMaximum: false
m0:
type: number
minimum: 100
m1:
type: number
minimum: 100
exclusiveMinimum: true
m2:
type: number
minimum: 100
exclusiveMinimum: false
regex-validation:
type: object
properties:
team:
type: string
pattern: team[1-9][0-9]+
team2:
type: string
pattern: team[1-9][0-9]+
maxLength: 10
array-validation:
type: object
properties:
nums:
type: array
items:
type: integer
maxItems: 10
minItems: 1
uniqueItems: true
color:
type: string
enum:
- R
- G
- B
yen:
type: integer
enum:
- 1
- 5
- 10
- 50
- 100
- 500
- 1000
- 5000
- 10000
huge-yen:
typ
definition.py
# -*- coding:utf-8 -*-
# this is auto-generated by swagger-marshmallow-codegen
from marshmallow import (
Schema,
fields
)
import datetime
from collections import OrderedDict
from marshmallow.validate import (
Length,
OneOf,
Regexp
)
from swagger_marshmallow_codegen.validate import (
ItemsRange,
MultipleOf,
Range,
Unique
)
import re
class Default(Schema):
string = fields.String(missing=lambda: 'default')
integer = fields.Integer(missing=lambda: 10)
boolean = fields.Boolean(missing=lambda: True)
date = fields.Date(missing=lambda: datetime.date(2000, 1, 1))
datetime = fields.DateTime(missing=lambda: datetime.datetime(2000, 1, 1, 1, 1, 1))
object = fields.Nested('DefaultObject', missing=lambda: OrderedDict([('name', 'foo'), ('age', 20)]))
array = fields.List(fields.Integer(), missing=lambda: [1, 2, 3])
class DefaultObject(Schema):
name = fields.String(missing=lambda: 'foo')
age = fields.Integer(missing=lambda: 20)
class Length_validation(Schema):
s0 = fields.String()
s1 = fields.String(validate=[Length(min=None, max=10, equal=None)])
s2 = fields.String(validate=[Length(min=5, max=None, equal=None)])
s3 = fields.String(validate=[Length(min=5, max=10, equal=None)])
class Maximum_validation(Schema):
n0 = fields.Number(validate=[Range(min=None, max=100, min_inclusive=True, max_inclusive=True)])
n1 = fields.Number(validate=[Range(min=None, max=100, min_inclusive=True, max_inclusive=False)])
n2 = fields.Number(validate=[Range(min=None, max=100, min_inclusive=True, max_inclusive=True)])
m0 = fields.Number(validate=[Range(min=100, max=None, min_inclusive=True, max_inclusive=True)])
m1 = fields.Number(validate=[Range(min=100, max=None, min_inclusive=False, max_inclusive=True)])
m2 = fields.Number(validate=[Range(min=100, max=None, min_inclusive=True, max_inclusive=True)])
class Regex_validation(Schema):
team = fields.String(validate=[Regexp(regex=re.compile('team[1-9][0-9]+'))])
team2 = fields.String(validate=[Length(min=None, max=10, equal=None), Regexp(regex=re.compile('team[1-9][0-9]+'))])
class Array_validation(Schema):
nums = fields.List(fields.Integer(), validate=[ItemsRange(min=1, max=10, min_inclusive=True, max_inclusive=True), Unique()])
class Enum_validation(Schema):
name = fields.String(required=True)
money = fields.Integer(validate=[OneOf(choices=[1, 5, 10, 50, 100, 500, 1000, 5000, 10000], labels=[])])
deposit = fields.Integer(validate=[MultipleOf(n=10000)])
color = fields.String(required=True, validate=[OneOf(choices=['R', 'G', 'B'], labels=[])])
customization:
todo: write down
https://github.com/podhmo/swagger-marshmallow-codegen/issues/1
todo:
x-marshmallow-name
Metadata
Release files for swagger-marshmallow-codegen 0.6.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| swagger-marshmallow-codegen-0.6.5.tar.gz | 22.6 kB | Without provenance | Details for swagger-marshmallow-codegen-0.6.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| swagger_marshmallow_codegen-0.6.5-py3-none-any.whl | Python 3 | none | any | Details for swagger_marshmallow_codegen-0.6.5-py3-none-any.whl |
Total release size: 56.3 kB
Release files / swagger-marshmallow-codegen-0.6.5.tar.gz
| Download URL | swagger-marshmallow-codegen-0.6.5.tar.gz |
|---|---|
| Size | 22.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0e2a41ee43454ed3759965321343e0c3ded4ed535a3696f6303bdbc59cafc840
|
|
BLAKE2b-256 checksum How to use checksums |
b04b019a556dca8da975339ab7fd6814479b4981351d3ba4529fbbb367fd6b32
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.6
|
Release files / swagger_marshmallow_codegen-0.6.5-py3-none-any.whl
| Download URL | swagger_marshmallow_codegen-0.6.5-py3-none-any.whl |
|---|---|
| Size | 33.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6052e2cc343a94192dc7ee1f4ee6e8a3bf5ac527cc5336765d6d78186dbcdd0c
|
|
BLAKE2b-256 checksum How to use checksums |
07e5e0cd7ddfa3c8885fda6c3bb6cbed8a9c4ccc9374b220dd248dd69cb0f8cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.6
|
Security for swagger-marshmallow-codegen 0.6.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.