Skip to main content

Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy

Project description

orjson

orjson is a fast, correct JSON library for Python. It benchmarks as the fastest Python library for JSON and is more correct than the standard json library or other third-party libraries. It serializes dataclass, datetime, numpy, and UUID instances natively.

Its features and drawbacks compared to other Python JSON libraries:

  • serializes dataclass instances 40-50x as fast as other libraries
  • serializes datetime, date, and time instances to RFC 3339 format, e.g., "1970-01-01T00:00:00+00:00"
  • serializes numpy.ndarray instances 4-12x as fast with 0.3x the memory usage of other libraries
  • pretty prints 10x to 20x as fast as the standard library
  • serializes to bytes rather than str, i.e., is not a drop-in replacement
  • serializes str without escaping unicode to ASCII, e.g., "好" rather than "\\u597d"
  • serializes float 10x as fast and deserializes twice as fast as other libraries
  • serializes subclasses of str, int, list, and dict natively, requiring default to specify how to serialize others
  • serializes arbitrary types using a default hook
  • has strict UTF-8 conformance, more correct than the standard library
  • has strict JSON conformance in not supporting Nan/Infinity/-Infinity
  • has an option for strict JSON conformance on 53-bit integers with default support for 64-bit
  • does not provide load() or dump() functions for reading from/writing to file-like objects

orjson supports CPython 3.7, 3.8, 3.9, 3.10, and 3.11. It distributes x86_64/amd64, aarch64/armv8, arm7, POWER/ppc64le, and s390x wheels for Linux, amd64 and aarch64 wheels for macOS, and amd64 wheels for Windows. orjson does not support PyPy. Releases follow semantic versioning and serializing a new object type without an opt-in flag is considered a breaking change.

orjson is licensed under both the Apache 2.0 and MIT licenses. The repository and issue tracker is github.com/ijl/orjson, and patches may be submitted there. There is a CHANGELOG available in the repository.

  1. Usage
    1. Install
    2. Quickstart
    3. Migrating
    4. Serialize
      1. default
      2. option
    5. Deserialize
  2. Types
    1. dataclass
    2. datetime
    3. enum
    4. float
    5. int
    6. numpy
    7. str
    8. uuid
  3. Testing
  4. Performance
    1. Latency
    2. Memory
    3. Reproducing
  5. Questions
  6. Packaging
  7. License

Usage

Install

To install a wheel from PyPI:

pip install --upgrade "pip>=20.3" # manylinux_x_y, universal2 wheel support
pip install --upgrade orjson

To build a wheel, see packaging.

Quickstart

This is an example of serializing, with options specified, and deserializing:

>>> import orjson, datetime, numpy
>>> data = {
    "type": "job",
    "created_at": datetime.datetime(1970, 1, 1),
    "status": "🆗",
    "payload": numpy.array([[1, 2], [3, 4]]),
}
>>> orjson.dumps(data, option=orjson.OPT_NAIVE_UTC | orjson.OPT_SERIALIZE_NUMPY)
b'{"type":"job","created_at":"1970-01-01T00:00:00+00:00","status":"\xf0\x9f\x86\x97","payload":[[1,2],[3,4]]}'
>>> orjson.loads(_)
{'type': 'job', 'created_at': '1970-01-01T00:00:00+00:00', 'status': '🆗', 'payload': [[1, 2], [3, 4]]}

Migrating

orjson version 3 serializes more types than version 2. Subclasses of str, int, dict, and list are now serialized. This is faster and more similar to the standard library. It can be disabled with orjson.OPT_PASSTHROUGH_SUBCLASS.dataclasses.dataclass instances are now serialized by default and cannot be customized in a default function unless option=orjson.OPT_PASSTHROUGH_DATACLASS is specified. uuid.UUID instances are serialized by default. For any type that is now serialized, implementations in a default function and options enabling them can be removed but do not need to be. There was no change in deserialization.

To migrate from the standard library, the largest difference is that orjson.dumps returns bytes and json.dumps returns a str. Users with dict objects using non-str keys should specify option=orjson.OPT_NON_STR_KEYS. sort_keys is replaced by option=orjson.OPT_SORT_KEYS. indent is replaced by option=orjson.OPT_INDENT_2 and other levels of indentation are not supported.

Serialize

def dumps(
    __obj: Any,
    default: Optional[Callable[[Any], Any]] = ...,
    option: Optional[int] = ...,
) -> bytes: ...

dumps() serializes Python objects to JSON.

It natively serializes str, dict, list, tuple, int, float, bool, dataclasses.dataclass, typing.TypedDict, datetime.datetime, datetime.date, datetime.time, uuid.UUID, numpy.ndarray, and None instances. It supports arbitrary types through default. It serializes subclasses of str, int, dict, list, dataclasses.dataclass, and enum.Enum. It does not serialize subclasses of tuple to avoid serializing namedtuple objects as arrays. To avoid serializing subclasses, specify the option orjson.OPT_PASSTHROUGH_SUBCLASS.

The output is a bytes object containing UTF-8.

The global interpreter lock (GIL) is held for the duration of the call.

It raises JSONEncodeError on an unsupported type. This exception message describes the invalid object with the error message Type is not JSON serializable: .... To fix this, specify default.

It raises JSONEncodeError on a str that contains invalid UTF-8.

It raises JSONEncodeError on an integer that exceeds 64 bits by default or, with OPT_STRICT_INTEGER, 53 bits.

It raises JSONEncodeError if a dict has a key of a type other than str, unless OPT_NON_STR_KEYS is specified.

It raises JSONEncodeError if the output of default recurses to handling by default more than 254 levels deep.

It raises JSONEncodeError on circular references.

It raises JSONEncodeError if a tzinfo on a datetime object is unsupported.

JSONEncodeError is a subclass of TypeError. This is for compatibility with the standard library.

If the failure was caused by an exception in default then JSONEncodeError chains the original exception as __cause__.

default

To serialize a subclass or arbitrary types, specify default as a callable that returns a supported type. default may be a function, lambda, or callable class instance. To specify that a type was not handled by default, raise an exception such as TypeError.

>>> import orjson, decimal
>>>
def default(obj):
    if isinstance(obj, decimal.Decimal):
        return str(obj)
    raise TypeError

>>> orjson.dumps(decimal.Decimal("0.0842389659712649442845"))
JSONEncodeError: Type is not JSON serializable: decimal.Decimal
>>> orjson.dumps(decimal.Decimal("0.0842389659712649442845"), default=default)
b'"0.0842389659712649442845"'
>>> orjson.dumps({1, 2}, default=default)
orjson.JSONEncodeError: Type is not JSON serializable: set

The default callable may return an object that itself must be handled by default up to 254 times before an exception is raised.

It is important that default raise an exception if a type cannot be handled. Python otherwise implicitly returns None, which appears to the caller like a legitimate value and is serialized:

>>> import orjson, json, rapidjson
>>>
def default(obj):
    if isinstance(obj, decimal.Decimal):
        return str(obj)

>>> orjson.dumps({"set":{1, 2}}, default=default)
b'{"set":null}'
>>> json.dumps({"set":{1, 2}}, default=default)
'{"set":null}'
>>> rapidjson.dumps({"set":{1, 2}}, default=default)
'{"set":null}'

