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.8, 3.9, 3.10, 3.11, and 3.12. It distributes amd64/x86_64, aarch64/armv8, arm7, POWER/ppc64le, and s390x wheels for Linux, amd64 and aarch64 wheels for macOS, and amd64 and i686/x86 wheels for Windows. orjson does not and will not support PyPy. orjson does not and will not support PEP 554 subinterpreters. 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
      3. Fragment
    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, None, dataclasses.dataclass, typing.TypedDict, datetime.datetime, datetime.date, datetime.time, uuid.UUID, numpy.ndarray, and orjson.Fragment 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"'

Fragment

orjson.Fragment includes already-serialized JSON in a document. This is an efficient way to include JSON blobs from a cache, JSONB field, or separately serialized object without first deserializing to Python objects via loads().

>>> import orjson
>>> orjson.dumps({"key": "zxc", "data": orjson.Fragment(b'{"a": "b", "c": 1}')})
b'{"key":"zxc","data":{"a": "b", "c": 1}}'

It does no reformatting: orjson.OPT_INDENT_2 will not affect a compact blob nor will a pretty-printed JSON blob be rewritten as compact.

The input must be bytes or str and given as a positional argument.

This raises orjson.JSONEncodeError if a str is given and the input is not valid UTF-8. It otherwise does no validation and it is possible to write invalid JSON. This does not escape characters. The implementation is tested to not crash if given invalid strings or invalid JSON.

This is similar to RawJSON in rapidjson.

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, numpy.intp, numpy.datetime64, and numpy.bool 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.

Packaging

To package orjson requires at least Rust 1.65 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-10-10 and stable 1.65. 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 and i686.

There are no runtime dependencies other than libc.

The source distribution on PyPI contains all dependencies' source and can be built without network access. The file can be downloaded from https://files.pythonhosted.org/packages/source/o/orjson/orjson-${version}.tar.gz.

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.9.10.tar.gz (5.4 MB view details)

Uploaded Source

Built Distributions

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

orjson-3.9.10-cp312-none-win_amd64.whl (135.1 kB view details)

Uploaded CPython 3.12Windows x86-64

