srsly


Namesrsly JSON
Version 2.4.8 PyPI version JSON
download
home_pagehttps://github.com/explosion/srsly
SummaryModern high-performance serialization utilities for Python
upload_time2023-09-22 06:16:54
maintainer
docs_urlNone
authorExplosion
requires_python>=3.6
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <a href="https://explosion.ai"><img src="https://explosion.ai/assets/img/logo.svg" width="125" height="125" align="right" /></a>

# srsly: Modern high-performance serialization utilities for Python

This package bundles some of the best Python serialization libraries into one
standalone package, with a high-level API that makes it easy to write code
that's correct across platforms and Pythons. This allows us to provide all the
serialization utilities we need in a single binary wheel. Currently supports
**JSON**, **JSONL**, **MessagePack**, **Pickle** and **YAML**.

[![tests](https://github.com/explosion/srsly/actions/workflows/tests.yml/badge.svg)](https://github.com/explosion/srsly/actions/workflows/tests.yml)
[![PyPi](https://img.shields.io/pypi/v/srsly.svg?style=flat-square&logo=pypi&logoColor=white)](https://pypi.python.org/pypi/srsly)
[![conda](https://img.shields.io/conda/vn/conda-forge/srsly.svg?style=flat-square&logo=conda-forge&logoColor=white)](https://anaconda.org/conda-forge/srsly)
[![GitHub](https://img.shields.io/github/release/explosion/srsly/all.svg?style=flat-square&logo=github)](https://github.com/explosion/srsly)
[![Python wheels](https://img.shields.io/badge/wheels-%E2%9C%93-4c1.svg?longCache=true&style=flat-square&logo=python&logoColor=white)](https://github.com/explosion/wheelwright/releases)

## Motivation

Serialization is hard, especially across Python versions and multiple platforms.
After dealing with many subtle bugs over the years (encodings, locales, large
files) our libraries like [spaCy](https://github.com/explosion/spaCy) and
[Prodigy](https://prodi.gy) had steadily grown a number of utility functions to
wrap the multiple serialization formats we need to support (especially `json`,
`msgpack` and `pickle`). These wrapping functions ended up duplicated across our
codebases, so we wanted to put them in one place.

At the same time, we noticed that having a lot of small dependencies was making
maintenance harder, and making installation slower. To solve this, we've made
`srsly` standalone, by including the component packages directly within it. This
way we can provide all the serialization utilities we need in a single binary
wheel.

`srsly` currently includes forks of the following packages:

- [`ujson`](https://github.com/esnme/ultrajson)
- [`msgpack`](https://github.com/msgpack/msgpack-python)
- [`msgpack-numpy`](https://github.com/lebedov/msgpack-numpy)
- [`cloudpickle`](https://github.com/cloudpipe/cloudpickle)
- [`ruamel.yaml`](https://github.com/pycontribs/ruamel-yaml) (without unsafe
  implementations!)

## Installation

> ⚠️ Note that `v2.x` is only compatible with **Python 3.6+**. For 2.7+
> compatibility, use `v1.x`.

`srsly` can be installed from pip. Before installing, make sure that your `pip`,
`setuptools` and `wheel` are up to date.

```bash
python -m pip install -U pip setuptools wheel
python -m pip install srsly
```

Or from conda via conda-forge:

```bash
conda install -c conda-forge srsly
```

Alternatively, you can also compile the library from source. You'll need to make
sure that you have a development environment with a Python distribution
including header files, a compiler (XCode command-line tools on macOS / OS X or
Visual C++ build tools on Windows), pip and git installed.

Install from source:

```bash
# clone the repo
git clone https://github.com/explosion/srsly
cd srsly

# create a virtual environment
python -m venv .env
source .env/bin/activate

# update pip
python -m pip install -U pip setuptools wheel

# compile and install from source
python -m pip install .
```

For developers, install requirements separately and then install in editable
mode without build isolation:

```bash
# install in editable mode
python -m pip install -r requirements.txt
python -m pip install --no-build-isolation --editable .

# run test suite
python -m pytest --pyargs srsly
```

## API

### JSON

> 📦 The underlying module is exposed via `srsly.ujson`. However, we normally
> interact with it via the utility functions only.

#### <kbd>function</kbd> `srsly.json_dumps`

Serialize an object to a JSON string. Falls back to `json` if `sort_keys=True`
is used (until it's fixed in `ujson`).

```python
data = {"foo": "bar", "baz": 123}
json_string = srsly.json_dumps(data)
```

| Argument    | Type | Description                                            |
| ----------- | ---- | ------------------------------------------------------ |
| `data`      | -    | The JSON-serializable data to output.                  |
| `indent`    | int  | Number of spaces used to indent JSON. Defaults to `0`. |
| `sort_keys` | bool | Sort dictionary keys. Defaults to `False`.             |
| **RETURNS** | str  | The serialized string.                                 |

#### <kbd>function</kbd> `srsly.json_loads`

Deserialize unicode or bytes to a Python object.

```python
data = '{"foo": "bar", "baz": 123}'
obj = srsly.json_loads(data)
```

| Argument    | Type        | Description                     |
| ----------- | ----------- | ------------------------------- |
| `data`      | str / bytes | The data to deserialize.        |
| **RETURNS** | -           | The deserialized Python object. |

#### <kbd>function</kbd> `srsly.write_json`

Create a JSON file and dump contents or write to standard output.

```python
data = {"foo": "bar", "baz": 123}
srsly.write_json("/path/to/file.json", data)
```

| Argument | Type         | Description                                            |
| -------- | ------------ | ------------------------------------------------------ |
| `path`   | str / `Path` | The file path or `"-"` to write to stdout.             |
| `data`   | -            | The JSON-serializable data to output.                  |
| `indent` | int          | Number of spaces used to indent JSON. Defaults to `2`. |

#### <kbd>function</kbd> `srsly.read_json`

Load JSON from a file or standard input.

```python
data = srsly.read_json("/path/to/file.json")
```

| Argument    | Type         | Description                                |
| ----------- | ------------ | ------------------------------------------ |
| `path`      | str / `Path` | The file path or `"-"` to read from stdin. |
| **RETURNS** | dict / list  | The loaded JSON content.                   |

#### <kbd>function</kbd> `srsly.write_gzip_json`

Create a gzipped JSON file and dump contents.

```python
data = {"foo": "bar", "baz": 123}
srsly.write_gzip_json("/path/to/file.json.gz", data)
```

| Argument | Type         | Description                                            |
| -------- | ------------ | ------------------------------------------------------ |
| `path`   | str / `Path` | The file path.                                         |
| `data`   | -            | The JSON-serializable data to output.                  |
| `indent` | int          | Number of spaces used to indent JSON. Defaults to `2`. |

#### <kbd>function</kbd> `srsly.write_gzip_jsonl`

Create a gzipped JSONL file and dump contents.

```python
data = [{"foo": "bar"}, {"baz": 123}]
srsly.write_gzip_json("/path/to/file.jsonl.gz", data)
```

| Argument          | Type         | Description                                                                                                                                                                                                             |
| ----------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `path`            | str / `Path` | The file path.                                                                                                                                                                                                          |
| `lines`           | -            | The JSON-serializable contents of each line.                                                                                                                                                                            |
| `append`          | bool         | Whether or not to append to the location. Appending to .gz files is generally not recommended, as it doesn't allow the algorithm to take advantage of all data when compressing - files may hence be poorly compressed. |
| `append_new_line` | bool         | Whether or not to write a new line before appending to the file.                                                                                                                                                        |

#### <kbd>function</kbd> `srsly.read_gzip_json`

Load gzipped JSON from a file.

```python
data = srsly.read_gzip_json("/path/to/file.json.gz")
```

| Argument    | Type         | Description              |
| ----------- | ------------ | ------------------------ |
| `path`      | str / `Path` | The file path.           |
| **RETURNS** | dict / list  | The loaded JSON content. |

#### <kbd>function</kbd> `srsly.read_gzip_jsonl`

Load gzipped JSONL from a file.

```python
data = srsly.read_gzip_jsonl("/path/to/file.jsonl.gz")
```

| Argument    | Type         | Description               |
| ----------- | ------------ | ------------------------- |
| `path`      | str / `Path` | The file path.            |
| **RETURNS** | dict / list  | The loaded JSONL content. |

#### <kbd>function</kbd> `srsly.write_jsonl`

Create a JSONL file (newline-delimited JSON) and dump contents line by line, or
write to standard output.

```python
data = [{"foo": "bar"}, {"baz": 123}]
srsly.write_jsonl("/path/to/file.jsonl", data)
```

| Argument          | Type         | Description                                                                                                            |
| ----------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------- |
| `path`            | str / `Path` | The file path or `"-"` to write to stdout.                                                                             |
| `lines`           | iterable     | The JSON-serializable lines.                                                                                           |
| `append`          | bool         | Append to an existing file. Will open it in `"a"` mode and insert a newline before writing lines. Defaults to `False`. |
| `append_new_line` | bool         | Defines whether a new line should first be written when appending to an existing file. Defaults to `True`.             |

#### <kbd>function</kbd> `srsly.read_jsonl`

Read a JSONL file (newline-delimited JSON) or from JSONL data from standard
input and yield contents line by line. Blank lines will always be skipped.

```python
data = srsly.read_jsonl("/path/to/file.jsonl")
```

| Argument   | Type       | Description                                                          |
| ---------- | ---------- | -------------------------------------------------------------------- |
| `path`     | str / Path | The file path or `"-"` to read from stdin.                           |
| `skip`     | bool       | Skip broken lines and don't raise `ValueError`. Defaults to `False`. |
| **YIELDS** | -          | The loaded JSON contents of each line.                               |

#### <kbd>function</kbd> `srsly.is_json_serializable`

Check if a Python object is JSON-serializable.

```python
assert srsly.is_json_serializable({"hello": "world"}) is True
assert srsly.is_json_serializable(lambda x: x) is False
```

| Argument    | Type | Description                              |
| ----------- | ---- | ---------------------------------------- |
| `obj`       | -    | The object to check.                     |
| **RETURNS** | bool | Whether the object is JSON-serializable. |

### msgpack

> 📦 The underlying module is exposed via `srsly.msgpack`. However, we normally
> interact with it via the utility functions only.

#### <kbd>function</kbd> `srsly.msgpack_dumps`

Serialize an object to a msgpack byte string.

```python
data = {"foo": "bar", "baz": 123}
msg = srsly.msgpack_dumps(data)
```

| Argument    | Type  | Description            |
| ----------- | ----- | ---------------------- |
| `data`      | -     | The data to serialize. |
| **RETURNS** | bytes | The serialized bytes.  |

#### <kbd>function</kbd> `srsly.msgpack_loads`

Deserialize msgpack bytes to a Python object.

```python
msg = b"\x82\xa3foo\xa3bar\xa3baz{"
data = srsly.msgpack_loads(msg)
```

| Argument    | Type  | Description                                                                             |
| ----------- | ----- | --------------------------------------------------------------------------------------- |
| `data`      | bytes | The data to deserialize.                                                                |
| `use_list`  | bool  | Don't use tuples instead of lists. Can make deserialization slower. Defaults to `True`. |
| **RETURNS** | -     | The deserialized Python object.                                                         |

#### <kbd>function</kbd> `srsly.write_msgpack`

Create a msgpack file and dump contents.

```python
data = {"foo": "bar", "baz": 123}
srsly.write_msgpack("/path/to/file.msg", data)
```

| Argument | Type         | Description            |
| -------- | ------------ | ---------------------- |
| `path`   | str / `Path` | The file path.         |
| `data`   | -            | The data to serialize. |

#### <kbd>function</kbd> `srsly.read_msgpack`

Load a msgpack file.

```python
data = srsly.read_msgpack("/path/to/file.msg")
```

| Argument    | Type         | Description                                                                             |
| ----------- | ------------ | --------------------------------------------------------------------------------------- |
| `path`      | str / `Path` | The file path.                                                                          |
| `use_list`  | bool         | Don't use tuples instead of lists. Can make deserialization slower. Defaults to `True`. |
| **RETURNS** | -            | The loaded and deserialized content.                                                    |

### pickle

> 📦 The underlying module is exposed via `srsly.cloudpickle`. However, we
> normally interact with it via the utility functions only.

#### <kbd>function</kbd> `srsly.pickle_dumps`

Serialize a Python object with pickle.

```python
data = {"foo": "bar", "baz": 123}
pickled_data = srsly.pickle_dumps(data)
```

| Argument    | Type  | Description                                            |
| ----------- | ----- | ------------------------------------------------------ |
| `data`      | -     | The object to serialize.                               |
| `protocol`  | int   | Protocol to use. `-1` for highest. Defaults to `None`. |
| **RETURNS** | bytes | The serialized object.                                 |

#### <kbd>function</kbd> `srsly.pickle_loads`

Deserialize bytes with pickle.

```python
pickled_data = b"\x80\x04\x95\x19\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x03foo\x94\x8c\x03bar\x94\x8c\x03baz\x94K{u."
data = srsly.pickle_loads(pickled_data)
```

| Argument    | Type  | Description                     |
| ----------- | ----- | ------------------------------- |
| `data`      | bytes | The data to deserialize.        |
| **RETURNS** | -     | The deserialized Python object. |

### YAML

> 📦 The underlying module is exposed via `srsly.ruamel_yaml`. However, we
> normally interact with it via the utility functions only.

#### <kbd>function</kbd> `srsly.yaml_dumps`

Serialize an object to a YAML string. See the
[`ruamel.yaml` docs](https://yaml.readthedocs.io/en/latest/detail.html?highlight=indentation#indentation-of-block-sequences)
for details on the indentation format.

```python
data = {"foo": "bar", "baz": 123}
yaml_string = srsly.yaml_dumps(data)
```

| Argument          | Type | Description                                |
| ----------------- | ---- | ------------------------------------------ |
| `data`            | -    | The JSON-serializable data to output.      |
| `indent_mapping`  | int  | Mapping indentation. Defaults to `2`.      |
| `indent_sequence` | int  | Sequence indentation. Defaults to `4`.     |
| `indent_offset`   | int  | Indentation offset. Defaults to `2`.       |
| `sort_keys`       | bool | Sort dictionary keys. Defaults to `False`. |
| **RETURNS**       | str  | The serialized string.                     |

#### <kbd>function</kbd> `srsly.yaml_loads`

Deserialize unicode or a file object to a Python object.

```python
data = 'foo: bar\nbaz: 123'
obj = srsly.yaml_loads(data)
```

| Argument    | Type       | Description                     |
| ----------- | ---------- | ------------------------------- |
| `data`      | str / file | The data to deserialize.        |
| **RETURNS** | -          | The deserialized Python object. |

#### <kbd>function</kbd> `srsly.write_yaml`

Create a YAML file and dump contents or write to standard output.

```python
data = {"foo": "bar", "baz": 123}
srsly.write_yaml("/path/to/file.yml", data)
```

| Argument          | Type         | Description                                |
| ----------------- | ------------ | ------------------------------------------ |
| `path`            | str / `Path` | The file path or `"-"` to write to stdout. |
| `data`            | -            | The JSON-serializable data to output.      |
| `indent_mapping`  | int          | Mapping indentation. Defaults to `2`.      |
| `indent_sequence` | int          | Sequence indentation. Defaults to `4`.     |
| `indent_offset`   | int          | Indentation offset. Defaults to `2`.       |
| `sort_keys`       | bool         | Sort dictionary keys. Defaults to `False`. |

#### <kbd>function</kbd> `srsly.read_yaml`

Load YAML from a file or standard input.

```python
data = srsly.read_yaml("/path/to/file.yml")
```

| Argument    | Type         | Description                                |
| ----------- | ------------ | ------------------------------------------ |
| `path`      | str / `Path` | The file path or `"-"` to read from stdin. |
| **RETURNS** | dict / list  | The loaded YAML content.                   |

#### <kbd>function</kbd> `srsly.is_yaml_serializable`

Check if a Python object is YAML-serializable.

```python
assert srsly.is_yaml_serializable({"hello": "world"}) is True
assert srsly.is_yaml_serializable(lambda x: x) is False
```

| Argument    | Type | Description                              |
| ----------- | ---- | ---------------------------------------- |
| `obj`       | -    | The object to check.                     |
| **RETURNS** | bool | Whether the object is YAML-serializable. |

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/explosion/srsly",
    "name": "srsly",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "",
    "author": "Explosion",
    "author_email": "contact@explosion.ai",
    "download_url": "https://files.pythonhosted.org/packages/59/7f/17259e0962bb9433f39aa99ec45fd36851961491c562bc2f8c731cc476a6/srsly-2.4.8.tar.gz",
    "platform": null,
    "description": "<a href=\"https://explosion.ai\"><img src=\"https://explosion.ai/assets/img/logo.svg\" width=\"125\" height=\"125\" align=\"right\" /></a>\n\n# srsly: Modern high-performance serialization utilities for Python\n\nThis package bundles some of the best Python serialization libraries into one\nstandalone package, with a high-level API that makes it easy to write code\nthat's correct across platforms and Pythons. This allows us to provide all the\nserialization utilities we need in a single binary wheel. Currently supports\n**JSON**, **JSONL**, **MessagePack**, **Pickle** and **YAML**.\n\n[![tests](https://github.com/explosion/srsly/actions/workflows/tests.yml/badge.svg)](https://github.com/explosion/srsly/actions/workflows/tests.yml)\n[![PyPi](https://img.shields.io/pypi/v/srsly.svg?style=flat-square&logo=pypi&logoColor=white)](https://pypi.python.org/pypi/srsly)\n[![conda](https://img.shields.io/conda/vn/conda-forge/srsly.svg?style=flat-square&logo=conda-forge&logoColor=white)](https://anaconda.org/conda-forge/srsly)\n[![GitHub](https://img.shields.io/github/release/explosion/srsly/all.svg?style=flat-square&logo=github)](https://github.com/explosion/srsly)\n[![Python wheels](https://img.shields.io/badge/wheels-%E2%9C%93-4c1.svg?longCache=true&style=flat-square&logo=python&logoColor=white)](https://github.com/explosion/wheelwright/releases)\n\n## Motivation\n\nSerialization is hard, especially across Python versions and multiple platforms.\nAfter dealing with many subtle bugs over the years (encodings, locales, large\nfiles) our libraries like [spaCy](https://github.com/explosion/spaCy) and\n[Prodigy](https://prodi.gy) had steadily grown a number of utility functions to\nwrap the multiple serialization formats we need to support (especially `json`,\n`msgpack` and `pickle`). These wrapping functions ended up duplicated across our\ncodebases, so we wanted to put them in one place.\n\nAt the same time, we noticed that having a lot of small dependencies was making\nmaintenance harder, and making installation slower. To solve this, we've made\n`srsly` standalone, by including the component packages directly within it. This\nway we can provide all the serialization utilities we need in a single binary\nwheel.\n\n`srsly` currently includes forks of the following packages:\n\n- [`ujson`](https://github.com/esnme/ultrajson)\n- [`msgpack`](https://github.com/msgpack/msgpack-python)\n- [`msgpack-numpy`](https://github.com/lebedov/msgpack-numpy)\n- [`cloudpickle`](https://github.com/cloudpipe/cloudpickle)\n- [`ruamel.yaml`](https://github.com/pycontribs/ruamel-yaml) (without unsafe\n  implementations!)\n\n## Installation\n\n> \u26a0\ufe0f Note that `v2.x` is only compatible with **Python 3.6+**. For 2.7+\n> compatibility, use `v1.x`.\n\n`srsly` can be installed from pip. Before installing, make sure that your `pip`,\n`setuptools` and `wheel` are up to date.\n\n```bash\npython -m pip install -U pip setuptools wheel\npython -m pip install srsly\n```\n\nOr from conda via conda-forge:\n\n```bash\nconda install -c conda-forge srsly\n```\n\nAlternatively, you can also compile the library from source. You'll need to make\nsure that you have a development environment with a Python distribution\nincluding header files, a compiler (XCode command-line tools on macOS / OS X or\nVisual C++ build tools on Windows), pip and git installed.\n\nInstall from source:\n\n```bash\n# clone the repo\ngit clone https://github.com/explosion/srsly\ncd srsly\n\n# create a virtual environment\npython -m venv .env\nsource .env/bin/activate\n\n# update pip\npython -m pip install -U pip setuptools wheel\n\n# compile and install from source\npython -m pip install .\n```\n\nFor developers, install requirements separately and then install in editable\nmode without build isolation:\n\n```bash\n# install in editable mode\npython -m pip install -r requirements.txt\npython -m pip install --no-build-isolation --editable .\n\n# run test suite\npython -m pytest --pyargs srsly\n```\n\n## API\n\n### JSON\n\n> \ud83d\udce6 The underlying module is exposed via `srsly.ujson`. However, we normally\n> interact with it via the utility functions only.\n\n#### <kbd>function</kbd> `srsly.json_dumps`\n\nSerialize an object to a JSON string. Falls back to `json` if `sort_keys=True`\nis used (until it's fixed in `ujson`).\n\n```python\ndata = {\"foo\": \"bar\", \"baz\": 123}\njson_string = srsly.json_dumps(data)\n```\n\n| Argument    | Type | Description                                            |\n| ----------- | ---- | ------------------------------------------------------ |\n| `data`      | -    | The JSON-serializable data to output.                  |\n| `indent`    | int  | Number of spaces used to indent JSON. Defaults to `0`. |\n| `sort_keys` | bool | Sort dictionary keys. Defaults to `False`.             |\n| **RETURNS** | str  | The serialized string.                                 |\n\n#### <kbd>function</kbd> `srsly.json_loads`\n\nDeserialize unicode or bytes to a Python object.\n\n```python\ndata = '{\"foo\": \"bar\", \"baz\": 123}'\nobj = srsly.json_loads(data)\n```\n\n| Argument    | Type        | Description                     |\n| ----------- | ----------- | ------------------------------- |\n| `data`      | str / bytes | The data to deserialize.        |\n| **RETURNS** | -           | The deserialized Python object. |\n\n#### <kbd>function</kbd> `srsly.write_json`\n\nCreate a JSON file and dump contents or write to standard output.\n\n```python\ndata = {\"foo\": \"bar\", \"baz\": 123}\nsrsly.write_json(\"/path/to/file.json\", data)\n```\n\n| Argument | Type         | Description                                            |\n| -------- | ------------ | ------------------------------------------------------ |\n| `path`   | str / `Path` | The file path or `\"-\"` to write to stdout.             |\n| `data`   | -            | The JSON-serializable data to output.                  |\n| `indent` | int          | Number of spaces used to indent JSON. Defaults to `2`. |\n\n#### <kbd>function</kbd> `srsly.read_json`\n\nLoad JSON from a file or standard input.\n\n```python\ndata = srsly.read_json(\"/path/to/file.json\")\n```\n\n| Argument    | Type         | Description                                |\n| ----------- | ------------ | ------------------------------------------ |\n| `path`      | str / `Path` | The file path or `\"-\"` to read from stdin. |\n| **RETURNS** | dict / list  | The loaded JSON content.                   |\n\n#### <kbd>function</kbd> `srsly.write_gzip_json`\n\nCreate a gzipped JSON file and dump contents.\n\n```python\ndata = {\"foo\": \"bar\", \"baz\": 123}\nsrsly.write_gzip_json(\"/path/to/file.json.gz\", data)\n```\n\n| Argument | Type         | Description                                            |\n| -------- | ------------ | ------------------------------------------------------ |\n| `path`   | str / `Path` | The file path.                                         |\n| `data`   | -            | The JSON-serializable data to output.                  |\n| `indent` | int          | Number of spaces used to indent JSON. Defaults to `2`. |\n\n#### <kbd>function</kbd> `srsly.write_gzip_jsonl`\n\nCreate a gzipped JSONL file and dump contents.\n\n```python\ndata = [{\"foo\": \"bar\"}, {\"baz\": 123}]\nsrsly.write_gzip_json(\"/path/to/file.jsonl.gz\", data)\n```\n\n| Argument          | Type         | Description                                                                                                                                                                                                             |\n| ----------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `path`            | str / `Path` | The file path.                                                                                                                                                                                                          |\n| `lines`           | -            | The JSON-serializable contents of each line.                                                                                                                                                                            |\n| `append`          | bool         | Whether or not to append to the location. Appending to .gz files is generally not recommended, as it doesn't allow the algorithm to take advantage of all data when compressing - files may hence be poorly compressed. |\n| `append_new_line` | bool         | Whether or not to write a new line before appending to the file.                                                                                                                                                        |\n\n#### <kbd>function</kbd> `srsly.read_gzip_json`\n\nLoad gzipped JSON from a file.\n\n```python\ndata = srsly.read_gzip_json(\"/path/to/file.json.gz\")\n```\n\n| Argument    | Type         | Description              |\n| ----------- | ------------ | ------------------------ |\n| `path`      | str / `Path` | The file path.           |\n| **RETURNS** | dict / list  | The loaded JSON content. |\n\n#### <kbd>function</kbd> `srsly.read_gzip_jsonl`\n\nLoad gzipped JSONL from a file.\n\n```python\ndata = srsly.read_gzip_jsonl(\"/path/to/file.jsonl.gz\")\n```\n\n| Argument    | Type         | Description               |\n| ----------- | ------------ | ------------------------- |\n| `path`      | str / `Path` | The file path.            |\n| **RETURNS** | dict / list  | The loaded JSONL content. |\n\n#### <kbd>function</kbd> `srsly.write_jsonl`\n\nCreate a JSONL file (newline-delimited JSON) and dump contents line by line, or\nwrite to standard output.\n\n```python\ndata = [{\"foo\": \"bar\"}, {\"baz\": 123}]\nsrsly.write_jsonl(\"/path/to/file.jsonl\", data)\n```\n\n| Argument          | Type         | Description                                                                                                            |\n| ----------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------- |\n| `path`            | str / `Path` | The file path or `\"-\"` to write to stdout.                                                                             |\n| `lines`           | iterable     | The JSON-serializable lines.                                                                                           |\n| `append`          | bool         | Append to an existing file. Will open it in `\"a\"` mode and insert a newline before writing lines. Defaults to `False`. |\n| `append_new_line` | bool         | Defines whether a new line should first be written when appending to an existing file. Defaults to `True`.             |\n\n#### <kbd>function</kbd> `srsly.read_jsonl`\n\nRead a JSONL file (newline-delimited JSON) or from JSONL data from standard\ninput and yield contents line by line. Blank lines will always be skipped.\n\n```python\ndata = srsly.read_jsonl(\"/path/to/file.jsonl\")\n```\n\n| Argument   | Type       | Description                                                          |\n| ---------- | ---------- | -------------------------------------------------------------------- |\n| `path`     | str / Path | The file path or `\"-\"` to read from stdin.                           |\n| `skip`     | bool       | Skip broken lines and don't raise `ValueError`. Defaults to `False`. |\n| **YIELDS** | -          | The loaded JSON contents of each line.                               |\n\n#### <kbd>function</kbd> `srsly.is_json_serializable`\n\nCheck if a Python object is JSON-serializable.\n\n```python\nassert srsly.is_json_serializable({\"hello\": \"world\"}) is True\nassert srsly.is_json_serializable(lambda x: x) is False\n```\n\n| Argument    | Type | Description                              |\n| ----------- | ---- | ---------------------------------------- |\n| `obj`       | -    | The object to check.                     |\n| **RETURNS** | bool | Whether the object is JSON-serializable. |\n\n### msgpack\n\n> \ud83d\udce6 The underlying module is exposed via `srsly.msgpack`. However, we normally\n> interact with it via the utility functions only.\n\n#### <kbd>function</kbd> `srsly.msgpack_dumps`\n\nSerialize an object to a msgpack byte string.\n\n```python\ndata = {\"foo\": \"bar\", \"baz\": 123}\nmsg = srsly.msgpack_dumps(data)\n```\n\n| Argument    | Type  | Description            |\n| ----------- | ----- | ---------------------- |\n| `data`      | -     | The data to serialize. |\n| **RETURNS** | bytes | The serialized bytes.  |\n\n#### <kbd>function</kbd> `srsly.msgpack_loads`\n\nDeserialize msgpack bytes to a Python object.\n\n```python\nmsg = b\"\\x82\\xa3foo\\xa3bar\\xa3baz{\"\ndata = srsly.msgpack_loads(msg)\n```\n\n| Argument    | Type  | Description                                                                             |\n| ----------- | ----- | --------------------------------------------------------------------------------------- |\n| `data`      | bytes | The data to deserialize.                                                                |\n| `use_list`  | bool  | Don't use tuples instead of lists. Can make deserialization slower. Defaults to `True`. |\n| **RETURNS** | -     | The deserialized Python object.                                                         |\n\n#### <kbd>function</kbd> `srsly.write_msgpack`\n\nCreate a msgpack file and dump contents.\n\n```python\ndata = {\"foo\": \"bar\", \"baz\": 123}\nsrsly.write_msgpack(\"/path/to/file.msg\", data)\n```\n\n| Argument | Type         | Description            |\n| -------- | ------------ | ---------------------- |\n| `path`   | str / `Path` | The file path.         |\n| `data`   | -            | The data to serialize. |\n\n#### <kbd>function</kbd> `srsly.read_msgpack`\n\nLoad a msgpack file.\n\n```python\ndata = srsly.read_msgpack(\"/path/to/file.msg\")\n```\n\n| Argument    | Type         | Description                                                                             |\n| ----------- | ------------ | --------------------------------------------------------------------------------------- |\n| `path`      | str / `Path` | The file path.                                                                          |\n| `use_list`  | bool         | Don't use tuples instead of lists. Can make deserialization slower. Defaults to `True`. |\n| **RETURNS** | -            | The loaded and deserialized content.                                                    |\n\n### pickle\n\n> \ud83d\udce6 The underlying module is exposed via `srsly.cloudpickle`. However, we\n> normally interact with it via the utility functions only.\n\n#### <kbd>function</kbd> `srsly.pickle_dumps`\n\nSerialize a Python object with pickle.\n\n```python\ndata = {\"foo\": \"bar\", \"baz\": 123}\npickled_data = srsly.pickle_dumps(data)\n```\n\n| Argument    | Type  | Description                                            |\n| ----------- | ----- | ------------------------------------------------------ |\n| `data`      | -     | The object to serialize.                               |\n| `protocol`  | int   | Protocol to use. `-1` for highest. Defaults to `None`. |\n| **RETURNS** | bytes | The serialized object.                                 |\n\n#### <kbd>function</kbd> `srsly.pickle_loads`\n\nDeserialize bytes with pickle.\n\n```python\npickled_data = b\"\\x80\\x04\\x95\\x19\\x00\\x00\\x00\\x00\\x00\\x00\\x00}\\x94(\\x8c\\x03foo\\x94\\x8c\\x03bar\\x94\\x8c\\x03baz\\x94K{u.\"\ndata = srsly.pickle_loads(pickled_data)\n```\n\n| Argument    | Type  | Description                     |\n| ----------- | ----- | ------------------------------- |\n| `data`      | bytes | The data to deserialize.        |\n| **RETURNS** | -     | The deserialized Python object. |\n\n### YAML\n\n> \ud83d\udce6 The underlying module is exposed via `srsly.ruamel_yaml`. However, we\n> normally interact with it via the utility functions only.\n\n#### <kbd>function</kbd> `srsly.yaml_dumps`\n\nSerialize an object to a YAML string. See the\n[`ruamel.yaml` docs](https://yaml.readthedocs.io/en/latest/detail.html?highlight=indentation#indentation-of-block-sequences)\nfor details on the indentation format.\n\n```python\ndata = {\"foo\": \"bar\", \"baz\": 123}\nyaml_string = srsly.yaml_dumps(data)\n```\n\n| Argument          | Type | Description                                |\n| ----------------- | ---- | ------------------------------------------ |\n| `data`            | -    | The JSON-serializable data to output.      |\n| `indent_mapping`  | int  | Mapping indentation. Defaults to `2`.      |\n| `indent_sequence` | int  | Sequence indentation. Defaults to `4`.     |\n| `indent_offset`   | int  | Indentation offset. Defaults to `2`.       |\n| `sort_keys`       | bool | Sort dictionary keys. Defaults to `False`. |\n| **RETURNS**       | str  | The serialized string.                     |\n\n#### <kbd>function</kbd> `srsly.yaml_loads`\n\nDeserialize unicode or a file object to a Python object.\n\n```python\ndata = 'foo: bar\\nbaz: 123'\nobj = srsly.yaml_loads(data)\n```\n\n| Argument    | Type       | Description                     |\n| ----------- | ---------- | ------------------------------- |\n| `data`      | str / file | The data to deserialize.        |\n| **RETURNS** | -          | The deserialized Python object. |\n\n#### <kbd>function</kbd> `srsly.write_yaml`\n\nCreate a YAML file and dump contents or write to standard output.\n\n```python\ndata = {\"foo\": \"bar\", \"baz\": 123}\nsrsly.write_yaml(\"/path/to/file.yml\", data)\n```\n\n| Argument          | Type         | Description                                |\n| ----------------- | ------------ | ------------------------------------------ |\n| `path`            | str / `Path` | The file path or `\"-\"` to write to stdout. |\n| `data`            | -            | The JSON-serializable data to output.      |\n| `indent_mapping`  | int          | Mapping indentation. Defaults to `2`.      |\n| `indent_sequence` | int          | Sequence indentation. Defaults to `4`.     |\n| `indent_offset`   | int          | Indentation offset. Defaults to `2`.       |\n| `sort_keys`       | bool         | Sort dictionary keys. Defaults to `False`. |\n\n#### <kbd>function</kbd> `srsly.read_yaml`\n\nLoad YAML from a file or standard input.\n\n```python\ndata = srsly.read_yaml(\"/path/to/file.yml\")\n```\n\n| Argument    | Type         | Description                                |\n| ----------- | ------------ | ------------------------------------------ |\n| `path`      | str / `Path` | The file path or `\"-\"` to read from stdin. |\n| **RETURNS** | dict / list  | The loaded YAML content.                   |\n\n#### <kbd>function</kbd> `srsly.is_yaml_serializable`\n\nCheck if a Python object is YAML-serializable.\n\n```python\nassert srsly.is_yaml_serializable({\"hello\": \"world\"}) is True\nassert srsly.is_yaml_serializable(lambda x: x) is False\n```\n\n| Argument    | Type | Description                              |\n| ----------- | ---- | ---------------------------------------- |\n| `obj`       | -    | The object to check.                     |\n| **RETURNS** | bool | Whether the object is YAML-serializable. |\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Modern high-performance serialization utilities for Python",
    "version": "2.4.8",
    "project_urls": {
        "Homepage": "https://github.com/explosion/srsly"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f648363ffe49690ff5cd8597a2fce311890825595c20153b5fd1db7477d1e2cd",
                "md5": "ff42c26bde4c619948b46a329919fe68",
                "sha256": "17f3bcb418bb4cf443ed3d4dcb210e491bd9c1b7b0185e6ab10b6af3271e63b2"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ff42c26bde4c619948b46a329919fe68",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 492893,
            "upload_time": "2023-09-22T06:16:00",
            "upload_time_iso_8601": "2023-09-22T06:16:00.144968Z",
            "url": "https://files.pythonhosted.org/packages/f6/48/363ffe49690ff5cd8597a2fce311890825595c20153b5fd1db7477d1e2cd/srsly-2.4.8-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b21939c39e1ed436852946924fb043cbf1f7bf96682d8ef6ad0c2b14fee235c0",
                "md5": "3c9704e977416e4fcd98699964d8e258",
                "sha256": "0b070a58e21ab0e878fd949f932385abb4c53dd0acb6d3a7ee75d95d447bc609"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "3c9704e977416e4fcd98699964d8e258",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 491198,
            "upload_time": "2023-09-22T06:16:02",
            "upload_time_iso_8601": "2023-09-22T06:16:02.493342Z",
            "url": "https://files.pythonhosted.org/packages/b2/19/39c39e1ed436852946924fb043cbf1f7bf96682d8ef6ad0c2b14fee235c0/srsly-2.4.8-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "562be4ea56011ed3b66b372ff55463b4f0f8db7245b95cec2fb2042ffec291f0",
                "md5": "fa6dec3d8d0636300a4c0e15a2c0eb72",
                "sha256": "98286d20014ed2067ad02b0be1e17c7e522255b188346e79ff266af51a54eb33"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "fa6dec3d8d0636300a4c0e15a2c0eb72",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 488980,
            "upload_time": "2023-09-22T06:16:03",
            "upload_time_iso_8601": "2023-09-22T06:16:03.928721Z",
            "url": "https://files.pythonhosted.org/packages/56/2b/e4ea56011ed3b66b372ff55463b4f0f8db7245b95cec2fb2042ffec291f0/srsly-2.4.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "32692c054c6c5dc5daf5648f994f22377f3be44f79d643f3c3db255b4e86b391",
                "md5": "be9b2905cf75e5c01be22d9878535f9b",
                "sha256": "18685084e2e0cc47c25158cbbf3e44690e494ef77d6418c2aae0598c893f35b0"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "be9b2905cf75e5c01be22d9878535f9b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 493019,
            "upload_time": "2023-09-22T06:16:05",
            "upload_time_iso_8601": "2023-09-22T06:16:05.750285Z",
            "url": "https://files.pythonhosted.org/packages/32/69/2c054c6c5dc5daf5648f994f22377f3be44f79d643f3c3db255b4e86b391/srsly-2.4.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0aedd2c37221fe1975f4b6e8e3cf200d25b905b77e18f6a660b3dc149ade6192",
                "md5": "059716b9c173c14ed8c5839131409557",
                "sha256": "980a179cbf4eb5bc56f7507e53f76720d031bcf0cef52cd53c815720eb2fc30c"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "059716b9c173c14ed8c5839131409557",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 481871,
            "upload_time": "2023-09-22T06:16:07",
            "upload_time_iso_8601": "2023-09-22T06:16:07.477516Z",
            "url": "https://files.pythonhosted.org/packages/0a/ed/d2c37221fe1975f4b6e8e3cf200d25b905b77e18f6a660b3dc149ade6192/srsly-2.4.8-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "40febaa4056b7e8585f4c3478d3d1d3a2c1c3095ff066e4fb420bb000abb6cc2",
                "md5": "a383764e5468207d74edfdb8a6f16cc2",
                "sha256": "5472ed9f581e10c32e79424c996cf54c46c42237759f4224806a0cd4bb770993"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a383764e5468207d74edfdb8a6f16cc2",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 490026,
            "upload_time": "2023-09-22T06:16:09",
            "upload_time_iso_8601": "2023-09-22T06:16:09.239841Z",
            "url": "https://files.pythonhosted.org/packages/40/fe/baa4056b7e8585f4c3478d3d1d3a2c1c3095ff066e4fb420bb000abb6cc2/srsly-2.4.8-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1bd70800af1a75008b3a6a6a24f3efd165f2d2208076e9b8a4b11b66f16217f3",
                "md5": "178f43eb0ae042ea442245d65cc6ca4c",
                "sha256": "50f10afe9230072c5aad9f6636115ea99b32c102f4c61e8236d8642c73ec7a13"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "178f43eb0ae042ea442245d65cc6ca4c",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 488409,
            "upload_time": "2023-09-22T06:16:11",
            "upload_time_iso_8601": "2023-09-22T06:16:11.465310Z",
            "url": "https://files.pythonhosted.org/packages/1b/d7/0800af1a75008b3a6a6a24f3efd165f2d2208076e9b8a4b11b66f16217f3/srsly-2.4.8-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0e05006dd2fdd74248d3fad492e864c2dc75260d52759d526a7cb9c7c08b0fe9",
                "md5": "4022c2fc94e6c57aa5051dc6aff46daf",
                "sha256": "c994a89ba247a4d4f63ef9fdefb93aa3e1f98740e4800d5351ebd56992ac75e3"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "4022c2fc94e6c57aa5051dc6aff46daf",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 487672,
            "upload_time": "2023-09-22T06:16:13",
            "upload_time_iso_8601": "2023-09-22T06:16:13.211356Z",
            "url": "https://files.pythonhosted.org/packages/0e/05/006dd2fdd74248d3fad492e864c2dc75260d52759d526a7cb9c7c08b0fe9/srsly-2.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e2a0153375ade1ca9d33543da7d512329ea9a7d40dc0e0832599f4228b9d761b",
                "md5": "d2ffd9a5aecfd947f453b36f8594fdab",
                "sha256": "ace7ed4a0c20fa54d90032be32f9c656b6d75445168da78d14fe9080a0c208ad"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d2ffd9a5aecfd947f453b36f8594fdab",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 490912,
            "upload_time": "2023-09-22T06:16:15",
            "upload_time_iso_8601": "2023-09-22T06:16:15.078070Z",
            "url": "https://files.pythonhosted.org/packages/e2/a0/153375ade1ca9d33543da7d512329ea9a7d40dc0e0832599f4228b9d761b/srsly-2.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ebf5e3f29993f673d91623df6413ba64e815dd2676fd7932cbc5e7347402ddae",
                "md5": "bbb65ee4a890e078d225b3cc7ab7b0b3",
                "sha256": "7a919236a090fb93081fbd1cec030f675910f3863825b34a9afbcae71f643127"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "bbb65ee4a890e078d225b3cc7ab7b0b3",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 479719,
            "upload_time": "2023-09-22T06:16:16",
            "upload_time_iso_8601": "2023-09-22T06:16:16.502968Z",
            "url": "https://files.pythonhosted.org/packages/eb/f5/e3f29993f673d91623df6413ba64e815dd2676fd7932cbc5e7347402ddae/srsly-2.4.8-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b11ad96117461e16203ee35dda67153db00572935e5d7fc211d091a34fec24c8",
                "md5": "081ef39c74cc012cfd0b0b5717c237ab",
                "sha256": "7583c03d114b4478b7a357a1915305163e9eac2dfe080da900555c975cca2a11"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "081ef39c74cc012cfd0b0b5717c237ab",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 488406,
            "upload_time": "2023-09-22T06:16:18",
            "upload_time_iso_8601": "2023-09-22T06:16:18.091803Z",
            "url": "https://files.pythonhosted.org/packages/b1/1a/d96117461e16203ee35dda67153db00572935e5d7fc211d091a34fec24c8/srsly-2.4.8-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9a4713fbea357e7eb9ee823b54cbead30a6adc6686bb3f73e76563b13dcbb2f8",
                "md5": "30950be2d12e9a64ed9efe2e92416d74",
                "sha256": "94ccdd2f6db824c31266aaf93e0f31c1c43b8bc531cd2b3a1d924e3c26a4f294"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "30950be2d12e9a64ed9efe2e92416d74",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 486434,
            "upload_time": "2023-09-22T06:16:19",
            "upload_time_iso_8601": "2023-09-22T06:16:19.458039Z",
            "url": "https://files.pythonhosted.org/packages/9a/47/13fbea357e7eb9ee823b54cbead30a6adc6686bb3f73e76563b13dcbb2f8/srsly-2.4.8-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0e3d462cec40c9ce15f8a3a97c972058ce1d2688abcad2dfc4eea3c888391c11",
                "md5": "e1fb93ae35ccaa7b5bf74c0586f24b1c",
                "sha256": "db72d2974f91aee652d606c7def98744ca6b899bd7dd3009fd75ebe0b5a51034"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "e1fb93ae35ccaa7b5bf74c0586f24b1c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 486968,
            "upload_time": "2023-09-22T06:16:21",
            "upload_time_iso_8601": "2023-09-22T06:16:21.490709Z",
            "url": "https://files.pythonhosted.org/packages/0e/3d/462cec40c9ce15f8a3a97c972058ce1d2688abcad2dfc4eea3c888391c11/srsly-2.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a11dc4b28e95d9ec4c2e7dad201fa415a483e173fcce444d52dd53be0b0469f3",
                "md5": "34e4cd8081d8e812600cb680fa19561a",
                "sha256": "6a60c905fd2c15e848ce1fc315fd34d8a9cc72c1dee022a0d8f4c62991131307"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "34e4cd8081d8e812600cb680fa19561a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 491730,
            "upload_time": "2023-09-22T06:16:23",
            "upload_time_iso_8601": "2023-09-22T06:16:23.404236Z",
            "url": "https://files.pythonhosted.org/packages/a1/1d/c4b28e95d9ec4c2e7dad201fa415a483e173fcce444d52dd53be0b0469f3/srsly-2.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "06b4d620235df9104c9049c5378027fb2692a8a51fafc775e2feae815ff99599",
                "md5": "1e29863c66d9e138eea6b211e0d896f2",
                "sha256": "e0b8d5722057000694edf105b8f492e7eb2f3aa6247a5f0c9170d1e0d074151c"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1e29863c66d9e138eea6b211e0d896f2",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 478845,
            "upload_time": "2023-09-22T06:16:25",
            "upload_time_iso_8601": "2023-09-22T06:16:25.113021Z",
            "url": "https://files.pythonhosted.org/packages/06/b4/d620235df9104c9049c5378027fb2692a8a51fafc775e2feae815ff99599/srsly-2.4.8-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cb1b2bced3e6caaf51465a1a4901ad31dc76cebaada301ef8aa8418dc5774efb",
                "md5": "9f7d60494880bf3cf4ebb544e658689e",
                "sha256": "196b4261f9d6372d1d3d16d1216b90c7e370b4141471322777b7b3c39afd1210"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp36-cp36m-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9f7d60494880bf3cf4ebb544e658689e",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 490765,
            "upload_time": "2023-09-22T06:16:26",
            "upload_time_iso_8601": "2023-09-22T06:16:26.845302Z",
            "url": "https://files.pythonhosted.org/packages/cb/1b/2bced3e6caaf51465a1a4901ad31dc76cebaada301ef8aa8418dc5774efb/srsly-2.4.8-cp36-cp36m-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b850f9ed27516423e3fb1d91aa1c2f9f6c0365dd72d117139593f8690549b451",
                "md5": "76284c72e4bf29813ac180cc526cf5ef",
                "sha256": "4750017e6d78590b02b12653e97edd25aefa4734281386cc27501d59b7481e4e"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "76284c72e4bf29813ac180cc526cf5ef",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 489211,
            "upload_time": "2023-09-22T06:16:28",
            "upload_time_iso_8601": "2023-09-22T06:16:28.214090Z",
            "url": "https://files.pythonhosted.org/packages/b8/50/f9ed27516423e3fb1d91aa1c2f9f6c0365dd72d117139593f8690549b451/srsly-2.4.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b01aac156a094c345dd8a4033979266f8197c05a492c78b3926f4660cb71d512",
                "md5": "704e3607fcafd9beb426428caa277504",
                "sha256": "aa034cd582ba9e4a120c8f19efa263fcad0f10fc481e73fb8c0d603085f941c4"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "704e3607fcafd9beb426428caa277504",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 491677,
            "upload_time": "2023-09-22T06:16:29",
            "upload_time_iso_8601": "2023-09-22T06:16:29.594524Z",
            "url": "https://files.pythonhosted.org/packages/b0/1a/ac156a094c345dd8a4033979266f8197c05a492c78b3926f4660cb71d512/srsly-2.4.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "909433e9dad75cd442c13a6ff064e3a12b2edaa98f0caddc6f9d02913c6c1dd6",
                "md5": "4ba836dc6506804d5fb7470b7b014a49",
                "sha256": "5a78ab9e9d177ee8731e950feb48c57380036d462b49e3fb61a67ce529ff5f60"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp36-cp36m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4ba836dc6506804d5fb7470b7b014a49",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": ">=3.6",
            "size": 492577,
            "upload_time": "2023-09-22T06:16:31",
            "upload_time_iso_8601": "2023-09-22T06:16:31.424208Z",
            "url": "https://files.pythonhosted.org/packages/90/94/33e9dad75cd442c13a6ff064e3a12b2edaa98f0caddc6f9d02913c6c1dd6/srsly-2.4.8-cp36-cp36m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1386639627a0332ededa89709a47474fb369300c981cd117b9fed43bc45a05a0",
                "md5": "22bfa70e56cd89f2f7e98780cbaf77cb",
                "sha256": "087e36439af517e259843df93eb34bb9e2d2881c34fa0f541589bcfbc757be97"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp37-cp37m-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "22bfa70e56cd89f2f7e98780cbaf77cb",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 490232,
            "upload_time": "2023-09-22T06:16:32",
            "upload_time_iso_8601": "2023-09-22T06:16:32.946065Z",
            "url": "https://files.pythonhosted.org/packages/13/86/639627a0332ededa89709a47474fb369300c981cd117b9fed43bc45a05a0/srsly-2.4.8-cp37-cp37m-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c02fbf0fd9574d7693a3742a8b992a0b4995a639b985201111088b971cb986f8",
                "md5": "13f75660671e3b9e8e4806e9896aae4f",
                "sha256": "ad141d8a130cb085a0ed3a6638b643e2b591cb98a4591996780597a632acfe20"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "13f75660671e3b9e8e4806e9896aae4f",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 489284,
            "upload_time": "2023-09-22T06:16:34",
            "upload_time_iso_8601": "2023-09-22T06:16:34.330665Z",
            "url": "https://files.pythonhosted.org/packages/c0/2f/bf0fd9574d7693a3742a8b992a0b4995a639b985201111088b971cb986f8/srsly-2.4.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6bedf0472546e45e516c8a46c4019deafa67d4e94a4ef813ba3d3ee5491b027f",
                "md5": "40abe7bbf28998c82f86f97048d7e438",
                "sha256": "24d05367b2571c0d08d00459636b951e3ca2a1e9216318c157331f09c33489d3"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "40abe7bbf28998c82f86f97048d7e438",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 491761,
            "upload_time": "2023-09-22T06:16:35",
            "upload_time_iso_8601": "2023-09-22T06:16:35.691821Z",
            "url": "https://files.pythonhosted.org/packages/6b/ed/f0472546e45e516c8a46c4019deafa67d4e94a4ef813ba3d3ee5491b027f/srsly-2.4.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8710a15c35641768f5fd75719933fcdd46e986055372713712f1d56d9770f000",
                "md5": "0333f13a1d519fa04b5a6fb57a2e5f2e",
                "sha256": "3fd661a1c4848deea2849b78f432a70c75d10968e902ca83c07c89c9b7050ab8"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp37-cp37m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "0333f13a1d519fa04b5a6fb57a2e5f2e",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 482684,
            "upload_time": "2023-09-22T06:16:37",
            "upload_time_iso_8601": "2023-09-22T06:16:37.577367Z",
            "url": "https://files.pythonhosted.org/packages/87/10/a15c35641768f5fd75719933fcdd46e986055372713712f1d56d9770f000/srsly-2.4.8-cp37-cp37m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "82414d759a425297672e1e243b304aa32ffaad945d4fe3977b3bf38dac3af7a8",
                "md5": "f86eefff1829fd29cfbc0330e30dceb1",
                "sha256": "ec37233fe39af97b00bf20dc2ceda04d39b9ea19ce0ee605e16ece9785e11f65"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f86eefff1829fd29cfbc0330e30dceb1",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 490901,
            "upload_time": "2023-09-22T06:16:38",
            "upload_time_iso_8601": "2023-09-22T06:16:38.885641Z",
            "url": "https://files.pythonhosted.org/packages/82/41/4d759a425297672e1e243b304aa32ffaad945d4fe3977b3bf38dac3af7a8/srsly-2.4.8-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d2dc36bff7e940e26c6ca0b4c1ece905463b04530a2bdbc266d3e1f18ef30428",
                "md5": "e53f8d3b6c74494f9a0ad122d8a7041e",
                "sha256": "d2fd4bc081f1d6a6063396b6d97b00d98e86d9d3a3ac2949dba574a84e148080"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "e53f8d3b6c74494f9a0ad122d8a7041e",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 489613,
            "upload_time": "2023-09-22T06:16:40",
            "upload_time_iso_8601": "2023-09-22T06:16:40.604827Z",
            "url": "https://files.pythonhosted.org/packages/d2/dc/36bff7e940e26c6ca0b4c1ece905463b04530a2bdbc266d3e1f18ef30428/srsly-2.4.8-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fbf53ee20f828b5f68e48fc3db1691a902b24c6e32274238d6ec0faa20641810",
                "md5": "3d2d84901dc1d720b73660f309efc620",
                "sha256": "7347cff1eb4ef3fc335d9d4acc89588051b2df43799e5d944696ef43da79c873"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "3d2d84901dc1d720b73660f309efc620",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 491016,
            "upload_time": "2023-09-22T06:16:42",
            "upload_time_iso_8601": "2023-09-22T06:16:42.002347Z",
            "url": "https://files.pythonhosted.org/packages/fb/f5/3ee20f828b5f68e48fc3db1691a902b24c6e32274238d6ec0faa20641810/srsly-2.4.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2138545d49d1f4042c4d1b97e5b860730d23654dbb13911801a9ed0bfe85578c",
                "md5": "2965b9dccb1605299b994f9d38e5358b",
                "sha256": "5a9dc1da5cc94d77056b91ba38365c72ae08556b6345bef06257c7e9eccabafe"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2965b9dccb1605299b994f9d38e5358b",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 494290,
            "upload_time": "2023-09-22T06:16:43",
            "upload_time_iso_8601": "2023-09-22T06:16:43.430670Z",
            "url": "https://files.pythonhosted.org/packages/21/38/545d49d1f4042c4d1b97e5b860730d23654dbb13911801a9ed0bfe85578c/srsly-2.4.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4b93e4eb7683e742912989278c182efff5d5afb76b830414c2aae2d4c01e59e6",
                "md5": "469fcbbb2ec4159c86300e92a1ed9fc4",
                "sha256": "dc0bf7b6f23c9ecb49ec0924dc645620276b41e160e9b283ed44ca004c060d79"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "469fcbbb2ec4159c86300e92a1ed9fc4",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 483719,
            "upload_time": "2023-09-22T06:16:45",
            "upload_time_iso_8601": "2023-09-22T06:16:45.190681Z",
            "url": "https://files.pythonhosted.org/packages/4b/93/e4eb7683e742912989278c182efff5d5afb76b830414c2aae2d4c01e59e6/srsly-2.4.8-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0dfdd804d99cb5d5b3f84053c454068ec66b27b4c08aa2906855cc0b9aad4015",
                "md5": "96e12b89fbdfaa3ede918bb3e1e3f4e9",
                "sha256": "ff8df21d00d73c371bead542cefef365ee87ca3a5660de292444021ff84e3b8c"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "96e12b89fbdfaa3ede918bb3e1e3f4e9",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 493095,
            "upload_time": "2023-09-22T06:16:46",
            "upload_time_iso_8601": "2023-09-22T06:16:46.499257Z",
            "url": "https://files.pythonhosted.org/packages/0d/fd/d804d99cb5d5b3f84053c454068ec66b27b4c08aa2906855cc0b9aad4015/srsly-2.4.8-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2387f6dc2625010feb7f647b0dc3b0bcb12643d0b0895fa4f265bbefbb801a99",
                "md5": "8e3d239c06930998cfd310091bbc9d0a",
                "sha256": "0ac3e340e65a9fe265105705586aa56054dc3902789fcb9a8f860a218d6c0a00"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "8e3d239c06930998cfd310091bbc9d0a",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 491541,
            "upload_time": "2023-09-22T06:16:47",
            "upload_time_iso_8601": "2023-09-22T06:16:47.810966Z",
            "url": "https://files.pythonhosted.org/packages/23/87/f6dc2625010feb7f647b0dc3b0bcb12643d0b0895fa4f265bbefbb801a99/srsly-2.4.8-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "12428dbb4cb8640842bc14041ff2482ddf78039df114416c338ad66e5acbe56b",
                "md5": "d62cb02986ad45505f3865fa2cee7f19",
                "sha256": "06d1733f4275eff4448e96521cc7dcd8fdabd68ba9b54ca012dcfa2690db2644"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "d62cb02986ad45505f3865fa2cee7f19",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 489290,
            "upload_time": "2023-09-22T06:16:49",
            "upload_time_iso_8601": "2023-09-22T06:16:49.259598Z",
            "url": "https://files.pythonhosted.org/packages/12/42/8dbb4cb8640842bc14041ff2482ddf78039df114416c338ad66e5acbe56b/srsly-2.4.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f9817b25bc53fc3b95b072d258e04d82372a46dbf8f8c5b3b554ee93d7887fa5",
                "md5": "1de8ce7fc7aec530ed4a8e039bcd7f81",
                "sha256": "be5b751ad88fdb58fb73871d456248c88204f213aaa3c9aab49b6a1802b3fa8d"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1de8ce7fc7aec530ed4a8e039bcd7f81",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 492418,
            "upload_time": "2023-09-22T06:16:51",
            "upload_time_iso_8601": "2023-09-22T06:16:51.009701Z",
            "url": "https://files.pythonhosted.org/packages/f9/81/7b25bc53fc3b95b072d258e04d82372a46dbf8f8c5b3b554ee93d7887fa5/srsly-2.4.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "52b1970e7085fbb47fbc824adb0b0f211039ee3da01daa29a69ca99dd926dd48",
                "md5": "c385cd57f874b9fc1f6a6acef47e6f23",
                "sha256": "822a38b8cf112348f3accbc73274a94b7bf82515cb14a85ba586d126a5a72851"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "c385cd57f874b9fc1f6a6acef47e6f23",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 483839,
            "upload_time": "2023-09-22T06:16:52",
            "upload_time_iso_8601": "2023-09-22T06:16:52.846095Z",
            "url": "https://files.pythonhosted.org/packages/52/b1/970e7085fbb47fbc824adb0b0f211039ee3da01daa29a69ca99dd926dd48/srsly-2.4.8-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "597f17259e0962bb9433f39aa99ec45fd36851961491c562bc2f8c731cc476a6",
                "md5": "c3217a2ab80a7010bd34ec9a8689018e",
                "sha256": "b24d95a65009c2447e0b49cda043ac53fecf4f09e358d87a57446458f91b8a91"
            },
            "downloads": -1,
            "filename": "srsly-2.4.8.tar.gz",
            "has_sig": false,
            "md5_digest": "c3217a2ab80a7010bd34ec9a8689018e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 351651,
            "upload_time": "2023-09-22T06:16:54",
            "upload_time_iso_8601": "2023-09-22T06:16:54.044392Z",
            "url": "https://files.pythonhosted.org/packages/59/7f/17259e0962bb9433f39aa99ec45fd36851961491c562bc2f8c731cc476a6/srsly-2.4.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-09-22 06:16:54",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "explosion",
    "github_project": "srsly",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "srsly"
}
        
Elapsed time: 0.12031s