option

To modify how data is serialized, specify option. Each option is an integer constant in orjson. To specify multiple options, mask them together, e.g., option=orjson.OPT_STRICT_INTEGER | orjson.OPT_NAIVE_UTC.

OPT_APPEND_NEWLINE

Append \n to the output. This is a convenience and optimization for the pattern of dumps(...) + "\n". bytes objects are immutable and this pattern copies the original contents.

>>> import orjson
>>> orjson.dumps([])
b"[]"
>>> orjson.dumps([], option=orjson.OPT_APPEND_NEWLINE)
b"[]\n"
OPT_INDENT_2

Pretty-print output with an indent of two spaces. This is equivalent to indent=2 in the standard library. Pretty printing is slower and the output larger. orjson is the fastest compared library at pretty printing and has much less of a slowdown to pretty print than the standard library does. This option is compatible with all other options.

>>> import orjson
>>> orjson.dumps({"a": "b", "c": {"d": True}, "e": [1, 2]})
b'{"a":"b","c":{"d":true},"e":[1,2]}'
>>> orjson.dumps(
    {"a": "b", "c": {"d": True}, "e": [1, 2]},
    option=orjson.OPT_INDENT_2
)
b'{\n  "a": "b",\n  "c": {\n    "d": true\n  },\n  "e": [\n    1,\n    2\n  ]\n}'

If displayed, the indentation and linebreaks appear like this:

{
  "a": "b",
  "c": {
    "d": true
  },
  "e": [
    1,
    2
  ]
}

This measures serializing the github.json fixture as compact (52KiB) or pretty (64KiB):

Library compact (ms) pretty (ms) vs. orjson
orjson 0.03 0.04 1
ujson 0.18 0.19 4.6
rapidjson 0.1 0.12 2.9
simplejson 0.25 0.89 21.4
json 0.18 0.71 17

This measures serializing the citm_catalog.json fixture, more of a worst case due to the amount of nesting and newlines, as compact (489KiB) or pretty (1.1MiB):

Library compact (ms) pretty (ms) vs. orjson
orjson 0.59 0.71 1
ujson 2.9 3.59 5
rapidjson 1.81 2.8 3.9
simplejson 10.43 42.13 59.1
json 4.16 33.42 46.9

This can be reproduced using the pyindent script.

OPT_NAIVE_UTC

Serialize datetime.datetime objects without a tzinfo as UTC. This has no effect on datetime.datetime objects that have tzinfo set.

>>> import orjson, datetime
>>> orjson.dumps(
        datetime.datetime(1970, 1, 1, 0, 0, 0),
    )
b'"1970-01-01T00:00:00"'
>>> orjson.dumps(
        datetime.datetime(1970, 1, 1, 0, 0, 0),
        option=orjson.OPT_NAIVE_UTC,
    )
b'"1970-01-01T00:00:00+00:00"'
OPT_NON_STR_KEYS

Serialize dict keys of type other than str. This allows dict keys to be one of str, int, float, bool, None, datetime.datetime, datetime.date, datetime.time, enum.Enum, and uuid.UUID. For comparison, the standard library serializes str, int, float, bool or None by default. orjson benchmarks as being faster at serializing non-str keys than other libraries. This option is slower for str keys than the default.

>>> import orjson, datetime, uuid
>>> orjson.dumps(
        {uuid.UUID("7202d115-7ff3-4c81-a7c1-2a1f067b1ece"): [1, 2, 3]},
        option=orjson.OPT_NON_STR_KEYS,
    )
b'{"7202d115-7ff3-4c81-a7c1-2a1f067b1ece":[1,2,3]}'
>>> orjson.dumps(
        {datetime.datetime(1970, 1, 1, 0, 0, 0): [1, 2, 3]},
        option=orjson.OPT_NON_STR_KEYS | orjson.OPT_NAIVE_UTC,
    )
b'{"1970-01-01T00:00:00+00:00":[1,2,3]}'

These types are generally serialized how they would be as values, e.g., datetime.datetime is still an RFC 3339 string and respects options affecting it. The exception is that int serialization does not respect OPT_STRICT_INTEGER.

This option has the risk of creating duplicate keys. This is because non-str objects may serialize to the same str as an existing key, e.g., {"1": true, 1: false}. The last key to be inserted to the dict will be serialized last and a JSON deserializer will presumably take the last occurrence of a key (in the above, false). The first value will be lost.

This option is compatible with orjson.OPT_SORT_KEYS. If sorting is used, note the sort is unstable and will be unpredictable for duplicate keys.

>>> import orjson, datetime
>>> orjson.dumps(
    {"other": 1, datetime.date(1970, 1, 5): 2, datetime.date(1970, 1, 3): 3},
    option=orjson.OPT_NON_STR_KEYS | orjson.OPT_SORT_KEYS
)
b'{"1970-01-03":3,"1970-01-05":2,"other":1}'

This measures serializing 589KiB of JSON comprising a list of 100 dict in which each dict has both 365 randomly-sorted int keys representing epoch timestamps as well as one str key and the value for each key is a single integer. In "str keys", the keys were converted to str before serialization, and orjson still specifes option=orjson.OPT_NON_STR_KEYS (which is always somewhat slower).

Library str keys (ms) int keys (ms) int keys sorted (ms)
orjson 1.53 2.16 4.29
ujson 3.07 5.65
rapidjson 4.29
simplejson 11.24 14.50 21.86
json 7.17 8.49

ujson is blank for sorting because it segfaults. json is blank because it raises TypeError on attempting to sort before converting all keys to str. rapidjson is blank because it does not support non-str keys. This can be reproduced using the pynonstr script.

OPT_OMIT_MICROSECONDS

Do not serialize the microsecond field on datetime.datetime and datetime.time instances.

>>> import orjson, datetime
>>> orjson.dumps(
        datetime.datetime(1970, 1, 1, 0, 0, 0, 1),
    )
b'"1970-01-01T00:00:00.000001"'
>>> orjson.dumps(
        datetime.datetime(1970, 1, 1, 0, 0, 0, 1),
        option=orjson.OPT_OMIT_MICROSECONDS,
    )
b'"1970-01-01T00:00:00"'
OPT_PASSTHROUGH_DATACLASS

Passthrough dataclasses.dataclass instances to default. This allows customizing their output but is much slower.

>>> import orjson, dataclasses
>>>
@dataclasses.dataclass
class User:
    id: str
    name: str
    password: str

def default(obj):
    if isinstance(obj, User):
        return {"id": obj.id, "name": obj.name}
    raise TypeError

>>> orjson.dumps(User("3b1", "asd", "zxc"))
b'{"id":"3b1","name":"asd","password":"zxc"}'
>>> orjson.dumps(User("3b1", "asd", "zxc"), option=orjson.OPT_PASSTHROUGH_DATACLASS)
TypeError: Type is not JSON serializable: User
>>> orjson.dumps(
        User("3b1", "asd", "zxc"),
        option=orjson.OPT_PASSTHROUGH_DATACLASS,
        default=default,
    )
b'{"id":"3b1","name":"asd"}'
OPT_PASSTHROUGH_DATETIME

