Skip to main content

Line-by-line profiler

Project description

Pypi ReadTheDocs Downloads CircleCI GithubActions Codecov

This is the official line_profiler repository. The most recent version of line-profiler on pypi points to this repo. The original line_profiler package by @rkern is unmaintained. This fork is the official continuation of the project.

Github

https://github.com/pyutils/line_profiler

Pypi

https://pypi.org/project/line_profiler

ReadTheDocs

https://kernprof.readthedocs.io/en/latest/


line_profiler is a module for doing line-by-line profiling of functions. kernprof is a convenient script for running either line_profiler or the Python standard library’s cProfile or profile modules, depending on what is available.

They are available under a BSD license.

Quick Start (Modern)

This guide is for versions of line profiler starting at 4.1.0.

To profile a python script:

  • Install line_profiler: pip install line_profiler.

  • In the relevant file(s), import line profiler and decorate function(s) you want to profile with @line_profiler.profile.

  • Set the environment variable LINE_PROFILE=1 and run your script as normal. When the script ends a summary of profile results, files written to disk, and instructions for inspecting details will be written to stdout.

For more details and a short tutorial see Line Profiler Basic Usage.

Quick Start (Legacy)

This section is the original quick-start guide, and may eventually be removed from the README. This will work with current and older (pre 4.1.0) versions of line profiler.

To profile a python script:

  • Install line_profiler: pip install line_profiler.

  • Decorate function(s) you want to profile with @profile. The decorator will be made automatically available on run.

  • Run kernprof -lv script_to_profile.py.

Installation

Releases of line_profiler can be installed using pip:

$ pip install line_profiler

Installation while ensuring a compatible IPython version can also be installed using pip:

$ pip install line_profiler[ipython]

To check out the development sources, you can use Git:

$ git clone https://github.com/pyutils/line_profiler.git

You may also download source tarballs of any snapshot from that URL.

Source releases will require a C compiler in order to build line_profiler. In addition, git checkouts will also require Cython. Source releases on PyPI should contain the pregenerated C sources, so Cython should not be required in that case.

kernprof is a single-file pure Python script and does not require a compiler. If you wish to use it to run cProfile and not line-by-line profiling, you may copy it to a directory on your PATH manually and avoid trying to build any C extensions.

As of 2021-06-04 Linux (x86_64 and i686), OSX (10_9_x86_64), and Win32 (win32, and amd64) binaries are available on pypi.

The last version of line profiler to support Python 2.7 was 3.1.0 and the last version to support Python 3.5 was 3.3.1.

line_profiler

The current profiling tools supported in Python only time function calls. This is a good first step for locating hotspots in one’s program and is frequently all one needs to do to optimize the program. However, sometimes the cause of the hotspot is actually a single line in the function, and that line may not be obvious from just reading the source code. These cases are particularly frequent in scientific computing. Functions tend to be larger (sometimes because of legitimate algorithmic complexity, sometimes because the programmer is still trying to write FORTRAN code), and a single statement without function calls can trigger lots of computation when using libraries like numpy. cProfile only times explicit function calls, not special methods called because of syntax. Consequently, a relatively slow numpy operation on large arrays like this,

a[large_index_array] = some_other_large_array

is a hotspot that never gets broken out by cProfile because there is no explicit function call in that statement.

LineProfiler can be given functions to profile, and it will time the execution of each individual line inside those functions. In a typical workflow, one only cares about line timings of a few functions because wading through the results of timing every single line of code would be overwhelming. However, LineProfiler does need to be explicitly told what functions to profile. The easiest way to get started is to use the kernprof script.

$ kernprof -l script_to_profile.py

kernprof will create an instance of LineProfiler and insert it into the __builtins__ namespace with the name profile. It has been written to be used as a decorator, so in your script, you decorate the functions you want to profile with @profile.

@profile
def slow_function(a, b, c):
    ...

The default behavior of kernprof is to put the results into a binary file script_to_profile.py.lprof . You can tell kernprof to immediately view the formatted results at the terminal with the [-v/–view] option. Otherwise, you can view the results later like so:

