pyamg


Namepyamg JSON
Version 5.3.0 PyPI version JSON
download
home_pagehttps://github.com/pyamg/pyamg
SummaryPyAMG: Algebraic Multigrid Solvers in Python
upload_time2025-08-24 02:06:10
maintainerLuke Olson
docs_urlNone
authorNathan Bell, Luke Olson, and Jacob Schroder
requires_python>=3.9
licenseMIT
keywords algebraic multigrid amg sparse matrix preconditioning
VCS
bugtrack_url
requirements numpy scipy
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![ci](https://img.shields.io/github/actions/workflow/status/pyamg/pyamg/ci.yml?style=flat-square&label=tests)](https://github.com/pyamg/pyamg/actions?query=workflow%3ACI-test+branch%3Amain)
[![lint](https://img.shields.io/github/actions/workflow/status/pyamg/pyamg/lint.yml?style=flat-square&label=lint)](https://github.com/pyamg/pyamg/actions?query=workflow%3ACI-lint+branch%3Amain)
[![PyPI - Version](https://img.shields.io/pypi/v/pyamg?style=flat-square)](https://pypi.org/project/pyamg/)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pyamg?style=flat-square)](https://pypi.org/project/pyamg/)
[![Codecov](https://img.shields.io/codecov/c/github/pyamg/pyamg?style=flat-square)](https://app.codecov.io/gh/pyamg/pyamg)
[![joss](https://joss.theoj.org/papers/10.21105/joss.05495/status.svg?style=flat-square)](https://doi.org/10.21105/joss.05495)

# Installation
PyAMG requires `numpy` and `scipy`

```
pip install pyamg
```

or from source:

```
pip install .
```

(`python setup.py install` will no longer work)

or with conda (see details below)

```
conda config --add channels conda-forge
conda install pyamg
```

# Introduction

PyAMG is a library of **Algebraic Multigrid (AMG)** solvers with a convenient Python interface.

![](https://raw.githubusercontent.com/pyamg/pyamg/main/docs/logo/pyamg_logo_withtext.png)

PyAMG is currently developed and maintained by
[Luke Olson](http://lukeo.cs.illinois.edu),
[Jacob Schroder](https://www.unm.edu/~jbschroder), and
[Ben Southworth](https://arxiv.org/a/southworth_b_1.html).
The organization of the project can be found in [`organization.md`](organization.md) and
examples of use can be found in [`pyamg-examples`](https://github.com/pyamg/pyamg-examples).

**Acknowledgements:**
PyAMG was created by
[Nathan Bell](http://wnbell.com/), 
[Luke Olson](http://lukeo.cs.illinois.edu), and
[Jacob Schroder](https://www.unm.edu/~jbschroder).
Portions of the project were partially supported by the NSF under award DMS-0612448.

# Citing

If you use PyAMG in your work, please consider using the following citation:

<pre>
@article{pyamg2023,
  author    = {Nathan Bell and Luke N. Olson and Jacob Schroder and Ben Southworth},
  title     = {{PyAMG}: Algebraic Multigrid Solvers in Python},
  journal   = {Journal of Open Source Software},
  year      = {2023},
  publisher = {The Open Journal},
  volume    = {8},
  number    = {87},
  pages     = {5495},
  doi       = {10.21105/joss.05495},
  url       = {https://doi.org/10.21105/joss.05495},
}
</pre>

# Getting Help

- For documentation see [http://pyamg.readthedocs.io/en/latest/](http://pyamg.readthedocs.io/en/latest/).

- Create an [issue](https://github.com/pyamg/pyamg/issues).

- Look at the [Tutorial](https://github.com/pyamg/pyamg/wiki/Tutorial) or the [examples](https://github.com/pyamg/pyamg-examples) (for instance  the [0_start_here](https://github.com/pyamg/pyamg-examples/blob/main/0_start_here/demo.py) example).

- Run the unit tests (`pip install pytest`):
  - With PyAMG installed and from a non-source directory:
  ```python
  import pyamg
  pyamg.test()
  ```
  - From the PyAMG source directory and installed (e.g. with `pip install -e .`):
  ```python
  pytest .
  ```

# What is AMG?

 AMG is a multilevel technique for solving large-scale linear systems with optimal or near-optimal efficiency.  Unlike geometric multigrid, AMG requires little or no geometric information about the underlying problem and develops a sequence of coarser grids directly from the input matrix.  This feature is especially important for problems discretized on unstructured meshes and irregular grids.

# PyAMG Features

PyAMG features implementations of:

- **Ruge-Stuben (RS)** or *Classical AMG*
- AMG based on **Smoothed Aggregation (SA)**

and experimental support for:

- **Adaptive Smoothed Aggregation (αSA)**
- **Compatible Relaxation (CR)**

The predominant portion of PyAMG is written in Python with a smaller amount of supporting C++ code for performance critical operations.

# Example Usage

PyAMG is easy to use!  The following code constructs a two-dimensional Poisson problem and solves the resulting linear system with Classical AMG.

````python
import pyamg
import numpy as np
A = pyamg.gallery.poisson((500,500), format='csr')  # 2D Poisson problem on 500x500 grid
ml = pyamg.ruge_stuben_solver(A)                    # construct the multigrid hierarchy
print(ml)                                           # print hierarchy information
b = np.random.rand(A.shape[0])                      # pick a random right hand side
x = ml.solve(b, tol=1e-10)                          # solve Ax=b to a tolerance of 1e-10
print("residual: ", np.linalg.norm(b-A*x))          # compute norm of residual vector
````

Program output:

<pre>
multilevel_solver
Number of Levels:     9
Operator Complexity:  2.199
Grid Complexity:      1.667
Coarse Solver:        'pinv2'
  level   unknowns     nonzeros
    0       250000      1248000 [45.47%]
    1       125000      1121002 [40.84%]
    2        31252       280662 [10.23%]
    3         7825        70657 [ 2.57%]
    4         1937        17971 [ 0.65%]
    5          483         4725 [ 0.17%]
    6          124         1352 [ 0.05%]
    7           29          293 [ 0.01%]
    8            7           41 [ 0.00%]

residual:  1.24748994988e-08
</pre>

# Conda

More information can be found at [conda-forge/pyamg-feedstock](https://github.com/conda-forge/pyamg-feedstock).

*Linux:*
[![Circle CI](https://circleci.com/gh/conda-forge/pyamg-feedstock.svg?style=shield)](https://circleci.com/gh/conda-forge/pyamg-feedstock)

*OSX:*
[![TravisCI](https://travis-ci.org/conda-forge/pyamg-feedstock.svg?branch=master)](https://travis-ci.org/conda-forge/pyamg-feedstock)

*Windows:*
[![AppVeyor](https://ci.appveyor.com/api/projects/status/github/conda-forge/pyamg-feedstock?svg=True)](https://ci.appveyor.com/project/conda-forge/pyamg-feedstock/branch/master)

*Version:*
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/pyamg/badges/version.svg)](https://anaconda.org/conda-forge/pyamg)

*Downloads:*
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/pyamg/badges/downloads.svg)](https://anaconda.org/conda-forge/pyamg)

Installing `pyamg` from the `conda-forge` channel can be achieved by adding `conda-forge` to your channels with:

```
conda config --add channels conda-forge
```

Once the `conda-forge` channel has been enabled, `pyamg` can be installed with:

```
conda install pyamg
```

It is possible to list all of the versions of `pyamg` available on your platform with:

```
conda search pyamg --channel conda-forge
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/pyamg/pyamg",
    "name": "pyamg",
    "maintainer": "Luke Olson",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "luke.olson@gmail.com",
    "keywords": "algebraic multigrid, AMG, sparse matrix, preconditioning",
    "author": "Nathan Bell, Luke Olson, and Jacob Schroder",
    "author_email": "luke.olson@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/54/f1/e7f0466af00dc59b6592f03499a8ca1c839d5265a045d0b010b574f67143/pyamg-5.3.0.tar.gz",
    "platform": null,
    "description": "[![ci](https://img.shields.io/github/actions/workflow/status/pyamg/pyamg/ci.yml?style=flat-square&label=tests)](https://github.com/pyamg/pyamg/actions?query=workflow%3ACI-test+branch%3Amain)\n[![lint](https://img.shields.io/github/actions/workflow/status/pyamg/pyamg/lint.yml?style=flat-square&label=lint)](https://github.com/pyamg/pyamg/actions?query=workflow%3ACI-lint+branch%3Amain)\n[![PyPI - Version](https://img.shields.io/pypi/v/pyamg?style=flat-square)](https://pypi.org/project/pyamg/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pyamg?style=flat-square)](https://pypi.org/project/pyamg/)\n[![Codecov](https://img.shields.io/codecov/c/github/pyamg/pyamg?style=flat-square)](https://app.codecov.io/gh/pyamg/pyamg)\n[![joss](https://joss.theoj.org/papers/10.21105/joss.05495/status.svg?style=flat-square)](https://doi.org/10.21105/joss.05495)\n\n# Installation\nPyAMG requires `numpy` and `scipy`\n\n```\npip install pyamg\n```\n\nor from source:\n\n```\npip install .\n```\n\n(`python setup.py install` will no longer work)\n\nor with conda (see details below)\n\n```\nconda config --add channels conda-forge\nconda install pyamg\n```\n\n# Introduction\n\nPyAMG is a library of **Algebraic Multigrid (AMG)** solvers with a convenient Python interface.\n\n![](https://raw.githubusercontent.com/pyamg/pyamg/main/docs/logo/pyamg_logo_withtext.png)\n\nPyAMG is currently developed and maintained by\n[Luke Olson](http://lukeo.cs.illinois.edu),\n[Jacob Schroder](https://www.unm.edu/~jbschroder), and\n[Ben Southworth](https://arxiv.org/a/southworth_b_1.html).\nThe organization of the project can be found in [`organization.md`](organization.md) and\nexamples of use can be found in [`pyamg-examples`](https://github.com/pyamg/pyamg-examples).\n\n**Acknowledgements:**\nPyAMG was created by\n[Nathan Bell](http://wnbell.com/), \n[Luke Olson](http://lukeo.cs.illinois.edu), and\n[Jacob Schroder](https://www.unm.edu/~jbschroder).\nPortions of the project were partially supported by the NSF under award DMS-0612448.\n\n# Citing\n\nIf you use PyAMG in your work, please consider using the following citation:\n\n<pre>\n@article{pyamg2023,\n  author    = {Nathan Bell and Luke N. Olson and Jacob Schroder and Ben Southworth},\n  title     = {{PyAMG}: Algebraic Multigrid Solvers in Python},\n  journal   = {Journal of Open Source Software},\n  year      = {2023},\n  publisher = {The Open Journal},\n  volume    = {8},\n  number    = {87},\n  pages     = {5495},\n  doi       = {10.21105/joss.05495},\n  url       = {https://doi.org/10.21105/joss.05495},\n}\n</pre>\n\n# Getting Help\n\n- For documentation see [http://pyamg.readthedocs.io/en/latest/](http://pyamg.readthedocs.io/en/latest/).\n\n- Create an [issue](https://github.com/pyamg/pyamg/issues).\n\n- Look at the [Tutorial](https://github.com/pyamg/pyamg/wiki/Tutorial) or the [examples](https://github.com/pyamg/pyamg-examples) (for instance  the [0_start_here](https://github.com/pyamg/pyamg-examples/blob/main/0_start_here/demo.py) example).\n\n- Run the unit tests (`pip install pytest`):\n  - With PyAMG installed and from a non-source directory:\n  ```python\n  import pyamg\n  pyamg.test()\n  ```\n  - From the PyAMG source directory and installed (e.g. with `pip install -e .`):\n  ```python\n  pytest .\n  ```\n\n# What is AMG?\n\n AMG is a multilevel technique for solving large-scale linear systems with optimal or near-optimal efficiency.  Unlike geometric multigrid, AMG requires little or no geometric information about the underlying problem and develops a sequence of coarser grids directly from the input matrix.  This feature is especially important for problems discretized on unstructured meshes and irregular grids.\n\n# PyAMG Features\n\nPyAMG features implementations of:\n\n- **Ruge-Stuben (RS)** or *Classical AMG*\n- AMG based on **Smoothed Aggregation (SA)**\n\nand experimental support for:\n\n- **Adaptive Smoothed Aggregation (\u03b1SA)**\n- **Compatible Relaxation (CR)**\n\nThe predominant portion of PyAMG is written in Python with a smaller amount of supporting C++ code for performance critical operations.\n\n# Example Usage\n\nPyAMG is easy to use!  The following code constructs a two-dimensional Poisson problem and solves the resulting linear system with Classical AMG.\n\n````python\nimport pyamg\nimport numpy as np\nA = pyamg.gallery.poisson((500,500), format='csr')  # 2D Poisson problem on 500x500 grid\nml = pyamg.ruge_stuben_solver(A)                    # construct the multigrid hierarchy\nprint(ml)                                           # print hierarchy information\nb = np.random.rand(A.shape[0])                      # pick a random right hand side\nx = ml.solve(b, tol=1e-10)                          # solve Ax=b to a tolerance of 1e-10\nprint(\"residual: \", np.linalg.norm(b-A*x))          # compute norm of residual vector\n````\n\nProgram output:\n\n<pre>\nmultilevel_solver\nNumber of Levels:     9\nOperator Complexity:  2.199\nGrid Complexity:      1.667\nCoarse Solver:        'pinv2'\n  level   unknowns     nonzeros\n    0       250000      1248000 [45.47%]\n    1       125000      1121002 [40.84%]\n    2        31252       280662 [10.23%]\n    3         7825        70657 [ 2.57%]\n    4         1937        17971 [ 0.65%]\n    5          483         4725 [ 0.17%]\n    6          124         1352 [ 0.05%]\n    7           29          293 [ 0.01%]\n    8            7           41 [ 0.00%]\n\nresidual:  1.24748994988e-08\n</pre>\n\n# Conda\n\nMore information can be found at [conda-forge/pyamg-feedstock](https://github.com/conda-forge/pyamg-feedstock).\n\n*Linux:*\n[![Circle CI](https://circleci.com/gh/conda-forge/pyamg-feedstock.svg?style=shield)](https://circleci.com/gh/conda-forge/pyamg-feedstock)\n\n*OSX:*\n[![TravisCI](https://travis-ci.org/conda-forge/pyamg-feedstock.svg?branch=master)](https://travis-ci.org/conda-forge/pyamg-feedstock)\n\n*Windows:*\n[![AppVeyor](https://ci.appveyor.com/api/projects/status/github/conda-forge/pyamg-feedstock?svg=True)](https://ci.appveyor.com/project/conda-forge/pyamg-feedstock/branch/master)\n\n*Version:*\n[![Anaconda-Server Badge](https://anaconda.org/conda-forge/pyamg/badges/version.svg)](https://anaconda.org/conda-forge/pyamg)\n\n*Downloads:*\n[![Anaconda-Server Badge](https://anaconda.org/conda-forge/pyamg/badges/downloads.svg)](https://anaconda.org/conda-forge/pyamg)\n\nInstalling `pyamg` from the `conda-forge` channel can be achieved by adding `conda-forge` to your channels with:\n\n```\nconda config --add channels conda-forge\n```\n\nOnce the `conda-forge` channel has been enabled, `pyamg` can be installed with:\n\n```\nconda install pyamg\n```\n\nIt is possible to list all of the versions of `pyamg` available on your platform with:\n\n```\nconda search pyamg --channel conda-forge\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "PyAMG: Algebraic Multigrid Solvers in Python",
    "version": "5.3.0",
    "project_urls": {
        "Download": "https://github.com/pyamg/pyamg/releases",
        "Homepage": "https://github.com/pyamg/pyamg"
    },
    "split_keywords": [
        "algebraic multigrid",
        " amg",
        " sparse matrix",
        " preconditioning"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "76d121cbb2322b289ad903523c62bd89ecf6f31d6cdc682945fc0c3ebf7499d4",
                "md5": "39bd154c820cd53b7a87ef000a814620",
                "sha256": "8c5101865fb9135dd87c5039f8e5427e3d526df48cbb03338d4c8823c70eff33"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "39bd154c820cd53b7a87ef000a814620",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1825211,
            "upload_time": "2025-08-24T02:05:26",
            "upload_time_iso_8601": "2025-08-24T02:05:26.522167Z",
            "url": "https://files.pythonhosted.org/packages/76/d1/21cbb2322b289ad903523c62bd89ecf6f31d6cdc682945fc0c3ebf7499d4/pyamg-5.3.0-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7b023da10e9ca92f68f5ec839fb4cc53429aca63ad901a1c13e871b51c644fdc",
                "md5": "83eab5ac55477c829433d75ff6e26c06",
                "sha256": "6d5a724a9257d4d5da2155501cff00d643673d17e3da4b5b2cb4e26df1d23b13"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "83eab5ac55477c829433d75ff6e26c06",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1740669,
            "upload_time": "2025-08-24T02:05:28",
            "upload_time_iso_8601": "2025-08-24T02:05:28.878562Z",
            "url": "https://files.pythonhosted.org/packages/7b/02/3da10e9ca92f68f5ec839fb4cc53429aca63ad901a1c13e871b51c644fdc/pyamg-5.3.0-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "219b68d64577035dc30f1c420f73e8e418afd9299f50b1d3bec153d6abaf1af2",
                "md5": "fa8ee4d3f4974c9246b5946a6ee97a38",
                "sha256": "564b2b0356f0e948a2fc531834766a75005e3de325619735d612b767dad73339"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fa8ee4d3f4974c9246b5946a6ee97a38",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1871905,
            "upload_time": "2025-08-24T02:05:30",
            "upload_time_iso_8601": "2025-08-24T02:05:30.839891Z",
            "url": "https://files.pythonhosted.org/packages/21/9b/68d64577035dc30f1c420f73e8e418afd9299f50b1d3bec153d6abaf1af2/pyamg-5.3.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fd7bf90952de16963ddcfafdc0c8aeb238a6e4bf59f10f6ae59d9617d8944680",
                "md5": "c96fdbf0edb4bc9b4cbb946c01d815c9",
                "sha256": "e642cec5ff3b386e6087ccdda1b28b3d683f00437245b23c13f39b22ff08b058"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c96fdbf0edb4bc9b4cbb946c01d815c9",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 2913195,
            "upload_time": "2025-08-24T02:05:33",
            "upload_time_iso_8601": "2025-08-24T02:05:33.047582Z",
            "url": "https://files.pythonhosted.org/packages/fd/7b/f90952de16963ddcfafdc0c8aeb238a6e4bf59f10f6ae59d9617d8944680/pyamg-5.3.0-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "79a40c29d5a4503e874c6cbf923ff60dcd77c900945b62f87be1708f237423ce",
                "md5": "4a7023bfb2ba00f432db25e17990d6b7",
                "sha256": "dcd4f1bbf0f4566d62c0dbcbfb428fbb256c44d8b70e1abe903505d1af19c3f6"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "4a7023bfb2ba00f432db25e17990d6b7",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1545120,
            "upload_time": "2025-08-24T02:05:35",
            "upload_time_iso_8601": "2025-08-24T02:05:35.128124Z",
            "url": "https://files.pythonhosted.org/packages/79/a4/0c29d5a4503e874c6cbf923ff60dcd77c900945b62f87be1708f237423ce/pyamg-5.3.0-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "57a593bff939b883fb15fa6e8b67bbf01aadaa60ff5c77737c5404f960210a7d",
                "md5": "55c5cbf89342dbec490b577da097caa2",
                "sha256": "dc2ee51c0a9c1a9d265d360b8dad4ef981fa8742bdc641a4e8698c438e6c7e33"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "55c5cbf89342dbec490b577da097caa2",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1666849,
            "upload_time": "2025-08-24T02:05:36",
            "upload_time_iso_8601": "2025-08-24T02:05:36.615909Z",
            "url": "https://files.pythonhosted.org/packages/57/a5/93bff939b883fb15fa6e8b67bbf01aadaa60ff5c77737c5404f960210a7d/pyamg-5.3.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f5022f5bb76d617a6932c832b71947d57a304a418f95476ff4ea72708b1bac17",
                "md5": "4d9f7881acd52230459e088e8f0f0cc3",
                "sha256": "82619094609688d715871bce25eadfe425156242ea2ce1d73388b8af85e75f9d"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4d9f7881acd52230459e088e8f0f0cc3",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1838059,
            "upload_time": "2025-08-24T02:05:38",
            "upload_time_iso_8601": "2025-08-24T02:05:38.717121Z",
            "url": "https://files.pythonhosted.org/packages/f5/02/2f5bb76d617a6932c832b71947d57a304a418f95476ff4ea72708b1bac17/pyamg-5.3.0-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "dcc83dfa1198a989f72d628675f81025d80863fc9759bfcc2c2eb1c0bde465ce",
                "md5": "054353893cb3b2bbf6d5b6f03552df68",
                "sha256": "cd91201d246824bdf2ff16129db48b764cf10e5b45f1fd0b4af537591be1091c"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "054353893cb3b2bbf6d5b6f03552df68",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1752381,
            "upload_time": "2025-08-24T02:05:40",
            "upload_time_iso_8601": "2025-08-24T02:05:40.378155Z",
            "url": "https://files.pythonhosted.org/packages/dc/c8/3dfa1198a989f72d628675f81025d80863fc9759bfcc2c2eb1c0bde465ce/pyamg-5.3.0-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "af6adea72ea86c94aadab83a1ff8bd4198897a350325911749fb26a2a61271bd",
                "md5": "2b726a87b25b4e40dcca67518a6f23b0",
                "sha256": "8701ed806ed2195ff9cdad6f2b80d2b0a4d5b652d0232c0ebc43c677db88662f"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2b726a87b25b4e40dcca67518a6f23b0",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1880268,
            "upload_time": "2025-08-24T02:05:42",
            "upload_time_iso_8601": "2025-08-24T02:05:42.018532Z",
            "url": "https://files.pythonhosted.org/packages/af/6a/dea72ea86c94aadab83a1ff8bd4198897a350325911749fb26a2a61271bd/pyamg-5.3.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "488388bbcfab2c40d1cb04baab71f8c8d08c00aeab3202a4ea0e81b365c07311",
                "md5": "30e13e061cfc772fef7976ba50b31c07",
                "sha256": "14d921d6f09eb9b4b3e6c22e1ef19ec27ddd193cf406dbec43ccadc4baf2a2f9"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "30e13e061cfc772fef7976ba50b31c07",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 2921913,
            "upload_time": "2025-08-24T02:05:43",
            "upload_time_iso_8601": "2025-08-24T02:05:43.720050Z",
            "url": "https://files.pythonhosted.org/packages/48/83/88bbcfab2c40d1cb04baab71f8c8d08c00aeab3202a4ea0e81b365c07311/pyamg-5.3.0-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0116814d99c2d2bb52617b0848a62b5b4dad0cc381096ee65f5a382fe356d414",
                "md5": "815303dd1cd8bee80a33b38c4f7c5d5f",
                "sha256": "d43fac3c4b5f2195716d1630bf7e7123bd1cc40f61d78cb8f257876a9816eb6a"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "815303dd1cd8bee80a33b38c4f7c5d5f",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1555492,
            "upload_time": "2025-08-24T02:05:45",
            "upload_time_iso_8601": "2025-08-24T02:05:45.307582Z",
            "url": "https://files.pythonhosted.org/packages/01/16/814d99c2d2bb52617b0848a62b5b4dad0cc381096ee65f5a382fe356d414/pyamg-5.3.0-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e57f3e724b274f4dce9934f05f5df76ef17b4312dbffda11cb24b37ba47ada39",
                "md5": "631589e6c1fa0cb15afbf45a43b596b5",
                "sha256": "6aff801a44a5eac40ffc171e326467daa571ddc93511db7c35a17150b8bed77a"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "631589e6c1fa0cb15afbf45a43b596b5",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1673450,
            "upload_time": "2025-08-24T02:05:46",
            "upload_time_iso_8601": "2025-08-24T02:05:46.948369Z",
            "url": "https://files.pythonhosted.org/packages/e5/7f/3e724b274f4dce9934f05f5df76ef17b4312dbffda11cb24b37ba47ada39/pyamg-5.3.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2c6f603ade45abb6ef8fdc40884cb246733efe110db2563c54fd19f7dc240832",
                "md5": "4a746c79f1108280cb1969a4d7c31a59",
                "sha256": "661f510311fbfa03b8b317ce9cdb6602902321dd936bcc975ee94bfe43eacb72"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp312-cp312-macosx_10_13_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4a746c79f1108280cb1969a4d7c31a59",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1852410,
            "upload_time": "2025-08-24T02:05:48",
            "upload_time_iso_8601": "2025-08-24T02:05:48.601644Z",
            "url": "https://files.pythonhosted.org/packages/2c/6f/603ade45abb6ef8fdc40884cb246733efe110db2563c54fd19f7dc240832/pyamg-5.3.0-cp312-cp312-macosx_10_13_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6bc4ae346f844d4e08a15b9178707ced39de3f92c4e1b0447d0a9c5ccd24eaac",
                "md5": "ba019145c4dd0036f7e538ec5b366f53",
                "sha256": "d7d38303310e8551ae737898577c6ec69a1ee0fa4baf95f525c86f0071d94260"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "ba019145c4dd0036f7e538ec5b366f53",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1763595,
            "upload_time": "2025-08-24T02:05:50",
            "upload_time_iso_8601": "2025-08-24T02:05:50.550365Z",
            "url": "https://files.pythonhosted.org/packages/6b/c4/ae346f844d4e08a15b9178707ced39de3f92c4e1b0447d0a9c5ccd24eaac/pyamg-5.3.0-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "db451c03a50699d1ce96f5a3f54755c3bdd575e459f8ba2c66eba3365881584c",
                "md5": "15b738467e5e75bd91764cb2d8c5f03b",
                "sha256": "2a69c7974b26b1d5cd5bc0e371c565239199e9032b2ceb97190d492cd6498367"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "15b738467e5e75bd91764cb2d8c5f03b",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1899545,
            "upload_time": "2025-08-24T02:05:52",
            "upload_time_iso_8601": "2025-08-24T02:05:52.522612Z",
            "url": "https://files.pythonhosted.org/packages/db/45/1c03a50699d1ce96f5a3f54755c3bdd575e459f8ba2c66eba3365881584c/pyamg-5.3.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ff16d703720aeaf57eca57867993b57d969ed1bc9675a93c82606663587aa285",
                "md5": "66f2acd4591a98e1b581d0e74c38e597",
                "sha256": "4a6de101435d11645293f83b23c22830c372100d13e6d0bcb8d1abd3e92c88c8"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "66f2acd4591a98e1b581d0e74c38e597",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 2943354,
            "upload_time": "2025-08-24T02:05:54",
            "upload_time_iso_8601": "2025-08-24T02:05:54.065347Z",
            "url": "https://files.pythonhosted.org/packages/ff/16/d703720aeaf57eca57867993b57d969ed1bc9675a93c82606663587aa285/pyamg-5.3.0-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7984cefaabc44798ba7df2e806f4eb06ea435fe627886b40f312d263aaa7b76f",
                "md5": "c77b3fb2f4fe18f94e027bfe63a7cf44",
                "sha256": "0561b942b7b8a35700842077a2b6a228510ae8fcc402862bd3f60dc7d2cd75f4"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp312-cp312-win32.whl",
            "has_sig": false,
            "md5_digest": "c77b3fb2f4fe18f94e027bfe63a7cf44",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1563969,
            "upload_time": "2025-08-24T02:05:55",
            "upload_time_iso_8601": "2025-08-24T02:05:55.662037Z",
            "url": "https://files.pythonhosted.org/packages/79/84/cefaabc44798ba7df2e806f4eb06ea435fe627886b40f312d263aaa7b76f/pyamg-5.3.0-cp312-cp312-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9d8bff8c56c1f7a7997c7988c84bc55bc34b336b862531fbf88d3a8c5aa3fe5f",
                "md5": "fc1596899fb42c10f0dc7cdb2ecf08c6",
                "sha256": "dd832b392314c5d4dbb6464f7ba8d788694d253a51b9809af8ade4886d24565f"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "fc1596899fb42c10f0dc7cdb2ecf08c6",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1681747,
            "upload_time": "2025-08-24T02:05:57",
            "upload_time_iso_8601": "2025-08-24T02:05:57.421024Z",
            "url": "https://files.pythonhosted.org/packages/9d/8b/ff8c56c1f7a7997c7988c84bc55bc34b336b862531fbf88d3a8c5aa3fe5f/pyamg-5.3.0-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "66b9705e5f5177d545114d8ae46245de6bb5b8e3e92d9886a31b7fa475762efd",
                "md5": "a5e543a43a8c3f0d7c5c029f17735ff0",
                "sha256": "c8e70912b1f6fd02c2d40ca10f6e94cce24181a1baa029f084aee74600242686"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp313-cp313-macosx_10_13_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a5e543a43a8c3f0d7c5c029f17735ff0",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1852677,
            "upload_time": "2025-08-24T02:05:59",
            "upload_time_iso_8601": "2025-08-24T02:05:59.084607Z",
            "url": "https://files.pythonhosted.org/packages/66/b9/705e5f5177d545114d8ae46245de6bb5b8e3e92d9886a31b7fa475762efd/pyamg-5.3.0-cp313-cp313-macosx_10_13_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "48399da477018dd8eee06f064eee3d9047089c0621b3bda63ee99f256b27b287",
                "md5": "a895e8336d48bac684bc299e70693fc7",
                "sha256": "e8f771f1ad314534d14d6d8a47d289b191f081abdd1443c491ac93f6d3102be5"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "a895e8336d48bac684bc299e70693fc7",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1763803,
            "upload_time": "2025-08-24T02:06:01",
            "upload_time_iso_8601": "2025-08-24T02:06:01.006665Z",
            "url": "https://files.pythonhosted.org/packages/48/39/9da477018dd8eee06f064eee3d9047089c0621b3bda63ee99f256b27b287/pyamg-5.3.0-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "63f3c13ae1422434baeefe4d4f306a1cc77f024fe96d2abab3c212cfa1bf3ff8",
                "md5": "26f10315cff9168a5efd9df559acfd7f",
                "sha256": "5cc223c66a7aca06fba898eb5e8ede6bb7974a9ddf7b8a98f56143c829e63631"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "26f10315cff9168a5efd9df559acfd7f",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1900343,
            "upload_time": "2025-08-24T02:06:03",
            "upload_time_iso_8601": "2025-08-24T02:06:03.103949Z",
            "url": "https://files.pythonhosted.org/packages/63/f3/c13ae1422434baeefe4d4f306a1cc77f024fe96d2abab3c212cfa1bf3ff8/pyamg-5.3.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c98613b27316cf5f984720b736b58d7a0d8bf94870b99a546a0137f53f36924c",
                "md5": "117742ecf33228583216ac79e1868dae",
                "sha256": "fddf30940d422d97a24b6211e3405bf707688a94d0683780ae40073209c3aa6d"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp313-cp313-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "117742ecf33228583216ac79e1868dae",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 2946401,
            "upload_time": "2025-08-24T02:06:05",
            "upload_time_iso_8601": "2025-08-24T02:06:05.101574Z",
            "url": "https://files.pythonhosted.org/packages/c9/86/13b27316cf5f984720b736b58d7a0d8bf94870b99a546a0137f53f36924c/pyamg-5.3.0-cp313-cp313-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "96e2ac14da5a3df18652f651788bf8eda9dcf99a485787ccb28add2fcd5d8eda",
                "md5": "93cb8a41c1f8d3cec5ac5f8b158c4059",
                "sha256": "6f7ea204aafc7e57a1900d47067430b059954d293a11025aea8616e5b6fba493"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp313-cp313-win32.whl",
            "has_sig": false,
            "md5_digest": "93cb8a41c1f8d3cec5ac5f8b158c4059",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1564120,
            "upload_time": "2025-08-24T02:06:06",
            "upload_time_iso_8601": "2025-08-24T02:06:06.688010Z",
            "url": "https://files.pythonhosted.org/packages/96/e2/ac14da5a3df18652f651788bf8eda9dcf99a485787ccb28add2fcd5d8eda/pyamg-5.3.0-cp313-cp313-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d5b472f17561584b51d9c9ca121b5307699eb6aa8300c812a31c8b4ea4ad9d2a",
                "md5": "1310c8db45c7af7c40286b8a81f13580",
                "sha256": "3965844194dc15be5c9d7198086b58496c2833e40e60b1133ab340d24fac950c"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1310c8db45c7af7c40286b8a81f13580",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 1681868,
            "upload_time": "2025-08-24T02:06:08",
            "upload_time_iso_8601": "2025-08-24T02:06:08.388388Z",
            "url": "https://files.pythonhosted.org/packages/d5/b4/72f17561584b51d9c9ca121b5307699eb6aa8300c812a31c8b4ea4ad9d2a/pyamg-5.3.0-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "54f1e7f0466af00dc59b6592f03499a8ca1c839d5265a045d0b010b574f67143",
                "md5": "17ae5f3ee1d371b21a5f423e709b1deb",
                "sha256": "5323d0f1a4cd999be246a90d580c9e1e9b584b98887f6298d397611087ef860b"
            },
            "downloads": -1,
            "filename": "pyamg-5.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "17ae5f3ee1d371b21a5f423e709b1deb",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 4161140,
            "upload_time": "2025-08-24T02:06:10",
            "upload_time_iso_8601": "2025-08-24T02:06:10.133808Z",
            "url": "https://files.pythonhosted.org/packages/54/f1/e7f0466af00dc59b6592f03499a8ca1c839d5265a045d0b010b574f67143/pyamg-5.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-24 02:06:10",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pyamg",
    "github_project": "pyamg",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "numpy",
            "specs": []
        },
        {
            "name": "scipy",
            "specs": [
                [
                    ">=",
                    "1.11.0"
                ]
            ]
        }
    ],
    "lcname": "pyamg"
}
        
Elapsed time: 3.94260s