Passthrough datetime.datetime, datetime.date, and datetime.time instances to default. This allows serializing datetimes to a custom format, e.g., HTTP dates:

>>> import orjson, datetime
>>>
def default(obj):
    if isinstance(obj, datetime.datetime):
        return obj.strftime("%a, %d %b %Y %H:%M:%S GMT")
    raise TypeError

>>> orjson.dumps({"created_at": datetime.datetime(1970, 1, 1)})
b'{"created_at":"1970-01-01T00:00:00"}'
>>> orjson.dumps({"created_at": datetime.datetime(1970, 1, 1)}, option=orjson.OPT_PASSTHROUGH_DATETIME)
TypeError: Type is not JSON serializable: datetime.datetime
>>> orjson.dumps(
        {"created_at": datetime.datetime(1970, 1, 1)},
        option=orjson.OPT_PASSTHROUGH_DATETIME,
        default=default,
    )
b'{"created_at":"Thu, 01 Jan 1970 00:00:00 GMT"}'

This does not affect datetimes in dict keys if using OPT_NON_STR_KEYS.

OPT_PASSTHROUGH_SUBCLASS

Passthrough subclasses of builtin types to default.

>>> import orjson
>>>
class Secret(str):
    pass

def default(obj):
    if isinstance(obj, Secret):
        return "******"
    raise TypeError

>>> orjson.dumps(Secret("zxc"))
b'"zxc"'
>>> orjson.dumps(Secret("zxc"), option=orjson.OPT_PASSTHROUGH_SUBCLASS)
TypeError: Type is not JSON serializable: Secret
>>> orjson.dumps(Secret("zxc"), option=orjson.OPT_PASSTHROUGH_SUBCLASS, default=default)
b'"******"'

This does not affect serializing subclasses as dict keys if using OPT_NON_STR_KEYS.

OPT_SERIALIZE_DATACLASS

This is deprecated and has no effect in version 3. In version 2 this was required to serialize dataclasses.dataclass instances. For more, see dataclass.

OPT_SERIALIZE_NUMPY

Serialize numpy.ndarray instances. For more, see numpy.

OPT_SERIALIZE_UUID

This is deprecated and has no effect in version 3. In version 2 this was required to serialize uuid.UUID instances. For more, see UUID.

OPT_SORT_KEYS

Serialize dict keys in sorted order. The default is to serialize in an unspecified order. This is equivalent to sort_keys=True in the standard library.

This can be used to ensure the order is deterministic for hashing or tests. It has a substantial performance penalty and is not recommended in general.

>>> import orjson
>>> orjson.dumps({"b": 1, "c": 2, "a": 3})
b'{"b":1,"c":2,"a":3}'
>>> orjson.dumps({"b": 1, "c": 2, "a": 3}, option=orjson.OPT_SORT_KEYS)
b'{"a":3,"b":1,"c":2}'

This measures serializing the twitter.json fixture unsorted and sorted:

Library unsorted (ms) sorted (ms) vs. orjson
orjson 0.32 0.54 1
ujson 1.6 2.07 3.8
rapidjson 1.12 1.65 3.1
simplejson 2.25 3.13 5.8
json 1.78 2.32 4.3

The benchmark can be reproduced using the pysort script.

The sorting is not collation/locale-aware:

>>> import orjson
>>> orjson.dumps({"a": 1, "ä": 2, "A": 3}, option=orjson.OPT_SORT_KEYS)
b'{"A":3,"a":1,"\xc3\xa4":2}'

This is the same sorting behavior as the standard library, rapidjson, simplejson, and ujson.

dataclass also serialize as maps but this has no effect on them.

OPT_STRICT_INTEGER

Enforce 53-bit limit on integers. The limit is otherwise 64 bits, the same as the Python standard library. For more, see int.

OPT_UTC_Z

Serialize a UTC timezone on datetime.datetime instances as Z instead of +00:00.

>>> import orjson, datetime, zoneinfo
>>> orjson.dumps(
        datetime.datetime(1970, 1, 1, 0, 0, 0, tzinfo=zoneinfo.ZoneInfo("UTC")),
    )
b'"1970-01-01T00:00:00+00:00"'
>>> orjson.dumps(
        datetime.datetime(1970, 1, 1, 0, 0, 0, tzinfo=zoneinfo.ZoneInfo("UTC")),
        option=orjson.OPT_UTC_Z
    )
b'"1970-01-01T00:00:00Z"'

Deserialize

def loads(__obj: Union[bytes, bytearray, memoryview, str]) -> Any: ...

loads() deserializes JSON to Python objects. It deserializes to dict, list, int, float, str, bool, and None objects.

bytes, bytearray, memoryview, and str input are accepted. If the input exists as a memoryview, bytearray, or bytes object, it is recommended to pass these directly rather than creating an unnecessary str object. That is, orjson.loads(b"{}") instead of orjson.loads(b"{}".decode("utf-8")). This has lower memory usage and lower latency.

The input must be valid UTF-8.

orjson maintains a cache of map keys for the duration of the process. This causes a net reduction in memory usage by avoiding duplicate strings. The keys must be at most 64 bytes to be cached and 1024 entries are stored.

The global interpreter lock (GIL) is held for the duration of the call.

It raises JSONDecodeError if given an invalid type or invalid JSON. This includes if the input contains NaN, Infinity, or -Infinity, which the standard library allows, but is not valid JSON.

JSONDecodeError is a subclass of json.JSONDecodeError and ValueError. This is for compatibility with the standard library.

Types

dataclass

orjson serializes instances of dataclasses.dataclass natively. It serializes instances 40-50x as fast as other libraries and avoids a severe slowdown seen in other libraries compared to serializing dict.

It is supported to pass all variants of dataclasses, including dataclasses using __slots__, frozen dataclasses, those with optional or default attributes, and subclasses. There is a performance benefit to not using __slots__.

Library dict (ms) dataclass (ms) vs. orjson
orjson 1.40 1.60 1
ujson
rapidjson 3.64 68.48 42
simplejson 14.21 92.18 57
json 13.28 94.90 59

This measures serializing 555KiB of JSON, orjson natively and other libraries using default to serialize the output of dataclasses.asdict(). This can be reproduced using the pydataclass script.

Dataclasses are serialized as maps, with every attribute serialized and in the order given on class definition:

>>> import dataclasses, orjson, typing

@dataclasses.dataclass
class Member:
    id: int
    active: bool = dataclasses.field(default=False)

@dataclasses.dataclass
class Object:
    id: int
    name: str
    members: typing.List[Member]

>>> orjson.dumps(Object(1, "a", [Member(1, True), Member(2)]))
b'{"id":1,"name":"a","members":[{"id":1,"active":true},{"id":2,"active":false}]}'

datetime

orjson serializes datetime.datetime objects to RFC 3339 format, e.g., "1970-01-01T00:00:00+00:00". This is a subset of ISO 8601 and is compatible with isoformat() in the standard library.