$ python -m line_profiler script_to_profile.py.lprof

For example, here are the results of profiling a single function from a decorated version of the pystone.py benchmark (the first two lines are output from pystone.py, not kernprof):

Pystone(1.1) time for 50000 passes = 2.48
This machine benchmarks at 20161.3 pystones/second
Wrote profile results to pystone.py.lprof
Timer unit: 1e-06 s

File: pystone.py
Function: Proc2 at line 149
Total time: 0.606656 s

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   149                                           @profile
   150                                           def Proc2(IntParIO):
   151     50000        82003      1.6     13.5      IntLoc = IntParIO + 10
   152     50000        63162      1.3     10.4      while 1:
   153     50000        69065      1.4     11.4          if Char1Glob == 'A':
   154     50000        66354      1.3     10.9              IntLoc = IntLoc - 1
   155     50000        67263      1.3     11.1              IntParIO = IntLoc - IntGlob
   156     50000        65494      1.3     10.8              EnumLoc = Ident1
   157     50000        68001      1.4     11.2          if EnumLoc == Ident1:
   158     50000        63739      1.3     10.5              break
   159     50000        61575      1.2     10.1      return IntParIO

The source code of the function is printed with the timing information for each line. There are six columns of information.

  • Line #: The line number in the file.

  • Hits: The number of times that line was executed.

  • Time: The total amount of time spent executing the line in the timer’s units. In the header information before the tables, you will see a line “Timer unit:” giving the conversion factor to seconds. It may be different on different systems.

  • Per Hit: The average amount of time spent executing the line once in the timer’s units.

  • % Time: The percentage of time spent on that line relative to the total amount of recorded time spent in the function.

  • Line Contents: The actual source code. Note that this is always read from disk when the formatted results are viewed, not when the code was executed. If you have edited the file in the meantime, the lines will not match up, and the formatter may not even be able to locate the function for display.

If you are using IPython, there is an implementation of an %lprun magic command which will let you specify functions to profile and a statement to execute. It will also add its LineProfiler instance into the __builtins__, but typically, you would not use it like that.

For IPython 0.11+, you can install it by editing the IPython configuration file ~/.ipython/profile_default/ipython_config.py to add the 'line_profiler' item to the extensions list:

c.TerminalIPythonApp.extensions = [
    'line_profiler',
]

Or explicitly call:

%load_ext line_profiler

To get usage help for %lprun, use the standard IPython help mechanism:

In [1]: %lprun?

These two methods are expected to be the most frequent user-level ways of using LineProfiler and will usually be the easiest. However, if you are building other tools with LineProfiler, you will need to use the API. There are two ways to inform LineProfiler of functions to profile: you can pass them as arguments to the constructor or use the add_function(f) method after instantiation.

profile = LineProfiler(f, g)
profile.add_function(h)

LineProfiler has the same run(), runctx(), and runcall() methods as cProfile.Profile as well as enable() and disable(). It should be noted, though, that enable() and disable() are not entirely safe when nested. Nesting is common when using LineProfiler as a decorator. In order to support nesting, use enable_by_count() and disable_by_count(). These functions will increment and decrement a counter and only actually enable or disable the profiler when the count transitions from or to 0.

After profiling, the dump_stats(filename) method will pickle the results out to the given file. print_stats([stream]) will print the formatted results to sys.stdout or whatever stream you specify. get_stats() will return LineStats object, which just holds two attributes: a dictionary containing the results and the timer unit.

kernprof

kernprof also works with cProfile, its third-party incarnation lsprof, or the pure-Python profile module depending on what is available. It has a few main features:

  • Encapsulation of profiling concerns. You do not have to modify your script in order to initiate profiling and save the results. Unless if you want to use the advanced __builtins__ features, of course.

  • Robust script execution. Many scripts require things like __name__, __file__, and sys.path to be set relative to it. A naive approach at encapsulation would just use execfile(), but many scripts which rely on that information will fail. kernprof will set those variables correctly before executing the script.

  • Easy executable location. If you are profiling an application installed on your PATH, you can just give the name of the executable. If kernprof does not find the given script in the current directory, it will search your PATH for it.

  • Inserting the profiler into __builtins__. Sometimes, you just want to profile a small part of your code. With the [-b/–builtin] argument, the Profiler will be instantiated and inserted into your __builtins__ with the name “profile”. Like LineProfiler, it may be used as a decorator, or enabled/disabled with enable_by_count() and disable_by_count(), or even as a context manager with the “with profile:” statement.

  • Pre-profiling setup. With the [-s/–setup] option, you can provide a script which will be executed without profiling before executing the main script. This is typically useful for cases where imports of large libraries like wxPython or VTK are interfering with your results. If you can modify your source code, the __builtins__ approach may be easier.