orjson-3.9.10-cp312-cp312-musllinux_1_1_x86_64.whl (309.1 kB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

orjson-3.9.10-cp312-cp312-musllinux_1_1_aarch64.whl (315.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ ARM64

orjson-3.9.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

orjson-3.9.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (152.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

orjson-3.9.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (156.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

orjson-3.9.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (129.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7l

orjson-3.9.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

orjson-3.9.10-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (242.1 kB view details)

Uploaded CPython 3.12macOS 10.15+ universal2 (ARM64, x86-64)macOS 10.15+ x86-64macOS 11.0+ ARM64

orjson-3.9.10-cp311-none-win_amd64.whl (135.0 kB view details)

Uploaded CPython 3.11Windows x86-64

orjson-3.9.10-cp311-none-win32.whl (141.5 kB view details)

Uploaded CPython 3.11Windows x86

orjson-3.9.10-cp311-cp311-musllinux_1_1_x86_64.whl (309.0 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

orjson-3.9.10-cp311-cp311-musllinux_1_1_aarch64.whl (315.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ARM64

orjson-3.9.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

orjson-3.9.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (152.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ s390x

orjson-3.9.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (156.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ppc64le

orjson-3.9.10-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (129.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARMv7l

orjson-3.9.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

orjson-3.9.10-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (242.0 kB view details)

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

orjson-3.9.10-cp310-none-win_amd64.whl (135.0 kB view details)

Uploaded CPython 3.10Windows x86-64

orjson-3.9.10-cp310-none-win32.whl (141.5 kB view details)

Uploaded CPython 3.10Windows x86

orjson-3.9.10-cp310-cp310-musllinux_1_1_x86_64.whl (309.0 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

orjson-3.9.10-cp310-cp310-musllinux_1_1_aarch64.whl (315.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

orjson-3.9.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

orjson-3.9.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (152.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390x

orjson-3.9.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (156.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ppc64le

orjson-3.9.10-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (129.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARMv7l

orjson-3.9.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

orjson-3.9.10-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (242.0 kB view details)

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

orjson-3.9.10-cp39-none-win_amd64.whl (134.9 kB view details)

Uploaded CPython 3.9Windows x86-64

orjson-3.9.10-cp39-none-win32.whl (141.3 kB view details)

Uploaded CPython 3.9Windows x86

orjson-3.9.10-cp39-cp39-musllinux_1_1_x86_64.whl (308.8 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

orjson-3.9.10-cp39-cp39-musllinux_1_1_aarch64.whl (315.3 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

orjson-3.9.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

orjson-3.9.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (152.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ s390x

orjson-3.9.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (156.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ppc64le

orjson-3.9.10-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (129.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARMv7l

orjson-3.9.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

orjson-3.9.10-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (241.7 kB view details)

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

orjson-3.9.10-cp38-none-win_amd64.whl (134.8 kB view details)

Uploaded CPython 3.8Windows x86-64

orjson-3.9.10-cp38-none-win32.whl (141.2 kB view details)

Uploaded CPython 3.8Windows x86

orjson-3.9.10-cp38-cp38-musllinux_1_1_x86_64.whl (308.7 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

orjson-3.9.10-cp38-cp38-musllinux_1_1_aarch64.whl (315.2 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ARM64

orjson-3.9.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

orjson-3.9.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (152.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ s390x

orjson-3.9.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (156.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ppc64le

orjson-3.9.10-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (129.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARMv7l

orjson-3.9.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

orjson-3.9.10-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (241.5 kB view details)

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

File details

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

File metadata

  • Download URL: orjson-3.9.10.tar.gz
  • Upload date:
  • Size: 5.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.3.1

File hashes

Hashes for orjson-3.9.10.tar.gz
Algorithm Hash digest
SHA256 9ebbdbd6a046c304b1845e96fbcc5559cd296b4dfd3ad2509e33c4d9ce07d6a1
MD5 8b32ed706fac1b795c06d2fd9509f337
BLAKE2b-256 7275642688bf5d99131fe8cf603f4ef9f26e4b1c6ed8f7f5c7e6fb31def54fb7

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp312-none-win_amd64.whl.

File metadata

  • Download URL: orjson-3.9.10-cp312-none-win_amd64.whl
  • Upload date:
  • Size: 135.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.3.1

File hashes

Hashes for orjson-3.9.10-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 3e892621434392199efb54e69edfff9f699f6cc36dd9553c5bf796058b14b20d
MD5 8160dba3ab87700ae07f2cc6c128f0f4
BLAKE2b-256 03964fd0da4f4a5a450054e69439875b4e856654dcbbfea6907d7753b827c937

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.9.10-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 7ec960b1b942ee3c69323b8721df2a3ce28ff40e7ca47873ae35bfafeb4555ca
MD5 a88142b8d56a242d243c1921054281ef
BLAKE2b-256 5d30c64b59de053c0bd0d8e8e0fdc2a3485a1cee55e5ff118592110bcbf85aa3

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp312-cp312-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.9.10-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 3fb205ab52a2e30354640780ce4587157a9563a68c9beaf52153e1cea9aa0921
MD5 dce5e8c5eb34324f6c0345eb676fb238
BLAKE2b-256 409353523939d0987d36fc4035b971cf3de376332e8f2d77bc8f04125f7f7215

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for orjson-3.9.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 666c6fdcaac1f13eb982b649e1c311c08d7097cbda24f32612dae43648d8db8d
MD5 1d88f53619db0ad7d84506baf0114c8f
BLAKE2b-256 899b4c1d2d1587621de5a04bd53d8d67406d25f9ce74dea7babe77615f9d4783

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for orjson-3.9.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 858379cbb08d84fe7583231077d9a36a1a20eb72f8c9076a45df8b083724ad1d
MD5 129c3db5e29271be7af26e65fcdfeead
BLAKE2b-256 7f3ff97d64f29a6b86c1e03802927b82a329efcdcc65f8c454caf0d773145d25

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for orjson-3.9.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 c5a02360e73e7208a872bf65a7554c9f15df5fe063dc047f79738998b0506a14
MD5 2f8c35396055dbbb2a5e0f9fe2913591
BLAKE2b-256 e01e6732d94424f7c17eb558c52435a7bbe10883d5ecfe0712288d0c0b963b52

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for orjson-3.9.10-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 92af0d00091e744587221e79f68d617b432425a7e59328ca4c496f774a356071
MD5 b765074e7d0b3f6843ed2213ffce7419
BLAKE2b-256 0933d090754faab1a63ecf80b1df220d6787605caefd570331c757a3553afbf2

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for orjson-3.9.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f295efcd47b6124b01255d1491f9e46f17ef40d3d7eabf7364099e463fb45f0f
MD5 03bcb4f30b9287a8dc5917077a350918
BLAKE2b-256 c016d4bb7c683f0361eb0398ca30e81e3edfa58aa313e70a0812c75d9c0f6c4b

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.9.10-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 602a8001bdf60e1a7d544be29c82560a7b49319a0b31d62586548835bbe2c862
MD5 93593bb4082782decf54cc5a88bff5a7
BLAKE2b-256 49946cff6e8c3e7b5432ac0de02a3946071764847fd492b4c5090b61b1c13244

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for orjson-3.9.10-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 cf80b550092cc480a0cbd0750e8189247ff45457e5a023305f7ef1bcec811616
MD5 17e017bf0cc046a95cd1b50e7dbc5a33
BLAKE2b-256 5d67d7837cf0ac956e3c81c67dda3e8f2ffc60dd50ffc480ec7c17f2e22a36ae

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp311-none-win32.whl.

File metadata

  • Download URL: orjson-3.9.10-cp311-none-win32.whl
  • Upload date:
  • Size: 141.5 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.3.1

File hashes

Hashes for orjson-3.9.10-cp311-none-win32.whl
Algorithm Hash digest
SHA256 ce0a29c28dfb8eccd0f16219360530bc3cfdf6bf70ca384dacd36e6c650ef8e8
MD5 acefa05c04728644ded56c31c04670b8
BLAKE2b-256 bd920c2bdb7f94b2446d7129cbb1dbe51eefa4d0e3dfbef06e1e385e9049b47f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ec6f18f96b47299c11203edfbdc34e1b69085070d9a3d1f302810cc23ad36bf3
MD5 3bf9a51ee084f4099da3d6a6ddfba6d8
BLAKE2b-256 2598fbd7ccfa0c65ee01164a5b43bf527f0bed100e7dea367221115fbcbb5b66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 e99c625b8c95d7741fe057585176b1b8783d46ed4b8932cf98ee145c4facf499
MD5 bece697c6a5d2c8fc8f649aeeb9f33de
BLAKE2b-256 fe249a747fccd553e6cf7dc849fef15793386d7b007172a44cfe004eca3c6e4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1d0dc4310da8b5f6415949bd5ef937e60aeb0eb6b16f95041b5e43e6200821fb
MD5 96399c121caa2145ce3f79b54bbfe237
BLAKE2b-256 5a2342d1db93fd31ee9fea79c448ddb511fa574f6f281d3bdfa9e2c7d943296a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 674eb520f02422546c40401f4efaf8207b5e29e420c17051cddf6c02783ff5ca
MD5 f664b98d4a475b748c56d04ace75fdd9
BLAKE2b-256 d9577924f0228d235c3ce72da6d822dade9d3469982b2043685285bee3500de1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 9edd2856611e5050004f4722922b7b1cd6268da34102667bd49d2a2b18bafb81
MD5 1a65e01cb64cec178b529d28fb85519a
BLAKE2b-256 df01e87878a81d12d9c6fd4c53a304d2820c19e07ff33e66cbbd8f39ce780c96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 c812312847867b6335cfb264772f2a7e85b3b502d3a6b0586aa35e1858528ab1
MD5 138c016fb097769335ff57c6bfda19a9
BLAKE2b-256 f3933f57a2014c884f446ce8452fe5a047f090ad87cf752e3175f49f7cf21857

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ed8bc367f725dfc5cabeed1ae079d00369900231fbb5a5280cf0736c30e2adf7
MD5 33155e71205395aedca12a633ff78cf3
BLAKE2b-256 425bd4e30811886f009424c08e5ca56a4b23ef536333163e02ddbff6dc3a9a9d

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.9.10-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 cff7570d492bcf4b64cc862a6e2fb77edd5e5748ad715f487628f102815165e9
MD5 3df1549377e6516373b32a2b3985340c
BLAKE2b-256 a996fab12f5c586b1cabd11886d9c67044af68916a5cdaf6f00b25b86a5604c2

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for orjson-3.9.10-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 61804231099214e2f84998316f3238c4c2c4aaec302df12b21a64d72e2a135c7
MD5 9515291b460f02c8d6b7b5ed04aafb8c
BLAKE2b-256 b06e1b75897f9afae0eb7d72b0bedd371ef2d9063d4616444b6f4364689785f3

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp310-none-win32.whl.

File metadata

  • Download URL: orjson-3.9.10-cp310-none-win32.whl
  • Upload date:
  • Size: 141.5 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.3.1

File hashes

Hashes for orjson-3.9.10-cp310-none-win32.whl
Algorithm Hash digest
SHA256 b5b7d4a44cc0e6ff98da5d56cde794385bdd212a86563ac321ca64d7f80c80d1
MD5 7989579cf4efc7d3bb4b36872b76dc93
BLAKE2b-256 bddb3371b0e060be149a8eef58489a43e0adbd5f79d57bb66d881b2aaf756494

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 4fd72fab7bddce46c6826994ce1e7de145ae1e9e106ebb8eb9ce1393ca01444d
MD5 d46ccacbade5cb0f5abeab7f56b7d44d
BLAKE2b-256 789a9be97bc0e4c77aff1ca441f438825d2f491d61c4c408d6ef4b80c87bb425

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 06ad5543217e0e46fd7ab7ea45d506c76f878b87b1b4e369006bdb01acc05a83
MD5 a47989a11afb7fecf3802b0d8ef108e4
BLAKE2b-256 60fe756b9df73ec02eb714ddbb5613ee02221576a7afe9617f94381e85c47af3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1234dc92d011d3554d929b6cf058ac4a24d188d97be5e04355f1b9223e98bbe9
MD5 19546b2f5da8fb46b087bf2a96166b0d
BLAKE2b-256 17e27ff96963ba854f0a807fd2783bd7d947ecb0cac7df1d802699727c418aec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 deeb3922a7a804755bbe6b5be9b312e746137a03600f488290318936c1a2d4dc
MD5 e44b31bb86015c8eeeba6f4a605518aa
BLAKE2b-256 3387df738743a001196415e68ec2e3998a3d191670f5df22d32d124585184ded

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 c62b6fa2961a1dcc51ebe88771be5319a93fd89bd247c9ddf732bc250507bc2b
MD5 26878999aa1b3e35c363b27b84e1f0b1
BLAKE2b-256 5c9656f64b82615cc99d561acf3936f3f5e466f749bc5c0bd40f20f6bd30cf76

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 4cf7837c3b11a2dfb589f8530b3cff2bd0307ace4c301e8997e95c7468c1378e
MD5 a6cb89c231f034b7a9d9f90fb4db2112
BLAKE2b-256 c344704d7a3e989fb9e4131920a990f2d931a41ab7e85959b648508120b26677

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5148bab4d71f58948c7c39d12b14a9005b6ab35a0bdf317a8ade9a9e4d9d0bd5
MD5 a5e140b6d490c8cf0987bd0120dcd3a9
BLAKE2b-256 521dd99ae729b6eb97c6f66595dcaed29af3814f89dc2768c85977dff9d9d114

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.9.10-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 c18a4da2f50050a03d1da5317388ef84a16013302a5281d6f64e4a3f406aabc4
MD5 8927633f732c216279da3a1028b7ca3f
BLAKE2b-256 b0f67520e29d05b043d3b95fb40bc7830353700e7251e18fe6bbba2276a8df06

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for orjson-3.9.10-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 b90f340cb6397ec7a854157fac03f0c82b744abdd1c0941a024c3c29d1340aff
MD5 5ebdc87b751cdf6ce27c1a1835cc61ec
BLAKE2b-256 202aa8747496b05a565172349819add866db5729c12f18d502dd3b496d9d87cd

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp39-none-win32.whl.

File metadata

  • Download URL: orjson-3.9.10-cp39-none-win32.whl
  • Upload date:
  • Size: 141.3 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.3.1

File hashes

Hashes for orjson-3.9.10-cp39-none-win32.whl
Algorithm Hash digest
SHA256 fb0b361d73f6b8eeceba47cd37070b5e6c9de5beaeaa63a1cb35c7e1a73ef088
MD5 119635eab7b19937cdf849d210156890
BLAKE2b-256 e891db831f3bd2b66793a25c53a4642a16b6e83d4681605ac25703ddda0f7e71

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c943b35ecdf7123b2d81d225397efddf0bce2e81db2f3ae633ead38e85cd5ade
MD5 58b89ec64997166e6c4299184cbd4df3
BLAKE2b-256 f8c77d458f3074ddbef351d7738ab1fe8a270a18e09b8709546aab20220c3cfb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 7f8fb7f5ecf4f6355683ac6881fd64b5bb2b8a60e3ccde6ff799e48791d8f864
MD5 303418923d2f63794c915e6834b7b81c
BLAKE2b-256 264648e96fe45d0aa717e4d1a808b7d42e4be1fbdfc1d2c97e86930f6c6f779d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 81a3a3a72c9811b56adf8bcc829b010163bb2fc308877e50e9910c9357e78521
MD5 d78d3aec57963500acb017d6a360886c
BLAKE2b-256 34c0faa1eb343588cad0afa7a2d36ec4a873e65b99c291342fe375d4da1b3a26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 d2c1e559d96a7f94a4f581e2a32d6d610df5840881a8cba8f25e446f4d792df3
MD5 e3fb330a3ad1f885c6ad7a3912499c63
BLAKE2b-256 d12b79eaa5ab9552299eddfcb769944fd475f35b3d7d71e2b98754dc1a455f65

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 5869e8e130e99687d9e4be835116c4ebd83ca92e52e55810962446d841aba8de
MD5 80ba421e30c0773aa7ce6dc70893f512
BLAKE2b-256 39c2e60f7964d3b42395997b446885da8dd0065602f97b3da1ca66f26d150feb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 c338ed69ad0b8f8f8920c13f529889fe0771abbb46550013e3c3d01e5174deef
MD5 a0efa1f6fe8f7228abf6a18061c67170
BLAKE2b-256 1d75fd2fe67a7a8d5dbf624b8171d2d118beb956856b1358085b3c106f181ef0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0a73160e823151f33cdc05fe2cea557c5ef12fdf276ce29bb4f1c571c8368a60
MD5 ce8253521d1508d951eb947049e6c2e5
BLAKE2b-256 8670487588bbf549aecf797de7414b83d1c6eb5fc88c3ef8314d0e02c72beb41

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.9.10-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 ee5926746232f627a3be1cc175b2cfad24d0170d520361f4ce3fa2fd83f09e1d
MD5 f07918567a48970f71e5ba490be22552
BLAKE2b-256 e41f5570483ddd4a81500a0ffdc7727aa546a92b77a472dadc052013a4ec740b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for orjson-3.9.10-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 e28a50b5be854e18d54f75ef1bb13e1abf4bc650ab9d635e4258c58e71eb6ad5
MD5 905259becc7c7f943326cae37ca186b0
BLAKE2b-256 a2492eaf69e8805f97934bcb4f26ef3ef1d86c2338d4d2730d6fd1f14dcaa62d

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp38-none-win32.whl.

File metadata

  • Download URL: orjson-3.9.10-cp38-none-win32.whl
  • Upload date:
  • Size: 141.2 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.3.1

File hashes

Hashes for orjson-3.9.10-cp38-none-win32.whl
Algorithm Hash digest
SHA256 a353bf1f565ed27ba71a419b2cd3db9d6151da426b61b289b6ba1422a702e643
MD5 8ca76ff3527139b053ac9091bd9ff60a
BLAKE2b-256 2376d2698b954bf1f1a3002f3c96b5524ef80b60de7d29100871c2c0b3effc95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2a11b4b1a8415f105d989876a19b173f6cdc89ca13855ccc67c18efbd7cbd1f8
MD5 c318dbfaf00ead4b9eb5090ecec0bf0f
BLAKE2b-256 e519dae2f7bdef43f07a51f6f2461777e93d0b31e5d7b46ac8f1bd46dc499f4e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 49f8ad582da6e8d2cf663c4ba5bf9f83cc052570a3a767487fec6af839b0e777
MD5 4883cf4b44dfbac952725bf053121060
BLAKE2b-256 e335f2c568fb2aedc22407ade7080cbbed7dedf893b97bfeee48c2901d6a440f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3a2ce5ea4f71681623f04e2b7dadede3c7435dfb5e5e2d1d0ec25b35530e277b
MD5 9dd9248152760e3d575434eb5b64372d
BLAKE2b-256 73afeed54ce0ca853b6c1c481fe2713362f44ad0827cfed4f444f006b737ef4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 4bd176f528a8151a6efc5359b853ba3cc0e82d4cd1fab9c1300c5d957dc8f48c
MD5 5f51876a08e2b33d5d2b88a77803d4f7
BLAKE2b-256 dd14fb9335efdc8c01f7a3a34bb37fde8af325242066d19df27211f2bc402dd5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 4689270c35d4bb3102e103ac43c3f0b76b169760aff8bcf2d401a3e0e58cdb7f
MD5 2ce5752671a94b6dd1f7173c554e5c92
BLAKE2b-256 54bf2c3482f397894f25e4399f7d48c483cc757e8c1201a933696fe399cc9271

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 7f433be3b3f4c66016d5a20e5b4444ef833a1f802ced13a2d852c637f69729c1
MD5 5c4dfb98954edc1c7b49207d2808667a
BLAKE2b-256 4c57ad919abe2aed396ec081a72708db03e9af3ed30d1ba78db6929a2920b42a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2e2ecd1d349e62e3960695214f40939bbfdcaeaaa62ccc638f8e651cf0970e5f
MD5 ed77a2a50a6b8d904755be885db24192
BLAKE2b-256 183ea94caa7b1bf60de94a007839cd929f97089d02ba7f91d6417073f0406a69

See more details on using hashes here.

File details

Details for the file orjson-3.9.10-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl.

File metadata

File hashes

Hashes for orjson-3.9.10-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 8b9ba0ccd5a7f4219e67fbbe25e6b4a46ceef783c42af7dbc1da548eb28b6531
MD5 0ae4317ebe310797e28f2e4f0994a705
BLAKE2b-256 6284766a9973ede5e1fe8a2015a92211728934fed541c9fe1aa140115e432617

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