Skip to main content

pyflyby - Python development productivity tools, in particular automatic import management

Project description

https://badge.fury.io/py/pyflyby.svg

Pyflyby is a set of Python programming productivity tools for Python.

For command-line interaction:
  • py: command-line multitool

For IPython interaction:
  • autoimporter: automatically imports symbols when needed.

For editing python source code:
  • tidy-imports: adds missing ‘import’s, removes unused ‘import’s, and also reformats import blocks.

  • find-import: prints to stdout how to import a particular symbol.

  • reformat-imports: reformats import blocks

  • collect-imports: prints out all the imports in a given set of files.

  • collect-exports: prints out definitions in a given set of modules, in the form of import statements.

  • transform-imports: renames imported modules/functions.

Learn more about Pyflyby in this blog post.

Installation

$ pip install pyflyby
This creates an alias for your ipython named py which runs the pyflyby plug internally.

pyflyby has a dependency on ipython, if it isn’t already installed do install it with:

$ pip install ipython

Quick start: Autoimporter + IPython

$ py
In [1]: re.search("[a-z]+", "....hello...").group(0)
[PYFLYBY] import re
Out[1]: 'hello'

In [2]: scoreatpercentile(arange(5), 50)
[PYFLYBY] from numpy import arange
[PYFLYBY] from scipy.stats import scoreatpercentile
Out[2]: 2.0

To load pyflyby into an existing IPython session as a 1-off:

$ ipython
In [1]: %load_ext pyflyby

To configure IPython/Jupyter Notebook to load pyflyby automatically:

$ py pyflyby.install_in_ipython_config_file

or

$ echo 'c.InteractiveShellApp.extensions.append("pyflyby")' \
  >> ~/.ipython/profile_default/ipython_config.py

$ ipython
In [1]: b64decode('aGVsbG8=')
[PYFLYBY] from base64 import b64decode
Out[1]: b'hello'

Auto importer lazy variables

It is possible to use the autoimporter to lazily define variables.

To use, put the following in your IPython startup files (~/.ipython/profile_default/startup/autoimp.py), or in your IPython configuration file:

from pyflyby import add_import

add_import("foo", "foo = 1")

add_import(
    "df, data as dd",
    '''
    import pandas as pd
    data = [1,2,3]
    df =  pd.DataFrame(data)
''')

You can add the keyword strict=False to not fail if not in IPython or of the pyflyby extensions is not loaded.

Quick start: py command-line multi-tool

$ py b64decode aGVsbG8=
[PYFLYBY] from base64 import b64decode
[PYFLYBY] b64decode('aGVsbG8=', altchars=None)
b'hello'

$ py log2 sys.maxsize
[PYFLYBY] from numpy import log2
[PYFLYBY] import sys
[PYFLYBY] log2(9223372036854775807)
63.0

$ py 'plot(cos(arange(30)))'
[PYFLYBY] from numpy import arange
[PYFLYBY] from numpy import cos
[PYFLYBY] from matplotlib.pyplot import plot
[PYFLYBY] plot(cos(arange(30)))
<plot>

$ py 38497631 / 13951446
2.7594007818257693

$ py foo.py

Quick start: tidy-imports

To use tidy-imports, just specify the filename(s) to tidy.

For example:

$ echo 're.search("[a-z]+", "....hello..."), scoreatpercentile(arange(5), 50)' > foo.py

$ tidy-imports foo.py
--- /tmp/foo.py
+++ /tmp/foo.py
@@ -1 +1,5 @@
+from   numpy                    import arange
+from   scipy.stats              import scoreatpercentile
+import re
+
 re.search("[a-z]+", "....hello..."), scoreatpercentile(arange(5), 50)

Replace /tmp/foo.py? [y/N]

To exclude a file, use –exclude <pattern>.

Local imports

By default, tidy-imports only touches top-level import statements. To also tidy imports inside function and class bodies (removing unused local imports), use the --tidy-local-imports flag:

$ tidy-imports --tidy-local-imports foo.py

You can make this the default for a project via pyproject.toml (see Per-Project configuration of tidy-imports).

Ignoring specific imports

To keep a particular import that would otherwise be removed as unused, add the # tidy-imports: ignore-import comment pragma to that line:

import os  # tidy-imports: ignore-import

This works for both top-level and local imports, and for from style imports:

from mypackage import _setup_hooks  # tidy-imports: ignore-import

