trustregion


Nametrustregion JSON
Version 1.2.1 PyPI version JSON
download
home_pageNone
SummaryTrust-region subproblem solvers for nonlinear/nonconvex optimization
upload_time2024-05-31 02:16:57
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseGPL-3.0-or-later
keywords mathematics optimization
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ===========================================
trustregion: Trust-region subproblem solver
===========================================

.. image::  https://github.com/lindonroberts/trust-region/actions/workflows/python_testing.yml/badge.svg
   :target: https://github.com/lindonroberts/trust-region/actions
   :alt: Build Status

.. image::  https://img.shields.io/badge/License-GPL%20v3-blue.svg
   :target: https://www.gnu.org/licenses/gpl-3.0
   :alt: GNU GPL v3 License

.. image:: https://img.shields.io/pypi/v/trustregion.svg
   :target: https://pypi.python.org/pypi/trustregion
   :alt: Latest PyPI version

This package provides Python routines for solving the trust-region subproblem from nonlinear, nonconvex optimization. For more details on trust-region methods, see the book: A. R. Conn, N. I. M. Gould and Ph. L. Toint (2000), Trust-Region Methods, MPS-SIAM Series on Optimization.

The trust-region subproblem we solve is

.. code-block::

   min_{s in R^n}  g^T s + 0.5 s^T H s, subject to ||s||_2 <= delta (and sl <= s <= su)

**Quick install**

 .. code-block:: bash

    $ sudo apt-get install gfortran
    $ pip install --user numpy
    $ pip install --user trustregion

For more details, see below. Note that NumPy must be installed first, as it is used to compile the Fortran-linked modules.

**Interface** 

The Python package :code:`trustregion` provides one routine, :code:`solve`, with interface:

 .. code-block:: python

    import trustregion
    s               = trustregion.solve(g, H, delta, sl=None, su=None, verbose_output=False)
    s, gnew, crvmin = trustregion.solve(g, H, delta, sl=None, su=None, verbose_output=True)

where the inputs are

* :code:`g`, the gradient of the objective (as a 1D NumPy array)
* :code:`H`, the symmetric Hessian matrix of the objective (as a 2D square NumPy array) - this can be :code:`None` if the model is linear
* :code:`delta`, the trust-region radius (non-negative float)
* :code:`sl`, the lower bounds on the step (as a 1D NumPy array) - this can be :code:`None` if not present, but :code:`sl` and :code:`su` must either be both :code:`None` or both set
* :code:`su`, the upper bounds on the step (as a 1D NumPy array) - this can be :code:`None` if not present, but :code:`sl` and :code:`su` must either be both :code:`None` or both set
* :code:`verbose_output`, a flag indicating which outputs to return.

The outputs are:

* :code:`s`, an approximate minimizer of the subproblem (as a 1D NumPy array)
* :code:`gnew`, the gradient of the objective at the solution :code:`s` (i.e. :code:`gnew = g + H.dot(s)`)
* :code:`crvmin`, a float giving information about the curvature of the problem. If :code:`s` is on the trust-region boundary (given by :code:`delta`), then :code:`crvmin=0`. If :code:`s` is constrained in all directions by the box constraints, then :code:`crvmin=-1`. Otherwise, :code:`crvmin>0` is the smallest curvature seen in the Hessian.

**Example Usage** 

Examples for the use of :code:`trustregion.solve` can be found in the `examples <https://github.com/lindonroberts/trust-region/tree/master/examples>`_ directory on Github.

**Algorithms**

:code:`trustregion` implements three different methods for solving the subproblem, based on the problem class (in Fortran 90, wrapped to Python):

* :code:`trslin.f90` solves the linear objective case (where :code:`H=None` or :code:`H=0`), using Algorithm B.1 from: L. Roberts (2019), `Derivative-Free Algorithms for Nonlinear Optimisation Problems <https://ora.ox.ac.uk/objects/uuid:ec76e895-6eee-491a-88ed-b4ed10fa6003>`_, PhD Thesis, University of Oxford.
* :code:`trsapp.f90` solves the quadratic case without box constraints. It is a minor modification of the routine of the same name in :code:`NEWUOA` [M. J. D. Powell (2004), `The NEWUOA software for unconstrained optimization without derivatives <http://www.damtp.cam.ac.uk/user/na/NA_papers/NA2004_08.pdf>`_, technical report DAMTP 2004/NA05, University of Cambridge].
* :code:`trsbox.f90` solves the quadratic case with box constraints. It is a minor modification of the routine of the same name in :code:`BOBYQA` [M. J. D. Powell (2009), `The BOBYQA algorithm for bound constrained optimization without derivatives <http://www.damtp.cam.ac.uk/user/na/NA_papers/NA2009_06.pdf>`_, technical report DAMTP 2009/NA06, University of Cambridge].

