egobox


Nameegobox JSON
Version 0.25.0 PyPI version JSON
download
home_pageNone
SummaryA toolbox for efficient global optimization
upload_time2024-12-19 11:08:53
maintainerNone
docs_urlNone
authorRémi Lafage <remi.lafage@onera.fr>
requires_pythonNone
licenseApache-2.0
keywords machine-learning doe gaussian-process mixture-of-experts optimization
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center">
  <img
    width="100"
    src="./doc/LOGO_EGOBOX_v4_100x100.png"
    alt="Efficient Global Optimization toolbox in Rust"
  />
</p>

# EGObox - Efficient Global Optimization toolbox

[![tests](https://github.com/relf/egobox/workflows/tests/badge.svg)](https://github.com/relf/egobox/actions?query=workflow%3Atests)
[![pytests](https://github.com/relf/egobox/workflows/pytest/badge.svg)](https://github.com/relf/egobox/actions?query=workflow%3Apytest)
[![linting](https://github.com/relf/egobox/workflows/lint/badge.svg)](https://github.com/relf/egobox/actions?query=workflow%3Alint)
[![DOI](https://joss.theoj.org/papers/10.21105/joss.04737/status.svg)](https://doi.org/10.21105/joss.04737)

Rust toolbox for Efficient Global Optimization inspired by [the EGO implementation](https://smt.readthedocs.io/en/stable/_src_docs/applications/ego.html)
in the [SMT](https://github.com/SMTorg/smt) Python library.

The `egobox` package is twofold:

1. for end-users: [a Python module](#the-python-module), the Python binding of the optimizer named `Egor` and the surrogate model `Gpx`, mixture of Gaussian processes, written in Rust.
2. for developers: [a set of Rust libraries](#the-rust-libraries) useful to implement bayesian optimization (EGO-like) algorithms,

## The Python module

### Installation

```bash
pip install egobox
```

### Egor optimizer

```python
import numpy as np
import egobox as egx

# Objective function
def f_obj(x: np.ndarray) -> np.ndarray:
    return (x - 3.5) * np.sin((x - 3.5) / (np.pi))

# Minimize f_opt in [0, 25]
res = egx.Egor(egx.to_specs([[0.0, 25.0]]), seed=42).minimize(f_obj, max_iters=20)
print(f"Optimization f={res.y_opt} at {res.x_opt}")  # Optimization f=[-15.12510323] at [18.93525454]
```

### Gpx surrogate model

```python
import numpy as np
import egobox as egx

# Training
xtrain = np.array([0.0, 1.0, 2.0, 3.0, 4.0])
ytrain = np.array([0.0, 1.0, 1.5, 0.9, 1.0])
gpx = egx.Gpx.builder().fit(xtrain, ytrain)

# Prediction
xtest = np.linspace(0, 4, 20).reshape((-1, 1))
ytest = gpx.predict(xtest)
```

See the [tutorial notebooks](https://github.com/relf/egobox/tree/master/doc/README.md) and [examples folder](https://github.com/relf/egobox/tree/d9db0248199558f23d966796737d7ffa8f5de589/python/egobox/examples) for more information on the usage of the optimizer and mixture of Gaussian processes surrogate model.

## The Rust libraries

`egobox` Rust libraries consists of the following sub-packages.

| Name                                                  | Version                                                                                         | Documentation                                                               | Description                                                                               |
| :---------------------------------------------------- | :---------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------- |
| [doe](https://github.com/relf/egobox/tree/master/doe) | [![crates.io](https://img.shields.io/crates/v/egobox-doe)](https://crates.io/crates/egobox-doe) | [![docs](https://docs.rs/egobox-doe/badge.svg)](https://docs.rs/egobox-doe) | sampling methods; contains LHS, FullFactorial, Random methods                             |
| [gp](https://github.com/relf/egobox/tree/master/gp)   | [![crates.io](https://img.shields.io/crates/v/egobox-gp)](https://crates.io/crates/egobox-gp)   | [![docs](https://docs.rs/egobox-gp/badge.svg)](https://docs.rs/egobox-gp)   | gaussian process regression; contains Kriging, PLS dimension reduction and sparse methods |
| [moe](https://github.com/relf/egobox/tree/master/moe) | [![crates.io](https://img.shields.io/crates/v/egobox-moe)](https://crates.io/crates/egobox-moe) | [![docs](https://docs.rs/egobox-moe/badge.svg)](https://docs.rs/egobox-moe) | mixture of experts using GP models                                                        |
| [ego](https://github.com/relf/egobox/tree/master/ego) | [![crates.io](https://img.shields.io/crates/v/egobox-ego)](https://crates.io/crates/egobox-ego) | [![docs](https://docs.rs/egobox-ego/badge.svg)](https://docs.rs/egobox-ego) | efficient global optimization with constraints and mixed integer handling                 |

### Usage

Depending on the sub-packages you want to use, you have to add following declarations to your `Cargo.toml`

```text
[dependencies]
egobox-doe = { version = "0.25" }
egobox-gp  = { version = "0.25" }
egobox-moe = { version = "0.25" }
egobox-ego = { version = "0.25" }
```

### Features

The table below presents the various features available depending on the subcrate

| Name         | doe  | gp   | moe  | ego  |
| :----------- | :--- | :--- | :--- | :--- |
| serializable | ✔️    | ✔️    | ✔️    |      |
| persistent   |      |      | ✔️    | ✔️(*) |
| blas         |      | ✔️    | ✔️    | ✔️    |
| nlopt        |      | ✔️    |      | ✔️    |

(*) required for mixed-variable gaussian process

#### serializable

When selected, the serialization with [serde crate](https://serde.rs/) is enabled.

#### persistent

When selected, the save and load as a json file with [serde_json crate](https://serde.rs/) is enabled.

#### blas

When selected, the usage of BLAS/LAPACK backend is possible, see [below](#blaslapack-backend-optional) for more information.

#### nlopt

When selected, the [nlopt crate](https://github.com/adwhit/rust-nlopt) is used to provide optimizer implementations (ie Cobyla, Slsqp)

### Examples

Examples (in `examples/` sub-packages folder) are run as follows:

```bash
cd doe && cargo run --example samplings --release
```

``` bash
cd gp && cargo run --example kriging --release
```

``` bash
cd moe && cargo run --example clustering --release
```

``` bash
cd ego && cargo run --example ackley --release
```

### BLAS/LAPACK backend (optional)

`egobox` relies on [linfa](https://github.com/rust-ml/linfa) project for methods like clustering and dimension reduction, but also try to adopt as far as possible the same [coding structures](https://github.com/rust-ml/linfa/blob/master/CONTRIBUTE.md).

As for `linfa`, the linear algebra routines used in `gp`, `moe` ad `ego` are provided by the pure-Rust [linfa-linalg](https://github.com/rust-ml/linfa-linalg) crate, the default linear algebra provider.

Otherwise, you can choose an external BLAS/LAPACK backend available through the [ndarray-linalg](https://github.com/rust-ndarray/ndarray-linalg) crate. In this case, you have to specify the `blas` feature and a `linfa` [BLAS/LAPACK backend feature](https://github.com/rust-ml/linfa#blaslapack-backend) (more information in [linfa features](https://github.com/rust-ml/linfa#blaslapack-backend)).

Thus, for instance, to use `gp` with the Intel MKL BLAS/LAPACK backend, you could specify in your `Cargo.toml` the following features:

```text
[dependencies]
egobox-gp = { version = "0.25", features = ["blas", "linfa/intel-mkl-static"] }
```

or you could run the `gp` example as follows:

``` bash
cd gp && cargo run --example kriging --release --features blas,linfa/intel-mkl-static
```

## Citation

[![DOI](https://joss.theoj.org/papers/10.21105/joss.04737/status.svg)](https://doi.org/10.21105/joss.04737)

If you find this project useful for your research, you may cite it as follows:

```text
@article{
  Lafage2022, 
  author = {Rémi Lafage}, 
  title = {egobox, a Rust toolbox for efficient global optimization}, 
  journal = {Journal of Open Source Software} 
  year = {2022}, 
  doi = {10.21105/joss.04737}, 
  url = {https://doi.org/10.21105/joss.04737}, 
  publisher = {The Open Journal}, 
  volume = {7}, 
  number = {78}, 
  pages = {4737}, 
} 
```

Additionally, you may consider adding a star to the repository. This positive feedback improves the visibility of the project.

## References

Bartoli, N., Lefebvre, T., Dubreuil, S., Olivanti, R., Priem, R., Bons, N., Martins, J. R. R. A.,
& Morlier, J. (2019). Adaptive modeling strategy for constrained global optimization with
application to aerodynamic wing design. Aerospace Science and Technology, 90, 85–102.
<https://doi.org/10.1016/j.ast.2019.03.041>

Bouhlel, M. A., Bartoli, N., Otsmane, A., & Morlier, J. (2016). Improving kriging surrogates
of high-dimensional design models by partial least squares dimension reduction.
Structural and Multidisciplinary Optimization, 53(5), 935–952. <https://doi.org/10.1007/s00158-015-1395-9>

Bouhlel, M. A., Hwang, J. T., Bartoli, N., Lafage, R., Morlier, J., & Martins, J. R. R. A.
(2019). A python surrogate modeling framework with derivatives. Advances in Engineering
Software, 102662. <https://doi.org/10.1016/j.advengsoft.2019.03.005>

Dubreuil, S., Bartoli, N., Gogu, C., & Lefebvre, T. (2020). Towards an efficient global multi-
disciplinary design optimization algorithm. Structural and Multidisciplinary Optimization,
62(4), 1739–1765. <https://doi.org/10.1007/s00158-020-02514-6>

Jones, D. R., Schonlau, M., & Welch, W. J. (1998). Efficient global optimization of expensive
black-box functions. Journal of Global Optimization, 13(4), 455–492. <https://www.researchgate.net/publication/235709802_Efficient_Global_Optimization_of_Expensive_Black-Box_Functions>

Diouane, Youssef, et al. "TREGO: a trust-region framework for efficient global optimization."
Journal of Global Optimization 86.1 (2023): 1-23. <https://arxiv.org/pdf/2101.06808>

smtorg. (2018). Surrogate modeling toolbox. In GitHub repository. GitHub. <https://github.com/SMTOrg/smt>

## License

Licensed under the Apache License, Version 2.0 <http://www.apache.org/licenses/LICENSE-2.0>


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "egobox",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "machine-learning, doe, gaussian-process, mixture-of-experts, optimization",
    "author": "R\u00e9mi Lafage <remi.lafage@onera.fr>",
    "author_email": "R\u00e9mi Lafage <remi.lafage@onera.fr>",
    "download_url": "https://files.pythonhosted.org/packages/52/b4/4a8bc770f980e373f324266c13af47fba0911cf1d5691ba56640eba8336a/egobox-0.25.0.tar.gz",
    "platform": null,
    "description": "<p align=\"center\">\n  <img\n    width=\"100\"\n    src=\"./doc/LOGO_EGOBOX_v4_100x100.png\"\n    alt=\"Efficient Global Optimization toolbox in Rust\"\n  />\n</p>\n\n# EGObox - Efficient Global Optimization toolbox\n\n[![tests](https://github.com/relf/egobox/workflows/tests/badge.svg)](https://github.com/relf/egobox/actions?query=workflow%3Atests)\n[![pytests](https://github.com/relf/egobox/workflows/pytest/badge.svg)](https://github.com/relf/egobox/actions?query=workflow%3Apytest)\n[![linting](https://github.com/relf/egobox/workflows/lint/badge.svg)](https://github.com/relf/egobox/actions?query=workflow%3Alint)\n[![DOI](https://joss.theoj.org/papers/10.21105/joss.04737/status.svg)](https://doi.org/10.21105/joss.04737)\n\nRust toolbox for Efficient Global Optimization inspired by [the EGO implementation](https://smt.readthedocs.io/en/stable/_src_docs/applications/ego.html)\nin the [SMT](https://github.com/SMTorg/smt) Python library.\n\nThe `egobox` package is twofold:\n\n1. for end-users: [a Python module](#the-python-module), the Python binding of the optimizer named `Egor` and the surrogate model `Gpx`, mixture of Gaussian processes, written in Rust.\n2. for developers: [a set of Rust libraries](#the-rust-libraries) useful to implement bayesian optimization (EGO-like) algorithms,\n\n## The Python module\n\n### Installation\n\n```bash\npip install egobox\n```\n\n### Egor optimizer\n\n```python\nimport numpy as np\nimport egobox as egx\n\n# Objective function\ndef f_obj(x: np.ndarray) -> np.ndarray:\n    return (x - 3.5) * np.sin((x - 3.5) / (np.pi))\n\n# Minimize f_opt in [0, 25]\nres = egx.Egor(egx.to_specs([[0.0, 25.0]]), seed=42).minimize(f_obj, max_iters=20)\nprint(f\"Optimization f={res.y_opt} at {res.x_opt}\")  # Optimization f=[-15.12510323] at [18.93525454]\n```\n\n### Gpx surrogate model\n\n```python\nimport numpy as np\nimport egobox as egx\n\n# Training\nxtrain = np.array([0.0, 1.0, 2.0, 3.0, 4.0])\nytrain = np.array([0.0, 1.0, 1.5, 0.9, 1.0])\ngpx = egx.Gpx.builder().fit(xtrain, ytrain)\n\n# Prediction\nxtest = np.linspace(0, 4, 20).reshape((-1, 1))\nytest = gpx.predict(xtest)\n```\n\nSee the [tutorial notebooks](https://github.com/relf/egobox/tree/master/doc/README.md) and [examples folder](https://github.com/relf/egobox/tree/d9db0248199558f23d966796737d7ffa8f5de589/python/egobox/examples) for more information on the usage of the optimizer and mixture of Gaussian processes surrogate model.\n\n## The Rust libraries\n\n`egobox` Rust libraries consists of the following sub-packages.\n\n| Name                                                  | Version                                                                                         | Documentation                                                               | Description                                                                               |\n| :---------------------------------------------------- | :---------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------- |\n| [doe](https://github.com/relf/egobox/tree/master/doe) | [![crates.io](https://img.shields.io/crates/v/egobox-doe)](https://crates.io/crates/egobox-doe) | [![docs](https://docs.rs/egobox-doe/badge.svg)](https://docs.rs/egobox-doe) | sampling methods; contains LHS, FullFactorial, Random methods                             |\n| [gp](https://github.com/relf/egobox/tree/master/gp)   | [![crates.io](https://img.shields.io/crates/v/egobox-gp)](https://crates.io/crates/egobox-gp)   | [![docs](https://docs.rs/egobox-gp/badge.svg)](https://docs.rs/egobox-gp)   | gaussian process regression; contains Kriging, PLS dimension reduction and sparse methods |\n| [moe](https://github.com/relf/egobox/tree/master/moe) | [![crates.io](https://img.shields.io/crates/v/egobox-moe)](https://crates.io/crates/egobox-moe) | [![docs](https://docs.rs/egobox-moe/badge.svg)](https://docs.rs/egobox-moe) | mixture of experts using GP models                                                        |\n| [ego](https://github.com/relf/egobox/tree/master/ego) | [![crates.io](https://img.shields.io/crates/v/egobox-ego)](https://crates.io/crates/egobox-ego) | [![docs](https://docs.rs/egobox-ego/badge.svg)](https://docs.rs/egobox-ego) | efficient global optimization with constraints and mixed integer handling                 |\n\n### Usage\n\nDepending on the sub-packages you want to use, you have to add following declarations to your `Cargo.toml`\n\n```text\n[dependencies]\negobox-doe = { version = \"0.25\" }\negobox-gp  = { version = \"0.25\" }\negobox-moe = { version = \"0.25\" }\negobox-ego = { version = \"0.25\" }\n```\n\n### Features\n\nThe table below presents the various features available depending on the subcrate\n\n| Name         | doe  | gp   | moe  | ego  |\n| :----------- | :--- | :--- | :--- | :--- |\n| serializable | \u2714\ufe0f    | \u2714\ufe0f    | \u2714\ufe0f    |      |\n| persistent   |      |      | \u2714\ufe0f    | \u2714\ufe0f(*) |\n| blas         |      | \u2714\ufe0f    | \u2714\ufe0f    | \u2714\ufe0f    |\n| nlopt        |      | \u2714\ufe0f    |      | \u2714\ufe0f    |\n\n(*) required for mixed-variable gaussian process\n\n#### serializable\n\nWhen selected, the serialization with [serde crate](https://serde.rs/) is enabled.\n\n#### persistent\n\nWhen selected, the save and load as a json file with [serde_json crate](https://serde.rs/) is enabled.\n\n#### blas\n\nWhen selected, the usage of BLAS/LAPACK backend is possible, see [below](#blaslapack-backend-optional) for more information.\n\n#### nlopt\n\nWhen selected, the [nlopt crate](https://github.com/adwhit/rust-nlopt) is used to provide optimizer implementations (ie Cobyla, Slsqp)\n\n### Examples\n\nExamples (in `examples/` sub-packages folder) are run as follows:\n\n```bash\ncd doe && cargo run --example samplings --release\n```\n\n``` bash\ncd gp && cargo run --example kriging --release\n```\n\n``` bash\ncd moe && cargo run --example clustering --release\n```\n\n``` bash\ncd ego && cargo run --example ackley --release\n```\n\n### BLAS/LAPACK backend (optional)\n\n`egobox` relies on [linfa](https://github.com/rust-ml/linfa) project for methods like clustering and dimension reduction, but also try to adopt as far as possible the same [coding structures](https://github.com/rust-ml/linfa/blob/master/CONTRIBUTE.md).\n\nAs for `linfa`, the linear algebra routines used in `gp`, `moe` ad `ego` are provided by the pure-Rust [linfa-linalg](https://github.com/rust-ml/linfa-linalg) crate, the default linear algebra provider.\n\nOtherwise, you can choose an external BLAS/LAPACK backend available through the [ndarray-linalg](https://github.com/rust-ndarray/ndarray-linalg) crate. In this case, you have to specify the `blas` feature and a `linfa` [BLAS/LAPACK backend feature](https://github.com/rust-ml/linfa#blaslapack-backend) (more information in [linfa features](https://github.com/rust-ml/linfa#blaslapack-backend)).\n\nThus, for instance, to use `gp` with the Intel MKL BLAS/LAPACK backend, you could specify in your `Cargo.toml` the following features:\n\n```text\n[dependencies]\negobox-gp = { version = \"0.25\", features = [\"blas\", \"linfa/intel-mkl-static\"] }\n```\n\nor you could run the `gp` example as follows:\n\n``` bash\ncd gp && cargo run --example kriging --release --features blas,linfa/intel-mkl-static\n```\n\n## Citation\n\n[![DOI](https://joss.theoj.org/papers/10.21105/joss.04737/status.svg)](https://doi.org/10.21105/joss.04737)\n\nIf you find this project useful for your research, you may cite it as follows:\n\n```text\n@article{\n  Lafage2022, \n  author = {R\u00e9mi Lafage}, \n  title = {egobox, a Rust toolbox for efficient global optimization}, \n  journal = {Journal of Open Source Software} \n  year = {2022}, \n  doi = {10.21105/joss.04737}, \n  url = {https://doi.org/10.21105/joss.04737}, \n  publisher = {The Open Journal}, \n  volume = {7}, \n  number = {78}, \n  pages = {4737}, \n} \n```\n\nAdditionally, you may consider adding a star to the repository. This positive feedback improves the visibility of the project.\n\n## References\n\nBartoli, N., Lefebvre, T., Dubreuil, S., Olivanti, R., Priem, R., Bons, N., Martins, J. R. R. A.,\n& Morlier, J. (2019). Adaptive modeling strategy for constrained global optimization with\napplication to aerodynamic wing design. Aerospace Science and Technology, 90, 85\u2013102.\n<https://doi.org/10.1016/j.ast.2019.03.041>\n\nBouhlel, M. A., Bartoli, N., Otsmane, A., & Morlier, J. (2016). Improving kriging surrogates\nof high-dimensional design models by partial least squares dimension reduction.\nStructural and Multidisciplinary Optimization, 53(5), 935\u2013952. <https://doi.org/10.1007/s00158-015-1395-9>\n\nBouhlel, M. A., Hwang, J. T., Bartoli, N., Lafage, R., Morlier, J., & Martins, J. R. R. A.\n(2019). A python surrogate modeling framework with derivatives. Advances in Engineering\nSoftware, 102662. <https://doi.org/10.1016/j.advengsoft.2019.03.005>\n\nDubreuil, S., Bartoli, N., Gogu, C., & Lefebvre, T. (2020). Towards an efficient global multi-\ndisciplinary design optimization algorithm. Structural and Multidisciplinary Optimization,\n62(4), 1739\u20131765. <https://doi.org/10.1007/s00158-020-02514-6>\n\nJones, D. R., Schonlau, M., & Welch, W. J. (1998). Efficient global optimization of expensive\nblack-box functions. Journal of Global Optimization, 13(4), 455\u2013492. <https://www.researchgate.net/publication/235709802_Efficient_Global_Optimization_of_Expensive_Black-Box_Functions>\n\nDiouane, Youssef, et al. \"TREGO: a trust-region framework for efficient global optimization.\"\nJournal of Global Optimization 86.1 (2023): 1-23. <https://arxiv.org/pdf/2101.06808>\n\nsmtorg. (2018). Surrogate modeling toolbox. In GitHub repository. GitHub. <https://github.com/SMTOrg/smt>\n\n## License\n\nLicensed under the Apache License, Version 2.0 <http://www.apache.org/licenses/LICENSE-2.0>\n\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "A toolbox for efficient global optimization",
    "version": "0.25.0",
    "project_urls": {
        "Source Code": "https://github.com/relf/egobox"
    },
    "split_keywords": [
        "machine-learning",
        " doe",
        " gaussian-process",
        " mixture-of-experts",
        " optimization"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "548506efa5a4911f1f7b0e980ffaa6492ce74a526f899a97543f6a2b195015f3",
                "md5": "0f48f318c0dad91736aac3b5ac8fad61",
                "sha256": "70adfc09ba1407f14b41ae3e1f5c982feabc5c9e27abca79ea64c48733d4a6a2"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "0f48f318c0dad91736aac3b5ac8fad61",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 4816068,
            "upload_time": "2024-12-19T11:07:09",
            "upload_time_iso_8601": "2024-12-19T11:07:09.030761Z",
            "url": "https://files.pythonhosted.org/packages/54/85/06efa5a4911f1f7b0e980ffaa6492ce74a526f899a97543f6a2b195015f3/egobox-0.25.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4a6073df03ccebed07814653f4590febac074d9c3d95e8dd0c5e78f7ee68eac9",
                "md5": "7ccd78f5459c60db6ca4009084c58c94",
                "sha256": "733066b9296c08a29c982b4baeb843bcd0cb0e323eb8ec20f69fd0b5f005363b"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7ccd78f5459c60db6ca4009084c58c94",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 4753591,
            "upload_time": "2024-12-19T11:07:12",
            "upload_time_iso_8601": "2024-12-19T11:07:12.986470Z",
            "url": "https://files.pythonhosted.org/packages/4a/60/73df03ccebed07814653f4590febac074d9c3d95e8dd0c5e78f7ee68eac9/egobox-0.25.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6b53e0752f38f63eca03a20290dc306c839f6a8dd3b8996aee11e41cfea78b16",
                "md5": "6f8b29bc21b9d478a59aad2c13fe4d2a",
                "sha256": "e2d8ebb86e211895e5f04cd67e1263c0f3435a025c3d3adebf0da58960bfa933"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp310-cp310-manylinux_2_35_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6f8b29bc21b9d478a59aad2c13fe4d2a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 4750051,
            "upload_time": "2024-12-19T11:07:16",
            "upload_time_iso_8601": "2024-12-19T11:07:16.262319Z",
            "url": "https://files.pythonhosted.org/packages/6b/53/e0752f38f63eca03a20290dc306c839f6a8dd3b8996aee11e41cfea78b16/egobox-0.25.0-cp310-cp310-manylinux_2_35_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7b697ec5d1be5007ee87937cc45936e5b2b2ddc9623341dc5e7a2a67eb8a9478",
                "md5": "3b96bcddf1defde2b128b854089d35f9",
                "sha256": "f76c15fa8a339bdd321f557cccdf48b1bb3274089e23094639447ffd7376bb40"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "3b96bcddf1defde2b128b854089d35f9",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 3150414,
            "upload_time": "2024-12-19T11:07:20",
            "upload_time_iso_8601": "2024-12-19T11:07:20.256572Z",
            "url": "https://files.pythonhosted.org/packages/7b/69/7ec5d1be5007ee87937cc45936e5b2b2ddc9623341dc5e7a2a67eb8a9478/egobox-0.25.0-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "21d8efa589bcd3924875e3a21e09e3c108bb45ef9a60f60b8d21138bd7efa394",
                "md5": "68d060433dd4886204ecef5218b389c4",
                "sha256": "e6cc7fdb8a72458479e3cf1de314de1454af94ff164f059cd6cf2e9e0a272df5"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "68d060433dd4886204ecef5218b389c4",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 3654172,
            "upload_time": "2024-12-19T11:07:22",
            "upload_time_iso_8601": "2024-12-19T11:07:22.723032Z",
            "url": "https://files.pythonhosted.org/packages/21/d8/efa589bcd3924875e3a21e09e3c108bb45ef9a60f60b8d21138bd7efa394/egobox-0.25.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fde30b00f1a093f9601fa861534a3c7c615a3e63a2272df6e359399d744f791f",
                "md5": "d1f6ca49f4d378b99fd3dd28d4a4de76",
                "sha256": "66924bd64b472213c61a4cc1986f35dae753411d503f53fd338b164c368cc872"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp311-cp311-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d1f6ca49f4d378b99fd3dd28d4a4de76",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 4166359,
            "upload_time": "2024-12-19T11:07:25",
            "upload_time_iso_8601": "2024-12-19T11:07:25.987699Z",
            "url": "https://files.pythonhosted.org/packages/fd/e3/0b00f1a093f9601fa861534a3c7c615a3e63a2272df6e359399d744f791f/egobox-0.25.0-cp311-cp311-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a48f922b002a5d0497cc5fb250b4e53465195b82a410817568a2c4b2144921b5",
                "md5": "7bc84663086c9597968f5e96c70582a6",
                "sha256": "86d1331cb1aac94e461394b543d2bdbe639b886ec7f705508493ff0efb75983f"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "7bc84663086c9597968f5e96c70582a6",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 3864978,
            "upload_time": "2024-12-19T11:07:28",
            "upload_time_iso_8601": "2024-12-19T11:07:28.381692Z",
            "url": "https://files.pythonhosted.org/packages/a4/8f/922b002a5d0497cc5fb250b4e53465195b82a410817568a2c4b2144921b5/egobox-0.25.0-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0c4001ed1f38ebec854b64a9bfd691e7fe7c4940a8605d74dd16eabf3af507aa",
                "md5": "2b4c07648eb4bc2bff10c4ba1b1dd83d",
                "sha256": "1b8c5c747faeb811493747df50f24ccc61fde090ddebed049a5b0968781c1b51"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "2b4c07648eb4bc2bff10c4ba1b1dd83d",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 4816380,
            "upload_time": "2024-12-19T11:07:31",
            "upload_time_iso_8601": "2024-12-19T11:07:31.331681Z",
            "url": "https://files.pythonhosted.org/packages/0c/40/01ed1f38ebec854b64a9bfd691e7fe7c4940a8605d74dd16eabf3af507aa/egobox-0.25.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6b8136db37041be50b9873cb10cbf5f0df30018c51ce29a49e874f55283e21f7",
                "md5": "e91251c760e9a35e3fae3111afac6670",
                "sha256": "77c7f97e8589daf152af4404caab0cda8efcd3bceeb9227fbd64d70815b3e6b7"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e91251c760e9a35e3fae3111afac6670",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 4753442,
            "upload_time": "2024-12-19T11:07:35",
            "upload_time_iso_8601": "2024-12-19T11:07:35.334380Z",
            "url": "https://files.pythonhosted.org/packages/6b/81/36db37041be50b9873cb10cbf5f0df30018c51ce29a49e874f55283e21f7/egobox-0.25.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "693fc2673ed28fb0c21f498a91ed3b33a35cf32072242604c769942bb47321df",
                "md5": "e968973e21e5af6ee0378c8ae4e26b3c",
                "sha256": "9dcbbf967638bdd0e6d9aae83cf8886daab88a9e591ba6cd8c6210fbdcfcdba0"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "e968973e21e5af6ee0378c8ae4e26b3c",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 3150448,
            "upload_time": "2024-12-19T11:07:37",
            "upload_time_iso_8601": "2024-12-19T11:07:37.539987Z",
            "url": "https://files.pythonhosted.org/packages/69/3f/c2673ed28fb0c21f498a91ed3b33a35cf32072242604c769942bb47321df/egobox-0.25.0-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5021fc7c62d103157022d98e594978cd7b9bfaa97aaedd0dd3328f537580e447",
                "md5": "b58d572335deab8dd7e715ceb980eb6b",
                "sha256": "0bd4da770c145ed958e317125ce2a4ed1e0a544eeaf610f22c14e31161669901"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "b58d572335deab8dd7e715ceb980eb6b",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": null,
            "size": 3654445,
            "upload_time": "2024-12-19T11:07:39",
            "upload_time_iso_8601": "2024-12-19T11:07:39.724549Z",
            "url": "https://files.pythonhosted.org/packages/50/21/fc7c62d103157022d98e594978cd7b9bfaa97aaedd0dd3328f537580e447/egobox-0.25.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "805f34c14e6c39cc52e9a4e5ef203d909768c49d19092deab390405a72c3b03e",
                "md5": "a37176172f93f927dafc304f9de7f92b",
                "sha256": "8afdefd815c2fe394ab94c91ab4cc7afa443f9a1cc1e3ef316ebc1b8f96d0f60"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp312-cp312-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a37176172f93f927dafc304f9de7f92b",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 4161603,
            "upload_time": "2024-12-19T11:07:41",
            "upload_time_iso_8601": "2024-12-19T11:07:41.985552Z",
            "url": "https://files.pythonhosted.org/packages/80/5f/34c14e6c39cc52e9a4e5ef203d909768c49d19092deab390405a72c3b03e/egobox-0.25.0-cp312-cp312-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f253b0709552fb5121477403b9ff7618729166f3dbc27b8f497228376b79b685",
                "md5": "a5357f61792dd71c04402d17b0701a25",
                "sha256": "347c4c993efb27d5ee83db773f91e23598488e96f7b23fa715ecee0414f141e7"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "a5357f61792dd71c04402d17b0701a25",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 3860521,
            "upload_time": "2024-12-19T11:07:45",
            "upload_time_iso_8601": "2024-12-19T11:07:45.227622Z",
            "url": "https://files.pythonhosted.org/packages/f2/53/b0709552fb5121477403b9ff7618729166f3dbc27b8f497228376b79b685/egobox-0.25.0-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8193fb9d584fc48a0d50cad04f0020191ed365b9b4b2027839ba698e01f9c081",
                "md5": "14382cd10a1677d3bf9694b0d5c83c39",
                "sha256": "7a59b8bba8092f6f60b20526d38db0a638189ae4db86f5dd1a7c2463f6be52b9"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "14382cd10a1677d3bf9694b0d5c83c39",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 4814828,
            "upload_time": "2024-12-19T11:07:48",
            "upload_time_iso_8601": "2024-12-19T11:07:48.594430Z",
            "url": "https://files.pythonhosted.org/packages/81/93/fb9d584fc48a0d50cad04f0020191ed365b9b4b2027839ba698e01f9c081/egobox-0.25.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6c39c1e7ea95ba5abeda33667e5c2f1cdfc291cf1c1084a74665f1982751d5df",
                "md5": "a1b59e0f87405495f977dc43dea2a9e3",
                "sha256": "f602d76cd94058adc5a82b40c8193bab0c981235d292dbb05b447d101be633f6"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a1b59e0f87405495f977dc43dea2a9e3",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 4747896,
            "upload_time": "2024-12-19T11:07:50",
            "upload_time_iso_8601": "2024-12-19T11:07:50.884654Z",
            "url": "https://files.pythonhosted.org/packages/6c/39/c1e7ea95ba5abeda33667e5c2f1cdfc291cf1c1084a74665f1982751d5df/egobox-0.25.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7cd66ee740da66585d09454e7d70a96f5f9aa1bb28ecd01532c75bd2f90f6f47",
                "md5": "bf4f2e9e8ed32047313a9670d36974ee",
                "sha256": "bf0dc9c94da686e6ca765dd32681dbc49dc5cba1fbee96f1239077e621d9a8b8"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp312-cp312-win32.whl",
            "has_sig": false,
            "md5_digest": "bf4f2e9e8ed32047313a9670d36974ee",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 3147389,
            "upload_time": "2024-12-19T11:07:52",
            "upload_time_iso_8601": "2024-12-19T11:07:52.979104Z",
            "url": "https://files.pythonhosted.org/packages/7c/d6/6ee740da66585d09454e7d70a96f5f9aa1bb28ecd01532c75bd2f90f6f47/egobox-0.25.0-cp312-cp312-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b9bdfe4ddd0cd617aa7227fae05fd8f8b253dc4acbe6b0c6bf210f4feb5e7ecb",
                "md5": "f38c4440be876c5c3356c36e06dd3ad6",
                "sha256": "8a80fa1ea5a9935625734ad8518adacd81b341bd2f5f382c56ecef63c359f5f8"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f38c4440be876c5c3356c36e06dd3ad6",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": null,
            "size": 3657573,
            "upload_time": "2024-12-19T11:07:57",
            "upload_time_iso_8601": "2024-12-19T11:07:57.321800Z",
            "url": "https://files.pythonhosted.org/packages/b9/bd/fe4ddd0cd617aa7227fae05fd8f8b253dc4acbe6b0c6bf210f4feb5e7ecb/egobox-0.25.0-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "49c3a54d1b0c9542e5a54148ca4d028f8b9d63f9503c9d4d30396ca463d48e75",
                "md5": "f41e1b860ec0da971a587d65cac176f7",
                "sha256": "f0d2b7cede90431a7dfaa5de2b0320d09086fdc2a1c9573a69f9a2123e98a13c"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp313-cp313-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f41e1b860ec0da971a587d65cac176f7",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": null,
            "size": 4160745,
            "upload_time": "2024-12-19T11:07:59",
            "upload_time_iso_8601": "2024-12-19T11:07:59.529315Z",
            "url": "https://files.pythonhosted.org/packages/49/c3/a54d1b0c9542e5a54148ca4d028f8b9d63f9503c9d4d30396ca463d48e75/egobox-0.25.0-cp313-cp313-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "15ff8f6b11b03de0eef4ab8f57aac4ecfad3714b64de4d17aa7b19e8ca428cef",
                "md5": "b0e61702119e421d62e6384562439977",
                "sha256": "1094bb7617edb0a5260d40d3094954ce54a80c34046016420937052aa1db1225"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "b0e61702119e421d62e6384562439977",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": null,
            "size": 3860375,
            "upload_time": "2024-12-19T11:08:01",
            "upload_time_iso_8601": "2024-12-19T11:08:01.520172Z",
            "url": "https://files.pythonhosted.org/packages/15/ff/8f6b11b03de0eef4ab8f57aac4ecfad3714b64de4d17aa7b19e8ca428cef/egobox-0.25.0-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "82b4076b325d57b3116a44aac8ab621d7a89be7919997b0add35bda69d674fea",
                "md5": "54ce1483b77edd750de713ebe22abf72",
                "sha256": "27f02b976e68f7451f7a39f447585fbf1763cef14d93b3401fb6834764087c6f"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "54ce1483b77edd750de713ebe22abf72",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": null,
            "size": 4814097,
            "upload_time": "2024-12-19T11:08:03",
            "upload_time_iso_8601": "2024-12-19T11:08:03.721889Z",
            "url": "https://files.pythonhosted.org/packages/82/b4/076b325d57b3116a44aac8ab621d7a89be7919997b0add35bda69d674fea/egobox-0.25.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "40f183cec6e899d9ee00951fcc9d1e456386ccda2d83a73752f54ab604a84f4b",
                "md5": "e2f654fe11f37dfe33b75c26b469293a",
                "sha256": "33b9d532c3ee1172c055a531dd07141cdcd124b1de2c043526c6f7fd2d05f004"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e2f654fe11f37dfe33b75c26b469293a",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": null,
            "size": 4747007,
            "upload_time": "2024-12-19T11:08:07",
            "upload_time_iso_8601": "2024-12-19T11:08:07.588225Z",
            "url": "https://files.pythonhosted.org/packages/40/f1/83cec6e899d9ee00951fcc9d1e456386ccda2d83a73752f54ab604a84f4b/egobox-0.25.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "da6366618ef029e02da9a2531d25c45ed3d106bfdce8bf10643300875e9640b7",
                "md5": "1afe7bbb61f1e2be5a3f1ef2c87b356a",
                "sha256": "8411903a8ed882106156326cf18ec279935825149eff8faf686ff29348928075"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "1afe7bbb61f1e2be5a3f1ef2c87b356a",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 4816766,
            "upload_time": "2024-12-19T11:08:10",
            "upload_time_iso_8601": "2024-12-19T11:08:10.071766Z",
            "url": "https://files.pythonhosted.org/packages/da/63/66618ef029e02da9a2531d25c45ed3d106bfdce8bf10643300875e9640b7/egobox-0.25.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4f69f04fb4bfc4ef7ec1997648a4dbd68dedcb6a04a930fb765f86e78c60a85a",
                "md5": "7063cde9228483ffb984e9b53536146b",
                "sha256": "023ecd17fa7050db845cf9ec19046886b068ad621bbd934adc6d9e24864fb069"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7063cde9228483ffb984e9b53536146b",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 4756784,
            "upload_time": "2024-12-19T11:08:12",
            "upload_time_iso_8601": "2024-12-19T11:08:12.489307Z",
            "url": "https://files.pythonhosted.org/packages/4f/69/f04fb4bfc4ef7ec1997648a4dbd68dedcb6a04a930fb765f86e78c60a85a/egobox-0.25.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0d67a0cbb22213acbc13101206fe0eade892288aa13f380d4a2f9527cc56041d",
                "md5": "d4ede6d709441c5c656531010ffb996f",
                "sha256": "36580a5fa84b006fc48499a3c4010eef6a04b620159b492a9dcf26065b726029"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp37-cp37m-win32.whl",
            "has_sig": false,
            "md5_digest": "d4ede6d709441c5c656531010ffb996f",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 3148327,
            "upload_time": "2024-12-19T11:08:14",
            "upload_time_iso_8601": "2024-12-19T11:08:14.456889Z",
            "url": "https://files.pythonhosted.org/packages/0d/67/a0cbb22213acbc13101206fe0eade892288aa13f380d4a2f9527cc56041d/egobox-0.25.0-cp37-cp37m-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "200965b27dd6a500bd46b011476604185304eaabd74ca6eabe50dfab51aa21d5",
                "md5": "4e110ffe18f6652786090f4909a03ae3",
                "sha256": "d354a94bb9a4a7b4d7c8c36bf965979e2739cbd1204af045b90cb4a8bfdad044"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp37-cp37m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4e110ffe18f6652786090f4909a03ae3",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 3654169,
            "upload_time": "2024-12-19T11:08:16",
            "upload_time_iso_8601": "2024-12-19T11:08:16.669456Z",
            "url": "https://files.pythonhosted.org/packages/20/09/65b27dd6a500bd46b011476604185304eaabd74ca6eabe50dfab51aa21d5/egobox-0.25.0-cp37-cp37m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3b7f9bfc8f40d6b713ccdfdc94bd006302dbb441a75bf4d8ce674069e1262ee5",
                "md5": "f68e97c1675f80aef4bd474af3f159fd",
                "sha256": "66a8736fad8f436a1281e83fc32611e2a78a48f3a9c4bec8b9c908e49d26d6c2"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "f68e97c1675f80aef4bd474af3f159fd",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 4816622,
            "upload_time": "2024-12-19T11:08:20",
            "upload_time_iso_8601": "2024-12-19T11:08:20.131371Z",
            "url": "https://files.pythonhosted.org/packages/3b/7f/9bfc8f40d6b713ccdfdc94bd006302dbb441a75bf4d8ce674069e1262ee5/egobox-0.25.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f4add7ab802ce86a9d51659d14c6d9cf63468619e53ff12a6e39cdc2fd4f48e9",
                "md5": "cc6bd60e77fc06db38f5e80134884149",
                "sha256": "6045276f171fe8cc3a6e4421a3424aca59028e5a25f1e279d1a316d9abe2a45b"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "cc6bd60e77fc06db38f5e80134884149",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 4755854,
            "upload_time": "2024-12-19T11:08:22",
            "upload_time_iso_8601": "2024-12-19T11:08:22.698955Z",
            "url": "https://files.pythonhosted.org/packages/f4/ad/d7ab802ce86a9d51659d14c6d9cf63468619e53ff12a6e39cdc2fd4f48e9/egobox-0.25.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "23923b137b14bd91ed11f8d5beb51b6ed7b327fb02bb1c4adc01a098b3cb25ba",
                "md5": "5fef44756450682935a55ff8830bf408",
                "sha256": "e618cb9dd201673f555f107088f200422e8e9c1789c73a194fbc7004432580b6"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp38-cp38-win32.whl",
            "has_sig": false,
            "md5_digest": "5fef44756450682935a55ff8830bf408",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 3148340,
            "upload_time": "2024-12-19T11:08:25",
            "upload_time_iso_8601": "2024-12-19T11:08:25.955483Z",
            "url": "https://files.pythonhosted.org/packages/23/92/3b137b14bd91ed11f8d5beb51b6ed7b327fb02bb1c4adc01a098b3cb25ba/egobox-0.25.0-cp38-cp38-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ef791bb6af8eea3d24a397153e16483a9debda207b5b64955f37c2bf12499238",
                "md5": "aee49ed7e8498372037e854408182e7a",
                "sha256": "a7e785af09571b501e1532d06534a2df55a383e13496ac2003e0b00a1caebccf"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "aee49ed7e8498372037e854408182e7a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 3654234,
            "upload_time": "2024-12-19T11:08:28",
            "upload_time_iso_8601": "2024-12-19T11:08:28.222372Z",
            "url": "https://files.pythonhosted.org/packages/ef/79/1bb6af8eea3d24a397153e16483a9debda207b5b64955f37c2bf12499238/egobox-0.25.0-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3edc77059b3893c03afa346a81b38b9409ddbb5433117051d7b23d422d4ff6ff",
                "md5": "6a3424a20e149a25fc20e4b9ee9ec6c4",
                "sha256": "860d4712964d3f016d6b7b790b281564635b767514d41d94c1849e2ce83d5d57"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "6a3424a20e149a25fc20e4b9ee9ec6c4",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 4816328,
            "upload_time": "2024-12-19T11:08:30",
            "upload_time_iso_8601": "2024-12-19T11:08:30.830232Z",
            "url": "https://files.pythonhosted.org/packages/3e/dc/77059b3893c03afa346a81b38b9409ddbb5433117051d7b23d422d4ff6ff/egobox-0.25.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b2d7c6090c9268ed26d9935b7303f52f642bba9ab733ee1aa77ba064048f1a28",
                "md5": "6b3f2dde21681a560ab87150695da964",
                "sha256": "bd776ffa84b46913603c9bb377ebd3adfc4b6dcaf503f4b32466c88cd7ac5d72"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6b3f2dde21681a560ab87150695da964",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 4755149,
            "upload_time": "2024-12-19T11:08:33",
            "upload_time_iso_8601": "2024-12-19T11:08:33.782839Z",
            "url": "https://files.pythonhosted.org/packages/b2/d7/c6090c9268ed26d9935b7303f52f642bba9ab733ee1aa77ba064048f1a28/egobox-0.25.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1b56f63d48df73cff748bc318bfd73625568a544520d2aacd80279dba7f8185f",
                "md5": "538cbd6066fea1a313ce6cd5923a6f95",
                "sha256": "a67dd6c3355304e8249a0299fcda66e76f9e809a05c6281e48ac8aa4e81edd70"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp39-cp39-win32.whl",
            "has_sig": false,
            "md5_digest": "538cbd6066fea1a313ce6cd5923a6f95",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 3150455,
            "upload_time": "2024-12-19T11:08:35",
            "upload_time_iso_8601": "2024-12-19T11:08:35.984489Z",
            "url": "https://files.pythonhosted.org/packages/1b/56/f63d48df73cff748bc318bfd73625568a544520d2aacd80279dba7f8185f/egobox-0.25.0-cp39-cp39-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0c047a4dcaa1d0b35536f4baa7225a6c8a69267e6f849ee6137bbdc98fea3c8b",
                "md5": "233ae016455ef38cd91b63881a9f0461",
                "sha256": "33a26b8a8d7c18b47aa90fe785a6d82cfeb533e033106b97c1d2d9e8ef0da40d"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "233ae016455ef38cd91b63881a9f0461",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 3654248,
            "upload_time": "2024-12-19T11:08:42",
            "upload_time_iso_8601": "2024-12-19T11:08:42.096164Z",
            "url": "https://files.pythonhosted.org/packages/0c/04/7a4dcaa1d0b35536f4baa7225a6c8a69267e6f849ee6137bbdc98fea3c8b/egobox-0.25.0-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "99154464ed21629a62649c8145f8b6587a6e0acf2e0bd263981cd4843d9b55db",
                "md5": "2dd84dc863490e9ea3b4e25c622ceecb",
                "sha256": "d1f726869b710b0c8dcb3279415f043205582ab820e7de5f85d74658662db555"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "2dd84dc863490e9ea3b4e25c622ceecb",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": null,
            "size": 4815018,
            "upload_time": "2024-12-19T11:08:45",
            "upload_time_iso_8601": "2024-12-19T11:08:45.747615Z",
            "url": "https://files.pythonhosted.org/packages/99/15/4464ed21629a62649c8145f8b6587a6e0acf2e0bd263981cd4843d9b55db/egobox-0.25.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bdbde2a066722e7422b122eefd0b4e229ead047e0a82ba8e437c6fca51781b63",
                "md5": "a543b0e1bcae71d4eefb24fa3ae7b8e2",
                "sha256": "d6c50d6f6df9a6494563bfdbaa8141f25adf4d52c5638d175b01341ca4c1d60f"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a543b0e1bcae71d4eefb24fa3ae7b8e2",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": null,
            "size": 4756360,
            "upload_time": "2024-12-19T11:08:49",
            "upload_time_iso_8601": "2024-12-19T11:08:49.887817Z",
            "url": "https://files.pythonhosted.org/packages/bd/bd/e2a066722e7422b122eefd0b4e229ead047e0a82ba8e437c6fca51781b63/egobox-0.25.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "52b44a8bc770f980e373f324266c13af47fba0911cf1d5691ba56640eba8336a",
                "md5": "c20f551a744c4fc814b91d967cc3416d",
                "sha256": "239c0993c0d036259e391023899faac64bbe3846048c1cdb5da432aa85bced40"
            },
            "downloads": -1,
            "filename": "egobox-0.25.0.tar.gz",
            "has_sig": false,
            "md5_digest": "c20f551a744c4fc814b91d967cc3416d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 1522605,
            "upload_time": "2024-12-19T11:08:53",
            "upload_time_iso_8601": "2024-12-19T11:08:53.625243Z",
            "url": "https://files.pythonhosted.org/packages/52/b4/4a8bc770f980e373f324266c13af47fba0911cf1d5691ba56640eba8336a/egobox-0.25.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-19 11:08:53",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "relf",
    "github_project": "egobox",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "egobox"
}
        
Elapsed time: 0.41666s