]> git.madduck.net Git - etc/vim.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Decrease cost of ipynb code path when unneeded (#3748)
authorShantanu <12621235+hauntsaninja@users.noreply.github.com>
Tue, 27 Jun 2023 00:47:55 +0000 (17:47 -0700)
committerGitHub <noreply@github.com>
Tue, 27 Jun 2023 00:47:55 +0000 (17:47 -0700)
IPython is a very expensive import, like, at least 300ms. I'd also
venture that it's much more common than tokenize-rt, which is like 30ms.
I work in a repo where I use black, have IPython installed and there
happen to be a couple notebooks (that we don't want formatted). I know I
can force exclude ipynb, but this change doesn't really have a cost.

CHANGES.md
src/black/handle_ipynb_magics.py

index a9d4d9d63c96f1dcadab6c5d4ec3b617bef071f7..6fa0e4b7cc0d8e0299538a055b7098ef6e0779f6 100644 (file)
@@ -47,6 +47,8 @@
 
 <!-- Changes that improve Black's performance. -->
 
 
 <!-- Changes that improve Black's performance. -->
 
+- Avoid importing `IPython` in a case where we wouldn't need it (#3748)
+
 ### Output
 
 <!-- Changes to Black's terminal output and error messages -->
 ### Output
 
 <!-- Changes to Black's terminal output and error messages -->
index 9e1af757c32a70d4357a0792ae163fc3898c2ffb..2b6b920921195bbbb7ec18741b14ca8ce621097b 100644 (file)
@@ -58,8 +58,13 @@ class Replacement:
 @lru_cache()
 def jupyter_dependencies_are_installed(*, verbose: bool, quiet: bool) -> bool:
     try:
 @lru_cache()
 def jupyter_dependencies_are_installed(*, verbose: bool, quiet: bool) -> bool:
     try:
-        import IPython  # noqa:F401
+        # isort: off
+        # tokenize_rt is less commonly installed than IPython
+        # and IPython is expensive to import
         import tokenize_rt  # noqa:F401
         import tokenize_rt  # noqa:F401
+        import IPython  # noqa:F401
+
+        # isort: on
     except ModuleNotFoundError:
         if verbose or not quiet:
             msg = (
     except ModuleNotFoundError:
         if verbose or not quiet:
             msg = (