pyslsqp


Namepyslsqp JSON
Version 0.1.3 PyPI version JSON
download
home_pageNone
SummaryA transparent Python interface to the SLSQP optimization algorithm, with advanced features and visualization capabilities.
upload_time2024-12-06 00:04:22
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseCopyright (c) 2024, Anugrah Jo Joshy. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
keywords slsqp optimization optimization algorithm nlp optimizer nonlinear programming numerical optimization
VCS
bugtrack_url
requirements sphinx sphinx_rtd_theme sphinx-copybutton sphinxcontrib-bibtex myst-nb numpydoc setuptools ninja meson numpy numpy h5py matplotlib
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # PySLSQP

[![GitHub Actions Test Badge](https://github.com/anugrahjo/PySLSQP/actions/workflows/build_install_test.yml/badge.svg)](https://github.com/anugrahjo/PySLSQP/actions)
[![Coverage Status](https://coveralls.io/repos/github/anugrahjo/PySLSQP/badge.svg?branch=main)](https://coveralls.io/github/anugrahjo/PySLSQP?branch=main)
[![Documentation Status](https://readthedocs.org/projects/pyslsqp/badge/?version=latest)](https://pyslsqp.readthedocs.io/en/latest/?badge=main)
[![Pypi version](https://img.shields.io/pypi/v/pyslsqp)](https://pypi.org/project/pyslsqp/)
[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://github.com/anugrahjo/PySLSQP/blob/main/LICENSE.txt)
<!-- [![PyPI Monthly Downloads][https://img.shields.io/pypi/dm/pyslsqp]][https://pypi.org/project/pyslsqp/] -->
<!-- [![Forks](https://img.shields.io/github/forks/anugrahjo/PySLSQP.svg)](https://github.com/anugrahjo/PySLSQP/network) -->
<!-- [![Issues](https://img.shields.io/github/issues/anugrahjo/PySLSQP.svg)](https://github.com/anugrahjo/PySLSQP/issues) -->
<!-- [![Python](https://img.shields.io/pypi/pyversions/PySLSQP)](https://img.shields.io/pypi/pyversions/PySLSQP) -->
<!-- [![Pypi](https://img.shields.io/pypi/v/PySLSQP)](https://pypi.org/project/PySLSQP/) -->

The SLSQP algorithm is designed to solve nonlinear programming (NLP) problems.
PySLSQP is a Python package that wraps the original SLSQP algorithm 
implemented in Fortran by Dieter Kraft.
While the Fortran code is sourced from 
[`scipy.optimize.minimize`](https://docs.scipy.org/doc/scipy/reference/optimize.minimize-slsqp.html), 
PySLSQP extends its functionality
by offering new features for further analysis of optimization problems, 
thereby significantly improving the utility of the original algorithm.
The prebuilt packages for various system architectures are available on PyPI for download, 
thus avoiding the need for the user to compile the Fortran sources.


Some of the additional features provided by PySLSQP include:

- **Data Saving**: PySLSQP allows you to save optimization data during the optimization process. 
  This can be useful for analyzing the progress of the optimization, for post-processing purposes, 
  or for warm/hot restart of the optimization.

- **Warm/Hot Starting**: PySLSQP supports warm/hot starting, enabling users to initialize the optimization 
  algorithm with a previously saved solution. This can be particularly useful when you want to restart an 
  optimization from a previous solution or continue an optimization that was terminated
  for various reasons.

- **Live Visualization**: PySLSQP provides the capability to visualize the optimization progress in real-time,
  enabling users to monitor the convergence via the optimality and feasibility measures.
  This also helps the users understand how the objective function, constraints, and design variables 
  are changing during the optimization.

- **Scaling**: PySLSQP allows you to independently scale the objective function, constraints, and design variables, 
  separate from their original definitions.
  Scaling can help improve the convergence behavior of the optimization algorithm and make it more robust.

- **More Internal Optimization Variables**: PySLSQP provides access to additional internal optimization variables
  such as optimality, feasibility, Lagrange multipliers, etc. which can be useful for advanced analysis 
  of the optimization problem. 
  In `scipy.optimize.minimize`, the original callback function 
  returns only the optimization variables, and only for the major iterations.

These additional features make PySLSQP a powerful tool for solving constrained optimization problems in Python.
In addition, PySLSQP also supports the estimation of gradients using first-order finite differencing, 
as in the Scipy version. 

<!-- ## Dependencies
Before installing PySLSQP, make sure you have the dependencies installed.
Numpy is the minimum requirement for using PySLSQP. 
[numpy](https://numpy.org/install/) can be installed from PyPI with
```sh
pip install numpy
```
Additionally, if you need to save optimization data and visualize different variables during the optimization,
install `h5py` and `matplotlib` respectively.
All the dependencies can be installed at once with 
```sh
pip install numpy h5py matplotlib
``` -->

## Installation

To install the latest release of PySLSQP on PyPI, run on the terminal or command line
```sh
pip install pyslsqp
```

> **Warning**
> 
> Precompiled wheels for common Ubuntu, macOS, and Windows architectures are available on PyPI.
  However, if a wheel for your system's architecture is not available,
  the above installation will compile the source distribution directly on your machine.
  In such scenarios, if your Fortran compilers aren't compatible, you may encounter compilation errors.
  Additional troubleshooting may be required to resolve these errors depending on their specifics.


To install the latest commit from the main branch, run
```sh
pip install git+https://github.com/anugrahjo/PySLSQP.git@main
```
Note that this installation method will compile the Fortran sources locally on your machine.
Therefore, we only recommend this method if you are a developer looking to modify the package for your own use case.

To upgrade PySLSQP from an older version to the latest released version on PyPI, run
```sh
pip install --upgrade pyslsqp
```

To uninstall PySLSQP, run
```sh
pip uninstall pyslsqp
```

## Testing
To test if the package works correctly and as intended, install `pytest` using
```sh
pip install pytest
```
and run the following line on the terminal from the project's root directory:
```sh
pytest -m "not visualize"
```

## Usage
Most features of the PySLSQP package can be accessed through the `optimize` function.
However, there are some additional utility functions that are available for post-processing.
Here is a small optimization example that minimizes `x^2 + y^2`.

```python
import numpy as np
from pyslsqp import optimize

# `v` represents the vector of optimization variables
def objective(v):
    # the objective function
    return v[0]**2 + v[1]**2

x0 = np.array([1., 1.])
# optimize() returns a dictionary that contains the results from optimization
results = optimize(x0, obj=objective)
print(results)
```
Note that we did not provide the gradient for the objective function above.
In the absence of user-provided gradients, `optimize` estimates the gradients
using first-order finite differencing.
However, it is always more efficient for the user to provide the exact gradients.
Note also that we did not have any constraints or variable bounds in this problem.
Examples with user-defined gradients, constraints, and bounds
can be found in the [Basic User Guide](https://pyslsqp.readthedocs.io/en/latest/src/basic.html).

## Documentation
For API reference and more details on installation and usage, visit the [documentation](https://pyslsqp.readthedocs.io/).

## Citation
If you use PySLSQP in your work, please use the following reference for citation:

```
@article{joshy2024pyslsqp,
  title = {PySLSQP: A transparent Python package for the SLSQP optimization algorithm modernized with utilities for visualization and post-processing},
  author = {Anugrah Jo Joshy and John T. Hwang},
  journal = {Journal of Open Source Software},
  publisher = {The Open Journal},
  year = {2024},
  volume = {9},
  number = {103},
  pages = {7246},
  url = {https://doi.org/10.21105/joss.07246},
  doi = {10.21105/joss.07246},
}
```

## Bugs, feature requests, questions
Please use the [GitHub issue tracker](https://github.com/anugrahjo/PySLSQP/issues) for reporting bugs, requesting new features, or any other questions.

## Contributing
We always welcome contributions to PySLSQP. 
Please refer the [`CONTRIBUTING.md`](https://github.com/anugrahjo/PySLSQP/blob/main/CONTRIBUTING.md) 
file for guidelines on how to contribute.

## License
This project is licensed under the terms of the [BSD 3-Clause "New" or "Revised" License](https://github.com/anugrahjo/PySLSQP/blob/main/LICENSE.txt).

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pyslsqp",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "Anugrah Jo Joshy <ajoshy.ucsd@gmail.com>",
    "keywords": "slsqp, optimization, optimization algorithm, nlp, optimizer, nonlinear programming, numerical optimization",
    "author": null,
    "author_email": "Anugrah Jo Joshy <ajoshy.ucsd@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/1d/02/2f516fa8c89619d30d5573d955c2c7cee7bce54fd9f9098a5c682dbcfaf3/pyslsqp-0.1.3.tar.gz",
    "platform": null,
    "description": "# PySLSQP\n\n[![GitHub Actions Test Badge](https://github.com/anugrahjo/PySLSQP/actions/workflows/build_install_test.yml/badge.svg)](https://github.com/anugrahjo/PySLSQP/actions)\n[![Coverage Status](https://coveralls.io/repos/github/anugrahjo/PySLSQP/badge.svg?branch=main)](https://coveralls.io/github/anugrahjo/PySLSQP?branch=main)\n[![Documentation Status](https://readthedocs.org/projects/pyslsqp/badge/?version=latest)](https://pyslsqp.readthedocs.io/en/latest/?badge=main)\n[![Pypi version](https://img.shields.io/pypi/v/pyslsqp)](https://pypi.org/project/pyslsqp/)\n[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://github.com/anugrahjo/PySLSQP/blob/main/LICENSE.txt)\n<!-- [![PyPI Monthly Downloads][https://img.shields.io/pypi/dm/pyslsqp]][https://pypi.org/project/pyslsqp/] -->\n<!-- [![Forks](https://img.shields.io/github/forks/anugrahjo/PySLSQP.svg)](https://github.com/anugrahjo/PySLSQP/network) -->\n<!-- [![Issues](https://img.shields.io/github/issues/anugrahjo/PySLSQP.svg)](https://github.com/anugrahjo/PySLSQP/issues) -->\n<!-- [![Python](https://img.shields.io/pypi/pyversions/PySLSQP)](https://img.shields.io/pypi/pyversions/PySLSQP) -->\n<!-- [![Pypi](https://img.shields.io/pypi/v/PySLSQP)](https://pypi.org/project/PySLSQP/) -->\n\nThe SLSQP algorithm is designed to solve nonlinear programming (NLP) problems.\nPySLSQP is a Python package that wraps the original SLSQP algorithm \nimplemented in Fortran by Dieter Kraft.\nWhile the Fortran code is sourced from \n[`scipy.optimize.minimize`](https://docs.scipy.org/doc/scipy/reference/optimize.minimize-slsqp.html), \nPySLSQP extends its functionality\nby offering new features for further analysis of optimization problems, \nthereby significantly improving the utility of the original algorithm.\nThe prebuilt packages for various system architectures are available on PyPI for download, \nthus avoiding the need for the user to compile the Fortran sources.\n\n\nSome of the additional features provided by PySLSQP include:\n\n- **Data Saving**: PySLSQP allows you to save optimization data during the optimization process. \n  This can be useful for analyzing the progress of the optimization, for post-processing purposes, \n  or for warm/hot restart of the optimization.\n\n- **Warm/Hot Starting**: PySLSQP supports warm/hot starting, enabling users to initialize the optimization \n  algorithm with a previously saved solution. This can be particularly useful when you want to restart an \n  optimization from a previous solution or continue an optimization that was terminated\n  for various reasons.\n\n- **Live Visualization**: PySLSQP provides the capability to visualize the optimization progress in real-time,\n  enabling users to monitor the convergence via the optimality and feasibility measures.\n  This also helps the users understand how the objective function, constraints, and design variables \n  are changing during the optimization.\n\n- **Scaling**: PySLSQP allows you to independently scale the objective function, constraints, and design variables, \n  separate from their original definitions.\n  Scaling can help improve the convergence behavior of the optimization algorithm and make it more robust.\n\n- **More Internal Optimization Variables**: PySLSQP provides access to additional internal optimization variables\n  such as optimality, feasibility, Lagrange multipliers, etc. which can be useful for advanced analysis \n  of the optimization problem. \n  In `scipy.optimize.minimize`, the original callback function \n  returns only the optimization variables, and only for the major iterations.\n\nThese additional features make PySLSQP a powerful tool for solving constrained optimization problems in Python.\nIn addition, PySLSQP also supports the estimation of gradients using first-order finite differencing, \nas in the Scipy version. \n\n<!-- ## Dependencies\nBefore installing PySLSQP, make sure you have the dependencies installed.\nNumpy is the minimum requirement for using PySLSQP. \n[numpy](https://numpy.org/install/) can be installed from PyPI with\n```sh\npip install numpy\n```\nAdditionally, if you need to save optimization data and visualize different variables during the optimization,\ninstall `h5py` and `matplotlib` respectively.\nAll the dependencies can be installed at once with \n```sh\npip install numpy h5py matplotlib\n``` -->\n\n## Installation\n\nTo install the latest release of PySLSQP on PyPI, run on the terminal or command line\n```sh\npip install pyslsqp\n```\n\n> **Warning**\n> \n> Precompiled wheels for common Ubuntu, macOS, and Windows architectures are available on PyPI.\n  However, if a wheel for your system's architecture is not available,\n  the above installation will compile the source distribution directly on your machine.\n  In such scenarios, if your Fortran compilers aren't compatible, you may encounter compilation errors.\n  Additional troubleshooting may be required to resolve these errors depending on their specifics.\n\n\nTo install the latest commit from the main branch, run\n```sh\npip install git+https://github.com/anugrahjo/PySLSQP.git@main\n```\nNote that this installation method will compile the Fortran sources locally on your machine.\nTherefore, we only recommend this method if you are a developer looking to modify the package for your own use case.\n\nTo upgrade PySLSQP from an older version to the latest released version on PyPI, run\n```sh\npip install --upgrade pyslsqp\n```\n\nTo uninstall PySLSQP, run\n```sh\npip uninstall pyslsqp\n```\n\n## Testing\nTo test if the package works correctly and as intended, install `pytest` using\n```sh\npip install pytest\n```\nand run the following line on the terminal from the project's root directory:\n```sh\npytest -m \"not visualize\"\n```\n\n## Usage\nMost features of the PySLSQP package can be accessed through the `optimize` function.\nHowever, there are some additional utility functions that are available for post-processing.\nHere is a small optimization example that minimizes `x^2 + y^2`.\n\n```python\nimport numpy as np\nfrom pyslsqp import optimize\n\n# `v` represents the vector of optimization variables\ndef objective(v):\n    # the objective function\n    return v[0]**2 + v[1]**2\n\nx0 = np.array([1., 1.])\n# optimize() returns a dictionary that contains the results from optimization\nresults = optimize(x0, obj=objective)\nprint(results)\n```\nNote that we did not provide the gradient for the objective function above.\nIn the absence of user-provided gradients, `optimize` estimates the gradients\nusing first-order finite differencing.\nHowever, it is always more efficient for the user to provide the exact gradients.\nNote also that we did not have any constraints or variable bounds in this problem.\nExamples with user-defined gradients, constraints, and bounds\ncan be found in the [Basic User Guide](https://pyslsqp.readthedocs.io/en/latest/src/basic.html).\n\n## Documentation\nFor API reference and more details on installation and usage, visit the [documentation](https://pyslsqp.readthedocs.io/).\n\n## Citation\nIf you use PySLSQP in your work, please use the following reference for citation:\n\n```\n@article{joshy2024pyslsqp,\n  title = {PySLSQP: A transparent Python package for the SLSQP optimization algorithm modernized with utilities for visualization and post-processing},\n  author = {Anugrah Jo Joshy and John T. Hwang},\n  journal = {Journal of Open Source Software},\n  publisher = {The Open Journal},\n  year = {2024},\n  volume = {9},\n  number = {103},\n  pages = {7246},\n  url = {https://doi.org/10.21105/joss.07246},\n  doi = {10.21105/joss.07246},\n}\n```\n\n## Bugs, feature requests, questions\nPlease use the [GitHub issue tracker](https://github.com/anugrahjo/PySLSQP/issues) for reporting bugs, requesting new features, or any other questions.\n\n## Contributing\nWe always welcome contributions to PySLSQP. \nPlease refer the [`CONTRIBUTING.md`](https://github.com/anugrahjo/PySLSQP/blob/main/CONTRIBUTING.md) \nfile for guidelines on how to contribute.\n\n## License\nThis project is licensed under the terms of the [BSD 3-Clause \"New\" or \"Revised\" License](https://github.com/anugrahjo/PySLSQP/blob/main/LICENSE.txt).\n",
    "bugtrack_url": null,
    "license": "Copyright (c) 2024, Anugrah Jo Joshy. All rights reserved.  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.  3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.",
    "summary": "A transparent Python interface to the SLSQP optimization algorithm, with advanced features and visualization capabilities.",
    "version": "0.1.3",
    "project_urls": {
        "Bug Tracker": "https://github.com/anugrahjo/pyslsqp/issues",
        "Changelog": "https://pyslsqp.readthedocs.io/en/latest/src/changelog.html",
        "Documentation": "https://pyslsqp.readthedocs.io/en/latest/",
        "Download": "https://pypi.org/project/pyslsqp/#files",
        "Homepage/Repository": "https://github.com/anugrahjo/pyslsqp"
    },
    "split_keywords": [
        "slsqp",
        " optimization",
        " optimization algorithm",
        " nlp",
        " optimizer",
        " nonlinear programming",
        " numerical optimization"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c399238bb8fbe5fd5b8e5cae7192e0c8df9070b5d3f3312f6cacdf18d5049865",
                "md5": "9f55e53c49fc491d3d12ec14327d6739",
                "sha256": "6734e32ac861e3b19a1b0fbe40991bb01e003707571db6de034fe33aa770706a"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp310-cp310-macosx_13_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9f55e53c49fc491d3d12ec14327d6739",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1498725,
            "upload_time": "2024-12-06T00:03:48",
            "upload_time_iso_8601": "2024-12-06T00:03:48.076607Z",
            "url": "https://files.pythonhosted.org/packages/c3/99/238bb8fbe5fd5b8e5cae7192e0c8df9070b5d3f3312f6cacdf18d5049865/pyslsqp-0.1.3-cp310-cp310-macosx_13_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "171b9e4dd678998446cbaf94aa261e3548a2440d550b7f6079c3c0281b9c61a2",
                "md5": "186861b0ece6e0539d3ab9a60110b622",
                "sha256": "1dedb7f5362fa380f362a003d1826f90d1c68f1bd6920ae70e440af4f06abf55"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp310-cp310-macosx_14_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "186861b0ece6e0539d3ab9a60110b622",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 159845,
            "upload_time": "2024-12-06T00:03:50",
            "upload_time_iso_8601": "2024-12-06T00:03:50.496641Z",
            "url": "https://files.pythonhosted.org/packages/17/1b/9e4dd678998446cbaf94aa261e3548a2440d550b7f6079c3c0281b9c61a2/pyslsqp-0.1.3-cp310-cp310-macosx_14_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "daeae9545bb4a9568bdfe12c9bdd21f923e06aa89f46d9870ad1cac740e64b41",
                "md5": "b080c166264ae3121f272d0b4e152f2c",
                "sha256": "3da1a8b7395da4eb156b909360e780e6b05c2a05d0d7ccf40740ad60de4346fa"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b080c166264ae3121f272d0b4e152f2c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 307263,
            "upload_time": "2024-12-06T00:03:52",
            "upload_time_iso_8601": "2024-12-06T00:03:52.458664Z",
            "url": "https://files.pythonhosted.org/packages/da/ea/e9545bb4a9568bdfe12c9bdd21f923e06aa89f46d9870ad1cac740e64b41/pyslsqp-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "71960927854630de208dbba5cf65b4c6e28612905314a04265b53c1539df391a",
                "md5": "714e2e064c02cac093bc18e74c903d8e",
                "sha256": "9b60c4e8b8b0867907b5f0e1fdb8dfe1c5bed654464e2264d4a618e134537a4e"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "714e2e064c02cac093bc18e74c903d8e",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 152793,
            "upload_time": "2024-12-06T00:03:54",
            "upload_time_iso_8601": "2024-12-06T00:03:54.731408Z",
            "url": "https://files.pythonhosted.org/packages/71/96/0927854630de208dbba5cf65b4c6e28612905314a04265b53c1539df391a/pyslsqp-0.1.3-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "697e4c9c1c810e729ac6a088928c9c404fbf8ffb835ba040abf65591907a205a",
                "md5": "7789d692044293d2046a92c61eb7c5b9",
                "sha256": "a1369d40fe7293037ed89fccdc49e632b2b14a56481a3ad159f07cab440d92f5"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp311-cp311-macosx_13_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7789d692044293d2046a92c61eb7c5b9",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1541418,
            "upload_time": "2024-12-06T00:03:56",
            "upload_time_iso_8601": "2024-12-06T00:03:56.699925Z",
            "url": "https://files.pythonhosted.org/packages/69/7e/4c9c1c810e729ac6a088928c9c404fbf8ffb835ba040abf65591907a205a/pyslsqp-0.1.3-cp311-cp311-macosx_13_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3e538c20ea4ceb385f0d893771f594fcbfe04d016f35923066a125b822850a1d",
                "md5": "2cdf410292cfa4a1d8588c56ff7770cd",
                "sha256": "1ecd28e36f8103989728b920da737828697be422407fee6e991e711c77f5a921"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp311-cp311-macosx_14_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "2cdf410292cfa4a1d8588c56ff7770cd",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 200405,
            "upload_time": "2024-12-06T00:03:58",
            "upload_time_iso_8601": "2024-12-06T00:03:58.948599Z",
            "url": "https://files.pythonhosted.org/packages/3e/53/8c20ea4ceb385f0d893771f594fcbfe04d016f35923066a125b822850a1d/pyslsqp-0.1.3-cp311-cp311-macosx_14_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aeb8a57bfb23ef9d05c8b2972e47ca71da6628ca6d47c52446db9dced6a7ad75",
                "md5": "dee6d16e0d8376afeadc80fb7430b791",
                "sha256": "007077311120c12715cb72c4dbec5762964974c3f656cf019b7f2a7aafa4cb62"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "dee6d16e0d8376afeadc80fb7430b791",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 398440,
            "upload_time": "2024-12-06T00:04:00",
            "upload_time_iso_8601": "2024-12-06T00:04:00.278602Z",
            "url": "https://files.pythonhosted.org/packages/ae/b8/a57bfb23ef9d05c8b2972e47ca71da6628ca6d47c52446db9dced6a7ad75/pyslsqp-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "26c1f29b16f02378645ce54af388ba543575233b64d253e8bf60ec96de5c55dd",
                "md5": "ba2299345eab4ef69a64de90f0ce54f7",
                "sha256": "d4e210b72644e09b4925d33463f8e6b787dfee14b83f22a20d5750661be6789f"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "ba2299345eab4ef69a64de90f0ce54f7",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 209419,
            "upload_time": "2024-12-06T00:04:02",
            "upload_time_iso_8601": "2024-12-06T00:04:02.004424Z",
            "url": "https://files.pythonhosted.org/packages/26/c1/f29b16f02378645ce54af388ba543575233b64d253e8bf60ec96de5c55dd/pyslsqp-0.1.3-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8c2e4eb7af130d708cfb15a80c3936827dd43e76aa9721f5f6568b020d10f05e",
                "md5": "57ceb8adca193eda2de9d193e8c46eae",
                "sha256": "588166abdd6e2e4dcb1acd638098dbfebd507876e9a70790e3b3bc5dc01d8f7f"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp312-cp312-macosx_13_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "57ceb8adca193eda2de9d193e8c46eae",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 1585207,
            "upload_time": "2024-12-06T00:04:04",
            "upload_time_iso_8601": "2024-12-06T00:04:04.158518Z",
            "url": "https://files.pythonhosted.org/packages/8c/2e/4eb7af130d708cfb15a80c3936827dd43e76aa9721f5f6568b020d10f05e/pyslsqp-0.1.3-cp312-cp312-macosx_13_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9b62bed48dfbd33944de6ea723391dd0fc38b64c2745dbc0630ffd88268ce51c",
                "md5": "1a8ad4f7db9de07dec36b8caa578f813",
                "sha256": "b15cd015b42ff2bebdd7384c6cd97741f72cef84fd7efc586110001249433195"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp312-cp312-macosx_14_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "1a8ad4f7db9de07dec36b8caa578f813",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 241818,
            "upload_time": "2024-12-06T00:04:05",
            "upload_time_iso_8601": "2024-12-06T00:04:05.926015Z",
            "url": "https://files.pythonhosted.org/packages/9b/62/bed48dfbd33944de6ea723391dd0fc38b64c2745dbc0630ffd88268ce51c/pyslsqp-0.1.3-cp312-cp312-macosx_14_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8cfe012fa0cc5ddbde2a17a619d1af00434cb454fb05eda82f589cf7329431f2",
                "md5": "2bd6b53bd399dcd2fafa47bd64f3e3d3",
                "sha256": "bbc10c6dfe556cbd62831b61cf3fdc639ed45d67e845d9a271bb21ec27e06fe8"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2bd6b53bd399dcd2fafa47bd64f3e3d3",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 493068,
            "upload_time": "2024-12-06T00:04:07",
            "upload_time_iso_8601": "2024-12-06T00:04:07.969697Z",
            "url": "https://files.pythonhosted.org/packages/8c/fe/012fa0cc5ddbde2a17a619d1af00434cb454fb05eda82f589cf7329431f2/pyslsqp-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aeb4bf741e58748a49106d69e87f534c6375d70c3ba2d94975346ab68658cedc",
                "md5": "b309eb5a80467ed4a9930a1b407cccc1",
                "sha256": "6e783878fde041069a52679c25323e12d51320d65489239e46ec5b74e7f506ce"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "b309eb5a80467ed4a9930a1b407cccc1",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 266386,
            "upload_time": "2024-12-06T00:04:09",
            "upload_time_iso_8601": "2024-12-06T00:04:09.463531Z",
            "url": "https://files.pythonhosted.org/packages/ae/b4/bf741e58748a49106d69e87f534c6375d70c3ba2d94975346ab68658cedc/pyslsqp-0.1.3-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "26428ed59984abfd39d44f7a77a5c9e7dbcafe1429ff009809fd86a325354ca2",
                "md5": "821ad47184373fdf0a8aea57be8301a0",
                "sha256": "e220dd196379347cc0cbfdb19dbc60e01ebec7fa25266b5798217635f6fb95ef"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp38-cp38-macosx_13_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "821ad47184373fdf0a8aea57be8301a0",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1414384,
            "upload_time": "2024-12-06T00:04:10",
            "upload_time_iso_8601": "2024-12-06T00:04:10.934496Z",
            "url": "https://files.pythonhosted.org/packages/26/42/8ed59984abfd39d44f7a77a5c9e7dbcafe1429ff009809fd86a325354ca2/pyslsqp-0.1.3-cp38-cp38-macosx_13_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5dff63b6b3bd7ca4a0613268fdd5b1e0a5787b5735e2b10d6e5b910c3aff3f1a",
                "md5": "ac73dd18a173f92c044679c3fb9fd208",
                "sha256": "1ff665c8127f58a71810dbba86cc0049bba7db067dffaf7b5198fa49f1d2e131"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp38-cp38-macosx_14_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "ac73dd18a173f92c044679c3fb9fd208",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 79905,
            "upload_time": "2024-12-06T00:04:12",
            "upload_time_iso_8601": "2024-12-06T00:04:12.424835Z",
            "url": "https://files.pythonhosted.org/packages/5d/ff/63b6b3bd7ca4a0613268fdd5b1e0a5787b5735e2b10d6e5b910c3aff3f1a/pyslsqp-0.1.3-cp38-cp38-macosx_14_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "13bf02ea9c3247faee91d1da0293fb7c5e73514636af0d551e8412c001a4214d",
                "md5": "8ccb2807ab754df84addf12d7cde600a",
                "sha256": "f217d49b74ef41174376b53cc8cc4c1f6d74e301ffa7c6896d039fc6b906f5a1"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8ccb2807ab754df84addf12d7cde600a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 128801,
            "upload_time": "2024-12-06T00:04:14",
            "upload_time_iso_8601": "2024-12-06T00:04:14.526855Z",
            "url": "https://files.pythonhosted.org/packages/13/bf/02ea9c3247faee91d1da0293fb7c5e73514636af0d551e8412c001a4214d/pyslsqp-0.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8b9b765e0a60b565758703b1304a2efc055699ac757da7e95292fcb0ead468b2",
                "md5": "e560bd632eab33c751767c38c96de4b5",
                "sha256": "95978e6a17791b0b1d0b0d79de80276d53ebc249c9f821679d34a670476a8ef7"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp39-cp39-macosx_13_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e560bd632eab33c751767c38c96de4b5",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1456518,
            "upload_time": "2024-12-06T00:04:15",
            "upload_time_iso_8601": "2024-12-06T00:04:15.730100Z",
            "url": "https://files.pythonhosted.org/packages/8b/9b/765e0a60b565758703b1304a2efc055699ac757da7e95292fcb0ead468b2/pyslsqp-0.1.3-cp39-cp39-macosx_13_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2dc1ccd748e174d644e81791824ff073528db687495eb4be44bf0b67e7de0c5b",
                "md5": "7f7895b2f917a4645e004c4d3479cfdd",
                "sha256": "639ec46f63edefe20ed6b60726ce61153e1f1ee901d11a2576a874357c00dd76"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp39-cp39-macosx_14_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "7f7895b2f917a4645e004c4d3479cfdd",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 119844,
            "upload_time": "2024-12-06T00:04:17",
            "upload_time_iso_8601": "2024-12-06T00:04:17.096443Z",
            "url": "https://files.pythonhosted.org/packages/2d/c1/ccd748e174d644e81791824ff073528db687495eb4be44bf0b67e7de0c5b/pyslsqp-0.1.3-cp39-cp39-macosx_14_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "17eb2d2f4b06ebef46e1b8da7c0c8aa06fbafe78b83b77c7ad7bf6fc78a74edf",
                "md5": "0ae0694e9fddba46d2077ee0aafbe4a7",
                "sha256": "56d794c61754436c6a0f02e857e738272ad58644f456c65540447a426eee4934"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0ae0694e9fddba46d2077ee0aafbe4a7",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 217865,
            "upload_time": "2024-12-06T00:04:19",
            "upload_time_iso_8601": "2024-12-06T00:04:19.008683Z",
            "url": "https://files.pythonhosted.org/packages/17/eb/2d2f4b06ebef46e1b8da7c0c8aa06fbafe78b83b77c7ad7bf6fc78a74edf/pyslsqp-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0a2d80c4ce460fd0106410838b832c3760bbf381bbbef0d94348d85b432ca996",
                "md5": "70bdf19abd74a4e0d7c87c9a7af15f7e",
                "sha256": "ab22e690a32604ae54848456352bbea6600aace063d55912c26d8385fa849370"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "70bdf19abd74a4e0d7c87c9a7af15f7e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 96287,
            "upload_time": "2024-12-06T00:04:21",
            "upload_time_iso_8601": "2024-12-06T00:04:21.065085Z",
            "url": "https://files.pythonhosted.org/packages/0a/2d/80c4ce460fd0106410838b832c3760bbf381bbbef0d94348d85b432ca996/pyslsqp-0.1.3-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1d022f516fa8c89619d30d5573d955c2c7cee7bce54fd9f9098a5c682dbcfaf3",
                "md5": "ef785ad7dd5ef0d2b40da0382522ac6a",
                "sha256": "4067e2be2f79922b9c1a65add8dd4f41479c6f3dac3bd4a0300ba314eaac3145"
            },
            "downloads": -1,
            "filename": "pyslsqp-0.1.3.tar.gz",
            "has_sig": false,
            "md5_digest": "ef785ad7dd5ef0d2b40da0382522ac6a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 1513008,
            "upload_time": "2024-12-06T00:04:22",
            "upload_time_iso_8601": "2024-12-06T00:04:22.641630Z",
            "url": "https://files.pythonhosted.org/packages/1d/02/2f516fa8c89619d30d5573d955c2c7cee7bce54fd9f9098a5c682dbcfaf3/pyslsqp-0.1.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-06 00:04:22",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "anugrahjo",
    "github_project": "pyslsqp",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "sphinx",
            "specs": [
                [
                    "==",
                    "7.3.7"
                ]
            ]
        },
        {
            "name": "sphinx_rtd_theme",
            "specs": [
                [
                    "==",
                    "2.0.0"
                ]
            ]
        },
        {
            "name": "sphinx-copybutton",
            "specs": [
                [
                    "==",
                    "0.5.2"
                ]
            ]
        },
        {
            "name": "sphinxcontrib-bibtex",
            "specs": [
                [
                    "==",
                    "2.6.2"
                ]
            ]
        },
        {
            "name": "myst-nb",
            "specs": [
                [
                    "==",
                    "1.1.0"
                ]
            ]
        },
        {
            "name": "numpydoc",
            "specs": [
                [
                    "==",
                    "1.7.0"
                ]
            ]
        },
        {
            "name": "setuptools",
            "specs": []
        },
        {
            "name": "ninja",
            "specs": []
        },
        {
            "name": "meson",
            "specs": []
        },
        {
            "name": "numpy",
            "specs": []
        },
        {
            "name": "numpy",
            "specs": [
                [
                    "==",
                    "1.26.4"
                ]
            ]
        },
        {
            "name": "h5py",
            "specs": [
                [
                    "==",
                    "3.11.0"
                ]
            ]
        },
        {
            "name": "matplotlib",
            "specs": [
                [
                    "==",
                    "3.9.0"
                ]
            ]
        }
    ],
    "lcname": "pyslsqp"
}
        
Elapsed time: 0.40979s