def foo():
    import pdb  # tidy-imports: ignore-import
    ...

Quick start: import libraries

Create a file named .pyflyby with lines such as

from mypackage.mymodule import MyClass, my_function
import anotherpackage.anothermodule

You can put this file in your home directory or in the same directory as your *.py files.

Details: automatic imports

AUTOMATIC IMPORTS - never type “import” again!

This module allows your “known imports” to work automatically in your IPython interactive session without having to type the ‘import’ statements (and also without having to slow down your Python startup with imports you only use occasionally).

Example:

In [1]: re.search("[a-z]+", "....hello...").group(0)
[PYFLYBY] import re
Out[1]: 'hello'

In [2]: scoreatpercentile(arange(5), 50)
[PYFLYBY] from numpy import arange
[PYFLYBY] from scipy.stats import scoreatpercentile
Out[2]: 2.0

In [3]: np.sin(arandom(5))
[PYFLYBY] from numpy.random import random as arandom
[PYFLYBY] import numpy as np
Out[3]: [ 0.0282  0.0603  0.4653  0.8371  0.3347]

In [4]: isinstance(42, Number)
[PYFLYBY] from numbers import Number
Out[4]: True

It just works

Tab completion works, even on modules that are not yet imported. In the following example, notice that numpy is imported when we need to know its members, and only then:

$ ipython
In [1]: nump<TAB>
In [1]: numpy
In [1]: numpy.arang<TAB>
[PYFLYBY] import numpy
In [1]: numpy.arange

The IPython “?” magic help (pinfo/pinfo2) automatically imports symbols first if necessary:

$ ipython
In [1]: arange?
[PYFLYBY] from numpy import arange
... Docstring: arange([start,] stop[, step,], dtype=None) ...

Other IPython magic commands work as well:

$ ipython
In [1]: %timeit np.cos(pi)
[PYFLYBY] import numpy as np
[PYFLYBY] from numpy import pi
100000 loops, best of 3: 2.51 us per loop

$ echo 'print(arange(4))' > foo.py
$ ipython
In [1]: %run foo.py
[PYFLYBY] from numpy import arange
[0 1 2 3]

Implementation details

The automatic importing happens at parse time, before code is executed. The namespace never contains entries for names that are not yet imported.

This method of importing at parse time contrasts with previous implementations of automatic importing that use proxy objects. Those implementations using proxy objects don’t work as well, because it is impossible to make proxy objects behave perfectly. For example, instance(x, T) will return the wrong answer if either x or T is a proxy object.

Details: import libraries

Pyflyby uses “import libraries” that tell how to import a given symbol.

An import library file is simply a python source file containing ‘import’ (or ‘from … import …’) lines. These can be generated automatically with collect-imports and collect-exports.

Known imports

Find-imports, tidy-imports, and autoimport consult the database of known imports to figure out where to get an import. For example, if the imports database contains:

from numpy import arange, nan

then when you type the following in IPython:

print(arange(10))

the autoimporter would automatically execute from numpy import arange.

The database can be one file or multiple files. This makes it easy to have project-specific known_imports along with global and per-user defaults.

The PYFLYBY_PATH environment variable specifies which files to read. This is a colon-separated list of filenames or directory names. The default is:

PYFLYBY_PATH=/etc/pyflyby:~/.pyflyby:.../.pyflyby

If you set:

PYFLYBY_PATH=/foo1/bar1:/foo2/bar2

then this replaces the default.

You can use a hyphen to include the default in the path. If you set:

PYFLYBY_PATH=/foo1/bar1:-:/foo2/bar2

then this reads /foo1/bar1, then the default locations, then /foo2/bar2.

In $PYFLYBY_PATH, .../.pyflyby (with _three_ dots) means that all ancestor directories are searched for a member named “.pyflyby”.

For example, suppose the following files exist:

/etc/pyflyby/stuff.py
/u/quarl/.pyflyby/blah1.py
/u/quarl/.pyflyby/more/blah2.py
/proj/share/mypythonstuff/.pyflyby
/proj/share/mypythonstuff/foo/bar/.pyflyby/baz.py
/.pyflyby

Further, suppose:

  • /proj is on a separate file system from /.

  • $HOME=/u/quarl

Then tidy-imports /proj/share/mypythonstuff/foo/bar/quux/zot.py will by default use the following:

