Skip to main content

Scalars

In this section

About Scalars

Scalars are primitive values: Int, Float, String, Boolean, or ID.

When calling the GraphQL API, you must specify nested subfields until you return only scalars.

BigInt

The BigInt scalar type represents non-fractional whole numeric values. BigInt is not constrained to 32-bit like the Int type and thus is a less compatible type.

Example

1

Boolean

The Boolean scalar type represents true or false.

Example

true

Date

The Date scalar type represents a Date value as specified by iso8601.

Example

"2020-01-01"

DateTime

The DateTime scalar type represents a DateTime value as specified by iso8601.

Example

"2020-01-01T00:00:00.000Z"

Decimal

The Decimal scalar type represents a python Decimal.

Example

1.0

Example

UNKNOWN

Float

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

Example

1.0

FloatSafeDecimal

A subclass of the Decimal type which can handle floating point values gracefully by converting them to strings before trying to convert them to Decimals.

To see why this is valuable, consider the following python shell session where we construct Decimal values from floats and strings in turn:

initial_val = 20.6

Decimal(initial_val) Decimal('20.60000000000000142108547152020037174224853515625')

Decimal(str(initial_val)) Decimal('20.6')

  • NOTE ON EDGE CASES FOR HIGH PRECISION INPUTS *

Note that cpython itself only retains up to 17 digits of precision for a float, and disregards the rest, so if your input is a really big float, then this won't do you much good, because:

str(float('1.11111111111111111111111111111111111111111111111')) '1.1111111111111112'

  • whereas

str(Decimal('1.11111111111111111111111111111111111111111111111')) '1.11111111111111111111111111111111111111111111111'

But that's not really the problem this class is trying to help with. It's to help with what look like 'simple' numbers (like 20.2), which end up being converted to very long ones with a slightly different value when converted to a decimal.

Example

20.6

GenericScalar

The GenericScalar scalar type represents a generic GraphQL scalar value that could be: String, Boolean, Int, Float, List or Object.

Example

"abc123" | 1 | 1.0 | true | ["abc123"] | AccountType

ID

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example

"abc123"

Int

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example

1

JSONString

Allows use of a JSON String for input / output from the GraphQL schema.

Use of this type is not recommended as you lose the benefits of having a defined, static schema (one of the key benefits of GraphQL).

Example

{"key": "value"}

NonEmptyString

Custom scalar type representing a non-empty string.

Example

UNKNOWN

NormalizedDecimal

A subclass of the Decimal type that normalizes the value before converting it into a string.

For example, "4.000" will be converted to "4" and "4.100" will be converted to "4.1".

Example

UNKNOWN

RoleString

Graphene String that validates against the available roles.

Example

UNKNOWN

String

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example

"abc123"

Time

The Time scalar type represents a Time value as specified by iso8601.

Example

"00:00:00.000Z"

UUID

Leverages the internal Python implementation of UUID (uuid.UUID) to provide native UUID objects in fields, resolvers and input.

Example

"500c164d-38c7-4f74-9ac6-be210197e9e4"