The results of profile script_to_profile.py will be written to script_to_profile.py.prof by default. It will be a typical marshalled file that can be read with pstats.Stats(). They may be interactively viewed with the command:

$ python -m pstats script_to_profile.py.prof

Such files may also be viewed with graphical tools. A list of 3rd party tools built on cProfile or line_profiler are as follows:

Frequently Asked Questions

  • Why the name “kernprof”?

    I didn’t manage to come up with a meaningful name, so I named it after myself.

  • The line-by-line timings don’t add up when one profiled function calls another. What’s up with that?

    Let’s say you have function F() calling function G(), and you are using LineProfiler on both. The total time reported for G() is less than the time reported on the line in F() that calls G(). The reason is that I’m being reasonably clever (and possibly too clever) in recording the times. Basically, I try to prevent recording the time spent inside LineProfiler doing all of the bookkeeping for each line. Each time Python’s tracing facility issues a line event (which happens just before a line actually gets executed), LineProfiler will find two timestamps, one at the beginning before it does anything (t_begin) and one as close to the end as possible (t_end). Almost all of the overhead of LineProfiler’s data structures happens in between these two times.

    When a line event comes in, LineProfiler finds the function it belongs to. If it’s the first line in the function, we record the line number and t_end associated with the function. The next time we see a line event belonging to that function, we take t_begin of the new event and subtract the old t_end from it to find the amount of time spent in the old line. Then we record the new t_end as the active line for this function. This way, we are removing most of LineProfiler’s overhead from the results. Well almost. When one profiled function F calls another profiled function G, the line in F that calls G basically records the total time spent executing the line, which includes the time spent inside the profiler while inside G.

    The first time this question was asked, the questioner had the G() function call as part of a larger expression, and he wanted to try to estimate how much time was being spent in the function as opposed to the rest of the expression. My response was that, even if I could remove the effect, it might still be misleading. G() might be called elsewhere, not just from the relevant line in F(). The workaround would be to modify the code to split it up into two lines, one which just assigns the result of G() to a temporary variable and the other with the rest of the expression.

    I am open to suggestions on how to make this more robust. Or simple admonitions against trying to be clever.

  • Why do my list comprehensions have so many hits when I use the LineProfiler?

    LineProfiler records the line with the list comprehension once for each iteration of the list comprehension.

  • Why is kernprof distributed with line_profiler? It works with just cProfile, right?

    Partly because kernprof.py is essential to using line_profiler effectively, but mostly because I’m lazy and don’t want to maintain the overhead of two projects for modules as small as these. However, kernprof.py is a standalone, pure Python script that can be used to do function profiling with just the Python standard library. You may grab it and install it by itself without line_profiler.

  • Do I need a C compiler to build line_profiler? kernprof.py?

    You do need a C compiler for line_profiler. kernprof.py is a pure Python script and can be installed separately, though.

  • Do I need Cython to build line_profiler?

    Wheels for supported versions of Python are available on PyPI and support linux, osx, and windows for x86-64 architectures. Linux additionally ships with i686 wheels for manylinux and musllinux. If you have a different CPU architecture, or an unsupported Python version, then you will need to build from source.

  • What version of Python do I need?

    Both line_profiler and kernprof have been tested with Python 3.6-3.11. Older versions of line_profiler support older versions of Python.

To Do

