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 support PyPy. Releases follow semantic versioning and serializing a new object type without an opt-in flag is considered a breaking change.

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

  1. Usage
    1. Install
    2. Quickstart
    3. Migrating
    4. Serialize
      1. default
      2. option
      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.

Will it support PyPy?

Probably not.

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.8.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.8-cp312-none-win_amd64.whl (135.1 kB view details)

Uploaded CPython 3.12Windows x86-64

orjson-3.9.8-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.8-cp312-cp312-musllinux_1_1_aarch64.whl (315.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ ARM64

orjson-3.9.8-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.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (152.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

orjson-3.9.8-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.8-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.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

orjson-3.9.8-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl (241.8 kB view details)

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

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11Windows x86

orjson-3.9.8-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.8-cp311-cp311-musllinux_1_1_aarch64.whl (315.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ ARM64

orjson-3.9.8-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.8-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.8-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.8-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.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

orjson-3.9.8-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.8-cp310-none-win_amd64.whl (135.0 kB view details)

Uploaded CPython 3.10Windows x86-64

orjson-3.9.8-cp310-none-win32.whl (141.4 kB view details)

Uploaded CPython 3.10Windows x86

orjson-3.9.8-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.8-cp310-cp310-musllinux_1_1_aarch64.whl (315.4 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

orjson-3.9.8-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.8-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.8-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.8-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.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

orjson-3.9.8-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.8-cp39-none-win_amd64.whl (134.9 kB view details)

Uploaded CPython 3.9Windows x86-64

orjson-3.9.8-cp39-none-win32.whl (141.2 kB view details)

Uploaded CPython 3.9Windows x86

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

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

orjson-3.9.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

orjson-3.9.8-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.8-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.8-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.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

orjson-3.9.8-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.8-cp38-none-win_amd64.whl (134.8 kB view details)

Uploaded CPython 3.8Windows x86-64

orjson-3.9.8-cp38-none-win32.whl (141.1 kB view details)

Uploaded CPython 3.8Windows x86

orjson-3.9.8-cp38-cp38-musllinux_1_1_x86_64.whl (308.6 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

orjson-3.9.8-cp38-cp38-musllinux_1_1_aarch64.whl (315.1 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ARM64

orjson-3.9.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (138.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

orjson-3.9.8-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.8-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.8-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.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (141.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

orjson-3.9.8-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.8.tar.gz.

File metadata

  • Download URL: orjson-3.9.8.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.8.tar.gz
Algorithm Hash digest
SHA256 ed1adc6db9841974170a5195b827ee4e392b1e8ca385b19fcdc3248489844059
MD5 9eaf5289a24554f24a2801a80a81c5cc
BLAKE2b-256 9b5e3f75d690496700a446a7a473f92f8fee979c4a13c72f1faf1b4528f9bd8b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.8-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.8-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 5c818f19315251d68954c529f5d8322053f1c35b500b47d008e968bf2d32ed97
MD5 3ccf850ddf998aebd9b03bbcfcab5cb3
BLAKE2b-256 6a35a3934a738db2a64944fa5841b00b02219fd9d4097c8a9198e26afd0da435

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ab9c234bfe89aeba825feb897718c65a80851f367a4a8308d6b5074a80fce6e5
MD5 79c5251d709c9fb19ada0b6f018cd64f
BLAKE2b-256 a8486ee912ec26a73add8e81ae41ca836f1986c05c443f521173c9425229b022

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 ff2e6e429416b6287006ba0556083f62396199299ab85afd3ba1e83be14677e2
MD5 4dfbe23786c0884eaa3d2f806a6178da
BLAKE2b-256 4f34acf25649f2cc0a91e87d67a6509b62ffb7cf9cd88102f17ac55b79c475b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 235b4aa46c58ded90c8b368722c1eb941613fe5a6b18bc14cfaae929f0be902e
MD5 d49249bb3d4e1dac2dfaffd260ae5c53
BLAKE2b-256 70d272168f7e5549155ad52c2e25e3ac213fd9fd63ca5916c74ae96d1ccba072

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ee887aeb8ab0c1d25e9f2b540f9a34b4cbfe8894f95b63a5984441a9f337d2ff
MD5 01addb4137e1c7f324d037fe2c1148a2
BLAKE2b-256 52cbf09c89aa27328eedaebf4a2d65a2b17c71414442c24c10a058ff6322bb60

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 cc449bff1d4152438615f4a6a003577942908c4e166d64dc46d1f3f0cde72ecd
MD5 bf58fd78a4b52773ee99997953260cd7
BLAKE2b-256 bce4c789c42c9db035fd70bcb9356d61590550551e3c931713305025a9d2d739

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 edafb45fc5b2063abd8a0baf6be21c38497df2d9e0b75cdb053eb0ff100fa26c
MD5 2aab855bed27c268f03f2d8bb922e19c
BLAKE2b-256 dd764a879964b68ee800d1e464a2946145e7db4b5b8660a2d284098b98e5c7e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3e8f5ac250184dcb6b00543f0f82853d7e840e476d0135733e459aee058695e5
MD5 f32055ebe3cc2b520bd1c46bd9e29443
BLAKE2b-256 92596702d03765efba41ee15472bd58e72fbbbf462b5e6b8a560dbb2539f3142

See more details on using hashes here.

File details

Details for the file orjson-3.9.8-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.8-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 af8e6185516ce0c93d6ce1f4105918504da629c631fd969686f32a1be3ed3c9b
MD5 301b49fd9228450a9649f9071e4776d0
BLAKE2b-256 a8c447ecec29ab06750ea47501bfee03bdeffb0a9f879aea66567f29facdba3d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.8-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.8-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 764306f6370e6c76cbbf3139dd9b05be9c4481ee0b15966bd1907827a5777216
MD5 f2f75aed510ea2f2f685f758287c8e62
BLAKE2b-256 481aa6aaaabc3a252d39c148b2e259b51d0db6f0377e5113bb6922212339ef58

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.8-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.8-cp311-none-win32.whl
Algorithm Hash digest
SHA256 a119c73520192c2882d0549151b9cdd65e0bb5396bedf8951ba5f70d6a873879
MD5 f4842fd0a0c10f86c855c8768d2d24f0
BLAKE2b-256 9e634857314a5ae7437df87a1bddf5e05b5ed75bae67c8c8c58e075b61e21ea8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 4433dd903d5b022a64e9dd1dca94f08ab04d5d928a0ecd33dd46110468960879
MD5 6782049106eb598c4818990d80208d10
BLAKE2b-256 3be9f22cfb732cdcc7a84d74d9df4254eb0e1c6e568963050ce2c39292973d5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 9ce982f3c1df83f7dc74f3b2690605470ff4790d12558e44359f01e822c5cb08
MD5 625d86fac25495231cdf87ea31edbe31
BLAKE2b-256 54317e42b394cb5db0ab7ab68c5bf52d86ca386317ed3383e0a09f805b38e0bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a9bcd3a48b260d3dfe68b8ce93d11f99a70bd4c908efe22d195a1b1dcfb15ac2
MD5 227761c9046c696866184d731279e9aa
BLAKE2b-256 4ac150ee1d68394a67bfc5ed45b63c0d902f22745dbd4074217e9b3030caaec4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 d23edcb32383f3d86b2f4914f9825ce2d67625abd34be6e5ed1f59ec30127b7a
MD5 212da333e6a03bdccb877cb9cb295768
BLAKE2b-256 a4439a04f62dae2d21c607fe63716543ad90baa47885b30eb6066a2c225d0383

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 68ed63273ec4ecdd7865e9d984d65a749c0d780882cf9dde6ab2bc6323f6471a
MD5 e7df184ad7f7b8786dfd80874109b8d4
BLAKE2b-256 af43743d3532711c26bd6070b0084533e1af19524872b637a73ed85c17286bd1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 6d1aab08b373232f568ea9ae048f9f77e09f389068afee6dd44bb6140e2c3ea3
MD5 bf03654478f945d8aee739ba7d6d4382
BLAKE2b-256 23b99320132c556164cc496a9aac8e61302aa0a3f3ab3e2256db5a54965686dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 742d4d16d66579ffff4b2048a8de4a0b03d731847233e92c4edd418a9c582d0f
MD5 3e34f6a4379caef7427aac2f7c5cf442
BLAKE2b-256 7df2f143b917ea6b901b93f0fe57629e603eebe94c5c2aa11a3617632b7d25e7

See more details on using hashes here.

File details

Details for the file orjson-3.9.8-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.8-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 8a1c92f467f5fd0f8fb79273006b563364b1e45667b3760423498348dc2e22fa
MD5 0639a7ef8fb98650aab07672578cf474
BLAKE2b-256 fd3f7a4fbac57bc94a8b24082a37bb8edbb33b85f26b56a0fea819ba6592840f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.8-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.8-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 423774c85e73054acfef10fc3328f35c8d3e0193a7247d47308ebfccde70695d
MD5 89f1d1d175f7b15e592c3702a667a9d1
BLAKE2b-256 0521b4a378f125102f13779626d33c54714ee5fbd70dbc361bef3199d6247652

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.8-cp310-none-win32.whl
  • Upload date:
  • Size: 141.4 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.8-cp310-none-win32.whl
Algorithm Hash digest
SHA256 2bcc9dc53f9e1d679515349bf299ed5e75310146c755d2ba227a7e37851ab3fb
MD5 462681c4d266f2762e9a86ba24593a6f
BLAKE2b-256 3bcb33b0a7e07a48df821ef17637e9fa4decf1c92a752d1f54cc37bb901489a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 24915b65ac19731a57a5ab7dbf463f91555e10d4ad833513e7d8cc6848487c24
MD5 310fc26259998a06612e6e39bc13bce4
BLAKE2b-256 9b121a21c1b9c60a313e2a94195fb20507b72bed4cb00c4df499f2bf829d9fec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 f9b070c895fc81c362b1b41dc6d0c81a84ee4abb1193804de15683549aeeb0ee
MD5 ba57cc213f88322102442cea256bfb1a
BLAKE2b-256 bb2b67c3670df525e87cf6f8b5f6acaf85cbac4ced6bc0e5e0e3eaed1e4fb5e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5311ce1457a29084146d2599588dc8ad96256feb921af8e365444fa8ad67afac
MD5 3922f8608f56c192cb653de60b6a8a50
BLAKE2b-256 3bd12dfc16b183a816decafa09e06375eb99d9c9ee7ef51293ea8a3cf3cd6907

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 3d30621cf18a0e16a16fbcf2fa536d800f78514a46f5321130f1b54e88994267
MD5 2d2a3504923706120d86d604b8415961
BLAKE2b-256 1886a74403e85d7ad8609531769d6e43d31c5a4bd6ed6115218bc5855ba59abf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 c863c7805a7961428a40431a8f47c3f71c74e6c5ddf1ab023e6e79bc5806e6d5
MD5 3c94fdf014520459eb836acd68c26710
BLAKE2b-256 51b8f3109ddef4ce4bbe1b8a44cf628a3ffef6403602ec285b100dc3288c1b95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 2c56dd62754e2ee5b7f64d37f3e85685d3bd5bcaa448076e9113be9069078dfc
MD5 473eacce494b6b50a9228126a91bed7b
BLAKE2b-256 1ac55e0d2e98bb5dbd378e69bcdecf08c4a344347250156425ec809e0daa7c88

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 be6f2634fe6c88a0e1e785fc0b6845ad75bef6e20f1ee3d62fd81b17e7505cbf
MD5 232745209d90444acbbdb1b87da815dd
BLAKE2b-256 aaea2e81418385c0e17e06c4cf8f49b22b453ee97b5e4404a62e74b89a8fc82d

See more details on using hashes here.

File details

Details for the file orjson-3.9.8-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.8-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 823525bfb27b804b492acc59a45dc0973ea629d97557eac81dde7b34b5267611
MD5 efc00ecc0b11d6755342bf13d65433ff
BLAKE2b-256 c3813f09cfedb24c6f0f2be8d582d8db09cdad3f8c6e808152e2e1ced5a4e8a7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.8-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.8-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 52c0480d5be12697b10b4d748b86acd4999f47e1d8e44e49486d0a550f30fcba
MD5 894bda195789379c1cdad5a11d1328ae
BLAKE2b-256 33bf1f31ad17a302c143d99b589d3809f1282cae1a6c3a97ca93080b2b68a32c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.8-cp39-none-win32.whl
  • Upload date:
  • Size: 141.2 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.8-cp39-none-win32.whl
Algorithm Hash digest
SHA256 ca4f3e15517bdcdb573dfe6c97d4171247ce50ec82e3a7b708941b53d5f4bc29
MD5 27ea1581d66314ba6cd0bc0d7c0ee191
BLAKE2b-256 b55696d9c4b464d5599483cbc3f646c7b21de69776830507d0be83d3054ade67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 4c836845177d6ee92682d0d9b61346a06b140b5666319905a5b423ebb0ecc5d3
MD5 530aa329092f5bcbd5cc1f97d073bbbc
BLAKE2b-256 ed91e667c402ee7b3f1d060cd5a490b38cfc07aaa17dc20b449e6cd8985ad75f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 0a27e5161b1f23fd1b5e549b38018bbc7a0f0bd3699d3dec04e2e62d271480d3
MD5 4d2fe1b8efe34d4a214e099ce8323e78
BLAKE2b-256 1ff6961404a7499a14c4ca99c1b988eede65b1a31f356fb64598b4e3c1c78ab1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e26836a11b88f839b6902f92e8dd997c32f49486119a1aa67d714bc288aae172
MD5 514763828183561554a5651b0b7ec778
BLAKE2b-256 a6e2fa36d7485726d9751648ef25a4ed0844fc7c8bcbdaa784d62926a01542aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 55ae6509f078eb90d157da7717f2826e55ef08756bc4f5b89448c6b56be4ff2c
MD5 339f515f1b245081c0c1e448acc1d06f
BLAKE2b-256 606568da601496623c2bc8d59590db8bc7ca52db8de551ac374b0001a0fc9c38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 428fec9497d17ebb5936495bbeaf12b5952bff5f6fde8a0e64030887b8d8cf94
MD5 bf8648c00400e4edd39036c7e8b615a7
BLAKE2b-256 6d559ed6e4c426fa5fcdfefe5d38ab7c64aa645fe9f6cd56589a582ca28aff1e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 154f048e4da06275c1f173445dfbd88f038d29f7529a0dae6157293241b7f5bd
MD5 5c0e95f3affd60c744e4f10c775c11f3
BLAKE2b-256 58653ae68cd419dbc603886170e5b90de53c9e82d007b2fb2aeef86507fd88ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6ad73fde11117b6b103c1d4071168b0e2875d890556fa8597663a5eca81bb812
MD5 3f1f1786d617ba56dc5ee6bdbfd8ca67
BLAKE2b-256 489f09cf79773693e4ca98b9eaba4b77490cad0805336868541635db7e6a5ca5

See more details on using hashes here.

File details

Details for the file orjson-3.9.8-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.8-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 c9ae634b8a55539c3d5a53813552325733ab3da3601feef8e99f91cef634f3c4
MD5 dfdd92153df50198f1c7801b3dc436dd
BLAKE2b-256 bf7956f4b4a782c1a27c15df22949dae825266d2285309613b536f9e5515fde6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.8-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.8-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 34eec476141a043d478651d1efbf218162cdd57add24dfa659ac89e1a001477a
MD5 13393d4f1fde7cfa585dfde3218353dd
BLAKE2b-256 c46cf6cae0249d80a328ba85dfd92726388ee251d6ed384fdb13e075c950b689

See more details on using hashes here.

File details

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

File metadata

  • Download URL: orjson-3.9.8-cp38-none-win32.whl
  • Upload date:
  • Size: 141.1 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.8-cp38-none-win32.whl
Algorithm Hash digest
SHA256 9df23493a72f073b2ab1005e628a963248dc577a2816e9c82caf09ff74908414
MD5 58790f437e90efc8606ba7a74a1aee78
BLAKE2b-256 24e4485481e29ff53fa7a7d9a2f5e8a8aed53e8d917a0b83462bdd29f2bd6410

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 e538974e2ed20504f3dad0bcdab41cd5e4fa086dabea852a150e4cc98293183d
MD5 32dad89adcdd82cfd51f4f4597ab9562
BLAKE2b-256 20b93986d14cf2735a87ce1c6c985c71913a54337e1a038e3749c46b7afc79a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 002f7ca314cc8fbed5f00990bf48eda098ba1bba1e0c23be4bb024381e7889d1
MD5 fe57501df73ce8a7295ba36698c4239f
BLAKE2b-256 76902f2f2d5e01c44130c5404abf12074df32847f16f885c19d46c5631472728

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e32ac29f9c30cc152e7432a26c665232a382678f2402bf782f73fbc985cfb37e
MD5 7e986b44238686efbd98a7b5d374beb6
BLAKE2b-256 ba89eae923d760ff2856ab4542ff9b46b266ec8d933845655c7795e0f592f462

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 119a6edcecef4e37d30d6998e9cedd9e0ecdc894fa07216221dc8dd2eb24dd9d
MD5 9c5f13385d6fa2a1361ed99a8bea2ca5
BLAKE2b-256 a540925e02206149c309a1bbcb062d5f0da8092f75fb26b46560b9d6aaeb7d12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 0619df2454b87d883f7f9ea95d79fc21fec0b8a4d600b549a1e91f59a3493d6b
MD5 020b5bc12c8bec8b5fc2f1f5f4d6d3fd
BLAKE2b-256 5e9a20cead4400a6ea9c2bd2c3ebbe78c7c8f17e1cb0d1dc5afe1ecb32312ebc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 3be3da93c4d044d2f60de816320087a8494c3e75cdf3369655e014240b1a229d
MD5 33254f9fd43711d213356e69edc5732a
BLAKE2b-256 1e2b6f86f18ba196dde8b84d308c15b65b53e9837ada0b3ea8f364c564dc5706

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for orjson-3.9.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a3c7c4d60e21b0f10c8214d7ca9f2243019dd1bf9d2750b3b4a9250935977a24
MD5 27f8cdfb7395cb83fd4708f8a0d2cb3f
BLAKE2b-256 47499074b2ebfdb758d0a9d9627cdd680ca88aa726685cd385eba07defa4009d

See more details on using hashes here.

File details

Details for the file orjson-3.9.8-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.8-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 e6a267c0fc64fc4d0b8fb146e1a060a40f570441a9390ec4bc6de0b5fda148cd
MD5 860c48fc2138d186ca05d17304ef95b2
BLAKE2b-256 c24006292bd3a04c973d8795016b5ab4b049115c2bfba9ae3151f1bbb854bc82

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