In the linear case, an active-set method is used to solve the resulting convex problem. In the quadratic cases, a modification of the Steihaug-Toint/conjugate gradient method is used. For more details, see the relevant references above.

Requirements
------------
:code:`trustregion` requires the following software to be installed:

* Fortran compiler (e.g. gfortran)
* Python 3.8 or higher (http://www.python.org/)

Additionally, the following python packages should be installed (these will be installed automatically if using *pip*, see `Installation using pip`_):

* NumPy (http://www.numpy.org/)

Installation using pip
----------------------
For easy installation, use `pip <http://www.pip-installer.org/>`_ as root:

 .. code-block:: bash

    $ [sudo] pip install numpy
    $ [sudo] pip install trustregion

Note that NumPy should be installed before :code:`trustregion`, as it is used to compile the Fortran modules.

If you do not have root privileges or you want to install :code:`trustregion` for your private use, you can use:

 .. code-block:: bash

    $ pip install --user numpy
    $ pip install --user trustregion

which will install :code:`trustregion` in your home directory.

Note that if an older install of :code:`trustregion` is present on your system you can use:

 .. code-block:: bash

    $ [sudo] pip install --upgrade trustregion

to upgrade :code:`trustregion` to the latest version.

Manual installation
-------------------
Alternatively, you can download the source code from `Github <https://github.com/lindonroberts/trust-region>`_ and unpack as follows:

 .. code-block:: bash

    $ git clone https://github.com/lindonroberts/trust-region
    $ cd trust-region

To upgrade :code:`trustregion` to the latest version, navigate to the top-level directory (i.e. the one containing :code:`setup.py`) and rerun the installation using :code:`pip`, as above:

 .. code-block:: bash

    $ git pull
    $ [sudo] pip install .  # with admin privileges

Testing
-------
If you installed :code:`trustregion` manually, you can test your installation by running:

 .. code-block:: bash

    $ pip install pytest
    $ cd trustregion/tests
    $ python -m pytest

Alternatively, the documentation provides some simple examples of how to run :code:`trustregion`.

Uninstallation
--------------
If :code:`trustregion` was installed using *pip* you can uninstall as follows:

 .. code-block:: bash

    $ [sudo] pip uninstall trustregion

If :code:`trustregion` was installed manually you have to remove the installed files by hand (located in your python site-packages directory).

Bugs
----
Please report any bugs using GitHub's issue tracker.

License
-------
This algorithm is released under the GNU GPL license.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "trustregion",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "Lindon Roberts <lindon.roberts@sydney.edu.au>",
    "keywords": "mathematics, optimization",
    "author": null,
    "author_email": "Lindon Roberts <lindon.roberts@sydney.edu.au>",
    "download_url": "https://files.pythonhosted.org/packages/1c/e6/d6156baebf625e0b98ca49ae4cca0375357a343e983a2542be2bfc226fda/trustregion-1.2.1.tar.gz",
    "platform": null,
    "description": "===========================================\ntrustregion: Trust-region subproblem solver\n===========================================\n\n.. image::  https://github.com/lindonroberts/trust-region/actions/workflows/python_testing.yml/badge.svg\n   :target: https://github.com/lindonroberts/trust-region/actions\n   :alt: Build Status\n\n.. image::  https://img.shields.io/badge/License-GPL%20v3-blue.svg\n   :target: https://www.gnu.org/licenses/gpl-3.0\n   :alt: GNU GPL v3 License\n\n.. image:: https://img.shields.io/pypi/v/trustregion.svg\n   :target: https://pypi.python.org/pypi/trustregion\n   :alt: Latest PyPI version\n\nThis package provides Python routines for solving the trust-region subproblem from nonlinear, nonconvex optimization. For more details on trust-region methods, see the book: A. R. Conn, N. I. M. Gould and Ph. L. Toint (2000), Trust-Region Methods, MPS-SIAM Series on Optimization.\n\nThe trust-region subproblem we solve is\n\n.. code-block::\n\n   min_{s in R^n}  g^T s + 0.5 s^T H s, subject to ||s||_2 <= delta (and sl <= s <= su)\n\n**Quick install**\n\n .. code-block:: bash\n\n    $ sudo apt-get install gfortran\n    $ pip install --user numpy\n    $ pip install --user trustregion\n\nFor more details, see below. Note that NumPy must be installed first, as it is used to compile the Fortran-linked modules.\n\n**Interface** \n\nThe Python package :code:`trustregion` provides one routine, :code:`solve`, with interface:\n\n .. code-block:: python\n\n    import trustregion\n    s               = trustregion.solve(g, H, delta, sl=None, su=None, verbose_output=False)\n    s, gnew, crvmin = trustregion.solve(g, H, delta, sl=None, su=None, verbose_output=True)\n\nwhere the inputs are\n\n* :code:`g`, the gradient of the objective (as a 1D NumPy array)\n* :code:`H`, the symmetric Hessian matrix of the objective (as a 2D square NumPy array) - this can be :code:`None` if the model is linear\n* :code:`delta`, the trust-region radius (non-negative float)\n* :code:`sl`, the lower bounds on the step (as a 1D NumPy array) - this can be :code:`None` if not present, but :code:`sl` and :code:`su` must either be both :code:`None` or both set\n* :code:`su`, the upper bounds on the step (as a 1D NumPy array) - this can be :code:`None` if not present, but :code:`sl` and :code:`su` must either be both :code:`None` or both set\n* :code:`verbose_output`, a flag indicating which outputs to return.\n\nThe outputs are:\n\n* :code:`s`, an approximate minimizer of the subproblem (as a 1D NumPy array)\n* :code:`gnew`, the gradient of the objective at the solution :code:`s` (i.e. :code:`gnew = g + H.dot(s)`)\n* :code:`crvmin`, a float giving information about the curvature of the problem. If :code:`s` is on the trust-region boundary (given by :code:`delta`), then :code:`crvmin=0`. If :code:`s` is constrained in all directions by the box constraints, then :code:`crvmin=-1`. Otherwise, :code:`crvmin>0` is the smallest curvature seen in the Hessian.\n\n**Example Usage** \n\nExamples for the use of :code:`trustregion.solve` can be found in the `examples <https://github.com/lindonroberts/trust-region/tree/master/examples>`_ directory on Github.\n\n**Algorithms**\n\n:code:`trustregion` implements three different methods for solving the subproblem, based on the problem class (in Fortran 90, wrapped to Python):\n\n* :code:`trslin.f90` solves the linear objective case (where :code:`H=None` or :code:`H=0`), using Algorithm B.1 from: L. Roberts (2019), `Derivative-Free Algorithms for Nonlinear Optimisation Problems <https://ora.ox.ac.uk/objects/uuid:ec76e895-6eee-491a-88ed-b4ed10fa6003>`_, PhD Thesis, University of Oxford.\n* :code:`trsapp.f90` solves the quadratic case without box constraints. It is a minor modification of the routine of the same name in :code:`NEWUOA` [M. J. D. Powell (2004), `The NEWUOA software for unconstrained optimization without derivatives <http://www.damtp.cam.ac.uk/user/na/NA_papers/NA2004_08.pdf>`_, technical report DAMTP 2004/NA05, University of Cambridge].\n* :code:`trsbox.f90` solves the quadratic case with box constraints. It is a minor modification of the routine of the same name in :code:`BOBYQA` [M. J. D. Powell (2009), `The BOBYQA algorithm for bound constrained optimization without derivatives <http://www.damtp.cam.ac.uk/user/na/NA_papers/NA2009_06.pdf>`_, technical report DAMTP 2009/NA06, University of Cambridge].\n\nIn the linear case, an active-set method is used to solve the resulting convex problem. In the quadratic cases, a modification of the Steihaug-Toint/conjugate gradient method is used. For more details, see the relevant references above.\n\nRequirements\n------------\n:code:`trustregion` requires the following software to be installed:\n\n* Fortran compiler (e.g. gfortran)\n* Python 3.8 or higher (http://www.python.org/)\n\nAdditionally, the following python packages should be installed (these will be installed automatically if using *pip*, see `Installation using pip`_):\n\n* NumPy (http://www.numpy.org/)\n\nInstallation using pip\n----------------------\nFor easy installation, use `pip <http://www.pip-installer.org/>`_ as root:\n\n .. code-block:: bash\n\n    $ [sudo] pip install numpy\n    $ [sudo] pip install trustregion\n\nNote that NumPy should be installed before :code:`trustregion`, as it is used to compile the Fortran modules.\n\nIf you do not have root privileges or you want to install :code:`trustregion` for your private use, you can use:\n\n .. code-block:: bash\n\n    $ pip install --user numpy\n    $ pip install --user trustregion\n\nwhich will install :code:`trustregion` in your home directory.\n\nNote that if an older install of :code:`trustregion` is present on your system you can use:\n\n .. code-block:: bash\n\n    $ [sudo] pip install --upgrade trustregion\n\nto upgrade :code:`trustregion` to the latest version.\n\nManual installation\n-------------------\nAlternatively, you can download the source code from `Github <https://github.com/lindonroberts/trust-region>`_ and unpack as follows:\n\n .. code-block:: bash\n\n    $ git clone https://github.com/lindonroberts/trust-region\n    $ cd trust-region\n\nTo upgrade :code:`trustregion` to the latest version, navigate to the top-level directory (i.e. the one containing :code:`setup.py`) and rerun the installation using :code:`pip`, as above:\n\n .. code-block:: bash\n\n    $ git pull\n    $ [sudo] pip install .  # with admin privileges\n\nTesting\n-------\nIf you installed :code:`trustregion` manually, you can test your installation by running:\n\n .. code-block:: bash\n\n    $ pip install pytest\n    $ cd trustregion/tests\n    $ python -m pytest\n\nAlternatively, the documentation provides some simple examples of how to run :code:`trustregion`.\n\nUninstallation\n--------------\nIf :code:`trustregion` was installed using *pip* you can uninstall as follows:\n\n .. code-block:: bash\n\n    $ [sudo] pip uninstall trustregion\n\nIf :code:`trustregion` was installed manually you have to remove the installed files by hand (located in your python site-packages directory).\n\nBugs\n----\nPlease report any bugs using GitHub's issue tracker.\n\nLicense\n-------\nThis algorithm is released under the GNU GPL license.\n",
    "bugtrack_url": null,
    "license": "GPL-3.0-or-later",
    "summary": "Trust-region subproblem solvers for nonlinear/nonconvex optimization",
    "version": "1.2.1",
    "project_urls": {
        "Bug tracker": "https://github.com/lindonroberts/trust-region/issues/",
        "Documentation": "https://github.com/lindonroberts/trust-region",
        "Download": "https://github.com/lindonroberts/trust-region/releases/",
        "Homepage": "https://github.com/lindonroberts/trust-region",
        "Source code": "https://github.com/lindonroberts/trust-region"
    },
    "split_keywords": [
        "mathematics",
        " optimization"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "719a543c660c68acd2ac97979ff074f34f18bb63c871e691461806d8d1e6280c",
                "md5": "54c4ffd333dc24fd0fb2cd92f9eedbfd",
                "sha256": "96b161bc63dd26985d5d93c866895def859946d9a734a9b762db4931a9d59054"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "54c4ffd333dc24fd0fb2cd92f9eedbfd",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1042958,
            "upload_time": "2024-05-31T02:16:08",
            "upload_time_iso_8601": "2024-05-31T02:16:08.294461Z",
            "url": "https://files.pythonhosted.org/packages/71/9a/543c660c68acd2ac97979ff074f34f18bb63c871e691461806d8d1e6280c/trustregion-1.2.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2f6d17530d35018bda5f342ec7d72bbf36e5e22928863359781bd5af493e8e20",
                "md5": "35a7ec9e3e8d08aad432cfc82b80ba56",
                "sha256": "e9454b9f35e8a4b0ba419a5dd8b72287760b5f9b59c4d2332711e5aeb93af2dc"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "35a7ec9e3e8d08aad432cfc82b80ba56",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1046890,
            "upload_time": "2024-05-31T02:16:10",
            "upload_time_iso_8601": "2024-05-31T02:16:10.940775Z",
            "url": "https://files.pythonhosted.org/packages/2f/6d/17530d35018bda5f342ec7d72bbf36e5e22928863359781bd5af493e8e20/trustregion-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b1aaab75c687eab4bf1f6b154362cb3328a8e37abe52292924e807d692218fab",
                "md5": "f4bc9598d4132f9e54286fe928afe53c",
                "sha256": "8fd6e57f1055c4ad9e92c5eb7aeb905a5a0a4d5b2224e5d86dfe8e88b1263213"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp310-cp310-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "f4bc9598d4132f9e54286fe928afe53c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 55546,
            "upload_time": "2024-05-31T02:16:12",
            "upload_time_iso_8601": "2024-05-31T02:16:12.879973Z",
            "url": "https://files.pythonhosted.org/packages/b1/aa/ab75c687eab4bf1f6b154362cb3328a8e37abe52292924e807d692218fab/trustregion-1.2.1-cp310-cp310-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b2aa714b6cc89116a35de8752eb6cf33f249a3cc077520e62b152bea340d7572",
                "md5": "7b5dca36466482e80a2f9f2b5f32e3ab",
                "sha256": "4758ca4a0a15b33747a03251895d14b73043ccd29208f7cd36a13430a3e9dbc3"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7b5dca36466482e80a2f9f2b5f32e3ab",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 53164,
            "upload_time": "2024-05-31T02:16:14",
            "upload_time_iso_8601": "2024-05-31T02:16:14.652581Z",
            "url": "https://files.pythonhosted.org/packages/b2/aa/714b6cc89116a35de8752eb6cf33f249a3cc077520e62b152bea340d7572/trustregion-1.2.1-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "97b5dc83d47a02b394bbabc30ee36bbc8af5758eb19196609a84462410e13f95",
                "md5": "292b22723c1e45e17721738d78d29257",
                "sha256": "293dd77c360197a55071c1b180f616fd77366dd24bdc4d3f8a04232d41429a6a"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "292b22723c1e45e17721738d78d29257",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1042960,
            "upload_time": "2024-05-31T02:16:16",
            "upload_time_iso_8601": "2024-05-31T02:16:16.116211Z",
            "url": "https://files.pythonhosted.org/packages/97/b5/dc83d47a02b394bbabc30ee36bbc8af5758eb19196609a84462410e13f95/trustregion-1.2.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "749d25f9135ef5768d1b300dc7b3a56e6e24bc05eac88b8c29e8f05ba32e49cb",
                "md5": "0280fc22a65f5a323cbbd7f2e3a34038",
                "sha256": "6a3da78ca87e39b658486bfa5f325716f13972e66ae4c47fbbe9d451d2f4aca0"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0280fc22a65f5a323cbbd7f2e3a34038",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1046906,
            "upload_time": "2024-05-31T02:16:17",
            "upload_time_iso_8601": "2024-05-31T02:16:17.538919Z",
            "url": "https://files.pythonhosted.org/packages/74/9d/25f9135ef5768d1b300dc7b3a56e6e24bc05eac88b8c29e8f05ba32e49cb/trustregion-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e5b3b9e39d06e82f24f0625cf69c20384198264b0abfc3ab7b73f7de87d5135c",
                "md5": "433bbb28395496d38302c7f6d6259e97",
                "sha256": "85109a2c46bb0b60c48ef80542a666621abe1dda9bbe14bc3b0db4412a8bee70"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp311-cp311-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "433bbb28395496d38302c7f6d6259e97",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 55547,
            "upload_time": "2024-05-31T02:16:18",
            "upload_time_iso_8601": "2024-05-31T02:16:18.995606Z",
            "url": "https://files.pythonhosted.org/packages/e5/b3/b9e39d06e82f24f0625cf69c20384198264b0abfc3ab7b73f7de87d5135c/trustregion-1.2.1-cp311-cp311-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "172786e8cb8661716ad7648ea95c63f224e46de94fd5cc0a9e10c38e03eca273",
                "md5": "c104f431e01f5961fc54d8605c44b0a0",
                "sha256": "7a7902b10aeafbb614cfa66ea44b09ef4edcab372fd028fe1c02153aa401b722"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c104f431e01f5961fc54d8605c44b0a0",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 53163,
            "upload_time": "2024-05-31T02:16:20",
            "upload_time_iso_8601": "2024-05-31T02:16:20.803469Z",
            "url": "https://files.pythonhosted.org/packages/17/27/86e8cb8661716ad7648ea95c63f224e46de94fd5cc0a9e10c38e03eca273/trustregion-1.2.1-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ec716756aa5864d38befa7854f3c4ebff135e75063c522641a581dfd4dc81346",
                "md5": "5b949e15f330932ae9ea8440f652ce70",
                "sha256": "917d9af2db20d1918d170d3fce78477b7d6d5925cc5c9e87c2fc75a3e3382817"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "5b949e15f330932ae9ea8440f652ce70",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 1043089,
            "upload_time": "2024-05-31T02:16:22",
            "upload_time_iso_8601": "2024-05-31T02:16:22.775499Z",
            "url": "https://files.pythonhosted.org/packages/ec/71/6756aa5864d38befa7854f3c4ebff135e75063c522641a581dfd4dc81346/trustregion-1.2.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1c0edfa2fe9d1bf50636b1d0066b211af038d3fc0634961ed3996b75fda40e6c",
                "md5": "3ff2df424e2ddc07b84bb96b49250ff6",
                "sha256": "bc5a96f5b53ae2523aebbe746a5b02e11e673f6488e59473eeb577c94ce0b011"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3ff2df424e2ddc07b84bb96b49250ff6",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 1047045,
            "upload_time": "2024-05-31T02:16:25",
            "upload_time_iso_8601": "2024-05-31T02:16:25.002406Z",
            "url": "https://files.pythonhosted.org/packages/1c/0e/dfa2fe9d1bf50636b1d0066b211af038d3fc0634961ed3996b75fda40e6c/trustregion-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4ca9cfc25b3f9531425ceb5587dc29a81e156cc5fa11ac7fa917f9b552047c39",
                "md5": "b0706970a3ed49b481a118a3b2869fa8",
                "sha256": "21e0ba4f9472d851e30b3ecba511aec9ddd75c698d5157c719f1afb833b9d65b"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp312-cp312-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "b0706970a3ed49b481a118a3b2869fa8",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 55639,
            "upload_time": "2024-05-31T02:16:27",
            "upload_time_iso_8601": "2024-05-31T02:16:27.107179Z",
            "url": "https://files.pythonhosted.org/packages/4c/a9/cfc25b3f9531425ceb5587dc29a81e156cc5fa11ac7fa917f9b552047c39/trustregion-1.2.1-cp312-cp312-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6c5dd21b82b9527b0ef8df080c6009ecf8f4e99fb77e15c0955f797003f19c3d",
                "md5": "1430a40b54a3dffc9baa3da89cdd8c16",
                "sha256": "5528821e0e5152e53c3daa9f8888b87edc86b02ffcbb3e1f5ff6dfae1df40d10"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1430a40b54a3dffc9baa3da89cdd8c16",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 53366,
            "upload_time": "2024-05-31T02:16:28",
            "upload_time_iso_8601": "2024-05-31T02:16:28.783461Z",
            "url": "https://files.pythonhosted.org/packages/6c/5d/d21b82b9527b0ef8df080c6009ecf8f4e99fb77e15c0955f797003f19c3d/trustregion-1.2.1-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "73066f910327d9d3032a081ee0bb104db9f961c54b58950bbce94a137084dfab",
                "md5": "aa1cb4416cecf7beed952ddeb7d6cd8b",
                "sha256": "8c974892ace5db7685ca90fbb4acd8257564ecc88a6d000b85ad1126e3b31a6f"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "aa1cb4416cecf7beed952ddeb7d6cd8b",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1042972,
            "upload_time": "2024-05-31T02:16:30",
            "upload_time_iso_8601": "2024-05-31T02:16:30.187474Z",
            "url": "https://files.pythonhosted.org/packages/73/06/6f910327d9d3032a081ee0bb104db9f961c54b58950bbce94a137084dfab/trustregion-1.2.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "69f546d5f0776863339816b40e9539993b4cd47a11ba782d86eabf627ffd0403",
                "md5": "1d0116e07cbd4f5cad39c049f3afce1d",
                "sha256": "cd8bff7ce7d761a87b1a3488b674a990e330fc4e344592da1872081bd7bb2f2e"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1d0116e07cbd4f5cad39c049f3afce1d",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1046882,
            "upload_time": "2024-05-31T02:16:32",
            "upload_time_iso_8601": "2024-05-31T02:16:32.465507Z",
            "url": "https://files.pythonhosted.org/packages/69/f5/46d5f0776863339816b40e9539993b4cd47a11ba782d86eabf627ffd0403/trustregion-1.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "013013f9187cf3c8e6f121a05a9885118e3826391ffe2cff66715eb2fc242c53",
                "md5": "40a82591be351bd3fe2e34720615060d",
                "sha256": "855bf6d8b19d22ac654511ac9127d5efddfe4b20e9c34374268678647ba500e6"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp38-cp38-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "40a82591be351bd3fe2e34720615060d",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 55487,
            "upload_time": "2024-05-31T02:16:33",
            "upload_time_iso_8601": "2024-05-31T02:16:33.795497Z",
            "url": "https://files.pythonhosted.org/packages/01/30/13f9187cf3c8e6f121a05a9885118e3826391ffe2cff66715eb2fc242c53/trustregion-1.2.1-cp38-cp38-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "90c99c2006b10155f17cc035be2c3bb20e4cef26b9fb0a5cf50c02ac3e68f205",
                "md5": "ba084c9e6d7ad28473c2bd31abb63ebd",
                "sha256": "4f462a771a4ca5fbe8a0094d4db35aaac968cb9463169152de03ba1f9698cd06"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp38-cp38-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ba084c9e6d7ad28473c2bd31abb63ebd",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 53108,
            "upload_time": "2024-05-31T02:16:35",
            "upload_time_iso_8601": "2024-05-31T02:16:35.236975Z",
            "url": "https://files.pythonhosted.org/packages/90/c9/9c2006b10155f17cc035be2c3bb20e4cef26b9fb0a5cf50c02ac3e68f205/trustregion-1.2.1-cp38-cp38-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1b024d2e973a793ca0ab5b9a019f24f2bd3bc397213ef87e2c71237a510d32ed",
                "md5": "d34f1a1c1ebe6d75572b94d7259c4172",
                "sha256": "48d46b18419e9e45de40a4ea1d447d12a96a0d16d1132da1bb907a5b05307084"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "d34f1a1c1ebe6d75572b94d7259c4172",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1042978,
            "upload_time": "2024-05-31T02:16:37",
            "upload_time_iso_8601": "2024-05-31T02:16:37.231470Z",
            "url": "https://files.pythonhosted.org/packages/1b/02/4d2e973a793ca0ab5b9a019f24f2bd3bc397213ef87e2c71237a510d32ed/trustregion-1.2.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c846904e4ad9a21a837fa8d2371f549f07c727bc1316d3e95a681b750a271b77",
                "md5": "a01d330fa51dd63dd374f37487974f0e",
                "sha256": "444e5fabab8b592e4b15eca2eb0d4090de89735134b45634cefb75740c6670e1"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a01d330fa51dd63dd374f37487974f0e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1046885,
            "upload_time": "2024-05-31T02:16:38",
            "upload_time_iso_8601": "2024-05-31T02:16:38.887344Z",
            "url": "https://files.pythonhosted.org/packages/c8/46/904e4ad9a21a837fa8d2371f549f07c727bc1316d3e95a681b750a271b77/trustregion-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "04386e69c3684ce46ce2946e99c9f096c80641d80e18a820e6bc6a220862c101",
                "md5": "e4c090d89cce4743689ea1d4daf6b463",
                "sha256": "34a46585815c63f2a199dd6fb8c35c2c26d1ed334b98c7056e856d789b61c0de"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp39-cp39-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "e4c090d89cce4743689ea1d4daf6b463",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 55539,
            "upload_time": "2024-05-31T02:16:40",
            "upload_time_iso_8601": "2024-05-31T02:16:40.419851Z",
            "url": "https://files.pythonhosted.org/packages/04/38/6e69c3684ce46ce2946e99c9f096c80641d80e18a820e6bc6a220862c101/trustregion-1.2.1-cp39-cp39-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "abe99fa9fff388fc649beb5e15720fc170dc6ad67a3c2653c424014e3383de0b",
                "md5": "4ff1bc08629cbc6198896411b48be5e3",
                "sha256": "015e496b3ab709c42f7a61cbf545341150bf80180ecd483219e65312d2433a8f"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-cp39-cp39-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4ff1bc08629cbc6198896411b48be5e3",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 53101,
            "upload_time": "2024-05-31T02:16:42",
            "upload_time_iso_8601": "2024-05-31T02:16:42.861136Z",
            "url": "https://files.pythonhosted.org/packages/ab/e9/9fa9fff388fc649beb5e15720fc170dc6ad67a3c2653c424014e3383de0b/trustregion-1.2.1-cp39-cp39-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ff0ecd856b17e77037feffbede58c856fd8168a5ecfd00244175786fac79a3bd",
                "md5": "656a9143810745b6e6717cab579c401c",
                "sha256": "c0c92ffd96717546fc0971d0fb698d96cd89a1ffdb0fde8614d755b8f41d2b13"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "656a9143810745b6e6717cab579c401c",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 1043326,
            "upload_time": "2024-05-31T02:16:44",
            "upload_time_iso_8601": "2024-05-31T02:16:44.354679Z",
            "url": "https://files.pythonhosted.org/packages/ff/0e/cd856b17e77037feffbede58c856fd8168a5ecfd00244175786fac79a3bd/trustregion-1.2.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9e9b817e896330422a8745a066c4748dcd912dd00a86869ba4e5727bbb73aecd",
                "md5": "aebf91475b0340438ace81fb46051311",
                "sha256": "5e1d3979eae0dd8ec11e265e33a039edeb039f090fc9cfd9b4301b30288da753"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "aebf91475b0340438ace81fb46051311",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 1047242,
            "upload_time": "2024-05-31T02:16:45",
            "upload_time_iso_8601": "2024-05-31T02:16:45.833693Z",
            "url": "https://files.pythonhosted.org/packages/9e/9b/817e896330422a8745a066c4748dcd912dd00a86869ba4e5727bbb73aecd/trustregion-1.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cfba815dd102f8e8b6f12456df34f07766c4c63b1739b9b5afe63a21f93e7ab4",
                "md5": "94930fe425a5d3d54e8e705465b01de5",
                "sha256": "822b9b2845b49083dedbdb7eb3add123266fa913c3d91e716f1376f28a5cfeb5"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "94930fe425a5d3d54e8e705465b01de5",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 1043094,
            "upload_time": "2024-05-31T02:16:47",
            "upload_time_iso_8601": "2024-05-31T02:16:47.519057Z",
            "url": "https://files.pythonhosted.org/packages/cf/ba/815dd102f8e8b6f12456df34f07766c4c63b1739b9b5afe63a21f93e7ab4/trustregion-1.2.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8b3a93f986504f0dac174a2a51cb47df3647deeba5d61781869847329d31b3b2",
                "md5": "3636051d54b41932bb2d8b65ed80e80e",
                "sha256": "1c19d7d72501c5bd5f8b77a75406fab9aa1dfc1abd905e0e6dfb8d8323183a0a"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3636051d54b41932bb2d8b65ed80e80e",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 1047050,
            "upload_time": "2024-05-31T02:16:49",
            "upload_time_iso_8601": "2024-05-31T02:16:49.215480Z",
            "url": "https://files.pythonhosted.org/packages/8b/3a/93f986504f0dac174a2a51cb47df3647deeba5d61781869847329d31b3b2/trustregion-1.2.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "83543c23f03bf540ee14c188314ae062ec312ced921a03785da1a83b22f5ad8f",
                "md5": "ac259b2ca6351334fd67ca89b7535460",
                "sha256": "f451a6e31c7a12fa80e764d743211bbbfd8070890267815f1846c442fd791086"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "ac259b2ca6351334fd67ca89b7535460",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 1043260,
            "upload_time": "2024-05-31T02:16:53",
            "upload_time_iso_8601": "2024-05-31T02:16:53.146582Z",
            "url": "https://files.pythonhosted.org/packages/83/54/3c23f03bf540ee14c188314ae062ec312ced921a03785da1a83b22f5ad8f/trustregion-1.2.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "494bd96dc09bcbbd9e5885ccb7c3a44894ff3c370112ee026a55b422766ee6a7",
                "md5": "6a7ead35fdd0b07fc0a4a96ec7292c71",
                "sha256": "55701d86b1d339e92538c2fc06b38fee5d0f969b134579f4e14a6746d871c213"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6a7ead35fdd0b07fc0a4a96ec7292c71",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 1047184,
            "upload_time": "2024-05-31T02:16:55",
            "upload_time_iso_8601": "2024-05-31T02:16:55.642534Z",
            "url": "https://files.pythonhosted.org/packages/49/4b/d96dc09bcbbd9e5885ccb7c3a44894ff3c370112ee026a55b422766ee6a7/trustregion-1.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1ce6d6156baebf625e0b98ca49ae4cca0375357a343e983a2542be2bfc226fda",
                "md5": "e06c11d73baf2937897f56ca85c3e6f8",
                "sha256": "93964d09005661c6aad699e8eb4f97590d14a346c70b4037e51d9fc7bfc18ea8"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "e06c11d73baf2937897f56ca85c3e6f8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 37259,
            "upload_time": "2024-05-31T02:16:57",
            "upload_time_iso_8601": "2024-05-31T02:16:57.090043Z",
            "url": "https://files.pythonhosted.org/packages/1c/e6/d6156baebf625e0b98ca49ae4cca0375357a343e983a2542be2bfc226fda/trustregion-1.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-31 02:16:57",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "lindonroberts",
    "github_project": "trust-region",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "trustregion"
}
        
Elapsed time: 4.57876s