>>> import orjson, datetime, zoneinfo
>>> orjson.dumps(
    datetime.datetime(2018, 12, 1, 2, 3, 4, 9, tzinfo=zoneinfo.ZoneInfo("Australia/Adelaide"))
)
b'"2018-12-01T02:03:04.000009+10:30"'
>>> orjson.dumps(
    datetime.datetime(2100, 9, 1, 21, 55, 2).replace(tzinfo=zoneinfo.ZoneInfo("UTC"))
)
b'"2100-09-01T21:55:02+00:00"'
>>> orjson.dumps(
    datetime.datetime(2100, 9, 1, 21, 55, 2)
)
b'"2100-09-01T21:55:02"'

datetime.datetime supports instances with a tzinfo that is None, datetime.timezone.utc, a timezone instance from the python3.9+ zoneinfo module, or a timezone instance from the third-party pendulum, pytz, or dateutil/arrow libraries.

It is fastest to use the standard library's zoneinfo.ZoneInfo for timezones.

datetime.time objects must not have a tzinfo.

>>> import orjson, datetime
>>> orjson.dumps(datetime.time(12, 0, 15, 290))
b'"12:00:15.000290"'

datetime.date objects will always serialize.

>>> import orjson, datetime
>>> orjson.dumps(datetime.date(1900, 1, 2))
b'"1900-01-02"'

Errors with tzinfo result in JSONEncodeError being raised.

To disable serialization of datetime objects specify the option orjson.OPT_PASSTHROUGH_DATETIME.

To use "Z" suffix instead of "+00:00" to indicate UTC ("Zulu") time, use the option orjson.OPT_UTC_Z.

To assume datetimes without timezone are UTC, use the option orjson.OPT_NAIVE_UTC.

enum

orjson serializes enums natively. Options apply to their values.

>>> import enum, datetime, orjson
>>>
class DatetimeEnum(enum.Enum):
    EPOCH = datetime.datetime(1970, 1, 1, 0, 0, 0)
>>> orjson.dumps(DatetimeEnum.EPOCH)
b'"1970-01-01T00:00:00"'
>>> orjson.dumps(DatetimeEnum.EPOCH, option=orjson.OPT_NAIVE_UTC)
b'"1970-01-01T00:00:00+00:00"'

Enums with members that are not supported types can be serialized using default:

>>> import enum, orjson
>>>
class Custom:
    def __init__(self, val):
        self.val = val

def default(obj):
    if isinstance(obj, Custom):
        return obj.val
    raise TypeError

class CustomEnum(enum.Enum):
    ONE = Custom(1)

>>> orjson.dumps(CustomEnum.ONE, default=default)
b'1'

float

orjson serializes and deserializes double precision floats with no loss of precision and consistent rounding.

orjson.dumps() serializes Nan, Infinity, and -Infinity, which are not compliant JSON, as null:

>>> import orjson, ujson, rapidjson, json
>>> orjson.dumps([float("NaN"), float("Infinity"), float("-Infinity")])
b'[null,null,null]'
>>> ujson.dumps([float("NaN"), float("Infinity"), float("-Infinity")])
OverflowError: Invalid Inf value when encoding double
>>> rapidjson.dumps([float("NaN"), float("Infinity"), float("-Infinity")])
'[NaN,Infinity,-Infinity]'
>>> json.dumps([float("NaN"), float("Infinity"), float("-Infinity")])
'[NaN, Infinity, -Infinity]'

int

orjson serializes and deserializes 64-bit integers by default. The range supported is a signed 64-bit integer's minimum (-9223372036854775807) to an unsigned 64-bit integer's maximum (18446744073709551615). This is widely compatible, but there are implementations that only support 53-bits for integers, e.g., web browsers. For those implementations, dumps() can be configured to raise a JSONEncodeError on values exceeding the 53-bit range.

>>> import orjson
>>> orjson.dumps(9007199254740992)
b'9007199254740992'
>>> orjson.dumps(9007199254740992, option=orjson.OPT_STRICT_INTEGER)
JSONEncodeError: Integer exceeds 53-bit range
>>> orjson.dumps(-9007199254740992, option=orjson.OPT_STRICT_INTEGER)
JSONEncodeError: Integer exceeds 53-bit range

numpy

orjson natively serializes numpy.ndarray and individual numpy.float64, numpy.float32, numpy.int64, numpy.int32, numpy.int16, numpy.int8, numpy.uint64, numpy.uint32, numpy.uint16, numpy.uint8, numpy.uintp, or numpy.intp, and numpy.datetime64 instances.

orjson is faster than all compared libraries at serializing numpy instances. Serializing numpy data requires specifying option=orjson.OPT_SERIALIZE_NUMPY.

>>> import orjson, numpy
>>> orjson.dumps(
        numpy.array([[1, 2, 3], [4, 5, 6]]),
        option=orjson.OPT_SERIALIZE_NUMPY,
)
b'[[1,2,3],[4,5,6]]'

The array must be a contiguous C array (C_CONTIGUOUS) and one of the supported datatypes.

Note a difference between serializing numpy.float32 using ndarray.tolist() or orjson.dumps(..., option=orjson.OPT_SERIALIZE_NUMPY): tolist() converts to a double before serializing and orjson's native path does not. This can result in different rounding.

numpy.datetime64 instances are serialized as RFC 3339 strings and datetime options affect them.

>>> import orjson, numpy
>>> orjson.dumps(
        numpy.datetime64("2021-01-01T00:00:00.172"),
        option=orjson.OPT_SERIALIZE_NUMPY,
)
b'"2021-01-01T00:00:00.172000"'
>>> orjson.dumps(
        numpy.datetime64("2021-01-01T00:00:00.172"),
        option=(
            orjson.OPT_SERIALIZE_NUMPY |
            orjson.OPT_NAIVE_UTC |
            orjson.OPT_OMIT_MICROSECONDS
        ),
)
b'"2021-01-01T00:00:00+00:00"'

If an array is not a contiguous C array, contains an unsupported datatype, or contains a numpy.datetime64 using an unsupported representation (e.g., picoseconds), orjson falls through to default. In default, obj.tolist() can be specified. If an array is malformed, which is not expected, orjson.JSONEncodeError is raised.

This measures serializing 92MiB of JSON from an numpy.ndarray with dimensions of (50000, 100) and numpy.float64 values:

Library Latency (ms) RSS diff (MiB) vs. orjson
orjson 194 99 1.0
ujson
rapidjson 3,048 309 15.7
simplejson 3,023 297 15.6
json 3,133 297 16.1

This measures serializing 100MiB of JSON from an numpy.ndarray with dimensions of (100000, 100) and numpy.int32 values:

Library Latency (ms) RSS diff (MiB) vs. orjson
orjson 178 115 1.0
ujson
rapidjson 1,512 551 8.5
simplejson 1,606 504 9.0
json 1,506 503 8.4

This measures serializing 105MiB of JSON from an numpy.ndarray with dimensions of (100000, 200) and numpy.bool values:

Library Latency (ms) RSS diff (MiB) vs. orjson
orjson 157 120 1.0
ujson
rapidjson 710 327 4.5
simplejson 931 398 5.9
json 996 400 6.3

In these benchmarks, orjson serializes natively, ujson is blank because it does not support a default parameter, and the other libraries serialize ndarray.tolist() via default. The RSS column measures peak memory usage during serialization. This can be reproduced using the pynumpy script.

orjson does not have an installation or compilation dependency on numpy. The implementation is independent, reading numpy.ndarray using PyArrayInterface.

str