/etc/pyflyby/stuff.py
/u/quarl/.pyflyby/blah1.py
/u/quarl/.pyflyby/more/blah2.py
/proj/share/mypythonstuff/foo/bar/.pyflyby/baz.py
/proj/share/mypythonstuff/.pyflyby (a file)

Forgetting imports

Occasionally you may have reason to tell pyflyby to “forget” entries from the database of known imports.

You can put the following in any file reachable from $PYFLYBY_PATH:

__forget_imports__ = ["from numpy import nan"]

This is useful if you want to use a set of imports maintained by someone else except for a few particular imports.

Entries in $PYFLYBY_PATH are processed left-to-right in the order specified, so put the files containing these at the end of your $PYFLYBY_PATH. By default, tidy-imports and friends process /etc/pyflyby, then ~/.pyflyby, then the per-directory .pyflyby.

Mandatory imports

Within a certain project you may have a policy to always include certain imports. For example, maybe you always want to do from __future__ import division in all files.

You can put the following in any file reachable from $PYFLYBY_PATH:

__mandatory_imports__ = ["from __future__ import division"]

To undo mandatory imports inherited from other .pyflyby files, use __forget_imports__ (see above).

Canonicalize imports

Sometimes you want every run of tidy-imports to automatically rename an import to a new name.

You can put the following in any file reachable from $PYFLYBY_PATH:

__canonical_imports__ = {"oldmodule.oldfunction": "newmodule.newfunction"}

This is equivalent to running:

tidy-imports --transform=oldmodule.oldfunction=newmodule.newfunction

Soapbox: avoid “star” imports

When programming in Python, a good software engineering practice is to avoid using from foopackage import * in production code.

This style is a maintenance nightmare:

  • It becomes difficult to figure out where various symbols (functions/classes/etc) come from.

  • It’s hard to tell what gets shadowed by what.

  • When the package changes in trivial ways, your code will be affected. Consider the following example: Suppose foopackage.py contains import sys, and myprogram.py contains from foopackage import *; if some_condition: sys.exit(0). If foopackage.py changes so that import sys is removed, myprogram.py is now broken because it’s missing import sys.

To fix such code, you can run tidy-imports --replace-star-imports to automatically replace star imports with the specific needed imports.

Per-Project configuration of tidy-imports

You can configure Pyflyby on a per-repository basis by using the [tool.pyflyby] section of pyproject.toml files. Pyflyby will look in current working directory and all it’s parent until it find a pyproject.toml file from which it will load the defaults.

Most of the long command line flags default values can be configured in this section. Simply use the long form option name by replacing dashes - by underscore _. For long option that have the form --xxx and --no-xxx, you can assign a boolean to xxx. For example:

.. code:: toml

[tool.pyflyby] add_missing=true from_spaces=7 remove_unused=false tidy_local_imports=true

To exclude files from tidy-imports, add an exclusion pattern to tool.pyflyby.tidy-imports.exclude:

[tool.pyflyby.tidy-imports]
exclude = [
    "foo.py",
    "baz/*.py"
]

Exclusions are assumed to be relative to the project root if a pyproject.toml exists, unless an absolute path is specified. Consult the documentation for pathlib.Path.match for information about valid exclusion patterns.

Emacs support

  • To get a M-x tidy-imports command in GNU Emacs, add to your ~/.emacs:

    (load "/<site-packages>/pyflyby/share/emacs/site-lisp/pyflyby.el")
  • Pyflyby.el doesn’t yet work with XEmacs; patches welcome.

saveframe: A utility for debugging / reproducing an issue

PyFlyBy provides a utility named saveframe which can be used to save information for debugging / reproducing an issue.

Usage: If you have a piece of code or a script that is failing due an issue originating from upstream code, and you cannot share your private code as a reproducer, use this utility to save relevant information to a file. Share the generated file with the upstream team, enabling them to reproduce and diagnose the issue independently.

Information saved in the file: This utility captures and saves error stack frames to a file. It includes the values of local variables from each stack frame, as well as metadata about each frame and the exception raised by your code.

This utility comes with 2 interfaces:

  1. A function: For interactive usages such as IPython, Jupyter Notebook, or a debugger (pdb/ipdb), use pyflyby.saveframe function. To know how to use this function, checkout it’s documentation:

In [1]: saveframe?
  1. A script: For cli usages (like a failing script), use pyflyby/bin/saveframe script. To know how to use this script, checkout its documentation:

$ saveframe --help

Authorship

This plugin was contributed back to the community by the D. E. Shaw group.

