Tartiflette plugin providing common scalars, for data validation and strongly typed API schemas.
Python >= 3.6 Tartiflette >= 1.0.0
Simply install it with pip:
pip install tartiflette-plugin-scalars
Then start coding, by importing adding it to the modules list of tartiflette's create engine:
import asyncio
import datetime
from tartiflette import Resolver, create_engine
async def main():
sdl = """
type Query {
dateTime: DateTime
}
"""
@Resolver("Query.dateTime", schema_name="scalars")
async def resolve_date_time(*_args, **_kwargs):
return datetime.datetime(2019, 10, 29, 20, 23, 00, 00)
engine = await create_engine(
sdl=sdl,
modules=[
{
"name": "tartiflette_plugin_scalars",
"config": {"datetime": {"enabled": True}}
}
],
schema_name="scalars",
)
print(await engine.execute("query date { dateTime }"))
asyncio.run(main())
You can configure the plugin by passing a configuration dict during create_engine. This configuration can be used to disable or rename some scalars, as shown below:
engine = await create_engine(
sdl=sdl,
modules=[
{
"name": "tartiflette_plugin_scalars",
"config": {
"datetime": {"name": "MyDatetime"},
"postal_code": {"enabled": False},
},
}
],
schema_name="scalars",
)
Some plugins also accept more specific configuration values, that can be
specified in a sub-dict called options
. The options will be
passed to the scalar at instanciation time as **kwargs
to the init()
method.
engine = await create_engine(
sdl=sdl,
modules=[
{
"name": "tartiflette_plugin_scalars",
"config": {
"datetime": {"name": "MyDatetime"},
"postal_code": {"enabled": False, "options": {"key": "value"}},
},
}
],
schema_name="scalars",
)
Name | Configuration key | Description |
---|---|---|
EmailAddress | email_address | Represents an email addresses |
DateTime | datetime | Represents a non naive datetime object |
NaiveDateTime | naive_datetime | Represents an optionally naive datetime object |
Duration | duration | Represents a timedelta object |
NegativeFloat | negative_float | Represents a negative floating point number |
NegativeInt | negative_int | Represents a negative integer |
NonNegativeFloat | non_negative_float | Represents a positive or 0 floating point number |
NonNegativeInt | non_negative_int | Represents a positive or 0 integer |
PositiveFloat | positive_float | Represents a positive floating point number |
PositiveInt | positive_int | Represents a positive integer |
NonPositiveFloat | non_positive_float | Represents a negative or 0 floating point number |
NonPositiveInt | non_positive_int | Represents a negative or 0 integer |
Long | long | Represents integers between 0 and 2^63 |
BigInt | big_int | Represents arbitrary length integers |
UnsignedInt | unsigned_int | Represents integers between 0 and 2^32 |
PhoneNumber | phone_number | Represents a phone number |
PostalCode | postal_code | Represents a postal code |
URL | url | Represents an Uniform Resource Locator |
GUID | guid | Represents a Globally Unique IDentifier |
UUID | uuid | Represents a Universally Unique IDentifier |
HexColorCode | hex_color_code | Hexadecimal representation of a color |
HSL | hsl | Hue, Saturation and Lightness of a color |
HSLA | hsla | Hue, Saturation, Lightness and Alpha of a color |
RGB | rgb | Red, Green, Blue of a color |
RGBA | rgba | Red, Green, Blue and Alpha of a color |
IPv4 | ipv4 | Represents an Internet Protocol version 4 address |
IPv6 | ipv6 | Represents an Internet Protocol version 6 address |
MAC | mac | Represents a Media Access Control address |
ISBN | isbn | Represents an International Standard Book Number |
Port | port | Represents a TCP / UDP port |
USCurrency | us_currency | Represents an amount of USD |
JSON | json | Represents a JSON value |
JSONObject | json_object | Represents a JSON object |
GeoJSON | geo_json | Represents a GeoJSON value |