memray


Namememray JSON
Version 1.11.0 PyPI version JSON
download
home_pagehttps://github.com/bloomberg/memray
SummaryA memory profiler for Python applications
upload_time2023-12-04 20:38:45
maintainer
docs_urlNone
authorPablo Galindo Salgado
requires_python>=3.7.0
licenseApache 2.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <p align="center">
<img src="https://raw.githubusercontent.com/bloomberg/memray/main/docs/_static/images/logo.png" width="70%">
</p>

---

![OS Linux](https://img.shields.io/badge/OS-Linux-blue)
![OS MacOS](https://img.shields.io/badge/OS-MacOs-blue)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/memray)
![PyPI - Implementation](https://img.shields.io/pypi/implementation/memray)
![PyPI](https://img.shields.io/pypi/v/memray)
![PyPI - Downloads](https://img.shields.io/pypi/dm/memray)
[![Conda Version](https://img.shields.io/conda/vn/conda-forge/memray.svg)](https://anaconda.org/conda-forge/memray)
[![Tests](https://github.com/bloomberg/memray/actions/workflows/build.yml/badge.svg)](https://github.com/bloomberg/memray/actions/workflows/build.yml)
![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)

<p align="center"><img src="https://raw.githubusercontent.com/bloomberg/memray/main/docs/_static/images/output.png" alt="Memray output"></p>

Memray is a memory profiler for Python. It can track memory allocations in Python code, in native extension
modules, and in the Python interpreter itself. It can generate several different types of reports to help you
analyze the captured memory usage data. While commonly used as a CLI tool, it can also be used as a library to
perform more fine-grained profiling tasks.

Notable features:

- ๐Ÿ•ต๏ธโ€โ™€๏ธ Traces every function call so it can accurately represent the call stack, unlike sampling profilers.
- โ„ญ Also handles native calls in C/C++ libraries so the entire call stack is present in the results.
- ๐ŸŽ Blazing fast! Profiling slows the application only slightly. Tracking native code is somewhat slower,
  but this can be enabled or disabled on demand.
- ๐Ÿ“ˆ It can generate various reports about the collected memory usage data, like flame graphs.
- ๐Ÿงต Works with Python threads.
- ๐Ÿ‘ฝ๐Ÿงต Works with native-threads (e.g. C++ threads in C extensions).

Memray can help with the following problems:

- Analyze allocations in applications to help discover the cause of high memory usage.
- Find memory leaks.
- Find hotspots in code that cause a lot of allocations.

> **Note**
> Memray only works on Linux and MacOS, and cannot be installed on other platforms.

<p align="center">
<img src="https://raw.githubusercontent.com/bloomberg/memray/main/docs/_static/images/quotes.png" width="100%">
</p>

# Help us improve Memray!

We are constantly looking for feedback from our awesome community โค๏ธ. If you
have used Memray to solve a problem, profile an application, find a memory leak
or anything else, please let us know! We would love to hear about your
experience and how Memray helped you.

Please, consider writing your story in the [Success
Stories discussion page](https://github.com/bloomberg/memray/discussions/226).

It really makes a difference!

# Installation

Memray requires Python 3.7+ and can be easily installed using most common Python
packaging tools. We recommend installing the latest stable release from
[PyPI](https://pypi.org/project/memray/) with pip:

```shell
    python3 -m pip install memray
```

Notice that Memray contains a C extension so releases are distributed as binary
wheels as well as the source code. If a binary wheel is not available for your system
(Linux x86/x64 or macOS), you'll need to ensure that all the dependencies are satisfied on the
system where you are doing the installation.

## Building from source

If you wish to build Memray from source you need the following binary dependencies in your system:

- libunwind (for Linux)
- liblz4

Check your package manager on how to install these dependencies (for example `apt-get install libunwind-dev liblz4-dev` in Debian-based systems
or `brew install lz4` in MacOS). Note that you may need to teach the compiler where to find the header and library files of the dependencies. For
example, in MacOS with `brew` you may need to run:

```shell
export CFLAGS="-I$(brew --prefix lz4)/include" LDFLAGS="-L$(brew --prefix lz4)/lib -Wl,-rpath,$(brew --prefix lz4)/lib"
```

before installing `memray`. Check the documentation of your package manager to know the location of the header and library
files for more detailed information.

If you are building on MacOS, you will also need to set the deployment target.

```shell
export MACOSX_DEPLOYMENT_TARGET=10.14
```

Once you have the binary dependencies installed, you can clone the repository and follow with the normal building process:

```shell
git clone git@github.com:bloomberg/memray.git memray
cd memray
python3 -m venv ../memray-env/  # just an example, put this wherever you want
source ../memray-env/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -e . -r requirements-test.txt -r requirements-extra.txt
```

This will install Memray in the virtual environment in development mode (the `-e` of the last `pip install` command).

If you plan to contribute back, you should install the pre-commit hooks:

```shell
pre-commit install
```

This will ensure that your contribution passes our linting checks.

# Documentation

You can find the latest documentation available [here](https://bloomberg.github.io/memray/).

# Usage

There are many ways to use Memray. The easiest way is to use it as a command line tool to run your script, application, or library.

```
usage: memray [-h] [-v] {run,flamegraph,table,live,tree,parse,summary,stats} ...

Memory profiler for Python applications

Run `memray run` to generate a memory profile report, then use a reporter command
such as `memray flamegraph` or `memray table` to convert the results into HTML.

Example:

    $ python3 -m memray run -o output.bin my_script.py
    $ python3 -m memray flamegraph output.bin

positional arguments:
  {run,flamegraph,table,live,tree,parse,summary,stats}
                        Mode of operation
    run                 Run the specified application and track memory usage
    flamegraph          Generate an HTML flame graph for peak memory usage
    table               Generate an HTML table with all records in the peak memory usage
    live                Remotely monitor allocations in a text-based interface
    tree                Generate a tree view in the terminal for peak memory usage
    parse               Debug a results file by parsing and printing each record in it
    summary             Generate a terminal-based summary report of the functions that allocate most memory
    stats               Generate high level stats of the memory usage in the terminal

optional arguments:
  -h, --help            Show this help message and exit
  -v, --verbose         Increase verbosity. Option is additive and can be specified up to 3 times
  -V, --version         Displays the current version of Memray

Please submit feedback, ideas, and bug reports by filing a new issue at https://github.com/bloomberg/memray/issues
```

To use Memray over a script or a single python file you can use

```shell
python3 -m memray run my_script.py
```

If you normally run your application with `python3 -m my_module`, you can use the `-m` flag with `memray run`:

```shell
python3 -m memray run -m my_module
```

You can also invoke Memray as a command line tool without having to use `-m` to invoke it as a module:

```shell
memray run my_script.py
memray run -m my_module
```

The output will be a binary file (like `memray-my_script.2369.bin`) that you can analyze in different ways. One way is to use the `memray flamegraph` command to generate a flame graph:

```shell
memray flamegraph my_script.2369.bin
```

This will produce an HTML file with a flame graph of the memory usage that you can inspect with your favorite browser. There are multiple other reporters that you can use to generate other types of reports, some of them generating terminal-based output and some of them generating HTML files. Here is an example of a Memray flamegraph:

<img src="https://github.com/bloomberg/memray/blob/main/docs/_static/images/flamegraph_example.png?raw=true" align="center"/>

## Pytest plugin

If you want an easy and convenient way to use `memray` in your test suite, you can consider using [pytest-memray](https://github.com/bloomberg/pytest-memray). Once installed, this pytest plugin allows you to simply add `--memray` to the command line invocation:

```shell
pytest --memray tests/
```

And will automatically get a report like this:

```
python3 -m pytest tests --memray
=============================================================================================================================== test session starts ================================================================================================================================
platform linux -- Python 3.8.10, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: /mypackage, configfile: pytest.ini
plugins: cov-2.12.0, memray-0.1.0
collected 21 items

tests/test_package.py .....................                                                                                                                                                                                                                      [100%]


================================================================================================================================= MEMRAY REPORT ==================================================================================================================================
Allocations results for tests/test_package.py::some_test_that_allocates

	 ๐Ÿ“ฆ Total memory allocated: 24.4MiB
	 ๐Ÿ“ Total allocations: 33929
	 ๐Ÿ“Š Histogram of allocation sizes: |โ–‚   โ–ˆ    |
	 ๐Ÿฅ‡ Biggest allocating functions:
		- parse:/opt/bb/lib/python3.8/ast.py:47 -> 3.0MiB
		- parse:/opt/bb/lib/python3.8/ast.py:47 -> 2.3MiB
		- _visit:/opt/bb/lib/python3.8/site-packages/astroid/transforms.py:62 -> 576.0KiB
		- parse:/opt/bb/lib/python3.8/ast.py:47 -> 517.6KiB
		- __init__:/opt/bb/lib/python3.8/site-packages/astroid/node_classes.py:1353 -> 512.0KiB
```

You can also use some of the included markers to make tests
fail if the execution of said test allocates more memory than allowed:

```python
@pytest.mark.limit_memory("24 MB")
def test_foobar():
    # do some stuff that allocates memory
```

To learn more on how the plugin can be used and configured check out [the plugin documentation](https://pytest-memray.readthedocs.io).

# Native mode

Memray supports tracking native C/C++ functions as well as Python functions. This can be especially useful when profiling applications that have C extensions (such as `numpy` or `pandas`) as this gives a holistic vision of how much memory is allocated by the extension and how much is allocated by Python itself.

To activate native tracking, you need to provide the `--native` argument when using the `run` subcommand:

```shell
memray run --native my_script.py
```

This will automatically add native information to the result file and it will be automatically used by any reporter (such the flamegraph or table reporters). This means that instead of seeing this in the flamegraphs:

<img src="https://github.com/bloomberg/memray/blob/main/docs/_static/images/mandelbrot_operation_non_native.png?raw=true" align="center"/>

You will now be able to see what's happening inside the Python calls:

<img src="https://github.com/bloomberg/memray/blob/main/docs/_static/images/mandelbrot_operation_native.png?raw=true" align="center"/>

Reporters display native frames in a different color than Python frames. They can also be distinguished by looking at the file location in a frame (Python frames will generally be generated from files with a .py extension while native frames will be generated from files with extensions like .c, .cpp or .h).

# Live mode

<p align="center"><img src="https://raw.githubusercontent.com/bloomberg/memray/main/docs/_static/images/live_animated.webp" alt="Memray output"></p>

Memray's live mode runs a script or a module in a terminal-based interface that allows you to interactively inspect its memory usage while it runs. This is useful for debugging scripts or modules that take a long time to run or that exhibit multiple complex memory patterns. You can use the `--live` option to run the script or module in live mode:

```shell
    memray run --live my_script.py
```

or if you want to execute a module:

```shell
    memray run --live -m my_module
```

This will show the following TUI interface in your terminal:

<img src="https://raw.githubusercontent.com/bloomberg/memray/main/docs/_static/images/live_running.png" align="center"/>

## Sorting results

The results are displayed in descending order of total memory allocated by a function and the subfunctions called by it. You can change the ordering with the following keyboard shortcuts:

- t (default): Sort by total memory

- o: Sort by own memory

- a: Sort by allocation count

In most terminals you can also click the "Sort by Total", "Sort by Own", and "Sort by Allocations" buttons on the footer.

The sorted column's heading is underlined.

## Viewing different threads

By default, the live command will present the main thread of the program. You can look at different threads of the program by pressing the greater than and less than keys, `<` and `>`. In most terminals you can also click the "Previous Thread" and "Next Thread" buttons on the footer.

<img src="https://github.com/bloomberg/memray/blob/main/docs/_static/images/live_different_thread.png?raw=true" align="center"/>

# API

In addition to tracking Python processes from a CLI using `memray run`, it is also possible to programmatically enable tracking within a running Python program.

```py
import memray

with memray.Tracker("output_file.bin"):
    print("Allocations will be tracked until the with block ends")
```

For details, see the [API documentation](https://bloomberg.github.io/memray/api.html).

# License

Memray is Apache-2.0 licensed, as found in the [LICENSE](LICENSE) file.

# Code of Conduct

- [Code of Conduct](https://github.com/bloomberg/.github/blob/main/CODE_OF_CONDUCT.md)

This project has adopted a Code of Conduct. If you have any concerns about the Code, or behavior that you have experienced in the project, please contact us at opensource@bloomberg.net.

# Security Policy

- [Security Policy](https://github.com/bloomberg/memray/security/policy)

If you believe you have identified a security vulnerability in this project, please send an email to the project team at opensource@bloomberg.net, detailing the suspected issue and any methods you've found to reproduce it.

Please do NOT open an issue in the GitHub repository, as we'd prefer to keep vulnerability reports private until we've had an opportunity to review and address them.

# Contributing

We welcome your contributions to help us improve and extend this project!

Below you will find some basic steps required to be able to contribute to the project. If you have any questions about this process or any other aspect of contributing to a Bloomberg open source project, feel free to send an email to opensource@bloomberg.net and we'll get your questions answered as quickly as we can.

## Contribution Licensing

Since this project is distributed under the terms of an [open source license](LICENSE), contributions that
you make are licensed under the same terms. In order for us to be able to accept your contributions,
we will need explicit confirmation from you that you are able and willing to provide them under
these terms, and the mechanism we use to do this is called a Developer's Certificate of Origin
[(DCO)](https://github.com/bloomberg/.github/blob/main/DCO.md). This is very similar to the process
used by the Linux kernel, Samba, and many other major open source projects.

To participate under these terms, all that you must do is include a line like the following as the
last line of the commit message for each commit in your contribution:

    Signed-Off-By: Random J. Developer <random@developer.example.org>

The simplest way to accomplish this is to add `-s` or `--signoff` to your `git commit` command.

You must use your real name (sorry, no pseudonyms, and no anonymous contributions).

## Steps

- Create an Issue, select 'Feature Request', and explain the proposed change.
- Follow the guidelines in the issue template presented to you.
- Submit the Issue.
- Submit a Pull Request and link it to the Issue by including "#<issue number>" in the Pull Request summary.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/bloomberg/memray",
    "name": "memray",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7.0",
    "maintainer_email": "",
    "keywords": "",
    "author": "Pablo Galindo Salgado",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/b9/3b/0af451f20f8a72b3dcfdf65c6d5639469a92db3f333e3c344a6b5cc12732/memray-1.11.0.tar.gz",
    "platform": null,
    "description": "<p align=\"center\">\n<img src=\"https://raw.githubusercontent.com/bloomberg/memray/main/docs/_static/images/logo.png\" width=\"70%\">\n</p>\n\n---\n\n![OS Linux](https://img.shields.io/badge/OS-Linux-blue)\n![OS MacOS](https://img.shields.io/badge/OS-MacOs-blue)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/memray)\n![PyPI - Implementation](https://img.shields.io/pypi/implementation/memray)\n![PyPI](https://img.shields.io/pypi/v/memray)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/memray)\n[![Conda Version](https://img.shields.io/conda/vn/conda-forge/memray.svg)](https://anaconda.org/conda-forge/memray)\n[![Tests](https://github.com/bloomberg/memray/actions/workflows/build.yml/badge.svg)](https://github.com/bloomberg/memray/actions/workflows/build.yml)\n![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)\n\n<p align=\"center\"><img src=\"https://raw.githubusercontent.com/bloomberg/memray/main/docs/_static/images/output.png\" alt=\"Memray output\"></p>\n\nMemray is a memory profiler for Python. It can track memory allocations in Python code, in native extension\nmodules, and in the Python interpreter itself. It can generate several different types of reports to help you\nanalyze the captured memory usage data. While commonly used as a CLI tool, it can also be used as a library to\nperform more fine-grained profiling tasks.\n\nNotable features:\n\n- \ud83d\udd75\ufe0f\u200d\u2640\ufe0f Traces every function call so it can accurately represent the call stack, unlike sampling profilers.\n- \u212d Also handles native calls in C/C++ libraries so the entire call stack is present in the results.\n- \ud83c\udfce Blazing fast! Profiling slows the application only slightly. Tracking native code is somewhat slower,\n  but this can be enabled or disabled on demand.\n- \ud83d\udcc8 It can generate various reports about the collected memory usage data, like flame graphs.\n- \ud83e\uddf5 Works with Python threads.\n- \ud83d\udc7d\ud83e\uddf5 Works with native-threads (e.g. C++ threads in C extensions).\n\nMemray can help with the following problems:\n\n- Analyze allocations in applications to help discover the cause of high memory usage.\n- Find memory leaks.\n- Find hotspots in code that cause a lot of allocations.\n\n> **Note**\n> Memray only works on Linux and MacOS, and cannot be installed on other platforms.\n\n<p align=\"center\">\n<img src=\"https://raw.githubusercontent.com/bloomberg/memray/main/docs/_static/images/quotes.png\" width=\"100%\">\n</p>\n\n# Help us improve Memray!\n\nWe are constantly looking for feedback from our awesome community \u2764\ufe0f. If you\nhave used Memray to solve a problem, profile an application, find a memory leak\nor anything else, please let us know! We would love to hear about your\nexperience and how Memray helped you.\n\nPlease, consider writing your story in the [Success\nStories discussion page](https://github.com/bloomberg/memray/discussions/226).\n\nIt really makes a difference!\n\n# Installation\n\nMemray requires Python 3.7+ and can be easily installed using most common Python\npackaging tools. We recommend installing the latest stable release from\n[PyPI](https://pypi.org/project/memray/) with pip:\n\n```shell\n    python3 -m pip install memray\n```\n\nNotice that Memray contains a C extension so releases are distributed as binary\nwheels as well as the source code. If a binary wheel is not available for your system\n(Linux x86/x64 or macOS), you'll need to ensure that all the dependencies are satisfied on the\nsystem where you are doing the installation.\n\n## Building from source\n\nIf you wish to build Memray from source you need the following binary dependencies in your system:\n\n- libunwind (for Linux)\n- liblz4\n\nCheck your package manager on how to install these dependencies (for example `apt-get install libunwind-dev liblz4-dev` in Debian-based systems\nor `brew install lz4` in MacOS). Note that you may need to teach the compiler where to find the header and library files of the dependencies. For\nexample, in MacOS with `brew` you may need to run:\n\n```shell\nexport CFLAGS=\"-I$(brew --prefix lz4)/include\" LDFLAGS=\"-L$(brew --prefix lz4)/lib -Wl,-rpath,$(brew --prefix lz4)/lib\"\n```\n\nbefore installing `memray`. Check the documentation of your package manager to know the location of the header and library\nfiles for more detailed information.\n\nIf you are building on MacOS, you will also need to set the deployment target.\n\n```shell\nexport MACOSX_DEPLOYMENT_TARGET=10.14\n```\n\nOnce you have the binary dependencies installed, you can clone the repository and follow with the normal building process:\n\n```shell\ngit clone git@github.com:bloomberg/memray.git memray\ncd memray\npython3 -m venv ../memray-env/  # just an example, put this wherever you want\nsource ../memray-env/bin/activate\npython3 -m pip install --upgrade pip\npython3 -m pip install -e . -r requirements-test.txt -r requirements-extra.txt\n```\n\nThis will install Memray in the virtual environment in development mode (the `-e` of the last `pip install` command).\n\nIf you plan to contribute back, you should install the pre-commit hooks:\n\n```shell\npre-commit install\n```\n\nThis will ensure that your contribution passes our linting checks.\n\n# Documentation\n\nYou can find the latest documentation available [here](https://bloomberg.github.io/memray/).\n\n# Usage\n\nThere are many ways to use Memray. The easiest way is to use it as a command line tool to run your script, application, or library.\n\n```\nusage: memray [-h] [-v] {run,flamegraph,table,live,tree,parse,summary,stats} ...\n\nMemory profiler for Python applications\n\nRun `memray run` to generate a memory profile report, then use a reporter command\nsuch as `memray flamegraph` or `memray table` to convert the results into HTML.\n\nExample:\n\n    $ python3 -m memray run -o output.bin my_script.py\n    $ python3 -m memray flamegraph output.bin\n\npositional arguments:\n  {run,flamegraph,table,live,tree,parse,summary,stats}\n                        Mode of operation\n    run                 Run the specified application and track memory usage\n    flamegraph          Generate an HTML flame graph for peak memory usage\n    table               Generate an HTML table with all records in the peak memory usage\n    live                Remotely monitor allocations in a text-based interface\n    tree                Generate a tree view in the terminal for peak memory usage\n    parse               Debug a results file by parsing and printing each record in it\n    summary             Generate a terminal-based summary report of the functions that allocate most memory\n    stats               Generate high level stats of the memory usage in the terminal\n\noptional arguments:\n  -h, --help            Show this help message and exit\n  -v, --verbose         Increase verbosity. Option is additive and can be specified up to 3 times\n  -V, --version         Displays the current version of Memray\n\nPlease submit feedback, ideas, and bug reports by filing a new issue at https://github.com/bloomberg/memray/issues\n```\n\nTo use Memray over a script or a single python file you can use\n\n```shell\npython3 -m memray run my_script.py\n```\n\nIf you normally run your application with `python3 -m my_module`, you can use the `-m` flag with `memray run`:\n\n```shell\npython3 -m memray run -m my_module\n```\n\nYou can also invoke Memray as a command line tool without having to use `-m` to invoke it as a module:\n\n```shell\nmemray run my_script.py\nmemray run -m my_module\n```\n\nThe output will be a binary file (like `memray-my_script.2369.bin`) that you can analyze in different ways. One way is to use the `memray flamegraph` command to generate a flame graph:\n\n```shell\nmemray flamegraph my_script.2369.bin\n```\n\nThis will produce an HTML file with a flame graph of the memory usage that you can inspect with your favorite browser. There are multiple other reporters that you can use to generate other types of reports, some of them generating terminal-based output and some of them generating HTML files. Here is an example of a Memray flamegraph:\n\n<img src=\"https://github.com/bloomberg/memray/blob/main/docs/_static/images/flamegraph_example.png?raw=true\" align=\"center\"/>\n\n## Pytest plugin\n\nIf you want an easy and convenient way to use `memray` in your test suite, you can consider using [pytest-memray](https://github.com/bloomberg/pytest-memray). Once installed, this pytest plugin allows you to simply add `--memray` to the command line invocation:\n\n```shell\npytest --memray tests/\n```\n\nAnd will automatically get a report like this:\n\n```\npython3 -m pytest tests --memray\n=============================================================================================================================== test session starts ================================================================================================================================\nplatform linux -- Python 3.8.10, pytest-6.2.4, py-1.10.0, pluggy-0.13.1\nrootdir: /mypackage, configfile: pytest.ini\nplugins: cov-2.12.0, memray-0.1.0\ncollected 21 items\n\ntests/test_package.py .....................                                                                                                                                                                                                                      [100%]\n\n\n================================================================================================================================= MEMRAY REPORT ==================================================================================================================================\nAllocations results for tests/test_package.py::some_test_that_allocates\n\n\t \ud83d\udce6 Total memory allocated: 24.4MiB\n\t \ud83d\udccf Total allocations: 33929\n\t \ud83d\udcca Histogram of allocation sizes: |\u2582   \u2588    |\n\t \ud83e\udd47 Biggest allocating functions:\n\t\t- parse:/opt/bb/lib/python3.8/ast.py:47 -> 3.0MiB\n\t\t- parse:/opt/bb/lib/python3.8/ast.py:47 -> 2.3MiB\n\t\t- _visit:/opt/bb/lib/python3.8/site-packages/astroid/transforms.py:62 -> 576.0KiB\n\t\t- parse:/opt/bb/lib/python3.8/ast.py:47 -> 517.6KiB\n\t\t- __init__:/opt/bb/lib/python3.8/site-packages/astroid/node_classes.py:1353 -> 512.0KiB\n```\n\nYou can also use some of the included markers to make tests\nfail if the execution of said test allocates more memory than allowed:\n\n```python\n@pytest.mark.limit_memory(\"24 MB\")\ndef test_foobar():\n    # do some stuff that allocates memory\n```\n\nTo learn more on how the plugin can be used and configured check out [the plugin documentation](https://pytest-memray.readthedocs.io).\n\n# Native mode\n\nMemray supports tracking native C/C++ functions as well as Python functions. This can be especially useful when profiling applications that have C extensions (such as `numpy` or `pandas`) as this gives a holistic vision of how much memory is allocated by the extension and how much is allocated by Python itself.\n\nTo activate native tracking, you need to provide the `--native` argument when using the `run` subcommand:\n\n```shell\nmemray run --native my_script.py\n```\n\nThis will automatically add native information to the result file and it will be automatically used by any reporter (such the flamegraph or table reporters). This means that instead of seeing this in the flamegraphs:\n\n<img src=\"https://github.com/bloomberg/memray/blob/main/docs/_static/images/mandelbrot_operation_non_native.png?raw=true\" align=\"center\"/>\n\nYou will now be able to see what's happening inside the Python calls:\n\n<img src=\"https://github.com/bloomberg/memray/blob/main/docs/_static/images/mandelbrot_operation_native.png?raw=true\" align=\"center\"/>\n\nReporters display native frames in a different color than Python frames. They can also be distinguished by looking at the file location in a frame (Python frames will generally be generated from files with a .py extension while native frames will be generated from files with extensions like .c, .cpp or .h).\n\n# Live mode\n\n<p align=\"center\"><img src=\"https://raw.githubusercontent.com/bloomberg/memray/main/docs/_static/images/live_animated.webp\" alt=\"Memray output\"></p>\n\nMemray's live mode runs a script or a module in a terminal-based interface that allows you to interactively inspect its memory usage while it runs. This is useful for debugging scripts or modules that take a long time to run or that exhibit multiple complex memory patterns. You can use the `--live` option to run the script or module in live mode:\n\n```shell\n    memray run --live my_script.py\n```\n\nor if you want to execute a module:\n\n```shell\n    memray run --live -m my_module\n```\n\nThis will show the following TUI interface in your terminal:\n\n<img src=\"https://raw.githubusercontent.com/bloomberg/memray/main/docs/_static/images/live_running.png\" align=\"center\"/>\n\n## Sorting results\n\nThe results are displayed in descending order of total memory allocated by a function and the subfunctions called by it. You can change the ordering with the following keyboard shortcuts:\n\n- t (default): Sort by total memory\n\n- o: Sort by own memory\n\n- a: Sort by allocation count\n\nIn most terminals you can also click the \"Sort by Total\", \"Sort by Own\", and \"Sort by Allocations\" buttons on the footer.\n\nThe sorted column's heading is underlined.\n\n## Viewing different threads\n\nBy default, the live command will present the main thread of the program. You can look at different threads of the program by pressing the greater than and less than keys, `<` and `>`. In most terminals you can also click the \"Previous Thread\" and \"Next Thread\" buttons on the footer.\n\n<img src=\"https://github.com/bloomberg/memray/blob/main/docs/_static/images/live_different_thread.png?raw=true\" align=\"center\"/>\n\n# API\n\nIn addition to tracking Python processes from a CLI using `memray run`, it is also possible to programmatically enable tracking within a running Python program.\n\n```py\nimport memray\n\nwith memray.Tracker(\"output_file.bin\"):\n    print(\"Allocations will be tracked until the with block ends\")\n```\n\nFor details, see the [API documentation](https://bloomberg.github.io/memray/api.html).\n\n# License\n\nMemray is Apache-2.0 licensed, as found in the [LICENSE](LICENSE) file.\n\n# Code of Conduct\n\n- [Code of Conduct](https://github.com/bloomberg/.github/blob/main/CODE_OF_CONDUCT.md)\n\nThis project has adopted a Code of Conduct. If you have any concerns about the Code, or behavior that you have experienced in the project, please contact us at opensource@bloomberg.net.\n\n# Security Policy\n\n- [Security Policy](https://github.com/bloomberg/memray/security/policy)\n\nIf you believe you have identified a security vulnerability in this project, please send an email to the project team at opensource@bloomberg.net, detailing the suspected issue and any methods you've found to reproduce it.\n\nPlease do NOT open an issue in the GitHub repository, as we'd prefer to keep vulnerability reports private until we've had an opportunity to review and address them.\n\n# Contributing\n\nWe welcome your contributions to help us improve and extend this project!\n\nBelow you will find some basic steps required to be able to contribute to the project. If you have any questions about this process or any other aspect of contributing to a Bloomberg open source project, feel free to send an email to opensource@bloomberg.net and we'll get your questions answered as quickly as we can.\n\n## Contribution Licensing\n\nSince this project is distributed under the terms of an [open source license](LICENSE), contributions that\nyou make are licensed under the same terms. In order for us to be able to accept your contributions,\nwe will need explicit confirmation from you that you are able and willing to provide them under\nthese terms, and the mechanism we use to do this is called a Developer's Certificate of Origin\n[(DCO)](https://github.com/bloomberg/.github/blob/main/DCO.md). This is very similar to the process\nused by the Linux kernel, Samba, and many other major open source projects.\n\nTo participate under these terms, all that you must do is include a line like the following as the\nlast line of the commit message for each commit in your contribution:\n\n    Signed-Off-By: Random J. Developer <random@developer.example.org>\n\nThe simplest way to accomplish this is to add `-s` or `--signoff` to your `git commit` command.\n\nYou must use your real name (sorry, no pseudonyms, and no anonymous contributions).\n\n## Steps\n\n- Create an Issue, select 'Feature Request', and explain the proposed change.\n- Follow the guidelines in the issue template presented to you.\n- Submit the Issue.\n- Submit a Pull Request and link it to the Issue by including \"#<issue number>\" in the Pull Request summary.\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "A memory profiler for Python applications",
    "version": "1.11.0",
    "project_urls": {
        "Homepage": "https://github.com/bloomberg/memray"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7ec044dc665f8f648a814cff7bd68462c70b28a57ec5c262b56466dde9a0e15c",
                "md5": "7786843dbec0bee4cd553995cc6ea659",
                "sha256": "dd5a91fc0632896b524ad7b121146e991176252cd072bb06ea2596042232a04f"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp310-cp310-macosx_10_14_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7786843dbec0bee4cd553995cc6ea659",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7.0",
            "size": 866589,
            "upload_time": "2023-12-04T20:37:33",
            "upload_time_iso_8601": "2023-12-04T20:37:33.176736Z",
            "url": "https://files.pythonhosted.org/packages/7e/c0/44dc665f8f648a814cff7bd68462c70b28a57ec5c262b56466dde9a0e15c/memray-1.11.0-cp310-cp310-macosx_10_14_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1bd25136b1e9c52edf384e1ca7e53a4ada8a6ebf6d60d1b5b2eda8c852b089ea",
                "md5": "48c4fd674979f52a7e3c63003da55f7c",
                "sha256": "72df1994a39018c4687a75c1750b7be3bfcd5c0c5e79e9ed73b552d4d5077588"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "48c4fd674979f52a7e3c63003da55f7c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7.0",
            "size": 894180,
            "upload_time": "2023-12-04T20:37:36",
            "upload_time_iso_8601": "2023-12-04T20:37:36.140560Z",
            "url": "https://files.pythonhosted.org/packages/1b/d2/5136b1e9c52edf384e1ca7e53a4ada8a6ebf6d60d1b5b2eda8c852b089ea/memray-1.11.0-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6e59e5c5033acbc54b5db19ed25272f52082c2a646cef22858abbe51d0d23ab4",
                "md5": "573846c86dbcd6b6e7cf78ab33b75f29",
                "sha256": "266736c1471ddfb59d03e6d78f93f55fd0ab2fe800b9929fc5256d9208efc4a2"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl",
            "has_sig": false,
            "md5_digest": "573846c86dbcd6b6e7cf78ab33b75f29",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7.0",
            "size": 3450385,
            "upload_time": "2023-12-04T20:37:37",
            "upload_time_iso_8601": "2023-12-04T20:37:37.576855Z",
            "url": "https://files.pythonhosted.org/packages/6e/59/e5c5033acbc54b5db19ed25272f52082c2a646cef22858abbe51d0d23ab4/memray-1.11.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c83b011996d54fb796d7f2db82c39cb5a084b196850c8f902a4811d7706a63e6",
                "md5": "f3b81e38a04c81ae8e0193b231c5b66a",
                "sha256": "6bf07fef1a66b96126bc0f398e01c3860e59f01eb89b244cfdcc36e70b68edad"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f3b81e38a04c81ae8e0193b231c5b66a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7.0",
            "size": 3431245,
            "upload_time": "2023-12-04T20:37:39",
            "upload_time_iso_8601": "2023-12-04T20:37:39.160412Z",
            "url": "https://files.pythonhosted.org/packages/c8/3b/011996d54fb796d7f2db82c39cb5a084b196850c8f902a4811d7706a63e6/memray-1.11.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6378604afb7c9ed0316363d2b7e140b855ce6745729d362bb838da820a9500de",
                "md5": "287dc5000f17ea49635e4544fe854cbf",
                "sha256": "6e9a74eaa673cf4c87302bd0845586a072dba7fc172a3960af64b1ad5cedf00f"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "287dc5000f17ea49635e4544fe854cbf",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7.0",
            "size": 4723389,
            "upload_time": "2023-12-04T20:37:40",
            "upload_time_iso_8601": "2023-12-04T20:37:40.653517Z",
            "url": "https://files.pythonhosted.org/packages/63/78/604afb7c9ed0316363d2b7e140b855ce6745729d362bb838da820a9500de/memray-1.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6aafeca0e883c4c7d58d5717a0e8786312591d0a1716e37d1cc17a14ed0be507",
                "md5": "d1db39de7fe4b0f9137d68d00311da53",
                "sha256": "eedea42d13b3630faa5591e298659f34e6ead06aa867050def12de6cc03e1a97"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp310-cp310-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d1db39de7fe4b0f9137d68d00311da53",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7.0",
            "size": 3877003,
            "upload_time": "2023-12-04T20:37:42",
            "upload_time_iso_8601": "2023-12-04T20:37:42.412938Z",
            "url": "https://files.pythonhosted.org/packages/6a/af/eca0e883c4c7d58d5717a0e8786312591d0a1716e37d1cc17a14ed0be507/memray-1.11.0-cp310-cp310-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "364219c83402901979fbdb4b9f8f4da854f9ecc421fd6fb99318780868527a4d",
                "md5": "0193a16503e64116b051d4f9b580a9ff",
                "sha256": "9fbb2a1a82e24f0f90a9bb4ca7af6174ce91c5f3b3ce58e0b16361e989ea7cc1"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp311-cp311-macosx_10_14_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0193a16503e64116b051d4f9b580a9ff",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7.0",
            "size": 872017,
            "upload_time": "2023-12-04T20:37:44",
            "upload_time_iso_8601": "2023-12-04T20:37:44.590572Z",
            "url": "https://files.pythonhosted.org/packages/36/42/19c83402901979fbdb4b9f8f4da854f9ecc421fd6fb99318780868527a4d/memray-1.11.0-cp311-cp311-macosx_10_14_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7f4c4c51965ef70265fc81f10e96e08d5738d465d4853b7d384828d466da4562",
                "md5": "e8c497a08651a0e2fb9cde5018f12646",
                "sha256": "6f46e00d4a10a7fb73b560e57689a68ca3661bf969e228093d20fc1313c42f0b"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "e8c497a08651a0e2fb9cde5018f12646",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7.0",
            "size": 897952,
            "upload_time": "2023-12-04T20:37:46",
            "upload_time_iso_8601": "2023-12-04T20:37:46.465959Z",
            "url": "https://files.pythonhosted.org/packages/7f/4c/4c51965ef70265fc81f10e96e08d5738d465d4853b7d384828d466da4562/memray-1.11.0-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8ebe153f0125ed96624c30bd150ce239f65618b48409defeaecc70eb4b06d105",
                "md5": "97601ee9a70261555589581533160c24",
                "sha256": "7824202d23e3060c7a0380e1a9bb6f131f47ee29c6f30b322e844648ea3aa9da"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "97601ee9a70261555589581533160c24",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7.0",
            "size": 4842521,
            "upload_time": "2023-12-04T20:37:48",
            "upload_time_iso_8601": "2023-12-04T20:37:48.511124Z",
            "url": "https://files.pythonhosted.org/packages/8e/be/153f0125ed96624c30bd150ce239f65618b48409defeaecc70eb4b06d105/memray-1.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7af9641573bbc7b83e55e158e10e5ccdefa6d505e4c0d630d7618239b9696424",
                "md5": "348e246df542c2739901ae47d22ecfd5",
                "sha256": "c5b8860e3cc7df4f7f451e043aabe60a3812f99c3e308f0c4c0e7a03d72c1563"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "348e246df542c2739901ae47d22ecfd5",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7.0",
            "size": 4812924,
            "upload_time": "2023-12-04T20:37:50",
            "upload_time_iso_8601": "2023-12-04T20:37:50.116276Z",
            "url": "https://files.pythonhosted.org/packages/7a/f9/641573bbc7b83e55e158e10e5ccdefa6d505e4c0d630d7618239b9696424/memray-1.11.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "085451f6f6a5eb9e328f7cabb2669240230101fc54c2f1d9242f63f1aacbb3cb",
                "md5": "0f4bd90b2ec242f2275bd4e6e7326395",
                "sha256": "3fc83741aedd6daa9c49ecee0a8e0048f278b6eb1ae22bdcf9b4523be7ba7106"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0f4bd90b2ec242f2275bd4e6e7326395",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7.0",
            "size": 4907735,
            "upload_time": "2023-12-04T20:37:51",
            "upload_time_iso_8601": "2023-12-04T20:37:51.808282Z",
            "url": "https://files.pythonhosted.org/packages/08/54/51f6f6a5eb9e328f7cabb2669240230101fc54c2f1d9242f63f1aacbb3cb/memray-1.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "40e353aa39e0ee3b2e9de0ea2d562de722609cb0a10d11b1d2f9834279ea6545",
                "md5": "09c77d1a30a79bc4c802ab03eb7f0abf",
                "sha256": "39bbf9e74c3933a84c22e047920a0f6e2d491ba943a39f4aa041f1c0422c8403"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp311-cp311-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "09c77d1a30a79bc4c802ab03eb7f0abf",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7.0",
            "size": 3883355,
            "upload_time": "2023-12-04T20:37:53",
            "upload_time_iso_8601": "2023-12-04T20:37:53.915574Z",
            "url": "https://files.pythonhosted.org/packages/40/e3/53aa39e0ee3b2e9de0ea2d562de722609cb0a10d11b1d2f9834279ea6545/memray-1.11.0-cp311-cp311-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "05bd4e8945a15f407f253421e796898d9b44fb4e1bc902de1284b5a97d8ef5f3",
                "md5": "78cf73140deb509e9b8a9f4d2bc6bd42",
                "sha256": "0ed869e4a82722a4558da749f39d6079f2ef5e767d1399d2d090b04742e2b3f2"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp312-cp312-macosx_10_14_x86_64.whl",
            "has_sig": false,
            "md5_digest": "78cf73140deb509e9b8a9f4d2bc6bd42",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7.0",
            "size": 866132,
            "upload_time": "2023-12-04T20:37:55",
            "upload_time_iso_8601": "2023-12-04T20:37:55.754561Z",
            "url": "https://files.pythonhosted.org/packages/05/bd/4e8945a15f407f253421e796898d9b44fb4e1bc902de1284b5a97d8ef5f3/memray-1.11.0-cp312-cp312-macosx_10_14_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "391f7697b16cba0d7dbea71a0dce71b672067e383e5cee80668e3167bae9d060",
                "md5": "f94ebdabec589ed9d9ccd3070cb2e6b5",
                "sha256": "ad1f2bb1223759e6b9755b6139087f6bcbaca1718cfed70c31aba0943542b431"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "f94ebdabec589ed9d9ccd3070cb2e6b5",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7.0",
            "size": 892669,
            "upload_time": "2023-12-04T20:37:57",
            "upload_time_iso_8601": "2023-12-04T20:37:57.563239Z",
            "url": "https://files.pythonhosted.org/packages/39/1f/7697b16cba0d7dbea71a0dce71b672067e383e5cee80668e3167bae9d060/memray-1.11.0-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4dea272b04111072249e940482caca81fb9d35fc2f081c9ffb06455092ea7d5e",
                "md5": "3bdff76579680987356d3a7dd87b5826",
                "sha256": "1534520c3c3e6b8234fe13c6d36bd74ab855dc19cef6e9d190a2a0b48fd2d83d"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "3bdff76579680987356d3a7dd87b5826",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7.0",
            "size": 4799922,
            "upload_time": "2023-12-04T20:37:59",
            "upload_time_iso_8601": "2023-12-04T20:37:59.896954Z",
            "url": "https://files.pythonhosted.org/packages/4d/ea/272b04111072249e940482caca81fb9d35fc2f081c9ffb06455092ea7d5e/memray-1.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9d0736e3cb3ffed93ce5ffdb8a84139e87cf7709e972e05b25b7ec12c1c3948b",
                "md5": "44a81fe71dc3fd35385a2e3e3747980c",
                "sha256": "c3dfb2c20fbbb128489f7b9f5bd2704bae6f77dba11c253cccf8eb8299697fe4"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "44a81fe71dc3fd35385a2e3e3747980c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7.0",
            "size": 4801359,
            "upload_time": "2023-12-04T20:38:02",
            "upload_time_iso_8601": "2023-12-04T20:38:02.078074Z",
            "url": "https://files.pythonhosted.org/packages/9d/07/36e3cb3ffed93ce5ffdb8a84139e87cf7709e972e05b25b7ec12c1c3948b/memray-1.11.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f78f0ef3674ac9a1f70bcc61135ae3d2f46a34194a11e9eb4448ad46b6be743e",
                "md5": "b073ebc01f0d539aa768ea7d85ba9244",
                "sha256": "b8e02e8bbe03826c5e65c2cc28760b1d0bc59f9bee6d6769c01e800b50542f5b"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b073ebc01f0d539aa768ea7d85ba9244",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7.0",
            "size": 4881748,
            "upload_time": "2023-12-04T20:38:04",
            "upload_time_iso_8601": "2023-12-04T20:38:04.343724Z",
            "url": "https://files.pythonhosted.org/packages/f7/8f/0ef3674ac9a1f70bcc61135ae3d2f46a34194a11e9eb4448ad46b6be743e/memray-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9d95b3120fbdcec99fe6da6ce9206a4db67abb972c613c106318a858a3ef868a",
                "md5": "473ff1212e8c5079a5acb02197cd1eec",
                "sha256": "0814a234cceaa664184ede2ebada2923e89c6b358b5bb9d71409a35ecae1623b"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp312-cp312-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "473ff1212e8c5079a5acb02197cd1eec",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7.0",
            "size": 3871108,
            "upload_time": "2023-12-04T20:38:07",
            "upload_time_iso_8601": "2023-12-04T20:38:07.239681Z",
            "url": "https://files.pythonhosted.org/packages/9d/95/b3120fbdcec99fe6da6ce9206a4db67abb972c613c106318a858a3ef868a/memray-1.11.0-cp312-cp312-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d9b0187a81ca5cc6834af0bc743bb073015b4d38749e96958947f8d7a357e2c6",
                "md5": "9f66a202e0da63012e4f1bfbfde2c3a1",
                "sha256": "db4ebee46c24212a357641fe9fb893c842bfc66bee25546ff2efe9350e850138"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl",
            "has_sig": false,
            "md5_digest": "9f66a202e0da63012e4f1bfbfde2c3a1",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7.0",
            "size": 3507637,
            "upload_time": "2023-12-04T20:38:08",
            "upload_time_iso_8601": "2023-12-04T20:38:08.984281Z",
            "url": "https://files.pythonhosted.org/packages/d9/b0/187a81ca5cc6834af0bc743bb073015b4d38749e96958947f8d7a357e2c6/memray-1.11.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ff189c1d157580103b92666626d71f3b4c072e5746fe172d75aaa0ade8fdb322",
                "md5": "149414822db528fe670bf81bc8eab337",
                "sha256": "0a5b31192d8a8d44d12320873f231c22e6ea5aed079b880cf21556ab34b3f526"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
            "has_sig": false,
            "md5_digest": "149414822db528fe670bf81bc8eab337",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7.0",
            "size": 3482477,
            "upload_time": "2023-12-04T20:38:11",
            "upload_time_iso_8601": "2023-12-04T20:38:11.323074Z",
            "url": "https://files.pythonhosted.org/packages/ff/18/9c1d157580103b92666626d71f3b4c072e5746fe172d75aaa0ade8fdb322/memray-1.11.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9af4ed1e70705127b4adad10f60a71f83ef9ba0c4867e5c0d1e82828361126ae",
                "md5": "4cc624c6142c75c775e1e4e8cf1ccc42",
                "sha256": "24894d1f5c63cdaba137199ad989d8882485ecb4190d1ff7dc5214ac84484a06"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "4cc624c6142c75c775e1e4e8cf1ccc42",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7.0",
            "size": 4708870,
            "upload_time": "2023-12-04T20:38:13",
            "upload_time_iso_8601": "2023-12-04T20:38:13.338190Z",
            "url": "https://files.pythonhosted.org/packages/9a/f4/ed1e70705127b4adad10f60a71f83ef9ba0c4867e5c0d1e82828361126ae/memray-1.11.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "470dee07203464be91b72a48f411cbb4a79042e1ff749ee501c30c2f91ad4ef0",
                "md5": "376ea5b2542b69b17f0d113f9f9a0fd4",
                "sha256": "1dbb599c66ffaf1467c4f96aabbecbf30b58963366f17e07bea869c95bec7f72"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp37-cp37m-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "376ea5b2542b69b17f0d113f9f9a0fd4",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7.0",
            "size": 3929403,
            "upload_time": "2023-12-04T20:38:15",
            "upload_time_iso_8601": "2023-12-04T20:38:15.615464Z",
            "url": "https://files.pythonhosted.org/packages/47/0d/ee07203464be91b72a48f411cbb4a79042e1ff749ee501c30c2f91ad4ef0/memray-1.11.0-cp37-cp37m-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "93d1a8f5e8cc479290d58ade9f70d4403fbc43f414cd454d5f9c73c76c7a2efd",
                "md5": "05a5695df6e1c9b6058427e1b6133b86",
                "sha256": "50889d09343993513113b21ad86a7d56e128abdb9a526c4fd394df7a3a7bda78"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp38-cp38-macosx_10_14_x86_64.whl",
            "has_sig": false,
            "md5_digest": "05a5695df6e1c9b6058427e1b6133b86",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7.0",
            "size": 886005,
            "upload_time": "2023-12-04T20:38:18",
            "upload_time_iso_8601": "2023-12-04T20:38:18.583991Z",
            "url": "https://files.pythonhosted.org/packages/93/d1/a8f5e8cc479290d58ade9f70d4403fbc43f414cd454d5f9c73c76c7a2efd/memray-1.11.0-cp38-cp38-macosx_10_14_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5228fbeb4babeb1113e4a7c6e92f7de34716346e3a3d372e468e2ecb8863c1c3",
                "md5": "99ea3542c6bd384b79caa905ce97a58e",
                "sha256": "fc9372c1f0161b245a235b12ff3d5dc1a05216ad3fde158e62d1143b7f3b99cc"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "99ea3542c6bd384b79caa905ce97a58e",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7.0",
            "size": 914656,
            "upload_time": "2023-12-04T20:38:19",
            "upload_time_iso_8601": "2023-12-04T20:38:19.896180Z",
            "url": "https://files.pythonhosted.org/packages/52/28/fbeb4babeb1113e4a7c6e92f7de34716346e3a3d372e468e2ecb8863c1c3/memray-1.11.0-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "221408529ca487378e4bbb3884a51b2c4cbd9bd40400ff189795af6141b43727",
                "md5": "b8b8dfcf7a30423698728e7688b59292",
                "sha256": "ad1aeec47f1abb37ca6bd4a5a8be8c556e7456fe2e4a5c79b7bc32eaac916b24"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl",
            "has_sig": false,
            "md5_digest": "b8b8dfcf7a30423698728e7688b59292",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7.0",
            "size": 3479196,
            "upload_time": "2023-12-04T20:38:22",
            "upload_time_iso_8601": "2023-12-04T20:38:22.127610Z",
            "url": "https://files.pythonhosted.org/packages/22/14/08529ca487378e4bbb3884a51b2c4cbd9bd40400ff189795af6141b43727/memray-1.11.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "336dbc85b76c79db078597e057a1022b9e5eadebb083840a2942d0cdd0100cb7",
                "md5": "930f275bb07bb0fb18858c5397e6517d",
                "sha256": "0ea78c073e8c5c408d4034f2da04031d0dfa8e1eface5512b350d81766aebb25"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
            "has_sig": false,
            "md5_digest": "930f275bb07bb0fb18858c5397e6517d",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7.0",
            "size": 3457054,
            "upload_time": "2023-12-04T20:38:25",
            "upload_time_iso_8601": "2023-12-04T20:38:25.526645Z",
            "url": "https://files.pythonhosted.org/packages/33/6d/bc85b76c79db078597e057a1022b9e5eadebb083840a2942d0cdd0100cb7/memray-1.11.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7702517bd307435bf3b7a571a1dc0e920a9c82b54944dfc659b3692069cdf590",
                "md5": "b8e8efb270dbdc9721f7cee4d6d81622",
                "sha256": "7fb0ae51e06e90336573ed9454cc05541075756e633023550086f8f1882bd38b"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "b8e8efb270dbdc9721f7cee4d6d81622",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7.0",
            "size": 4811868,
            "upload_time": "2023-12-04T20:38:27",
            "upload_time_iso_8601": "2023-12-04T20:38:27.260065Z",
            "url": "https://files.pythonhosted.org/packages/77/02/517bd307435bf3b7a571a1dc0e920a9c82b54944dfc659b3692069cdf590/memray-1.11.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4463dc312be4fb91285fc4e7d8e9cce3036eeaa6357374bc0894d0e4f7b7fdd5",
                "md5": "032f4d7e0436e7fe78696974e11dbe75",
                "sha256": "9076942a66a03a7a3e668314cd00f720db31116df7e8626808150e4e22a079cd"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp38-cp38-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "032f4d7e0436e7fe78696974e11dbe75",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7.0",
            "size": 3904350,
            "upload_time": "2023-12-04T20:38:29",
            "upload_time_iso_8601": "2023-12-04T20:38:29.445237Z",
            "url": "https://files.pythonhosted.org/packages/44/63/dc312be4fb91285fc4e7d8e9cce3036eeaa6357374bc0894d0e4f7b7fdd5/memray-1.11.0-cp38-cp38-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "eaa828b28034d0707d361223a6d8b362dec358bed5d7dec6f8ffb6d93e2a9c3a",
                "md5": "bc809b118d027a1ae7a9dd715159ec1f",
                "sha256": "a4f012204aaeb233c5414e776d04d468d7a542da259811b059a89a519032e2ec"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp39-cp39-macosx_10_14_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bc809b118d027a1ae7a9dd715159ec1f",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7.0",
            "size": 867525,
            "upload_time": "2023-12-04T20:38:31",
            "upload_time_iso_8601": "2023-12-04T20:38:31.624997Z",
            "url": "https://files.pythonhosted.org/packages/ea/a8/28b28034d0707d361223a6d8b362dec358bed5d7dec6f8ffb6d93e2a9c3a/memray-1.11.0-cp39-cp39-macosx_10_14_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8debc5f8eb5cc3c85755d99e2483fb7c97aec6876064ba649885fc5b05df015b",
                "md5": "113d0bb47fb7c7a042badaf27852b879",
                "sha256": "f83b34f92781f22ef6a7b7f4a67258deb516a06f86c713da33211a6db4fc9ea6"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "113d0bb47fb7c7a042badaf27852b879",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7.0",
            "size": 895212,
            "upload_time": "2023-12-04T20:38:34",
            "upload_time_iso_8601": "2023-12-04T20:38:34.597675Z",
            "url": "https://files.pythonhosted.org/packages/8d/eb/c5f8eb5cc3c85755d99e2483fb7c97aec6876064ba649885fc5b05df015b/memray-1.11.0-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0112e17a06ebd403efa1c8512c54cd23ee3886c56c569b69f428cf026d781cae",
                "md5": "6504a36a714bf2652ae1e81c74f672e6",
                "sha256": "8b2819a6612b771ffab2d80f518cf602aeec7bacee9659c6f7af40596fbfe9f6"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl",
            "has_sig": false,
            "md5_digest": "6504a36a714bf2652ae1e81c74f672e6",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7.0",
            "size": 3449318,
            "upload_time": "2023-12-04T20:38:36",
            "upload_time_iso_8601": "2023-12-04T20:38:36.733307Z",
            "url": "https://files.pythonhosted.org/packages/01/12/e17a06ebd403efa1c8512c54cd23ee3886c56c569b69f428cf026d781cae/memray-1.11.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2e21724978e42768e5ad95746ae42657b63f2095429cec48e88ef6dbbcd4832e",
                "md5": "4eac8e706201fa69c927e72ecfdd6f95",
                "sha256": "68f15ff78a6f44344599209bc0d1e5e5d608e81bd2c9b5f02824d08751cf07d9"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4eac8e706201fa69c927e72ecfdd6f95",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7.0",
            "size": 3430017,
            "upload_time": "2023-12-04T20:38:38",
            "upload_time_iso_8601": "2023-12-04T20:38:38.378492Z",
            "url": "https://files.pythonhosted.org/packages/2e/21/724978e42768e5ad95746ae42657b63f2095429cec48e88ef6dbbcd4832e/memray-1.11.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c2ae598095ce19f525229889aa1ac89490126c730e7eead1dceb26a7bbe59863",
                "md5": "04c3e8afbe2d8c9d01d71431e9b7f8f8",
                "sha256": "89fdfbdd8ec5d9fad75b7ee487de6b2394856235511b1950c3505e78afbc8170"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "04c3e8afbe2d8c9d01d71431e9b7f8f8",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7.0",
            "size": 4728839,
            "upload_time": "2023-12-04T20:38:40",
            "upload_time_iso_8601": "2023-12-04T20:38:40.753442Z",
            "url": "https://files.pythonhosted.org/packages/c2/ae/598095ce19f525229889aa1ac89490126c730e7eead1dceb26a7bbe59863/memray-1.11.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9da05a0a40df4759afb46d61aa9682dc4312911fa6090699758303603a0a7323",
                "md5": "724ba50f8e892d165da9532f76ec256e",
                "sha256": "16a6ce38566029433323f7c0dfc76732a47158eee3de4c1734f00ad36d953181"
            },
            "downloads": -1,
            "filename": "memray-1.11.0-cp39-cp39-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "724ba50f8e892d165da9532f76ec256e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7.0",
            "size": 3875905,
            "upload_time": "2023-12-04T20:38:43",
            "upload_time_iso_8601": "2023-12-04T20:38:43.798174Z",
            "url": "https://files.pythonhosted.org/packages/9d/a0/5a0a40df4759afb46d61aa9682dc4312911fa6090699758303603a0a7323/memray-1.11.0-cp39-cp39-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b93b0af451f20f8a72b3dcfdf65c6d5639469a92db3f333e3c344a6b5cc12732",
                "md5": "3639693cd9f0e1cdb670e177c5585677",
                "sha256": "f72c111a4868d0f2b4e4fb9ba4da736db8c73b6fb0ac6e6f2deca8ee540eb688"
            },
            "downloads": -1,
            "filename": "memray-1.11.0.tar.gz",
            "has_sig": false,
            "md5_digest": "3639693cd9f0e1cdb670e177c5585677",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7.0",
            "size": 1060236,
            "upload_time": "2023-12-04T20:38:45",
            "upload_time_iso_8601": "2023-12-04T20:38:45.651072Z",
            "url": "https://files.pythonhosted.org/packages/b9/3b/0af451f20f8a72b3dcfdf65c6d5639469a92db3f333e3c344a6b5cc12732/memray-1.11.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-04 20:38:45",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "bloomberg",
    "github_project": "memray",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "memray"
}
        
Elapsed time: 0.19931s