https://www.deshaw.com/assets/logos/blue_logo_417x125.png

Pyflyby is written by Karl Chen <quarl@8166.clguba.z.quarl.org>

We love contributions! Before you can contribute, please sign and submit this Contributor License Agreement (CLA). This CLA is in place to protect all users of this project.

License

Pyflyby is released under a very permissive license, the MIT/X11 license; see LICENSE.txt.

Release

  1. Check version number in lib/python/pyflyby/_version.py, maybe increase it.

  2. Commit and tag if necessary, and push tags/commits.

  3. Optional: Set SOURCE_DATE_EPOCH for reproducible build:

    export SOURCE_DATE_EPOCH=$(git show -s --format=%ct HEAD)
  4. Build the SDIST:

    python -m build --sdist
  5. Optional Repack the Sdist to make sure the ZIP only contain SOURCE_DATE_EPOCH date using IPython tools:

    python ~/dev/ipython/tools/retar.py dist/pyflyby-1.7.8.tar.gz
    shasum -a 256 dist/*
  6. Optional, redo 4 & 5 to verify checksum is unchanged.

  7. Upload using twine:

    twine upload dist/*
  8. Check/update https://github.com/conda-forge/pyflyby-feedstock for new pyflyby release on conda-forge

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

pyflyby-1.11.0.tar.gz (357.5 kB view details)

Uploaded Source

Built Distributions

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

pyflyby-1.11.0-cp314-cp314t-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

pyflyby-1.11.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (403.2 kB view details)

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

pyflyby-1.11.0-cp314-cp314t-macosx_11_0_arm64.whl (307.1 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

pyflyby-1.11.0-cp314-cp314-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pyflyby-1.11.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (403.1 kB view details)

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

pyflyby-1.11.0-cp314-cp314-macosx_11_0_arm64.whl (303.7 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pyflyby-1.11.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pyflyby-1.11.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (403.0 kB view details)

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

pyflyby-1.11.0-cp313-cp313-macosx_11_0_arm64.whl (303.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyflyby-1.11.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pyflyby-1.11.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (402.9 kB view details)

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

pyflyby-1.11.0-cp312-cp312-macosx_11_0_arm64.whl (303.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyflyby-1.11.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pyflyby-1.11.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (401.0 kB view details)

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

pyflyby-1.11.0-cp311-cp311-macosx_11_0_arm64.whl (303.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pyflyby-1.11.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pyflyby-1.11.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (399.9 kB view details)

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

pyflyby-1.11.0-cp310-cp310-macosx_11_0_arm64.whl (301.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file pyflyby-1.11.0.tar.gz.

File metadata

  • Download URL: pyflyby-1.11.0.tar.gz
  • Upload date:
  • Size: 357.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pyflyby-1.11.0.tar.gz
Algorithm Hash digest
SHA256 e2b39902503f9cb0f4aed38a2aa9503e1a5808fc601b1f6758e8d9f8edcc858b
MD5 79adff6f9900d867f15541597fb909ed
BLAKE2b-256 2af6c2154f38463fe45e95b454aee42fafe8a5a27ddb5cabf9b044b47107aa1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0.tar.gz:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 89cb75ddc8e18746b14860a2c3ce09f4d2d11819a2aaffa506f3ff21d13e39f6
MD5 0ffe7117bf1b899f1d83adc2c76ee941
BLAKE2b-256 f724c87bc12bb7153d6a0d90740c2bb322377948c82ebdf9bcf7ef424ab2e906

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 28baf9ae4d4d4b24e1f5a984b52daa055c11780e928b92627d65b5abe6a7ef8b
MD5 588f9c4e0c257336a69bf8d98d56a470
BLAKE2b-256 8a1031b0cee80150aa087024e170da879e3e0c0af80c4f1fe6833bfc21d3aef9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 937295f9987d8f37dfd505679b5edf7055bca53708c99cf0a0b92073e66067ea
MD5 a1966c23c3f28faccc7d05b174a509ff
BLAKE2b-256 9b61dfd5153f6d3b2e04c6b76d85f8abfb7dea6760ed2ce3ed3c84c65a623294

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 60ba82fec0e167fadec9853ab0aaa047df1ba8e11150c7cb7b2d21dc2d79c1ba
MD5 978e602f85fd827f98978cadcefd71b7
BLAKE2b-256 de54c73dcabdd1bae6bd261ed73114531191a4be7bf86224535779eda2c51c86

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1605726ffa76c8cdb403a448e90f7136340932ab78e78334fc2fd7f88a8b99d4
MD5 89951b59baa280f6a9fd6b98b42140a5
BLAKE2b-256 5febcab7ad362bd43624118e097544e0decfb03494a70814a564bc339088c357

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 23ad8a0e0d1bb3ddfcdf1dca55c988562fa47975803ca96c21e2292de7870864
MD5 024bd7a116da145a4153c012c1979e44
BLAKE2b-256 71d212d49201cef13bfbfdd1a615ed7865cc98a12b8f9606c69378e985267da1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3ec2ed74265d8b45a347a186aefd26ab0d3d17444f07e24451cae4684e45eb55
MD5 e4432c6b119971050762d7f0393d872b
BLAKE2b-256 d8b25fc0f2ed4a1c799e458958cc4e025aea8eb414d5093469be22d21e7372d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e6cce85d0ec49b431294f8b0da8c9d3433806341f3deedcf163c135defc915f4
MD5 783867b799a7c81def1ebe3d3b2b15b0
BLAKE2b-256 5feb94d8ef44fa69d9271e4b26932ff131042b34c5f5318dfbd9afd93077c105

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cc07f92d4c0c7b445540c16e353d1f3e4718231f8a17c19308d7a44b60fff7e9
MD5 a6035dba5e84d55a9e4efc18405993c9
BLAKE2b-256 dd5147acdc89df1075fd44019ca21e5786ee481d1577646c00efe0e92843d3a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 84f2dffab64d67583f503d6a6a43b52502798cf612198d6025e9d706d2d02f15
MD5 1a8d1efa17beee18682428965b61be95
BLAKE2b-256 efe4a4bedbc05cc6d5a02044e754e98c2b0427a6c12c35c4baa4334afecb5eb8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3ea3e2ae45a71b4f9451c2b7247f8a871401f5eedc264dccf1119194f56cd3df
MD5 e7ddabe7e335b8ca506890148115723c
BLAKE2b-256 7e3161fc0404674d5525db4b9146b42f2617f68c708ac258ac6845ca690635f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 12d0516872be6f3a4ee004008e558290eb25ed1cd7f518a85fd27f0541e6d69c
MD5 75e9367f2c8b28829309b71523726ec7
BLAKE2b-256 36154d3dda65de5295c0261a5e928fce2189ad10cd56428448de1b97e6836527

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e26e6101f451b5d80a43d4014e63970befd3b069b096cb626f9ef19cf27aea80
MD5 93621a8c968a1f11f7fa96dd922158ef
BLAKE2b-256 3c9a41073845341d9a6c40011876a3d096dd3d1bb0449a37ca1080f113a9bcee

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2eaa2fa7de11e82b344f0d064ec78d54e896b87e7956921e390af5e6956777b1
MD5 0ecd3a0f0f9480643ceed1b6abd55db5
BLAKE2b-256 18357642a7c81aa6d27a1356059e5ce1dff07bfc7bd0b964119d7a0e062030ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5ae1cf1a496eac3fcaa165f679a3da3ec1f174a2b6657e43a50969fee0f351b5
MD5 2b91c04fffbb82d512b15246a5d40303
BLAKE2b-256 bf80f94113a505fbb4af0ee6d85b9577387f8dfef6c18b6cf4803cb88c830c37

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c9169092c37cd58e0737070e0905bdf977e6ee0c81ac6b4a4ddfed67d27984e6
MD5 c6285ca450987533ded43257835eba14
BLAKE2b-256 b7bbb37121c7730f0e20cb10af0b7ed5ae083bdc31da61c3dae4c1447b50cce2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0db6e222bcbf251f20e0a12e04beca76bac23c2fcebf648ef69c046933abe37c
MD5 c33a32d0a62631d11920aa6653026199
BLAKE2b-256 531e4cdd1209725b6d7629d1dff3468ce32e686279baaa6355ef7501ed4bf7bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyflyby-1.11.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyflyby-1.11.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0d4316a968cfa60015e92d2a90069b48b4fdefc976428002eb1a818b47653f70
MD5 d04abd1d0882349bf37af2d3ea87c653
BLAKE2b-256 07e3a8372f3bace48af8f861111deb4599bce9ff4693e85596e093d5d0d48ce9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyflyby-1.11.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build.yml on deshaw/pyflyby

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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