cProfile uses a neat “rotating trees” data structure to minimize the overhead of looking up and recording entries. LineProfiler uses Python dictionaries and extension objects thanks to Cython. This mostly started out as a prototype that I wanted to play with as quickly as possible, so I passed on stealing the rotating trees for now. As usual, I got it working, and it seems to have acceptable performance, so I am much less motivated to use a different strategy now. Maybe later. Contributions accepted!

Bugs and Such

Bugs and pull requested can be submitted on GitHub.

Changes

See CHANGELOG.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

line_profiler-5.0.1.tar.gz (406.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

line_profiler-5.0.1-cp314-cp314-win_arm64.whl (475.3 kB view details)

Uploaded CPython 3.14Windows ARM64

line_profiler-5.0.1-cp314-cp314-win_amd64.whl (491.2 kB view details)

Uploaded CPython 3.14Windows x86-64

line_profiler-5.0.1-cp314-cp314-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

line_profiler-5.0.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

line_profiler-5.0.1-cp314-cp314-macosx_11_0_arm64.whl (505.4 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

line_profiler-5.0.1-cp314-cp314-macosx_10_13_x86_64.whl (514.4 kB view details)

Uploaded CPython 3.14macOS 10.13+ x86-64

line_profiler-5.0.1-cp314-cp314-macosx_10_13_universal2.whl (653.9 kB view details)

Uploaded CPython 3.14macOS 10.13+ universal2 (ARM64, x86-64)

line_profiler-5.0.1-cp313-cp313-win_arm64.whl (467.5 kB view details)

Uploaded CPython 3.13Windows ARM64

line_profiler-5.0.1-cp313-cp313-win_amd64.whl (484.9 kB view details)

Uploaded CPython 3.13Windows x86-64

line_profiler-5.0.1-cp313-cp313-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

line_profiler-5.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

line_profiler-5.0.1-cp313-cp313-macosx_11_0_arm64.whl (499.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

line_profiler-5.0.1-cp313-cp313-macosx_10_13_x86_64.whl (509.3 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

line_profiler-5.0.1-cp313-cp313-macosx_10_13_universal2.whl (648.2 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

line_profiler-5.0.1-cp312-cp312-win_arm64.whl (467.8 kB view details)

Uploaded CPython 3.12Windows ARM64

line_profiler-5.0.1-cp312-cp312-win_amd64.whl (484.3 kB view details)

Uploaded CPython 3.12Windows x86-64

line_profiler-5.0.1-cp312-cp312-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

line_profiler-5.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

line_profiler-5.0.1-cp312-cp312-macosx_11_0_arm64.whl (501.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

line_profiler-5.0.1-cp312-cp312-macosx_10_13_x86_64.whl (511.3 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

line_profiler-5.0.1-cp312-cp312-macosx_10_13_universal2.whl (652.5 kB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

line_profiler-5.0.1-cp311-cp311-win_arm64.whl (470.5 kB view details)

Uploaded CPython 3.11Windows ARM64

line_profiler-5.0.1-cp311-cp311-win_amd64.whl (486.0 kB view details)

Uploaded CPython 3.11Windows x86-64

line_profiler-5.0.1-cp311-cp311-musllinux_1_2_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

line_profiler-5.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

line_profiler-5.0.1-cp311-cp311-macosx_11_0_arm64.whl (502.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

line_profiler-5.0.1-cp311-cp311-macosx_10_9_x86_64.whl (513.6 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

line_profiler-5.0.1-cp311-cp311-macosx_10_9_universal2.whl (656.1 kB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

line_profiler-5.0.1-cp310-cp310-win_amd64.whl (485.4 kB view details)

Uploaded CPython 3.10Windows x86-64

line_profiler-5.0.1-cp310-cp310-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

line_profiler-5.0.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

line_profiler-5.0.1-cp310-cp310-macosx_11_0_arm64.whl (503.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

line_profiler-5.0.1-cp310-cp310-macosx_10_9_x86_64.whl (514.4 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

line_profiler-5.0.1-cp310-cp310-macosx_10_9_universal2.whl (657.3 kB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

line_profiler-5.0.1-cp39-cp39-win_amd64.whl (486.0 kB view details)

Uploaded CPython 3.9Windows x86-64

line_profiler-5.0.1-cp39-cp39-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

line_profiler-5.0.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

line_profiler-5.0.1-cp39-cp39-macosx_11_0_arm64.whl (503.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

line_profiler-5.0.1-cp39-cp39-macosx_10_9_x86_64.whl (515.2 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

line_profiler-5.0.1-cp39-cp39-macosx_10_9_universal2.whl (658.8 kB view details)

Uploaded CPython 3.9macOS 10.9+ universal2 (ARM64, x86-64)

line_profiler-5.0.1-cp38-cp38-win_amd64.whl (486.8 kB view details)

Uploaded CPython 3.8Windows x86-64

line_profiler-5.0.1-cp38-cp38-musllinux_1_2_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

line_profiler-5.0.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

line_profiler-5.0.1-cp38-cp38-macosx_11_0_arm64.whl (509.5 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

line_profiler-5.0.1-cp38-cp38-macosx_10_9_x86_64.whl (521.0 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

line_profiler-5.0.1-cp38-cp38-macosx_10_9_universal2.whl (671.5 kB view details)

Uploaded CPython 3.8macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file line_profiler-5.0.1.tar.gz.

File metadata

  • Download URL: line_profiler-5.0.1.tar.gz
  • Upload date:
  • Size: 406.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for line_profiler-5.0.1.tar.gz
Algorithm Hash digest
SHA256 3e56c5eee51aa8b82a09d8a35ab19f4100ee45d70eb676c2c58deedcc06c34b1
MD5 3a76372e21a9453dbe7bee2f2badb9b8
BLAKE2b-256 bf2a498665a424404a560b2c6b3a3ea8b4304dbe493ccc3d01a6866c7a38890e

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp314-cp314-win_arm64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 c3a4807a30adda81ac246744bf42bff8cc54bcbbe5e3bfff4523b171349c5059
MD5 68a0b771a9ee55d3cfe5449d8c7b28dd
BLAKE2b-256 546d91e7e2390c064233c1e64de8d82059212814c29b46f33f554bc7fe0a2711

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 9bb97a77d8d5ffa8bf0193c5ee4d804dc8360244861f104c10c9e58c95721066
MD5 07a165c07e26fffba7c5973e00c520fa
BLAKE2b-256 5df80959ab4ff46a99c9db6d90de90d08bff6d3277fc4b80c9fb5d04300af798

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4b76d6f7ab6d2b3018bea10172bbe105624d14f63bde9549c393502ca4ea9fb5
MD5 5b3c91d3d836c547e3e46adc1aa5449a
BLAKE2b-256 cde148aefe03d27a32b93ffec6aaaab1e0f5d5b94e0a44b3ddf0929c9eeef50c

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4d9c0b8d01eddb99ed76f53e2f81cce8ceff68e751370af2bd1fd276fb17570e
MD5 3b6ddde0b0b922b5b6c552bdd201065d
BLAKE2b-256 8ef4012446292f1fee6c4a5b7ebf3d5de7741550b8b3e781186a32c333ced1fa

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5630d495f16babd812f4ef5cba90cf3cf3cc06b10a24f9becfb76a64e511bcbd
MD5 614e837e9234e1655b27e80df492ca01
BLAKE2b-256 934a79513220bc2c4fa2a4e7468b89e18b917e82bc7ea1e7be1b924412f9cd20

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp314-cp314-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp314-cp314-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 4e901d75109f12a1a65edc2352401875cd51b69bf91537a9555c7691fdc0dd46
MD5 e6ad6b9a71b7a2e0f4291a906a1ff717
BLAKE2b-256 ad3c7688dff38a2bdcf66b990f5d7c496ca41dc63171a3e03a6049488842f786

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp314-cp314-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp314-cp314-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 8c0cd9f38eaddb506990080593381f276b1942c416e415a933632c4943895df3
MD5 a44a25982a5e070f4e4c3bacdf6457db
BLAKE2b-256 dd76f857c647597bca495dcba3f7edaf986516bde919152f19c71bef47a546fa

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp313-cp313-win_arm64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 39ed06465de1dc1eccf1df7dcd90aa100af3f55472ef25fa6c8bd228d8d5f819
MD5 235dddcacb82e183f1349201527b8aa9
BLAKE2b-256 44c52cdf45c274410632c15a28075ccc865e13b2dd5ae3b11a25313cf8e0d8af

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 20174e74b142d13ccb8836ebabfa1ca4e2cde4d0961f3ee078a3cc64f2832bd6
MD5 2d2e92394b787680686ef75d6684b8ae
BLAKE2b-256 3e53f73fc9515d3919c9733b88fc9d51b81dba50d74da9e8f357a72ed5c503b7

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7460781af7e8754850c5dc8b6f1d0133d48aa3a24723cfe9d445dd27d42a798d
MD5 b18005e9e241bb93bb24e2c304dc9d0e
BLAKE2b-256 ff240940490a9be8e19ed097da03463547c5a7e066b8612e208e005fd440c3e2

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6f8a74fb63ff4cb1358fa9378daa853396f5868d5c81cad88d17b1f48a761f04
MD5 e722c79b9ec3ee250ee34857473705d1
BLAKE2b-256 90ae3bccce627f42151b2bd7389ef1304b9255e38d6c79ae23fbd8c33600ea45

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0b74a89eba20a20222bf6220e017244849cb675125a0e9e7ade5411af3d6c246
MD5 1e716cd1655beead391441577f02e150
BLAKE2b-256 4629ce75d7e9c07e72ffa513424881d0509a559a21a433f462fb197604a0e4ce

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 ef083f93bbb8cd8e7fa49b07e09245195a9be47755e7e353fb526aee9d983427
MD5 87efdd210d1afda0c8497a19b698c5bb
BLAKE2b-256 8eec6e71a59baf77b95c38ac07dc6e622f46674a526ea9dbd348ac310c24b358

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 6100734916900f6c0ee5ba1cae05e7860c53aac4cd7a016faefd50092be22a14
MD5 73498466ed8e93eb0d2d6ea8cddc4bef
BLAKE2b-256 358323b24ceb224f89725c2baa0be1b889ea9eec84b4ec3835c8f7ff62abf918

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp312-cp312-win_arm64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 d3c93c975c1ccbc77db82579e9ec65897d783d53c3456cd2a8a582cae7cb5b81
MD5 8ce628b6cd59716ec8b155b33624a142
BLAKE2b-256 cbbaec80db0e0b2a46832127f5de5cd6d059d60aeb0daf2a2eddd7a05ff092da

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 87d2295feaa5ac933e672d1c5ac5b83e2a1f7ebce25d290f81a7aabb1d46ac1f
MD5 d1d1685ce142ece95338ed92092cad03
BLAKE2b-256 5f79cd66262b78a9f1e6ccd7452f331237c3489fb93191f95fe0b9c4cdac4733

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4344e66d853824be0f0fa5d99ba6014cb093334e178fac942870bc4a4dd4c146
MD5 d9a3860b761bd5c69ce54578d06e9d03
BLAKE2b-256 966ea5f92fb2451982ea49dd1bbc1b4a308aaeda81320583b3593731bc8654e8

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 348f34f54d68dcb249124d6b6275cbfcaea33920aecdb2f7d536d395abbaeda7
MD5 de7570b25ddea9af5f77c3cb99ab72c8
BLAKE2b-256 811dadda8aff5cc3e1d8687a128593a562fbf28d650513674aa773381068ce95

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a3350cfe27fa71082ac3d773d905b5cff7584a7923a36ea894a4619c0eb40116
MD5 a7107d006475c1c5905e27e61a9ed732
BLAKE2b-256 1e4d5862629dc59f8154eae76ac0ea2a69c0d11b0b79483957f3c1c6a1af9896

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 a5401dfe1dcd6f01d0f35feff02c96ebd73d2e45058e39ba935e822bde33f191
MD5 ecf1642ebab2bab59a726f4b26d74df9
BLAKE2b-256 a02601d65c99809cdec0566c3f86b4cefec6ba558b261f75dac0b856a1570d7e

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 b9b58a4d805ea11a0ea18c75a21b9d3bc1bb69d1f7d9282625386b8b47689b3b
MD5 31c79c257b678076dcaad3f29e7083d4
BLAKE2b-256 fa8ebd5b0cc87203ff280cf01ef65b263472983adad5a0f710cf191e292fc3df

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp311-cp311-win_arm64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 6d4b626c948be1d7742ea2314261eccfc4b9f7dfb2adae8ece4409776a9e2511
MD5 221f8c605909981ba674e582ae8eb04c
BLAKE2b-256 54790bf2de84d3680318bf85f3375fe0c296c6d4b1ed02dcad686fa09ced8df1

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1a717a5eed30311982b8e707eda30384c5532ccbd557d57e40a1dbc5588667c3
MD5 f984465c121fa24570ddfa5fdf85429b
BLAKE2b-256 207587a0b452a42783848a82ca67a390f920a5844ef0db092f9029cc42933a72

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 daab2aa2a1c67e7706ab43e13b544eb7c0e2321d7a0646e0380745361e2477ce
MD5 bb6f74c2886c0073a4e40fcac37958cd
BLAKE2b-256 8ec880bd62dd8fd4d594cb9bc12f40ade5222c5e18a7073f2003091d53ee264a

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e5fe36bf67e5114b56956017cbdb3e14851afa047aee06a6249c7e4524985d30
MD5 3efdfa3156838e5562b04a83aab6b39f
BLAKE2b-256 1e9c2b0ede405364e23a5ec45100a6c053db40afff36b17d2778541e16766cae

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fc5e42b471316fe55fb52f3dd048a359652d3715e302707a4342844ade009166
MD5 c2502b3b71c1f238d9486d556d003c31
BLAKE2b-256 a52b0c15fe6ae98340a8315f76a289720b3db7cfd2b43581f07771b39ac59a69

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 029abeda3bedf2205fd9e9f9d35b38d369cc33d5581d875aa27c80b03facd95e
MD5 d3dfc0a3e1d75d373e772c494e0f26a9
BLAKE2b-256 a1e463b961fe4ce9cd9b05a4710858b32c537ad8364ed84ec52b1a463733b8b9

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 8103e12337802850af69ad74fa2d540cb24b35905cab5d093e4d5a88f89d7305
MD5 06e11588fd279d4a11244984eca00422
BLAKE2b-256 f9550a74021f3ecfe71be86b3263f98890a28902ed0715a841507ac2eb0316db

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3b8bf20a9a15029e833361d6c8bed4397c806725a80a2bfb457ce1d60a918dfe
MD5 8226a6e69d34734abb082034fb8c091d
BLAKE2b-256 963da001ec8c4154cbfd949bd570036163e8a7dbeca84a8a82c03cf33919bdcd

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8b28c8902092e1dbc1aa35929e7b5472a5bdb32da1fbd3570c5e78376a71ee86
MD5 6a40915e01770f41bda60b4273984d0f
BLAKE2b-256 1f1277c03fcb93b0d206b785ed45f461b29195bdd9cfd609ced3cdfb654287b3

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8b9dd773b1bde3f9864bb302e8bb78a9b35573448e1b837e8a6d2740580ff18e
MD5 210f13465a38ea2ceff9fe9a48ac2ec3
BLAKE2b-256 1ed9fbc770fa6df84ea32580dae6c46447c07831fac97f3e5e5f3f6182c7d5ab

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e6502518f7d7c1241b8d72fce275a8d8ac08081335a1bd99ad69fadaf044784d
MD5 a2d8964f06edbcbe6dba36f45fb0c859
BLAKE2b-256 ee1b208adab75d25140c6ba4469da3e4d8bf51bb65a0e9e5b04f24dd0e6dadc7

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7c55ae9dd54deda74ddb79a60818a59c32d53e87eb5628eab53183123aca6c53
MD5 b6cbe261c602c2337153490edf81d855
BLAKE2b-256 4a008609a3774a221aa4c48c3d5f3ecf63194e44c931b74a3bad6637057f07c4

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 64f099711f4752bc4e3dae762b971ef3016ad7572507db4b22a9a7bb0f4fd05f
MD5 842f0d41a52caf918f7b5fd8956bacad
BLAKE2b-256 7e680a52f3868aca7722938094003bda3f05a36a5ac72a3faa3b468fb939ffc4

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f7f17946e5cf2cdcf8406656bebc0ba8fb9550b4a0558bce52e2b8e2c047d1a3
MD5 4fb030293612308ae4a4714b20e03df8
BLAKE2b-256 e692262533d5bb1fa81da52d1a6d2dc828c05a578fe4ed4506fb6feaa00f14d6

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ac96cc3c3946a9bfbb723843a0eceeed3295d633fe65960e3ed096d31b065eab
MD5 b0d54365c3d2dd7f69cfebee1c6b7db6
BLAKE2b-256 d755c2160db00c0c07a044f6f29034bb441c5c3eb29e907590a823cdfede8ad3

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 15c53434bd2885938a46eee75373d5a5fef724803578a2262076ce4693032c6d
MD5 aaea62a5b355a716952c27543a70f817
BLAKE2b-256 6d37c0c27f093a2352fa5d491a0404beb8b8ea1a56a8e88d61081160ef284da3

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3b3b551c90eff946c38933c76c4c77e2904c403a20dc9eb467b756042066e6a4
MD5 e700ec902e009fcd1cc1cce45121db7b
BLAKE2b-256 88afa8aaf394f1a15df4cbcfabc228c215dc014082a864f38d4b074fc63caef8

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 75eba02f688601a9ef23d709787c2e2e26f8c46de9b883d60227ef391dd8c513
MD5 05d00f46a626667fcde0fe87542b09b3
BLAKE2b-256 ad79b7a36d46cff3f4d17d18e8c3d6e8275ac05559952e25dc4c95e8c4cf7337

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 92b724b3668755967a2174c20b56e7a69ce46aea1935f1605bc7f5f5ed672f15
MD5 181bdbbbc17590bd5326a25f1bf54b5a
BLAKE2b-256 beed0a0c4a2bb84de941e52a46642341552c721d091e0a4d7be5138849de4902

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 4ece524528f976000a39f4a2ae116088c62f1a9e04ed1bbf7a0fc709f9a96e8f
MD5 cf8214b5f6b97f88073f72819a02715d
BLAKE2b-256 f9b0e0e4d7c484f722b825222a0ab11cada09b0b1e44758742cf495eb08cd0b6

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 27db229d426813a58613550e88b1642a67627ebb1b93018f033a43966993104e
MD5 879b557aadfdd9bb2e1c53833ac68ab8
BLAKE2b-256 c0c0d795438041b54bfd4c5a2f901094532ede64a7d0a346c318e392e0d8dd09

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 13287ef0e4c39f30edd519997cd1fa5ce11f68ce314381303f993047dd95fe32
MD5 0b7fe131d4343d2963d2adbc770416bb
BLAKE2b-256 c423e31194df104f8eb4acc180ef4bae867ad602c5fcb6a4cd95852c406e78dc

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 97dd88bf7f367723bea83554269a09fbff6d076ff8712184b1fc3445a3fd6928
MD5 b0ccdd73a656c8fba413743f7624ce6c
BLAKE2b-256 dbe8345ccdbb6a1b824fe5036c1e939c1e80e24fc1c0c7687ca9650ee901841e

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 465148ff143bb23ef5fc3458d77e48402c31880de52e95d532673e83f9fa1ce8
MD5 c9ffa8f2545348d0ab0a5450d13c790b
BLAKE2b-256 4b8e2b28ddc00bf5f8bb4a4a47aafd0dc2adcdca61d8aefc49658e3bbbbdd93a

See more details on using hashes here.

File details

Details for the file line_profiler-5.0.1-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for line_profiler-5.0.1-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b017b000551f033a4247affbf58f208b70f331619f439df3ab40844840545f09
MD5 8f56f8260817242f5388350d5fd2db2a
BLAKE2b-256 deff0e7ff1e47ad874659dba982b109de28cbe8a2c739cedb082a3cb68aa5cfc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page