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.9.tar.gz (4.7 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.9-cp312-none-win_amd64.whl (135.1 kB view details)

Uploaded CPython 3.12Windows x86-64

orjson-3.9.9-cp312-cp312-musllinux_1_1_x86_64.whl (309.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

orjson-3.9.9-cp312-cp312-musllinux_1_1_aarch64.whl (315.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ ARM64

orjson-3.9.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

orjson-3.9.9-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.9-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.9-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.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

orjson-3.9.9-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (241.9 kB view details)

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

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11Windows x86

orjson-3.9.9-cp311-cp311-musllinux_1_1_x86_64.whl (308.9 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

orjson-3.9.9-cp311-cp311-musllinux_1_1_aarch64.whl (315.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ARM64

orjson-3.9.9-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.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (152.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ s390x

orjson-3.9.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (156.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ppc64le

orjson-3.9.9-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.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

orjson-3.9.9-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (241.8 kB view details)

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

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10Windows x86

orjson-3.9.9-cp310-cp310-musllinux_1_1_x86_64.whl (308.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

orjson-3.9.9-cp310-cp310-musllinux_1_1_aarch64.whl (315.4 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

orjson-3.9.9-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.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (152.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390x

orjson-3.9.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (156.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ppc64le

orjson-3.9.9-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.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

orjson-3.9.9-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (241.8 kB view details)

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

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

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9Windows x86

orjson-3.9.9-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.9-cp39-cp39-musllinux_1_1_aarch64.whl (315.2 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

orjson-3.9.9-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.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (152.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ s390x

orjson-3.9.9-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.9-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (129.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARMv7l

orjson-3.9.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

orjson-3.9.9-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (241.5 kB view details)

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

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

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.8Windows x86

orjson-3.9.9-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.9-cp38-cp38-musllinux_1_1_aarch64.whl (315.1 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ARM64

orjson-3.9.9-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.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (152.3 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ s390x

orjson-3.9.9-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.9-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.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

orjson-3.9.9-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (241.3 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.9.tar.gz.

File metadata

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

File hashes

Hashes for orjson-3.9.9.tar.gz
Algorithm Hash digest
SHA256 02e693843c2959befdd82d1ebae8b05ed12d1cb821605d5f9fe9f98ca5c9fd2b
MD5 895ab3ecb02d7cc6fb68ab1d4a60d812
BLAKE2b-256 d37627ae074f0355712777632f3f123b66d21093a2a89532f600311c36de0d31

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.9-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.0

File hashes

Hashes for orjson-3.9.9-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 f708ca623287186e5876256cb30599308bce9b2757f90d917b7186de54ce6547
MD5 37af07a5fcd5751242d94b742556a5ae
BLAKE2b-256 ef5ab347ba7567beb5f448ab127febc682f0658df1b4fe43777c3b13047bd8c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ece2d8ed4c34903e7f1b64fb1e448a00e919a4cdb104fc713ad34b055b665fca
MD5 ae4ba16a58d675af746dfd3e63e19de1
BLAKE2b-256 3ed10cc6621e1adbd5b34e70310ac74fa081411f86d541b05bf536e25b0c566a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 c959550e0705dc9f59de8fca1a316da0d9b115991806b217c82931ac81d75f74
MD5 61b1834c9c240cb4286c7e03f0aaaf27
BLAKE2b-256 efe92a02c0319b3715f20f0e748cd127d70e8b3910f4429809b77372876698e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0d2cd6ef4726ef1b8c63e30d8287225a383dbd1de3424d287b37c1906d8d2855
MD5 3669b508948d9ad752ce2503139e4e9e
BLAKE2b-256 900f2be7a534a79653a1a72aef719d5de85ccecdae144badbe3b7ccf6950b0bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 5424ecbafe57b2de30d3b5736c5d5835064d522185516a372eea069b92786ba6
MD5 e2280e31daec0d194b5828baf73730b7
BLAKE2b-256 be45e36d18fba928fdb922409381b518061c1a2f0511f8fdd1d7b0a2f18af6b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 75b805549cbbcb963e9c9068f1a05abd0ea4c34edc81f8d8ef2edb7e139e5b0f
MD5 092ac4a57feddebaccac0af9f6fa1669
BLAKE2b-256 0d71009b284ce354b721da87ef79629130f9ab66e44fe48392945c03469722e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b97a67c47840467ccf116136450c50b6ed4e16a8919c81a4b4faef71e0a2b3f4
MD5 2739330afe4e859ff07a99ca04541954
BLAKE2b-256 14ca8169385aeaa184eae7ee69ff4b34ea7312a1927138df99e1608e576ba78b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b28c1a65cd13fff5958ab8b350f0921121691464a7a1752936b06ed25c0c7b6e
MD5 53e7265d532d52d7157c989e142c1e28
BLAKE2b-256 096d650e87338ba08ef15cee0458ea37c4fd200476d65ee25ae5413099372948

See more details on using hashes here.

File details

Details for the file orjson-3.9.9-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.9-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 bd55ea5cce3addc03f8fb0705be0cfed63b048acc4f20914ce5e1375b15a293b
MD5 bae07d3817a510e81d258d51e5aff90e
BLAKE2b-256 1e754dbde7a4625ee0deebc57a70de85bd417a5a4747c507a4053c512363648e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.9-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.0

File hashes

Hashes for orjson-3.9.9-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 24301f2d99d670ded4fb5e2f87643bc7428a54ba49176e38deb2887e42fe82fb
MD5 6f888c4244a956b09f4c373bc0082830
BLAKE2b-256 544bdf29c22d0b516d7418ed2a5f43a674443eddca09bde365896c3bd95fadb2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.9-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.0

File hashes

Hashes for orjson-3.9.9-cp311-none-win32.whl
Algorithm Hash digest
SHA256 397a185e5dd7f8ebe88a063fe13e34d61d394ebb8c70a443cee7661b9c89bda7
MD5 9f22b18af326ea60731328a35e8f3893
BLAKE2b-256 b7962a73f7abace360eb4a20067cec5de515607d21158dcf749b63c9afb93d22

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d1c01cf4b8e00c7e98a0a7cf606a30a26c32adf2560be2d7d5d6766d6f474b31
MD5 54eec08a8aca9a7b320f086d75dbb7bf
BLAKE2b-256 201d459a9d2367ebf5981c44d18286740d7b71f18768629ea722d7e3ea1b3883

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 957a45fb201c61b78bcf655a16afbe8a36c2c27f18a998bd6b5d8a35e358d4ad
MD5 ad5c374fcb13473143cd07314c2381b6
BLAKE2b-256 f11d69ae1d62e390a10a617f43bb9509745fb9912349bdcd0fe1d26155a61920

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0f89dc338a12f4357f5bf1b098d3dea6072fb0b643fd35fec556f4941b31ae27
MD5 df0b2ce5329a9825dc4e37cf506f9d7f
BLAKE2b-256 bd9f67ac40f606f36acd1716179b9c7c4943cf5e1c2c15663fdf04374be922a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 512e5a41af008e76451f5a344941d61f48dddcf7d7ddd3073deb555de64596a6
MD5 c8ebbd2ae7b8cd879cc249729a8a50a1
BLAKE2b-256 352509436e5ef3875dcf180535b8c79d16132df52e593804c2467a0ad78b82ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ae72621f216d1d990468291b1ec153e1b46e0ed188a86d54e0941f3dabd09ee8
MD5 0760a483039914647c36efa743b64342
BLAKE2b-256 cf650ac568db349d889713e9ae087aeaee49f1ac473638fcaa86c8d25eb0c066

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 a71b0cc21f2c324747bc77c35161e0438e3b5e72db6d3b515310457aba743f7f
MD5 78cc3c4f98f459fbad595638dbc3da23
BLAKE2b-256 46e6f7fbcb891c340068c7c1cd875cff42e5050ea8377317bd92d80b22738b71

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 678ffb5c0a6b1518b149cc328c610615d70d9297e351e12c01d0beed5d65360f
MD5 8169743547ec552976016a0374de1050
BLAKE2b-256 75d272dea233e577409d046c4b070082e2213e8171a42ec41d3c28d609b4c74a

See more details on using hashes here.

File details

Details for the file orjson-3.9.9-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.9-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 31d676bc236f6e919d100fb85d0a99812cff1ebffaa58106eaaec9399693e227
MD5 523cbf2884b44158b89b414d4803a68a
BLAKE2b-256 28f29a40587a174e6d90833a83f086b13d0e5ae808b26914ccc98a7b20e26194

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.9-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.0

File hashes

Hashes for orjson-3.9.9-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 ab7bae2b8bf17620ed381e4101aeeb64b3ba2a45fc74c7617c633a923cb0f169
MD5 132e12dc33f340342f95f814c893761c
BLAKE2b-256 3a073974f8bf3e0303fbb875d428f546116fd41d41cad1f94fbc9d99b6cbd929

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.9-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.0

File hashes

Hashes for orjson-3.9.9-cp310-none-win32.whl
Algorithm Hash digest
SHA256 d3f56e41bc79d30fdf077073072f2377d2ebf0b946b01f2009ab58b08907bc28
MD5 abe6fb952ae07a404905816072dbad54
BLAKE2b-256 46f3c3dbfa3032908e344c06c8402b90bdfb7298d551197b2e8b99097a27b4a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 879d2d1f6085c9c0831cec6716c63aaa89e41d8e036cabb19a315498c173fcc6
MD5 4fd7649d54722f80fa274da36df1b959
BLAKE2b-256 06351a4a12925e19462623a27a019b3f0403b3798dd3e809d5fd7c2d6d43ffdf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 0a1a4d9e64597e550428ba091e51a4bcddc7a335c8f9297effbfa67078972b5c
MD5 a7bbb93301157bf68b6da8c33d2e3af1
BLAKE2b-256 521f28f532d7159f5ffc0870568bfd4d83101612ca89fcbfc41145cea86fde8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1ef06431f021453a47a9abb7f7853f04f031d31fbdfe1cc83e3c6aadde502cce
MD5 0314ed9a9ee20cc157a9f4ce0575c23f
BLAKE2b-256 f466d13cb488f5e74d603ebeb0b7b5032a81462d76d0b197a7b2002843ca1055

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 12b83e0d8ba4ca88b894c3e00efc59fe6d53d9ffb5dbbb79d437a466fc1a513d
MD5 8af675770e738410cca0a679759ced1d
BLAKE2b-256 244351fbbdf2e68cdc163f374a0ad7a5630e9cacbe59df2e3dae403c0e471950

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 8e7877256b5092f1e4e48fc0f1004728dc6901e7a4ffaa4acb0a9578610aa4ce
MD5 6416e60fdccd123f49b3eb90ba5f1e1d
BLAKE2b-256 292585782d4ed934aea20f5520c717047d87fa826d144aa4178ea8bd54b58502

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 543b36df56db195739c70d645ecd43e49b44d5ead5f8f645d2782af118249b37
MD5 ba9b4770448c6a21e3b16e4e73c0457e
BLAKE2b-256 cbc9b21babf72771f88ce7c6e89f6802a8db3acad2fa3838363d242b1e17919a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8038ba245d0c0a6337cfb6747ea0c51fe18b0cf1a4bc943d530fd66799fae33d
MD5 39f9bcafc3e0cecda218cf7b840ae2b5
BLAKE2b-256 276e9dfeee79dfa053f86151c792e538b3a6965b284644f3d354167a09fe02e0

See more details on using hashes here.

File details

Details for the file orjson-3.9.9-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.9-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 f28090060a31f4d11221f9ba48b2273b0d04b702f4dcaa197c38c64ce639cc51
MD5 9f37e3bd16ad9b0d86a6e459c9dc336a
BLAKE2b-256 58c5e7a9d880540a7a6c02ad8e401f1f401182c21b710dec9178ff0bd89fb41a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.9-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.0

File hashes

Hashes for orjson-3.9.9-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 920814e02e3dd7af12f0262bbc18b9fe353f75a0d0c237f6a67d270da1a1bb44
MD5 395920cdb937a8a75d1b5aaccfb95186
BLAKE2b-256 266e9e838198856a22b0b060ef9547819b063f99d692c7148d071b0fd27ad556

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.9-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.0

File hashes

Hashes for orjson-3.9.9-cp39-none-win32.whl
Algorithm Hash digest
SHA256 50232572dd300c49f134838c8e7e0917f29a91f97dbd608d23f2895248464b7f
MD5 83a094288ba5419d904065784a0ffd82
BLAKE2b-256 252e09543c9330b18ec22c4eea10309f934eb745155116b286681beddde8c4dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 906cac73b7818c20cf0f6a7dde5a6f009c52aecc318416c7af5ea37f15ca7e66
MD5 34a920fc9921e2737c024aa9c21461d1
BLAKE2b-256 6bf89734476c77bcfd56ccf745534b1c0003aced69550b1f39f38bc0db4e89ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 8cba20c9815c2a003b8ca4429b0ad4aa87cb6649af41365821249f0fd397148e
MD5 b73f0e27d50571560a1c2b4a056ed0f1
BLAKE2b-256 89209f5eb91b0a2f6ab38adb4d7e47dbd9cfcbc235ca8c28bef8f5fbb4cb234d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 06f0c024a75e8ba5d9101facb4fb5a028cdabe3cdfe081534f2a9de0d5062af2
MD5 ebeef12cc2713bb25d04cb59f75020aa
BLAKE2b-256 40951692c150ff7c35ff20c251869777e0a445d39e2d5e484b8a8ea17cf8f741

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 c63eca397127ebf46b59c9c1fb77b30dd7a8fc808ac385e7a58a7e64bae6e106
MD5 56008cffa1c27a298a6847dc2bffdac5
BLAKE2b-256 1d1342d183315e2018e1d3d7f17ab9b32d152a441cc76deef66c0771443917a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 cffb77cf0cd3cbf20eb603f932e0dde51b45134bdd2d439c9f57924581bb395b
MD5 46f5a1a190c005bdb88d67f723a18455
BLAKE2b-256 8fbf02069c0a604595b4f664f065b97da006be9a10ffbc6dcfbbf3494b314009

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 f692e7aabad92fa0fff5b13a846fb586b02109475652207ec96733a085019d80
MD5 5495982444687c19b5148698a6f24791
BLAKE2b-256 24fb371ae75afbca619f7143ce17e99334b716044497dc75d3bdd43692b776cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e159b97f5676dcdac0d0f75ec856ef5851707f61d262851eb41a30e8fadad7c9
MD5 55747dff30cc7ebf31637c93bbfc82ee
BLAKE2b-256 821c777bf852d342fedef72ccd334311237ac969fa9b0b7e24c86fbfba309fbe

See more details on using hashes here.

File details

Details for the file orjson-3.9.9-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.9-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 4a308aeac326c2bafbca9abbae1e1fcf682b06e78a54dad0347b760525838d85
MD5 d5ce76b7c785ee72a4eea6f36cf6af4a
BLAKE2b-256 fd68ee89c8e636dce28a2adf9d819b72e1cc6a9b59dbcc0dc45a7d2f9278027d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.9-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.0

File hashes

Hashes for orjson-3.9.9-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 c4eb31a8e8a5e1d9af5aa9e247c2a52ad5cf7e968aaa9aaefdff98cfcc7f2e37
MD5 bf2806fa16364144e039461536b3c3f5
BLAKE2b-256 556a5b512c7b358c1a2b1185c25225ad4a752c63d4b23df6356d1f41be8dbaf7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.9-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.0

File hashes

Hashes for orjson-3.9.9-cp38-none-win32.whl
Algorithm Hash digest
SHA256 1f352117eccac268a59fedac884b0518347f5e2b55b9f650c2463dd1e732eb61
MD5 efe1f60ac24c4023b925ffb534bec465
BLAKE2b-256 3edf458bf47c2cfb6493088c74f958e967b725e4c76329e66b2958e707977448

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b20becf50d4aec7114dc902b58d85c6431b3a59b04caa977e6ce67b6fee0e159
MD5 656c17d783c2392038c027e70052e0ed
BLAKE2b-256 d437e9842a2d245e9840edc06d2c646ad9d943a809b3140540bcb8a5af6f1060

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 9a4402e7df1b5c9a4c71c7892e1c8f43f642371d13c73242bda5964be6231f95
MD5 3994bbb32e7de002384fed640c165c1c
BLAKE2b-256 71f4f6797f825048f15577d5a3b63c35e8d228d32cdae88facfd36f5b9374620

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6fcf06c69ccc78e32d9f28aa382ab2ab08bf54b696dbe00ee566808fdf05da7d
MD5 eb99fcaa4e961b0b41a759eead5e3983
BLAKE2b-256 d145c9168772b1d1360525287df9e7d3e807f636841f681787e25f7cf3b36a5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 eb50d869b3c97c7c5187eda3759e8eb15deb1271d694bc5d6ba7040db9e29036
MD5 fde2878a9238783a779952fb257d5c06
BLAKE2b-256 da88ded8d3fdd348a0411c619286910e05f9dc917ac4c58f739299100eb948af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 a3bf6ca6bce22eb89dd0650ef49c77341440def966abcb7a2d01de8453df083a
MD5 886a8f3c4b47d809571819cd15533847
BLAKE2b-256 ff317dc88bdefe1b3995550ec6bbdf1bcde365eca933dd1b25d2c100e86b77b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 e98ca450cb4fb176dd572ce28c6623de6923752c70556be4ef79764505320acb
MD5 cf47aa606917dcb92fd8e0b919fb04c8
BLAKE2b-256 c50be16c0b62bd7199b865a5001665a940744bc07f16a172a67f383be964182d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9d9b5440a5d215d9e1cfd4aee35fd4101a8b8ceb8329f549c16e3894ed9f18b5
MD5 d260eb3d552fd194c1f22b3e0d37f9d9
BLAKE2b-256 b1a79ac94c5e9314e6f32ee3c33d442f994872e3f683e232c1c153aac8b5c8c1

See more details on using hashes here.

File details

Details for the file orjson-3.9.9-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.9-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 335406231f9247f985df045f0c0c8f6b6d5d6b3ff17b41a57c1e8ef1a31b4d04
MD5 778b8965eae7ee54e29e785d60697919
BLAKE2b-256 e97ef80093e57517339fd4182751c5ac6d24b51b3fb8bc8d5fb456d164dca300

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