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, and arm7 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.

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-2022-11-20 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, and arm7 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 - 2022, 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.2.tar.gz (861.0 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.2-cp311-none-win_amd64.whl (200.1 kB view details)

Uploaded CPython 3.11Windows x86-64

orjson-3.8.2-cp311-cp311-manylinux_2_28_x86_64.whl (144.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

orjson-3.8.2-cp311-cp311-manylinux_2_28_aarch64.whl (258.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

orjson-3.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

orjson-3.8.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (281.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARMv7l

orjson-3.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

orjson-3.8.2-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (493.5 kB view details)

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

orjson-3.8.2-cp311-cp311-macosx_10_7_x86_64.whl (146.1 kB view details)

Uploaded CPython 3.11macOS 10.7+ x86-64

orjson-3.8.2-cp310-none-win_amd64.whl (200.1 kB view details)

Uploaded CPython 3.10Windows x86-64

orjson-3.8.2-cp310-cp310-musllinux_1_1_x86_64.whl (449.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

orjson-3.8.2-cp310-cp310-musllinux_1_1_aarch64.whl (444.7 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

orjson-3.8.2-cp310-cp310-manylinux_2_28_x86_64.whl (144.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

orjson-3.8.2-cp310-cp310-manylinux_2_28_aarch64.whl (258.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

orjson-3.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

orjson-3.8.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (281.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARMv7l

orjson-3.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

orjson-3.8.2-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (493.5 kB view details)

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

orjson-3.8.2-cp310-cp310-macosx_10_7_x86_64.whl (146.1 kB view details)

Uploaded CPython 3.10macOS 10.7+ x86-64

orjson-3.8.2-cp39-none-win_amd64.whl (200.1 kB view details)

Uploaded CPython 3.9Windows x86-64

orjson-3.8.2-cp39-cp39-musllinux_1_1_x86_64.whl (449.5 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

orjson-3.8.2-cp39-cp39-musllinux_1_1_aarch64.whl (444.7 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

orjson-3.8.2-cp39-cp39-manylinux_2_28_x86_64.whl (144.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

orjson-3.8.2-cp39-cp39-manylinux_2_28_aarch64.whl (258.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

orjson-3.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

orjson-3.8.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (281.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARMv7l

orjson-3.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

orjson-3.8.2-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (493.5 kB view details)

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

orjson-3.8.2-cp39-cp39-macosx_10_7_x86_64.whl (146.1 kB view details)

Uploaded CPython 3.9macOS 10.7+ x86-64

orjson-3.8.2-cp38-none-win_amd64.whl (200.0 kB view details)

Uploaded CPython 3.8Windows x86-64

orjson-3.8.2-cp38-cp38-musllinux_1_1_x86_64.whl (449.4 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

orjson-3.8.2-cp38-cp38-musllinux_1_1_aarch64.whl (444.5 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ARM64

orjson-3.8.2-cp38-cp38-manylinux_2_28_x86_64.whl (144.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

orjson-3.8.2-cp38-cp38-manylinux_2_28_aarch64.whl (257.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

orjson-3.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

orjson-3.8.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (281.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARMv7l

orjson-3.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

orjson-3.8.2-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (493.4 kB view details)

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

orjson-3.8.2-cp38-cp38-macosx_10_7_x86_64.whl (145.9 kB view details)

Uploaded CPython 3.8macOS 10.7+ x86-64

orjson-3.8.2-cp37-none-win_amd64.whl (199.9 kB view details)

Uploaded CPython 3.7Windows x86-64

orjson-3.8.2-cp37-cp37m-musllinux_1_1_x86_64.whl (449.3 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ x86-64

orjson-3.8.2-cp37-cp37m-musllinux_1_1_aarch64.whl (444.4 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ ARM64

orjson-3.8.2-cp37-cp37m-manylinux_2_28_x86_64.whl (144.7 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.28+ x86-64

orjson-3.8.2-cp37-cp37m-manylinux_2_28_aarch64.whl (257.9 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.28+ ARM64

orjson-3.8.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (278.4 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

orjson-3.8.2-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (281.3 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARMv7l

orjson-3.8.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (264.0 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

orjson-3.8.2-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (493.3 kB view details)

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

orjson-3.8.2-cp37-cp37m-macosx_10_7_x86_64.whl (146.0 kB view details)

Uploaded CPython 3.7mmacOS 10.7+ x86-64

File details

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

File metadata

  • Download URL: orjson-3.8.2.tar.gz
  • Upload date:
  • Size: 861.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.14.1

File hashes

Hashes for orjson-3.8.2.tar.gz
Algorithm Hash digest
SHA256 a2fb95a45031ccf278e44341027b3035ab99caa32aa173279b1f0a06324f434b
MD5 8d9e4b0df04201a039da59648bbe42c5
BLAKE2b-256 1308d476fff015ccc0f043d3df6332c807695ae3d6abc1758b24f3d335750550

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.8.2-cp311-none-win_amd64.whl
  • Upload date:
  • Size: 200.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.14.1

File hashes

Hashes for orjson-3.8.2-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 b6007e1ac8564b13b2521720929e8bb3ccd3293d9fdf38f28728dcc06db6248f
MD5 be551391da0d4df8fbda8af71f1c335c
BLAKE2b-256 7fe4dc75242293c0f159e4564de060f2981df0845faa8d3e4d8acf813bb085e7

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c1ef75f1d021d817e5c60a42da0b4b7e3123b1b37415260b8415666ddacc7cd7
MD5 db8c7e11fbefac0a1a3b87a10c06f92d
BLAKE2b-256 aadb1556d6338511da07b8f8fd70b086508bb3c6dc9f323720d607f474974397

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1463674f8efe6984902473d7b5ce3edf444c1fcd09dc8aa4779638a28fb9ca01
MD5 f47ecaaa30748ada66e269fef5bbe1df
BLAKE2b-256 cb9d46ea13bd5eb5306f5340f2d0b8b7b377d51abb29b7c6f4aa2107205d6da2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 99c49e49a04bf61fee7aaea6d92ac2b1fcf6507aea894bbdf3fbb25fe792168c
MD5 710fcf3d6479f1669a735faed5c0753e
BLAKE2b-256 4953802cda0c0c569b36059daa1f72255b2d9cc3acf73d6f4e8ba8c3e831f44a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 ed10600e8b08f1e87b656ad38ab316191ce94f2c9adec57035680c0dc9e93c81
MD5 a06ad6e720a6b0e874c575666f016b96
BLAKE2b-256 9658d85045aa76acbd98fa8c471836b54f8128d5eab23a1f77035fcb0949c707

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c3d9f1043f618d0c64228aab9711e5bd822253c50b6c56223951e32b51f81d62
MD5 4ccfc85e9caccb0ab15fd76093a69d9d
BLAKE2b-256 f1327377e889454589f55f631ea932979ceac2d70b10fdba5d6e988392f72921

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 8d47e7592fe938aec898eb22ea4946298c018133df084bc78442ff18e2c6347c
MD5 38914ad16485f10371e26191e82f53fd
BLAKE2b-256 13112b27aba49d3673cb269fc2ed3edd94485a30fe022d50e7bf3c72afd66725

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp311-cp311-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp311-cp311-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 a0d89de876e6f1cef917a2338378a60a98584e1c2e1c67781e20b6ed1c512478
MD5 a0c6b5269c35d94a278f5d099125bad9
BLAKE2b-256 341b700caaf9b8dbfe6fd76b8e4096e5f4456f9ab17b19b7af07b876463051b1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.8.2-cp310-none-win_amd64.whl
  • Upload date:
  • Size: 200.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.14.1

File hashes

Hashes for orjson-3.8.2-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 7ea96923e26390b2142602ebb030e2a4db9351134696e0b219e5106bddf9b48e
MD5 67b1e0c431d887fce5309e9534580686
BLAKE2b-256 69e496953a585879f00f098f1989d950131db1b0dc2bddd34ed418d474cee123

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d755d94a90a941b91b4d39a6b02e289d8ba358af2d1a911edf266be7942609dc
MD5 cd39cf21022749ac63a6db2bdfe549e2
BLAKE2b-256 c4046c99ecb49628380e49d70562581c35eecf240ca8eb1193e3706a98fb17e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 da35d347115758bbc8bfaf39bb213c42000f2a54e3f504c84374041d20835cd6
MD5 8e394bc7591a2b7689e36154b5bd9b7a
BLAKE2b-256 97c64bea155af7275b728619b73283467236237258da5e0a5b07db11c23279f5

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 33edb5379c6e6337f9383c85fe4080ce3aa1057cc2ce29345b7239461f50cbd6
MD5 1695a031ef529f9ba4d6aefce46d66f3
BLAKE2b-256 179afb8d506348f1784c7e5c51e551ae82b33bb1268f9d08cef98ee952238e71

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4bcce53e9e088f82633f784f79551fcd7637943ab56c51654aaf9d4c1d5cfa54
MD5 db72c26dd71cd68c62007ba7271b390f
BLAKE2b-256 077db72ad3b6188a2bd70ebbefade99b7597ee83ca7ae7a1f5f7350447c3e0f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5c9be25c313ba2d5478829d949165445c3bd36c62e07092b4ba8dbe5426574d1
MD5 882e4f7fe4bbfd9675aa3be642bd335b
BLAKE2b-256 38f9b02268db650579d80a0a998e9816cfc6afdfc903243bbf9df9e6a67cb53d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 f63da6309c282a2b58d4a846f0717f6440356b4872838b9871dc843ed1fe2b38
MD5 06997533cf84a97adcc98add03e87b91
BLAKE2b-256 ec3f0a9fdaefb1d29b8b6e31d2746342472334033c8f097abe32aa2b581aa978

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3c632a2157fa9ec098d655287e9e44809615af99837c49f53d96bfbca453c5bd
MD5 e886d884a401011bfd15e1b8c7827e7a
BLAKE2b-256 4869f6610d49a30e9d019c4109ddd487c6a36203b7e5614e5f525964b9e2cab6

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 64c5da5c9679ef3d85e9bbcbb62f4ccdc1f1975780caa20f2ec1e37b4da6bd36
MD5 5dbbe3aabbf02dcc76adb81ef90d424b
BLAKE2b-256 247a0a50a9b2055dcc1a4a4dc326ee2c45f6c7045269179d21cc0ddcedace1f4

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp310-cp310-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp310-cp310-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 43e69b360c2851b45c7dbab3b95f7fa8469df73fab325a683f7389c4db63aa71
MD5 08b53ea335b33d5d880ac58b2df8152b
BLAKE2b-256 09c1fe2428ffae683346e614d17be75cb2615c1d9d57212a0df055752744bff5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.8.2-cp39-none-win_amd64.whl
  • Upload date:
  • Size: 200.1 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.14.1

File hashes

Hashes for orjson-3.8.2-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 2734086d9a3dd9591c4be7d05aff9beccc086796d3f243685e56b7973ebac5bc
MD5 18a40505567ffeaf5a3ea8517e64fd42
BLAKE2b-256 347b2afc5c5fe91b2a23add46a14abf934fc72d13e296ce2ddfecd1657687b4c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b9a34519d3d70935e1cd3797fbed8fbb6f61025182bea0140ca84d95b6f8fbe5
MD5 20afcd87da5a20880c23ef412e5f803c
BLAKE2b-256 ade038dab1962f0430194fc107126d5f6cbe6920dc29e776490b2d665db1e6bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 1c3833976ebbeb3b5b6298cb22e23bf18453f6b80802103b7d08f7dd8a61611d
MD5 05f9bbcbf99d66c820d3e8b435f68cdb
BLAKE2b-256 6af9c550ece251ef45f10a478bdb53fecbb7fcd6a177826d8b07dae76fe3cf01

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ee39071da2026b11e4352d6fc3608a7b27ee14bc699fd240f4e604770bc7a255
MD5 b0aaca6910a408129d6b0eccba37851c
BLAKE2b-256 0919af39c48c1068242cd52578648651e3aebf6dc01513fe655ce22cce5e6bd4

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6e43cdc3ddf96bdb751b748b1984b701125abacca8fc2226b808d203916e8cba
MD5 73085795946118c97c4e122c712e56de
BLAKE2b-256 0bc9a5f2a1f40a7689f89c9a04746d6c51611e14a3099c4dff050c61ee53ae16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c13114b345cda33644f64e92fe5d8737828766cf02fbbc7d28271a95ea546832
MD5 6aacdfc096eaa1ebde03b1a348a6642d
BLAKE2b-256 b0745d2881896a4fecbdf809632c9b50fe1beeccc63c91aaa7b46adf79b4af17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 3ecd8936259a5920b52a99faf62d4efeb9f5e25a0aacf0cce1e9fa7c37af154f
MD5 1e5216d487a1ca2de9655f0aa661863d
BLAKE2b-256 7dfea84f3f09450f86473cf37ee3d5365b4065e384d866feeedfe6ae62b51a02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f436132e62e647880ca6988974c8e3165a091cb75cbed6c6fd93e931630c22fa
MD5 0655c89e59b44399e2446fa124f8a5ef
BLAKE2b-256 7a2c69a87e89f78a0eaff49af4646de9877fbfedaa19469c877e3100b15a0867

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 6bf36fa759a1b941fc552ad76b2d7fb10c1d2a20c056be291ea45eb6ae1da09b
MD5 50e88779aba72221b3bc32e6796d4b33
BLAKE2b-256 c3cb1af5beec99898198139da163b0a446d34e2bfc6ae81902cd92c759458133

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp39-cp39-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp39-cp39-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 6068a27d59d989d4f2864c2fc3440eb7126a0cfdfaf8a4ad136b0ffd932026ae
MD5 f7b20785f189377c65e9974f806e5cee
BLAKE2b-256 850b5f21f46d3a09e1ef7c663a9d2db0a2a697570bb34c35799939c1dd96f82f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.8.2-cp38-none-win_amd64.whl
  • Upload date:
  • Size: 200.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.14.1

File hashes

Hashes for orjson-3.8.2-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 b14765ea5aabfeab1a194abfaa0be62c9fee6480a75ac8c6974b4eeede3340b4
MD5 ba25dedd573df0d835f47aca729ecab5
BLAKE2b-256 468753ad7f5cd663d3ae7c2c54e1db297d50d0cd046e14c2245a894aa6861c1d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 cde11822cf71a7f0daaa84223249b2696a2b6cda7fa587e9fd762dff1a8848e4
MD5 61d9a767ab5085c98ada33ed62881135
BLAKE2b-256 399f9222de3e73e3629191437672f7f8d9b8428adb44db84c71a02f7baec4c04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 2ab3fd8728e12c36e20c6d9d70c9e15033374682ce5acb6ed6a08a80dacd254d
MD5 cd7660e97aa1cd2c418154d29c86adb7
BLAKE2b-256 850207ac87918b4c990932f1cda0ca731054ff1bf8947139bbb0dda3c8f1163e

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 73ab3f4288389381ae33ab99f914423b69570c88d626d686764634d5e0eeb909
MD5 b12c54c4284b01949e96795b6f6c960d
BLAKE2b-256 0a6f0798df32d96e4084420776ef6102ca6d9a7fe77378543b1762f17914ec01

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp38-cp38-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ab63103f60b516c0fce9b62cb4773f689a82ab56e19ef2387b5a3182f80c0d78
MD5 5b18e51d161ca70b207b6e272f8ff9ec
BLAKE2b-256 da5886795b001a610a1a2254598f976665981c30447b742a7db04e7039b974ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b98a8c825a59db94fbe8e0cce48618624c5a6fb1436467322d90667c08a0bf80
MD5 7c2b86b8dadb9fd9e52a8dc40dea7aa1
BLAKE2b-256 6a8d7e85fdd920a1bd77d2baf66bdb99ba8e40b09b339092fe61ebe5b55ea2bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 6b364ea01d1b71b9f97bf97af9eb79ebee892df302e127a9e2e4f8eaa74d6b98
MD5 3a861aa15fd01604a7057ca4555ab62b
BLAKE2b-256 25deb047c842087a6cfd71b18215cdfc76f7eff8635f8c5e9ab7ef6831a18d54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a07d5a8c69a2947d9554a00302734fe3d8516415c8b280963c92bc1033477890
MD5 f1fb7cf6ed91502039abf3e4171979ad
BLAKE2b-256 345affc8cf591c80004b15f93b13d0785c1171a7d6ab710f4576bb5e2d15db81

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-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.2-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 8cbadc9be748a823f9c743c7631b1ee95d3925a9c0b21de4e862a1d57daa10ec
MD5 2ee5b5b189be4370e2a55383be1c1a7e
BLAKE2b-256 2d9e35a09924a0c05c0edb69c83e96dca834299cb6ce9bc3b66c5f7630a6a217

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp38-cp38-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp38-cp38-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 74e7d54d11b3da42558d69a23bf92c2c48fabf69b38432d5eee2c5b09cd4c433
MD5 966400340a0d4cbe8532a549a6debd84
BLAKE2b-256 b0f5e6a3892195796edce0b42e6453fd3c1160611ecf31423281dbf776f1c467

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.8.2-cp37-none-win_amd64.whl
  • Upload date:
  • Size: 199.9 kB
  • Tags: CPython 3.7, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/0.14.1

File hashes

Hashes for orjson-3.8.2-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 9f3cd0394eb6d265beb2a1572b5663bc910883ddbb5cdfbcb660f5a0444e7fd8
MD5 b071efc86bc49803dcfffa5d2c003bae
BLAKE2b-256 f84eb21d4c137cb29365f8ec4c9a9d9eb45e8555ebab90f03760b9e0a48561e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 aebd4e80fea0f20578fd0452908b9206a6a0d5ae9f5c99b6e665bbcd989e56cd
MD5 47b31ec8f401ee09ce65cb6b7e708152
BLAKE2b-256 bc4531860bfd26277eb9d6d046c3531f5254e59d2af120b8fba1fc4884214e39

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp37-cp37m-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 6fda669211f2ed1fc2c8130187ec90c96b4f77b6a250004e666d2ef8ed524e5f
MD5 afb73c6113ff2a5ab6a00e156cd5b67a
BLAKE2b-256 55a07fcb4831c9f6006ec81a45858c6c059787dd3dd511c328a2034c689ae944

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp37-cp37m-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp37-cp37m-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bc112c17e607c59d1501e72afb44226fa53d947d364aed053f0c82d153e29616
MD5 65808ef62bc0c75d0111dab9577553c4
BLAKE2b-256 5703c99021eeeed483aab0bc54653d56aed4684c852f75d7642f2a10a3c59c7b

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp37-cp37m-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp37-cp37m-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4e42b19619d6e97e201053b865ca4e62a48da71165f4081508ada8e1b91c6a30
MD5 7b02eb5eeefb6d63c41b04e2961418f2
BLAKE2b-256 56d072e5c17278a0288ad199e4c88583f39abcbd8270c601ea602182efd6ce7b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 349387ed6989e5db22e08c9af8d7ca14240803edc50de451d48d41a0e7be30f6
MD5 23d97b26572afcf5aa192ad287294add
BLAKE2b-256 6c0c6afbba7b5aaf52009a38dfb718f12a84cc4231dede918c1a0d8f4c1089d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 1874c05d0bb994601fa2d51605cb910d09343c6ebd36e84a573293523fab772a
MD5 07f9e93960291cb0aa035ae51dacef77
BLAKE2b-256 0fc759183351d00e4ace85c4f1d0c3338aa2f1eceae2ae501ce2ae905353e364

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.8.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d1d8864288f7c5fccc07b43394f83b721ddc999f25dccfb5d0651671a76023f5
MD5 e6ba371a10ef7f9734649c44229e8d59
BLAKE2b-256 f97ce1d45cba7d9d6698a90917bf1a7444ce7f49f2a79cbedab31aac59fd4082

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-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.2-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 fa2e565cf8ffdb37ce1887bd1592709ada7f701e61aa4b1e710be94b0aecbab4
MD5 7c694e6b7a3b2580ba47f731d330ed2b
BLAKE2b-256 f050bd7d2e7fa37b3f43c8becb07b9aeb26ea0abaf4a0ebedc2bf06fa5692b26

See more details on using hashes here.

File details

Details for the file orjson-3.8.2-cp37-cp37m-macosx_10_7_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.8.2-cp37-cp37m-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 a02c13ae523221576b001071354380e277346722cc6b7fdaacb0fd6db5154b3e
MD5 637a45481092a06e0c515962661f37e0
BLAKE2b-256 ac6acd01c9b7b6767b619dd87b1c77735e5b6c74ab1d7abb6035b0b62164171a

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