orjson is strict about UTF-8 conformance. This is stricter than the standard library's json module, which will serialize and deserialize UTF-16 surrogates, e.g., "\ud800", that are invalid UTF-8.

If orjson.dumps() is given a str that does not contain valid UTF-8, orjson.JSONEncodeError is raised. If loads() receives invalid UTF-8, orjson.JSONDecodeError is raised.

orjson and rapidjson are the only compared JSON libraries to consistently error on bad input.

>>> import orjson, ujson, rapidjson, json
>>> orjson.dumps('\ud800')
JSONEncodeError: str is not valid UTF-8: surrogates not allowed
>>> ujson.dumps('\ud800')
UnicodeEncodeError: 'utf-8' codec ...
>>> rapidjson.dumps('\ud800')
UnicodeEncodeError: 'utf-8' codec ...
>>> json.dumps('\ud800')
'"\\ud800"'
>>> orjson.loads('"\\ud800"')
JSONDecodeError: unexpected end of hex escape at line 1 column 8: line 1 column 1 (char 0)
>>> ujson.loads('"\\ud800"')
''
>>> rapidjson.loads('"\\ud800"')
ValueError: Parse error at offset 1: The surrogate pair in string is invalid.
>>> json.loads('"\\ud800"')
'\ud800'

To make a best effort at deserializing bad input, first decode bytes using the replace or lossy argument for errors:

>>> import orjson
>>> orjson.loads(b'"\xed\xa0\x80"')
JSONDecodeError: str is not valid UTF-8: surrogates not allowed
>>> orjson.loads(b'"\xed\xa0\x80"'.decode("utf-8", "replace"))
'���'

uuid

orjson serializes uuid.UUID instances to RFC 4122 format, e.g., "f81d4fae-7dec-11d0-a765-00a0c91e6bf6".

>>> import orjson, uuid
>>> orjson.dumps(uuid.UUID('f81d4fae-7dec-11d0-a765-00a0c91e6bf6'))
b'"f81d4fae-7dec-11d0-a765-00a0c91e6bf6"'
>>> orjson.dumps(uuid.uuid5(uuid.NAMESPACE_DNS, "python.org"))
b'"886313e1-3b8a-5372-9b90-0c9aee199e5d"'

Testing

The library has comprehensive tests. There are tests against fixtures in the JSONTestSuite and nativejson-benchmark repositories. It is tested to not crash against the Big List of Naughty Strings. It is tested to not leak memory. It is tested to not crash against and not accept invalid UTF-8. There are integration tests exercising the library's use in web servers (gunicorn using multiprocess/forked workers) and when multithreaded. It also uses some tests from the ultrajson library.

orjson is the most correct of the compared libraries. This graph shows how each library handles a combined 342 JSON fixtures from the JSONTestSuite and nativejson-benchmark tests:

Library Invalid JSON documents not rejected Valid JSON documents not deserialized
orjson 0 0
ujson 38 0
rapidjson 6 0
simplejson 13 0
json 17 0

This shows that all libraries deserialize valid JSON but only orjson correctly rejects the given invalid JSON fixtures. Errors are largely due to accepting invalid strings and numbers.

The graph above can be reproduced using the pycorrectness script.

Performance

Serialization and deserialization performance of orjson is better than ultrajson, rapidjson, simplejson, or json. The benchmarks are done on fixtures of real data:

  • twitter.json, 631.5KiB, results of a search on Twitter for "一", containing CJK strings, dictionaries of strings and arrays of dictionaries, indented.

  • github.json, 55.8KiB, a GitHub activity feed, containing dictionaries of strings and arrays of dictionaries, not indented.

  • citm_catalog.json, 1.7MiB, concert data, containing nested dictionaries of strings and arrays of integers, indented.

  • canada.json, 2.2MiB, coordinates of the Canadian border in GeoJSON format, containing floats and arrays, indented.

Latency

twitter.json serialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 0.33 3069.4 1
ujson 1.68 592.8 5.15
rapidjson 1.12 891 3.45
simplejson 2.29 436.2 7.03
json 1.8 556.6 5.52

twitter.json deserialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 0.81 1237.6 1
ujson 1.87 533.9 2.32
rapidjson 2.97 335.8 3.67
simplejson 2.15 463.8 2.66
json 2.45 408.2 3.03

github.json serialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 0.03 28817.3 1
ujson 0.18 5478.2 5.26
rapidjson 0.1 9686.4 2.98
simplejson 0.26 3901.3 7.39
json 0.18 5437 5.27

github.json deserialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 0.07 15270 1
ujson 0.19 5374.8 2.84
rapidjson 0.17 5854.9 2.59
simplejson 0.15 6707.4 2.27
json 0.16 6397.3 2.39

citm_catalog.json serialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 0.58 1722.5 1
ujson 2.89 345.6 4.99
rapidjson 1.83 546.4 3.15
simplejson 10.39 95.9 17.89
json 3.93 254.6 6.77

citm_catalog.json deserialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 1.76 569.2 1
ujson 3.5 284.3 1.99
rapidjson 5.77 173.2 3.28
simplejson 5.13 194.7 2.92
json 4.99 200.5 2.84

canada.json serialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 3.62 276.3 1
ujson 14.16 70.6 3.91
rapidjson 33.64 29.7 9.29
simplejson 57.46 17.4 15.88
json 35.7 28 9.86

canada.json deserialization

Library Median latency (milliseconds) Operations per second Relative (latency)
orjson 3.89 256.6 1
ujson 8.73 114.3 2.24
rapidjson 23.33 42.8 5.99
simplejson 23.99 41.7 6.16
json 21.1 47.4 5.42

Memory

orjson as of 3.7.0 has higher baseline memory usage than other libraries due to a persistent buffer used for parsing. Incremental memory usage when deserializing is similar to the standard library and other third-party libraries.

This measures, in the first column, RSS after importing a library and reading the fixture, and in the second column, increases in RSS after repeatedly calling loads() on the fixture.

twitter.json

Library import, read() RSS (MiB) loads() increase in RSS (MiB)
orjson 21.8 2.8
ujson 14.3 4.8
rapidjson 14.9 4.6
simplejson 13.4 2.4
json 13.1 2.3

github.json

Library import, read() RSS (MiB) loads() increase in RSS (MiB)
orjson 21.2 0.5
ujson 13.6 0.6
rapidjson 14.1 0.5
simplejson 12.5 0.3
json 12.4 0.3

citm_catalog.json

Library import, read() RSS (MiB) loads() increase in RSS (MiB)
orjson 23 10.6
ujson 15.2 11.2
rapidjson 15.8 29.7
simplejson 14.4 24.7
json 13.9 24.7

canada.json

Library import, read() RSS (MiB) loads() increase in RSS (MiB)
orjson 23.2 21.3
ujson 15.6 19.2
rapidjson 16.3 23.4
simplejson 15 21.1
json 14.3 20.9

Reproducing

The above was measured using Python 3.10.5 on Linux (amd64) with orjson 3.7.9, ujson 5.4.0, python-rapidson 1.8, and simplejson 3.17.6.

The latency results can be reproduced using the pybench and graph scripts. The memory results can be reproduced using the pymem script.

Questions

Why can't I install it from PyPI?

