trustregion


Nametrustregion JSON
Version 1.2.2 PyPI version JSON
download
home_pageNone
SummaryTrust-region subproblem solvers for nonlinear/nonconvex optimization
upload_time2025-10-09 11:47:38
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/>`_:

 .. code-block:: bash

    $ pip install numpy
    $ 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. 
Alternatively, you can use pip inside a virtual environment using `Python's virtual environments <https://docs.python.org/3/tutorial/venv.html>`_ or the `conda <https://conda.io/projects/conda/en/latest/index.html>`_ environment manager.

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

 .. code-block:: bash

    $ 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
    $ pip install .

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

    $ 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/f0/e6/d43fa697185b7b46759029c357d5ae34576278f1a4cd5469b5df3e34cd47/trustregion-1.2.2.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/>`_:\n\n .. code-block:: bash\n\n    $ pip install numpy\n    $ 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. \nAlternatively, you can use pip inside a virtual environment using `Python's virtual environments <https://docs.python.org/3/tutorial/venv.html>`_ or the `conda <https://conda.io/projects/conda/en/latest/index.html>`_ environment manager.\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    $ 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    $ pip install .\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    $ 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.2",
    "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": null,
            "digests": {
                "blake2b_256": "fdd4ba20e55d8ed444f56e58de92a45b909c3c05f588273152e015b8353434dc",
                "md5": "2fe8c38abe33f8d71da1df99bbf6f50d",
                "sha256": "2161ec596785448bfde25cc66b5b84a84bfa83bd9b752365451992219624d5ce"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp310-cp310-macosx_15_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "2fe8c38abe33f8d71da1df99bbf6f50d",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 820185,
            "upload_time": "2025-10-09T11:47:07",
            "upload_time_iso_8601": "2025-10-09T11:47:07.503295Z",
            "url": "https://files.pythonhosted.org/packages/fd/d4/ba20e55d8ed444f56e58de92a45b909c3c05f588273152e015b8353434dc/trustregion-1.2.2-cp310-cp310-macosx_15_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f55500520162683fe78f86c5c3080c4225d43322a962c3346bd1edb10b3a924f",
                "md5": "615b64a5a3136931048e7933d2b2fe07",
                "sha256": "b67bc50cf4f49106f352ce2c1ab3424cf5de313cae32c7aa73a701dca047d179"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "615b64a5a3136931048e7933d2b2fe07",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 1064018,
            "upload_time": "2025-10-09T11:47:09",
            "upload_time_iso_8601": "2025-10-09T11:47:09.334404Z",
            "url": "https://files.pythonhosted.org/packages/f5/55/00520162683fe78f86c5c3080c4225d43322a962c3346bd1edb10b3a924f/trustregion-1.2.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "42fd7412b6427ee7b15dcaa723c8fc639a53f67d86d1edfcccb211c3aef66abf",
                "md5": "171f91207e75c6ddf69c74c7ffbb7e29",
                "sha256": "c8e79748197f70113c50e09c92058f4f659f6b560e758cb3d828211a47fcf7e0"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "171f91207e75c6ddf69c74c7ffbb7e29",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 53745,
            "upload_time": "2025-10-09T11:47:10",
            "upload_time_iso_8601": "2025-10-09T11:47:10.627511Z",
            "url": "https://files.pythonhosted.org/packages/42/fd/7412b6427ee7b15dcaa723c8fc639a53f67d86d1edfcccb211c3aef66abf/trustregion-1.2.2-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "77a9372e7e787d81f9d1b3ab4e8f063259d20a119a80ced2ee7d2dce7c2e4715",
                "md5": "f5f77ff321f0a2a6579c3beb66fc8f56",
                "sha256": "adc60860b232f83b59ff86cd3ac18808c1e2db57827ded7644ff075ba0bcdf13"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp311-cp311-macosx_15_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "f5f77ff321f0a2a6579c3beb66fc8f56",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 820414,
            "upload_time": "2025-10-09T11:47:11",
            "upload_time_iso_8601": "2025-10-09T11:47:11.791890Z",
            "url": "https://files.pythonhosted.org/packages/77/a9/372e7e787d81f9d1b3ab4e8f063259d20a119a80ced2ee7d2dce7c2e4715/trustregion-1.2.2-cp311-cp311-macosx_15_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2cd50e3870aafb8c4eedbf3e6fc41a3de055f31d832b60a296334488a6148ba3",
                "md5": "93d16c1a6a4344b2b925c836fcc4ae16",
                "sha256": "5dba4759018caab1a00ee2ecc212621e647e1eb20c5de672734da5d83ac65ecb"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "93d16c1a6a4344b2b925c836fcc4ae16",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 1064473,
            "upload_time": "2025-10-09T11:47:13",
            "upload_time_iso_8601": "2025-10-09T11:47:13.504613Z",
            "url": "https://files.pythonhosted.org/packages/2c/d5/0e3870aafb8c4eedbf3e6fc41a3de055f31d832b60a296334488a6148ba3/trustregion-1.2.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "688881177e8a9ae61d764aa0b71cc1b6d27272b67ff083438aa5693a0c845d0e",
                "md5": "4a99a7d2cff83c4a081122c0f40fe42a",
                "sha256": "862a4f62ff7c4c565d653fb00e0385ebe3ac6b46634e8b9ccf94c21ad39f52dc"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4a99a7d2cff83c4a081122c0f40fe42a",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 54286,
            "upload_time": "2025-10-09T11:47:14",
            "upload_time_iso_8601": "2025-10-09T11:47:14.816990Z",
            "url": "https://files.pythonhosted.org/packages/68/88/81177e8a9ae61d764aa0b71cc1b6d27272b67ff083438aa5693a0c845d0e/trustregion-1.2.2-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "cc9120d3b4579f4a96787e788b88189640bc464a3c8a742bb8cec6f389d8d920",
                "md5": "fecf8b51a326e49fc14086bc5e76faca",
                "sha256": "eb2b88350ed2d8506c503340978dca986f77c12cad7168479e29c19377d48cbd"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp312-cp312-macosx_15_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "fecf8b51a326e49fc14086bc5e76faca",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 820463,
            "upload_time": "2025-10-09T11:47:15",
            "upload_time_iso_8601": "2025-10-09T11:47:15.893045Z",
            "url": "https://files.pythonhosted.org/packages/cc/91/20d3b4579f4a96787e788b88189640bc464a3c8a742bb8cec6f389d8d920/trustregion-1.2.2-cp312-cp312-macosx_15_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "25ab6a23d839513906db7d651ebab4d0c8e48ccbb479845468c41251adb78b5a",
                "md5": "c07e023bc5c7634f77ceed6bf8ca7ae1",
                "sha256": "518525156563c842bb93a6d197c2c669e52d6836bdf01715807bb0bfcb7154bc"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c07e023bc5c7634f77ceed6bf8ca7ae1",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 1064710,
            "upload_time": "2025-10-09T11:47:17",
            "upload_time_iso_8601": "2025-10-09T11:47:17.133508Z",
            "url": "https://files.pythonhosted.org/packages/25/ab/6a23d839513906db7d651ebab4d0c8e48ccbb479845468c41251adb78b5a/trustregion-1.2.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e3618a330a05f2fc607a5fcd8f912366912d0dfff2daf5da4902a36dd95b13ff",
                "md5": "704f6446271420ae1c641e392cd39b91",
                "sha256": "0ba9a78836aab20072672962af4403e35f1d729a90db297d02eee35893e60e52"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "704f6446271420ae1c641e392cd39b91",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 54500,
            "upload_time": "2025-10-09T11:47:18",
            "upload_time_iso_8601": "2025-10-09T11:47:18.343604Z",
            "url": "https://files.pythonhosted.org/packages/e3/61/8a330a05f2fc607a5fcd8f912366912d0dfff2daf5da4902a36dd95b13ff/trustregion-1.2.2-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "028787dff98eb3907b5dc7d0dc7eef4c0a203f099235f5c999b9e9be6ffc454d",
                "md5": "a61106f835519d8dbbc2db5729b7f9bf",
                "sha256": "79b1043355e0dd97e5738b05f7ef8b0af4e3ee8da873aae11409bbcbe6e0c18c"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp313-cp313-macosx_15_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "a61106f835519d8dbbc2db5729b7f9bf",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 820494,
            "upload_time": "2025-10-09T11:47:19",
            "upload_time_iso_8601": "2025-10-09T11:47:19.417294Z",
            "url": "https://files.pythonhosted.org/packages/02/87/87dff98eb3907b5dc7d0dc7eef4c0a203f099235f5c999b9e9be6ffc454d/trustregion-1.2.2-cp313-cp313-macosx_15_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "71aa649234c953de101c6f257c6defffec147f427cb2818b315175d756d48e67",
                "md5": "7e8450db0542e02ee02230dd540964a5",
                "sha256": "0785e3b7245b92e81365f358b935136ff1a185f6c451eb61629de7ffade6b014"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7e8450db0542e02ee02230dd540964a5",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 1064707,
            "upload_time": "2025-10-09T11:47:20",
            "upload_time_iso_8601": "2025-10-09T11:47:20.615621Z",
            "url": "https://files.pythonhosted.org/packages/71/aa/649234c953de101c6f257c6defffec147f427cb2818b315175d756d48e67/trustregion-1.2.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b526d55f04d89614ebb6d777e79e338e8c79d60be9b52bd955e175ea8cf517f3",
                "md5": "7dc18593b9e3874e1cd34e7d4ad9c61a",
                "sha256": "6008f877a979688b592ffe57b3194e2a2b2acdae57f15e638d1af71fac76cc2d"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp313-cp313-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7dc18593b9e3874e1cd34e7d4ad9c61a",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 54498,
            "upload_time": "2025-10-09T11:47:22",
            "upload_time_iso_8601": "2025-10-09T11:47:22.031080Z",
            "url": "https://files.pythonhosted.org/packages/b5/26/d55f04d89614ebb6d777e79e338e8c79d60be9b52bd955e175ea8cf517f3/trustregion-1.2.2-cp313-cp313-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b8db8e412c8517e4206d32ec981b9ad8e162362926b39d671e3dd4f8d3869bfb",
                "md5": "9fa6f32e45d07eb9ad77edf06270b9fb",
                "sha256": "1dd0cb5c233a957b7107eac1db809b55c1815d39a7a5d23bd273ba3e267e12f4"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp314-cp314-macosx_15_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "9fa6f32e45d07eb9ad77edf06270b9fb",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.8",
            "size": 820508,
            "upload_time": "2025-10-09T11:47:23",
            "upload_time_iso_8601": "2025-10-09T11:47:23.098710Z",
            "url": "https://files.pythonhosted.org/packages/b8/db/8e412c8517e4206d32ec981b9ad8e162362926b39d671e3dd4f8d3869bfb/trustregion-1.2.2-cp314-cp314-macosx_15_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "485c3b20aae2bc6030c8977e6e296f4ce56bd01e187952a400ae4bb87a8277d9",
                "md5": "8972075901880b41598bb78474176874",
                "sha256": "3dbd9236b6aea5d8a76bd55cd68c126b34571a332e36142f9cfed98898552578"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8972075901880b41598bb78474176874",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.8",
            "size": 1064682,
            "upload_time": "2025-10-09T11:47:24",
            "upload_time_iso_8601": "2025-10-09T11:47:24.469462Z",
            "url": "https://files.pythonhosted.org/packages/48/5c/3b20aae2bc6030c8977e6e296f4ce56bd01e187952a400ae4bb87a8277d9/trustregion-1.2.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "58151db542e2f8e84b1bc7c62086dd824e561b8a2c13372dbe35696e9391725d",
                "md5": "c4592283f4bafd0bc19f2ac10ba0a943",
                "sha256": "2c9b8a5391750353edbf98f4f4577c5fa14b81f7d83837115f845f4819adda06"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp314-cp314-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c4592283f4bafd0bc19f2ac10ba0a943",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.8",
            "size": 54478,
            "upload_time": "2025-10-09T11:47:25",
            "upload_time_iso_8601": "2025-10-09T11:47:25.901644Z",
            "url": "https://files.pythonhosted.org/packages/58/15/1db542e2f8e84b1bc7c62086dd824e561b8a2c13372dbe35696e9391725d/trustregion-1.2.2-cp314-cp314-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "332f87ac3cccf92a5f12cea07345a7220b2424321f73d38bdcf6e8962689ab59",
                "md5": "9d113ece51a96632ec14f343577307cf",
                "sha256": "67525681a6eb04ed03267619c1d3f62f6add5eefeeb5b0e779beff75df4f55e3"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp314-cp314t-macosx_15_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "9d113ece51a96632ec14f343577307cf",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.8",
            "size": 821124,
            "upload_time": "2025-10-09T11:47:27",
            "upload_time_iso_8601": "2025-10-09T11:47:27.483504Z",
            "url": "https://files.pythonhosted.org/packages/33/2f/87ac3cccf92a5f12cea07345a7220b2424321f73d38bdcf6e8962689ab59/trustregion-1.2.2-cp314-cp314t-macosx_15_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f0b71c97bb1c0f473f4d1c2f810aa4645642982a8f63b4d21bbc5793ad03c09e",
                "md5": "3fbc4af5cc596ce3542be8af8c8f657b",
                "sha256": "74d30d93465c14b6d62e687e648cdf9aac7d41aaf0b7ce9929ca8c7b237b19b2"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3fbc4af5cc596ce3542be8af8c8f657b",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.8",
            "size": 1065570,
            "upload_time": "2025-10-09T11:47:28",
            "upload_time_iso_8601": "2025-10-09T11:47:28.675669Z",
            "url": "https://files.pythonhosted.org/packages/f0/b7/1c97bb1c0f473f4d1c2f810aa4645642982a8f63b4d21bbc5793ad03c09e/trustregion-1.2.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1987fadf1a66293917af5a4d8f0353137edcf2456de0520dc3af4f79dc38ab82",
                "md5": "c7989dfa9908bedb6b703544bd8deaaa",
                "sha256": "fc786df39007e20cc9aa3f05e6684aa6e87b1f1cef4768f4207544a5066f26d0"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp314-cp314t-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c7989dfa9908bedb6b703544bd8deaaa",
            "packagetype": "bdist_wheel",
            "python_version": "cp314",
            "requires_python": ">=3.8",
            "size": 55316,
            "upload_time": "2025-10-09T11:47:30",
            "upload_time_iso_8601": "2025-10-09T11:47:30.034872Z",
            "url": "https://files.pythonhosted.org/packages/19/87/fadf1a66293917af5a4d8f0353137edcf2456de0520dc3af4f79dc38ab82/trustregion-1.2.2-cp314-cp314t-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f4502920cbace191a94dec16330250c19f5178ed8d2419790d30388742185ab4",
                "md5": "26bbabb92c4d55f905388612983867a6",
                "sha256": "473a41730fad45e69f530ac645549ea0ab43901cf6f167955a1953edc40d6ce6"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp38-cp38-macosx_15_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "26bbabb92c4d55f905388612983867a6",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 819656,
            "upload_time": "2025-10-09T11:47:31",
            "upload_time_iso_8601": "2025-10-09T11:47:31.060778Z",
            "url": "https://files.pythonhosted.org/packages/f4/50/2920cbace191a94dec16330250c19f5178ed8d2419790d30388742185ab4/trustregion-1.2.2-cp38-cp38-macosx_15_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d870b0811567c25f58a2dfc81f1279fbd55052267a7711f781bcd356774ff368",
                "md5": "20cae8af458dfa3e8407a2a8b652766d",
                "sha256": "47077ce44df5ef1bafdcca4738e30a69c461347cdf4e9ef76d0107a2379ad0dd"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "20cae8af458dfa3e8407a2a8b652766d",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1063525,
            "upload_time": "2025-10-09T11:47:32",
            "upload_time_iso_8601": "2025-10-09T11:47:32.294843Z",
            "url": "https://files.pythonhosted.org/packages/d8/70/b0811567c25f58a2dfc81f1279fbd55052267a7711f781bcd356774ff368/trustregion-1.2.2-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "30cb06f580969f9a7764b7d66227db9ee5b15fad9e8d9e1db44bd32629a7fdfc",
                "md5": "32379064f11282756d20786b78ac387c",
                "sha256": "fe1d527e9d96504cebd81b0c93e19095fbc25132223930abc71df25c1a25467c"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp38-cp38-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "32379064f11282756d20786b78ac387c",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 53210,
            "upload_time": "2025-10-09T11:47:33",
            "upload_time_iso_8601": "2025-10-09T11:47:33.865507Z",
            "url": "https://files.pythonhosted.org/packages/30/cb/06f580969f9a7764b7d66227db9ee5b15fad9e8d9e1db44bd32629a7fdfc/trustregion-1.2.2-cp38-cp38-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "eadc063aa13ca1a5037bb08ccf1007bbe8891e24e752519a3afe678c166125cf",
                "md5": "0969f33b4e6c048316db3184e3186eeb",
                "sha256": "f72daa6570beb16f8a70f40ba20a509b0dbd9057d523adb20415581d68430de6"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp39-cp39-macosx_15_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "0969f33b4e6c048316db3184e3186eeb",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 820159,
            "upload_time": "2025-10-09T11:47:34",
            "upload_time_iso_8601": "2025-10-09T11:47:34.967289Z",
            "url": "https://files.pythonhosted.org/packages/ea/dc/063aa13ca1a5037bb08ccf1007bbe8891e24e752519a3afe678c166125cf/trustregion-1.2.2-cp39-cp39-macosx_15_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "21d1b791d6457f631bf83a8cbc49a210748440798642f04b823836bb0e92ff07",
                "md5": "a1758bb1d6619d846b3c09bc423afd93",
                "sha256": "02273684a7a025c9db8c3f3e1d0e243a7fb781a46b8ba55132a368c8993da0a1"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a1758bb1d6619d846b3c09bc423afd93",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 1064114,
            "upload_time": "2025-10-09T11:47:36",
            "upload_time_iso_8601": "2025-10-09T11:47:36.504638Z",
            "url": "https://files.pythonhosted.org/packages/21/d1/b791d6457f631bf83a8cbc49a210748440798642f04b823836bb0e92ff07/trustregion-1.2.2-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "49f4bc9c9e7bb5c7dc5ebf92feeaca28a9581d0a7e651645d8e74010d98cb0c7",
                "md5": "2facafd0fd8702530f834fdd9683d0aa",
                "sha256": "a804adb505777e594be95c00f72c9129c26fd3bffa842c71da729ad9e1c63efe"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2-cp39-cp39-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2facafd0fd8702530f834fdd9683d0aa",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 53786,
            "upload_time": "2025-10-09T11:47:37",
            "upload_time_iso_8601": "2025-10-09T11:47:37.829911Z",
            "url": "https://files.pythonhosted.org/packages/49/f4/bc9c9e7bb5c7dc5ebf92feeaca28a9581d0a7e651645d8e74010d98cb0c7/trustregion-1.2.2-cp39-cp39-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f0e6d43fa697185b7b46759029c357d5ae34576278f1a4cd5469b5df3e34cd47",
                "md5": "08d7659c8c2a5a8344478ea12e3bda5a",
                "sha256": "4348c45ae9f5cd671a1476a061ed99e355373270f88cf388bd7f3b489f6c0023"
            },
            "downloads": -1,
            "filename": "trustregion-1.2.2.tar.gz",
            "has_sig": false,
            "md5_digest": "08d7659c8c2a5a8344478ea12e3bda5a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 37631,
            "upload_time": "2025-10-09T11:47:38",
            "upload_time_iso_8601": "2025-10-09T11:47:38.831014Z",
            "url": "https://files.pythonhosted.org/packages/f0/e6/d43fa697185b7b46759029c357d5ae34576278f1a4cd5469b5df3e34cd47/trustregion-1.2.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-09 11:47:38",
    "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: 1.14369s