district42 to JSON-Schema translator and vise versa
Project description
SchemaMaximal
district42 schemas โ JSON Schema
Installation
pip3 install schemax
Usage
Translation
>>> import schemax
>>> from d42 import schema
>>> ExampleSchema = schema.str.len(1, 10)
>>> schemax.to_json_schema(ExampleSchema)
{'type': 'string', 'minLength': 1, 'maxLength': 10}
Also, you could use schemax to translate from JSON-Schema to d42 and generate tests interfaces (in future releases) via command line:
$ schemax translate schema.json
Translation from JSON-Schema to d42-schema for schema.json:
schema.dict({
'number': schema.int.min(1),
optional('street_name'): schema.str,
...: ...
})
schema.json:
{
"type": "object",
"properties": {
"number": { "type": "integer", "minimum": 1 },
"street_name": { "type": "string" }
},
"required": ["number"],
"additionalProperties": true
}
Generation
schemax generate my-schema.yml
This command will generate request and response schemas files, API interface and basic scenarios.
You could add basic url to your API as following: --base-url="http://api.example.com".
Making your schemas and interfaces more "friendly" could --humanize flag.
Using SchemaData object in code
import yaml
from schemax import collect_schema_data, SchemaData
from typing import List
# Also could be JSON OpenAPI file
with open('my_openapi.yaml') as schema_file:
raw_schema = yaml.load(schema_file, yaml.FullLoader)
parsed_data: List[SchemaData] = collect_schema_data(raw_schema)
for item in parsed_data:
print(item.path)
print(item.response_schema_d42)
...
All the data is stored in SchemaData object, which has the following fields:
- http_method: HTTP method of the request.
- path: URL path of the request.
- converted_path: URL path converted to the camel-case for usage in schemax generation.
- args: Arguments of the request.
- queries: Query parameters of the request. Currently unsupported and always '[]'.
- interface_method: Interface name for usage in schemax generation.
- interface_method_humanized: Interface 'humanized' name for usage in schemax generation.
- status: Status code for specified schemas.
- schema_prefix: Schema prefix name for usage in schemax generation.
- schema_prefix_humanized: Schema prefix 'humanized' name for user in schemax generation.
- response_schema: Normalized response schema (without $ref).
- response_schema_d42: Converted to d42 response_schema.
- request_schema: Normalized request schema (without $ref).
- request_schema_d42: Converted to d42 request_schema.
- tags: Tags of the request from OpenAPI schema.
Supported d42 -> JSON Schema types and features
(โ - done; ๐ง - planned support; โ - unsupportable)
- None:
- โ schema.none
- Bool:
- Int:
- Float:
- Str:
- List:
- Dict:
- Any:
- โ schema.any
- โ schema.any(*types)
- โ schema.bytes
Supported JSON Schema -> d42 types and features
(โ - done; ๐ง - planned support; โ - unsupportable)
- โ null
- โ boolean
- โ
integer
- โ minimum
- โ maximum
- โ exclusiveMinimum Keep in mind, that we're just taking exclusiveMinimum + 1 as schema.int.min
- โ exclusiveMaximum Keep in mind, that we're just taking exclusiveMaximum - 1 as schema.int.max
- โ multiples
- โ
number
- โ minimum
- โ maximum
- ๐ง exclusiveMinimum
- ๐ง exclusiveMaximum
- โ multiples
- โ string
- โ
array
- โ items
- โ length
- โ prefixItems
- โ unevaluatedItems
- โ uniqueness
- โ
object
- โ properties
- โ patterProperties
- โ additionalProperties
- โ requiredProperties
- โ propertyName
- โ size
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file schemax-2.0.5.tar.gz.
File metadata
- Download URL: schemax-2.0.5.tar.gz
- Upload date:
- Size: 21.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
737ece55b628523247c27f7991517857b48ed4f5198068dba86beeea97e9361d
|
|
| MD5 |
33e5f6cabc45ff8d28c0966a3bdf1d98
|
|
| BLAKE2b-256 |
f10f4b97e6227d6632aa6ffe393e5a3d3484fa89ea92ec2de1b35a9ed9a7a959
|
File details
Details for the file schemax-2.0.5-py3-none-any.whl.
File metadata
- Download URL: schemax-2.0.5-py3-none-any.whl
- Upload date:
- Size: 20.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
daa8cc5c2c09e971ada2e8c33300b4e0cc6bc381f13d941bbc2a1ef0f468f59a
|
|
| MD5 |
e103f2569f5f141e7750e6da2408bcdb
|
|
| BLAKE2b-256 |
c78e724a79410923a3be916444bc6d99bb1e6a4c70b81a9f9aeabe11e6b8ed3c
|