Probably pip needs to be upgraded to version 20.3 or later to support the latest manylinux_x_y or universal2 wheel formats.

"Cargo, the Rust package manager, is not installed or is not on PATH."

This happens when there are no binary wheels (like manylinux) for your platform on PyPI. You can install Rust through rustup or a package manager and then it will compile.

Will it deserialize to dataclasses, UUIDs, decimals, etc or support object_hook?

No. This requires a schema specifying what types are expected and how to handle errors etc. This is addressed by data validation libraries a level above this.

Will it serialize to str?

No. bytes is the correct type for a serialized blob.

Will it support PyPy?

Probably not.

Packaging

To package orjson requires at least Rust 1.60 and the maturin build tool. The recommended build command is:

maturin build --release --strip

It benefits from also having a C build environment to compile a faster deserialization backend. See this project's manylinux_2_28 builds for an example using clang and LTO.

The project's own CI tests against nightly-2023-05-07 and stable 1.60. It is prudent to pin the nightly version because that channel can introduce breaking changes.

orjson is tested for amd64, aarch64, arm7, ppc64le, and s390x on Linux. It is tested for amd64 on macOS and cross-compiles for aarch64. For Windows it is tested on amd64.

There are no runtime dependencies other than libc.

orjson's tests are included in the source distribution on PyPI. The requirements to run the tests are specified in test/requirements.txt. The tests should be run as part of the build. It can be run with pytest -q test.

License

orjson was written by ijl <ijl@mailbox.org>, copyright 2018 - 2023, licensed under both the Apache 2 and MIT licenses.

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

orjson-3.8.12.tar.gz (669.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

orjson-3.8.12-cp311-none-win_amd64.whl (195.1 kB view details)

Uploaded CPython 3.11Windows x86-64

orjson-3.8.12-cp311-cp311-musllinux_1_1_x86_64.whl (309.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

orjson-3.8.12-cp311-cp311-musllinux_1_1_aarch64.whl (317.3 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ARM64

orjson-3.8.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (137.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

orjson-3.8.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (147.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ s390x

orjson-3.8.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (143.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ppc64le

orjson-3.8.12-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (125.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARMv7l

orjson-3.8.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (263.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

orjson-3.8.12-cp311-cp311-macosx_11_0_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl (239.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64macOS 11.0+ universal2 (ARM64, x86-64)macOS 11.0+ x86-64

orjson-3.8.12-cp310-none-win_amd64.whl (195.1 kB view details)

Uploaded CPython 3.10Windows x86-64

orjson-3.8.12-cp310-cp310-musllinux_1_1_x86_64.whl (309.3 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

orjson-3.8.12-cp310-cp310-musllinux_1_1_aarch64.whl (317.3 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

orjson-3.8.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (137.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

orjson-3.8.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (147.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390x

orjson-3.8.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (143.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ppc64le

orjson-3.8.12-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (125.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARMv7l

orjson-3.8.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (263.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

orjson-3.8.12-cp310-cp310-macosx_11_0_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl (239.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64macOS 11.0+ universal2 (ARM64, x86-64)macOS 11.0+ x86-64

orjson-3.8.12-cp39-none-win_amd64.whl (195.0 kB view details)

Uploaded CPython 3.9Windows x86-64

orjson-3.8.12-cp39-cp39-musllinux_1_1_x86_64.whl (309.3 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

orjson-3.8.12-cp39-cp39-musllinux_1_1_aarch64.whl (317.3 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

orjson-3.8.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (137.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

orjson-3.8.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (147.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ s390x

orjson-3.8.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (143.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ppc64le

orjson-3.8.12-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (125.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARMv7l

orjson-3.8.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (263.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

orjson-3.8.12-cp39-cp39-macosx_11_0_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl (239.7 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64macOS 11.0+ universal2 (ARM64, x86-64)macOS 11.0+ x86-64

orjson-3.8.12-cp38-none-win_amd64.whl (195.0 kB view details)

Uploaded CPython 3.8Windows x86-64

orjson-3.8.12-cp38-cp38-musllinux_1_1_x86_64.whl (309.3 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

orjson-3.8.12-cp38-cp38-musllinux_1_1_aarch64.whl (317.2 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ARM64

orjson-3.8.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (137.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

orjson-3.8.12-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (147.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ s390x

orjson-3.8.12-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (143.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ppc64le

orjson-3.8.12-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (125.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARMv7l

orjson-3.8.12-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (262.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

orjson-3.8.12-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (239.2 kB view details)

Uploaded CPython 3.8macOS 10.9+ universal2 (ARM64, x86-64)macOS 10.9+ x86-64macOS 11.0+ ARM64

orjson-3.8.12-cp37-none-win_amd64.whl (194.9 kB view details)

Uploaded CPython 3.7Windows x86-64

orjson-3.8.12-cp37-cp37m-musllinux_1_1_x86_64.whl (309.3 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ x86-64

orjson-3.8.12-cp37-cp37m-musllinux_1_1_aarch64.whl (317.2 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ ARM64

orjson-3.8.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (137.2 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

orjson-3.8.12-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl (146.8 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ s390x

orjson-3.8.12-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (143.5 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ppc64le

orjson-3.8.12-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (125.9 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARMv7l

orjson-3.8.12-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (262.9 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

orjson-3.8.12-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (239.4 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ universal2 (ARM64, x86-64)macOS 10.9+ x86-64macOS 11.0+ ARM64

File details

Details for the file orjson-3.8.12.tar.gz.

File metadata

  • Download URL: orjson-3.8.12.tar.gz
  • Upload date:
  • Size: 669.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.0.0-beta.9

File hashes

Hashes for orjson-3.8.12.tar.gz
Algorithm Hash digest
SHA256 9f0f042cf002a474a6aea006dd9f8d7a5497e35e5fb190ec78eb4d232ec19955
MD5 68e2ee58dc064f562e408491d896f6e4
BLAKE2b-256 3e1de5628cd5828a325db7c1b3c241c99b76b1640ec2fd7b6eb6bd9895879e6b

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp311-none-win_amd64.whl.

File metadata

  • Download URL: orjson-3.8.12-cp311-none-win_amd64.whl
  • Upload date:
  • Size: 195.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.0.0-beta.9

File hashes

Hashes for orjson-3.8.12-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 eb16e0195febd24b44f4db1ab3be85ecf6038f92fd511370cebc004b3d422294
MD5 af577a89b2aa759d77bcff4b4fd9284c
BLAKE2b-256 d618e39890cbc4d2a6c4d7bc2202b960c3a6035df8f26b261d72da7b580f35ee

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d937503e4dfba5edc8d5e0426d3cc97ed55716e93212b2e12a198664487b9965
MD5 09f73393831dff8926eff31fbd8f360f
BLAKE2b-256 a5d3cb28e1fccaa0740ed0f8562153651caabcd44589b6ee6960a0bf4f5e327d

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp311-cp311-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 355055e0977c43b0e5325b9312b7208c696fe20cd54eed1d6fc80b0a4d6721f5
MD5 957b716cb8cfc75f894936f314adfc61
BLAKE2b-256 6effa2bd5781213b9770e7bb3beb1995ca1a4681d7a35bd00e6d1c65b5437063

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f480ae7b84369b1860d8867f0baf8d885fede400fda390ce088bfa8edf97ffdc
MD5 825d6660d6febfcef9c594b02ec68539
BLAKE2b-256 bd9d6361f9333d9ec3593164e0cee538f66c1cdba317ff5f2d6e7debd5501541

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 cd6fbd1413559572e81b5ac64c45388147c3ba85cc3df2eaa11002945e0dbd1f
MD5 a9c5f53f4b70e51f3d0452ed6296a629
BLAKE2b-256 d45833619aab5d51f1948ab21aa7b26698a76ec9b1f2b5fb2af96dc3fd9a6833

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 7e405d54c84c30d9b1c918c290bcf4ef484a45c69d5583a95db81ffffba40b44
MD5 8f8d38b610dd3a5c44c6180f64305cbd
BLAKE2b-256 bcfeb623cfe25ca9bdc3cb6cbefc6871ce3785363bfd38a30102dda44fbf4671

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 efb3a10030462a22c731682434df5c137a67632a8339f821cd501920b169007e
MD5 273f5cfbb9497250abdac06a96d1ec78
BLAKE2b-256 01aff0f1583194cb2b4e28b11e9c423d336e10ffee09939d86fa54ade60fe3ff

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c6390ce0bce24c107fc275736aa8a4f768ef7eb5df935d7dca0cc99815eb5d99
MD5 983e1a91b5641bda852cd60bcfddbcf3
BLAKE2b-256 70542f31265e4021872397dec7d7d0b2baed6d59c7aa4910df73fae5fb6fdfcb

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp311-cp311-macosx_11_0_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp311-cp311-macosx_11_0_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 9a6c1594d5a9ff56e5babc4a87ac372af38d37adef9e06744e9f158431e33f43
MD5 30020ba0ad05584ca05995eedefa30e4
BLAKE2b-256 1587cd5a506935f80a75b0675aa06106efefb1379c1ed9bbb942794073cd8793

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp310-none-win_amd64.whl.

File metadata

  • Download URL: orjson-3.8.12-cp310-none-win_amd64.whl
  • Upload date:
  • Size: 195.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.0.0-beta.9

File hashes

Hashes for orjson-3.8.12-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 06e528f9a84fbb4000fd0eee573b5db543ee70ae586fdbc53e740b0ac981701c
MD5 b85f77cd7adf609b509b860b7d95fb5f
BLAKE2b-256 b0e63242d5681358f65ead018d834d0e01f55c49347b06ba132931da49947a8e

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 44f7bb4c995652106276442de1147c9993716d1e2d79b7fd435afa154ff236b9
MD5 1a2eb7ed31b87207b9a6480f1089f6c9
BLAKE2b-256 6925ed824928caac9ce7e609f023c8084fc61f4f21d106adaa724e0789a49836

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp310-cp310-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 ebb03e4c7648f7bb299872002a6120082da018f41ba7a9ebf4ceae8d765443d2
MD5 705883104538f43b52a206c77e63d5bf
BLAKE2b-256 33a5a90f88d7e5c2d4281ee0a0fbf78dff31d1da8762787610924392200913ec

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 83e8c740a718fa6d511a82e463adc7ab17631c6eea81a716b723e127a9c51d57
MD5 c7e9ae22be80dfe691d8b0f604a8cbe1
BLAKE2b-256 d7b09ccdd107dc875e603edf9fa024680a2d63ab3e23464a4e78d5d1b8ecdde4

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 a72b50719bdd6bb0acfca3d4d1c841aa4b191f3ff37268e7aba04e5d6be44ccd
MD5 701983672e1bf2d1aad3e8b32f51ef36
BLAKE2b-256 14b718c54b14bdf6b1a805b706adfae2cc1a460de344ae1f6f8d5e1419093afe

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 6d1acf52d3a4b9384af09a5c2658c3a7a472a4d62a0ad1fe2c8fab8ef460c9b4
MD5 2df33dd78aae66e81a0f859f662cc44a
BLAKE2b-256 10723e0c81df350632898725ca542538e648e28f6268542eff3fe0129290916c

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 f4e22b0aa70c963ac01fcd620de15be21a5027711b0e5d4b96debcdeea43e3ae
MD5 3062211ee36655d74230a06399c10af2
BLAKE2b-256 c99e1de9209a233ebaa6a013473bf17af25f1bd4b66653540dcf2f5618f633d0

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 29706dd8189835bcf1781faed286e99ae54fd6165437d364dfdbf0276bf39b19
MD5 d1c44e0bb166a200a9e98e4383949f46
BLAKE2b-256 f828a1be6e66721ee95cff620a305447520e4c360bd8b9c9c7ba64c725262873

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp310-cp310-macosx_11_0_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp310-cp310-macosx_11_0_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 c84046e890e13a119404a83f2e09e622509ed4692846ff94c4ca03654fbc7fb5
MD5 ff1172daa0e6daee00f25eff646e5648
BLAKE2b-256 e6a7d716cf8836515a85c349ad7fb1279536b7d59a1187b596a69cee66708e75

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp39-none-win_amd64.whl.

File metadata

  • Download URL: orjson-3.8.12-cp39-none-win_amd64.whl
  • Upload date:
  • Size: 195.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.0.0-beta.9

File hashes

Hashes for orjson-3.8.12-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 82d65e478a21f98107b4eb8390104746bb3024c27084b57edab7d427385f1f70
MD5 88b1b04981eb54c9643d65add8cc4915
BLAKE2b-256 2907593edef4aefa554a7fb83d8616bffb76de0b6188b963dc74f75065668654

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2ad149ed76dce2bbdfbadd61c35959305e77141badf364a158beb4ef3d88ec37
MD5 234e04320fe99d8b106e5f2f7834925d
BLAKE2b-256 2d4778b9f77454e5ba2adf527da5a4acb98e6d6291e162c0345649fe7f28b551

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp39-cp39-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 834b50df79f1fe89bbaced3a1c1d8c8c92cc99e84cdcd374d8da4974b3560d2a
MD5 5ffa0dcff2a3bfe11ad974f1541dff9c
BLAKE2b-256 6bdfbfba654be34cda184e7345606471f6f5320034d783bd0c9444e2be6858c7

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de3d096dde3e46d01841abc1982b906694ab3c92f338d37a2e6184739dc8a958
MD5 54cef47071e2c32a1bbe9cb66f831a6a
BLAKE2b-256 7bfa5011e7e3945147a61b2f5a798f6e5570fff5d7324bb8fa6a5a150dafdcd1

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 8682f752c19f6a7d9fc727fd98588b4c8b0dce791b5794bb814c7379ccd64a79
MD5 59e98151361d35a7b0f0a34e4dfbb3ea
BLAKE2b-256 4851e1efdcaa98fd77527d3e46c9081d113c866af7f60317bdfc305c82e9fbca

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 3fa58ca064c640fa9d823f98fbbc8e71940ecb78cea3ac2507da1cbf49d60b51
MD5 dc83710c4c6f39c45b1c2e1f6a003f98
BLAKE2b-256 dfa15ec3a96568c40aa2ecf0220872691ef271454cadec1a6b761ae52f67bcbf

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 62f999798f2fa55e567d483864ebfc30120fb055c2696a255979439323a5b15c
MD5 9db0b21c1b49795e40dcaae96284d893
BLAKE2b-256 322f6bd7d4e90dfe7d21a410907caceb9192c6595b1f8e3fca2a13c86e35cb34

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 135f29cf936283a0cd1b8bce86540ca181108f2a4d4483eedad6b8026865d2a9
MD5 b8c25bee2fc67d475f4e3d665fd3be83
BLAKE2b-256 5a9898954742d267ed528c9a7a7317a165cdfd47c46cf32e71233925da1486b6

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp39-cp39-macosx_11_0_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp39-cp39-macosx_11_0_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 aff761de5ed5543a0a51e9f703668624749aa2239de5d7d37d9c9693daeaf5dc
MD5 0bb822e37ef8c1b6c2a2840e86246cc8
BLAKE2b-256 299f91d73b05f1bca62b815425e655e2b6d7da85f7f152955ca86a14af1c4db8

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp38-none-win_amd64.whl.

File metadata

  • Download URL: orjson-3.8.12-cp38-none-win_amd64.whl
  • Upload date:
  • Size: 195.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.0.0-beta.9

File hashes

Hashes for orjson-3.8.12-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 710c40c214b753392e46f9275fd795e9630dd737a5ab4ac6e4ee1a02fe83cc0d
MD5 9a058a347452bf285a8839c717335a14
BLAKE2b-256 c5761be359006bb9369ce52119ca6d0c30a408ecfb8726bdc61b7f444b53a046

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 6cae2ff288a80e81ce30313e735c5436495ab58cf8d4fbe84900e616d0ee7a78
MD5 0264af8ba37e8382b283d9c845bd0936
BLAKE2b-256 791e50cf4ba0dc3a90233a0d4c75eae8fe7eb344a7f0638f61463a2cac13265f

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp38-cp38-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 4fd240e736ce52cd757d74142d9933fd35a3184396be887c435f0574e0388654
MD5 fb69626f778eacd4633f9f86bdcef541
BLAKE2b-256 1822440bd56050eb12ec7e4adf87386836385582d3801dcd4a6b00564d553559

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6f568205519bb0197ca91915c5da6058cfbb59993e557b02dfc3b2718b34770a
MD5 e05202b388e56a10402d61be07591119
BLAKE2b-256 1aad023133cbd08249a040fb4c422f8f527d557c9984eab83b2b5c9558c258b6

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 397670665f94cf5cff779054781d80395084ba97191d82f7b3a86f0a20e6102b
MD5 8dfa1999e6905ae02fb20b150181081f
BLAKE2b-256 a563a28607d7a7142a4e70d5571a2d3252de660f4cfc6b5e6e03efc608e3f4e6

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 8f00038bf5d07439d13c0c2c5cd6ad48eb86df7dbd7a484013ce6a113c421b14
MD5 67c7fb0f2925fd7eaac47b179701bc09
BLAKE2b-256 cf788f74d1670446455420c270792da794a8bc11bffc1f13fb2fa6803bd46837

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 7d50d9b1ae409ea15534365fec0ce8a5a5f7dc94aa790aacfb8cfec87ab51aa4
MD5 197414d8fc8fd3035866ea5f69c1ec1e
BLAKE2b-256 cc08a921138667cc064cee508e74a4c2e99afead8961552b047f3cbceb6dafaf

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0ba645c92801417933fa74448622ba614a275ea82df05e888095c7742d913bb4
MD5 75c3250b9eaac3f96643c5fcb1ed29bf
BLAKE2b-256 4ffdb8b27f9dce9e6b72968c5c955ca738c5a7cd3c0e98c48223151f587ea85f

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 062e67108c218fdb9475edd5272b1629c05b56c66416fa915de5656adde30e73
MD5 44083b4dab45107954cad73156a37fba
BLAKE2b-256 1729369a64bf87e66886e66962a1dd859b420bd79fec6771efffad94d56bd296

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp37-none-win_amd64.whl.

File metadata

  • Download URL: orjson-3.8.12-cp37-none-win_amd64.whl
  • Upload date:
  • Size: 194.9 kB
  • Tags: CPython 3.7, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.0.0-beta.9

File hashes

Hashes for orjson-3.8.12-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 6f1b01f641f5e87168b819ac1cbd81aa6278e7572c326f3d27e92dea442a2c0d
MD5 91a4e9f0943e4d8e43f1c64a1070c2ba
BLAKE2b-256 35f007ee02d463bc8964e723cdac48a6d928dcc021778b2eacd338339f6e67e1

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp37-cp37m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ec4f0130d9a27cb400423e09e0f9e46480e9e977f05fdcf663a7a2c68735513e
MD5 4d160057c6fd3abd3ed8776598722c07
BLAKE2b-256 d811a9598459031b6601186352ad1441ae17ba8963b9dc7f7806b40dcedeff02

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp37-cp37m-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp37-cp37m-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 7d63f524048825e05950db3b6998c756d5377a5e8c469b2e3bdb9f3217523d74
MD5 15ea75c74e54ce2a44f4b7d9a1a37da9
BLAKE2b-256 cd5ef388c8f606c5c2aa047f93759ab94b1ff739cc99a9b95e507ca4bd242171

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 becbd5af6d035a7ec2ee3239d4700929d52d8517806b97dd04efcc37289403f7
MD5 067feb4d84a617121e7a57dc47e7480a
BLAKE2b-256 262b8f00f06ea857f00c3521e6a3fadf7e838a01faec7591cdbf217b25ad955d

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 8d153b228b6e24f8bccf732a51e01e8e938eef59efed9030c5c257778fbe0804
MD5 b2bdcb121ef8c0c5ea0a8d68a7daee74
BLAKE2b-256 b727545b49651dca71eb92134935c49942c7be43672659c8db1b23d78c8d5a6d

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 96fb1eb82b578eb6c0e53e3cf950839fe98ea210626f87c8204bd4fc2cc6ba02
MD5 38316814137c3d0ea235e998a79e76ef
BLAKE2b-256 1768bb2b4056589896f7500ac536331c713181bda9d29af8649bbdb359a5bc03

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 7e549468867991f6f9cfbd9c5bbc977330173bd8f6ceb79973bbd4634e13e1b9
MD5 e89b113dea3e8b0a917196347acc90c9
BLAKE2b-256 81cb5fe6078cd7425ddcbbf48aa5001bbf4cf7bfcd83992af4ded037b401b1b4

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 77710774faed337ac4ad919dadc5f3b655b0cd40518e5386e6f1f116de9c6c25
MD5 4a342522b1c0ffb58f80a022a34fcc03
BLAKE2b-256 16f2459afafc84fe178e30f593468d65a687449a49253ef217be151f398a0e0f

See more details on using hashes here.

File details

Details for the file orjson-3.8.12-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.8.12-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 dc27a8ec13f28e92dc1ea89bf1232d77e7d3ebfd5c1ccf4f3729a70561cb63bd
MD5 cd03255a7ebb2536ce671fbc14bcf5c3
BLAKE2b-256 bd99cfd8ef1b184ab9973517d450256d4f3a5b07ee958b0482819441c46cd7c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page