scientific-python/lazy-loader

BUG: lazy_loader imports all lazy-loaded packages when trying to lazy-load a missing package

RenaudLN opened this issue · 2 comments

MRE:

  • Load an existing package with lazy_loader.load
  • Load a missing package with lazy_loader.load
  • Notice that the existing package has been imported
Good behaviour: lazy-loading an existing package
❯ python -X importtime -c 'import lazy_loader;lazy_loader.load("pandas")'
import time: self [us] | cumulative | imported package
import time:       423 |        423 |   _io
import time:        79 |         79 |   marshal
import time:       721 |        721 |   posix
import time:      1460 |       2682 | _frozen_importlib_external
import time:       117 |        117 |   time
import time:       237 |        353 | zipimport
import time:       145 |        145 |     _codecs
import time:       505 |        649 |   codecs
import time:      1098 |       1098 |   encodings.aliases
import time:      1374 |       3121 | encodings
import time:       960 |        960 | encodings.utf_8
import time:       208 |        208 | _signal
import time:        95 |         95 |     _abc
import time:       548 |        642 |   abc
import time:       594 |       1236 | io
import time:       120 |        120 |       _stat
import time:       597 |        717 |     stat
import time:      1996 |       1996 |     _collections_abc
import time:       225 |        225 |       genericpath
import time:       564 |        788 |     posixpath
import time:      1344 |       4844 |   os
import time:       292 |        292 |   _sitebuiltins
import time:       839 |        839 |     __future__
import time:       893 |        893 |         warnings
import time:      1263 |       2155 |       importlib
import time:       541 |       2695 |     importlib.machinery
import time:       371 |        371 |       importlib._abc
import time:       139 |        139 |           itertools
import time:       201 |        201 |           keyword
import time:       107 |        107 |             _operator
import time:       451 |        557 |           operator
import time:       270 |        270 |           reprlib
import time:       966 |        966 |           _collections
import time:      1308 |       3439 |         collections
import time:       352 |        352 |           types
import time:       231 |        231 |           _functools
import time:       872 |       1454 |         functools
import time:      1093 |       5985 |       contextlib
import time:       716 |       7071 |     importlib.util
import time:       761 |        761 |           enum
import time:        93 |         93 |             _sre
import time:      3219 |       3219 |               sre_constants
import time:      1142 |       4361 |             sre_parse
import time:       499 |       4952 |           sre_compile
import time:       704 |        704 |           _locale
import time:       537 |        537 |           copyreg
import time:      3295 |      10246 |         re
import time:       152 |      10398 |       fnmatch
import time:        98 |         98 |         _winapi
import time:        68 |         68 |         nt
import time:        83 |         83 |         nt
import time:        51 |         51 |         nt
import time:        53 |         53 |         nt
import time:       539 |        888 |       ntpath
import time:        81 |         81 |       errno
import time:       181 |        181 |         urllib
import time:      1111 |       1291 |       urllib.parse
import time:       986 |      13643 |     pathlib
import time:      3972 |      28219 |   __editable___forecasting_2_12_1a11_finder
import time:       473 |        473 |   _distutils_hack
import time:        62 |         62 |   sitecustomize
import time:        67 |         67 |   usercustomize
import time:      4973 |      38927 | site
import time:       872 |        872 |     _ast
import time:      3275 |       4147 |   ast
import time:       277 |        277 |     _weakrefset
import time:      1662 |       1939 |   threading
import time:      1279 |       7363 | lazy_loader
Bad behaviour: lazy-load an existing then a missing package
❯ python -X importtime -c 'import lazy_loader;lazy_loader.load("pandas");lazy_loader.load("not_found")'
import time: self [us] | cumulative | imported package
import time:       230 |        230 |   _io
import time:        57 |         57 |   marshal
import time:       474 |        474 |   posix
import time:       915 |       1675 | _frozen_importlib_external
import time:       117 |        117 |   time
import time:       274 |        391 | zipimport
import time:       176 |        176 |     _codecs
import time:       701 |        877 |   codecs
import time:      2380 |       2380 |   encodings.aliases
import time:      1460 |       4715 | encodings
import time:       476 |        476 | encodings.utf_8
import time:       111 |        111 | _signal
import time:        59 |         59 |     _abc
import time:       404 |        463 |   abc
import time:       543 |       1005 | io
import time:        62 |         62 |       _stat
import time:       352 |        413 |     stat
import time:      1178 |       1178 |     _collections_abc
import time:       175 |        175 |       genericpath
import time:       447 |        621 |     posixpath
import time:       878 |       3089 |   os
import time:       371 |        371 |   _sitebuiltins
import time:       364 |        364 |     __future__
import time:       401 |        401 |         warnings
import time:       381 |        782 |       importlib
import time:       314 |       1095 |     importlib.machinery
import time:       776 |        776 |       importlib._abc
import time:       167 |        167 |           itertools
import time:       579 |        579 |           keyword
import time:       116 |        116 |             _operator
import time:      1801 |       1917 |           operator
import time:       492 |        492 |           reprlib
import time:      1179 |       1179 |           _collections
import time:      1324 |       5655 |         collections
import time:       543 |        543 |           types
import time:       375 |        375 |           _functools
import time:      1048 |       1964 |         functools
import time:      1731 |       9350 |       contextlib
import time:       858 |      10983 |     importlib.util
import time:      1276 |       1276 |           enum
import time:       107 |        107 |             _sre
import time:       502 |        502 |               sre_constants
import time:       531 |       1033 |             sre_parse
import time:       384 |       1523 |           sre_compile
import time:       109 |        109 |           _locale
import time:       237 |        237 |           copyreg
import time:       802 |       3945 |         re
import time:       280 |       4224 |       fnmatch
import time:        99 |         99 |         _winapi
import time:        63 |         63 |         nt
import time:        95 |         95 |         nt
import time:        75 |         75 |         nt
import time:       288 |        288 |         nt
import time:       776 |       1394 |       ntpath
import time:        98 |         98 |       errno
import time:       188 |        188 |         urllib
import time:      4603 |       4791 |       urllib.parse
import time:      1428 |      11933 |     pathlib
import time:      1127 |      25500 |   __editable___forecasting_2_12_1a11_finder
import time:      1147 |       1147 |   _distutils_hack
import time:       132 |        132 |   sitecustomize
import time:        97 |         97 |   usercustomize
import time:     12749 |      43081 | site
import time:       980 |        980 |     _ast
import time:      1360 |       2339 |   ast
import time:       753 |        753 |     _weakrefset
import time:      1199 |       1952 |   threading
import time:       893 |       5183 | lazy_loader
import time:       148 |        148 |       _opcode
import time:       373 |        520 |     opcode
import time:       541 |       1061 |   dis
import time:       275 |        275 |   collections.abc
import time:       450 |        450 |       token
import time:      1784 |       2234 |     tokenize
import time:       345 |       2578 |   linecache
import time:      2242 |       6153 | inspect
import time:       203 |        203 |       numpy._utils._convertions
import time:       283 |        486 |     numpy._utils
import time:       514 |        999 |   numpy._globals
import time:       331 |        331 |   numpy.exceptions
import time:       179 |        179 |   numpy.version
import time:       125 |        125 |   numpy._distributor_init
import time:       116 |        116 |             numpy._utils._inspect
import time:      1410 |       1410 |                 math
import time:       468 |        468 |                 _datetime
import time:      1597 |       3475 |               datetime
import time:       456 |        456 |               numpy.core._exceptions
import time:       249 |        249 |               numpy.dtypes
import time:     22786 |      26964 |             numpy.core._multiarray_umath
import time:       473 |      27552 |           numpy.core.overrides
import time:       709 |      28261 |         numpy.core.multiarray
import time:       348 |        348 |         numpy.core.umath
import time:       418 |        418 |           numbers
import time:       179 |        179 |           numpy.core._string_helpers
import time:       109 |        109 |                 pickle5
import time:       334 |        334 |                     _struct
import time:       202 |        536 |                   struct
import time:       318 |        318 |                   _compat_pickle
import time:       423 |        423 |                   _pickle
import time:       101 |        101 |                       org
import time:        29 |        130 |                     org.python
import time:        32 |        161 |                   org.python.core
import time:      1194 |       2629 |                 pickle
import time:      6021 |       8758 |               numpy.compat.py3k
import time:       207 |       8964 |             numpy.compat
import time:       370 |        370 |             numpy.core._dtype
import time:       486 |       9819 |           numpy.core._type_aliases
import time:       543 |      10957 |         numpy.core.numerictypes
import time:       194 |        194 |                     _contextvars
import time:       174 |        368 |                   contextvars
import time:       270 |        637 |                 numpy.core._ufunc_config
import time:       251 |        888 |               numpy.core._methods
import time:      1225 |       2112 |             numpy.core.fromnumeric
import time:       413 |       2524 |           numpy.core.shape_base
import time:       671 |        671 |           numpy.core.arrayprint
import time:       177 |        177 |           numpy.core._asarray
import time:      1345 |       4715 |         numpy.core.numeric
import time:      1184 |       1184 |         numpy.core.defchararray
import time:       377 |        377 |         numpy.core.records
import time:       200 |        200 |         numpy.core.memmap
import time:       262 |        262 |         numpy.core.function_base
import time:       174 |        174 |         numpy.core._machar
import time:      1195 |       1195 |         numpy.core.getlimits
import time:       386 |        386 |         numpy.core.einsumfunc
import time:       344 |        344 |           numpy.core._multiarray_tests
import time:      4291 |       4635 |         numpy.core._add_newdocs
import time:       592 |        592 |         numpy.core._add_newdocs_scalars
import time:       172 |        172 |         numpy.core._dtype_ctypes
import time:      1249 |       1249 |             _ctypes
import time:       453 |        453 |             ctypes._endian
import time:      7521 |       9222 |           ctypes
import time:      1252 |      10474 |         numpy.core._internal
import time:       379 |        379 |         numpy._pytesttester
import time:       931 |      65234 |       numpy.core
import time:        55 |      65289 |     numpy.core._multiarray_umath
import time:       538 |      65826 |   numpy.__config__
import time:       955 |        955 |     numpy.lib.mixins
import time:       191 |        191 |         numpy.lib.ufunclike
import time:       427 |        618 |       numpy.lib.type_check
import time:       425 |       1042 |     numpy.lib.scimath
import time:      4831 |       4831 |               typing
import time:       323 |        323 |                 numpy.lib.stride_tricks
import time:       529 |        852 |               numpy.lib.twodim_base
import time:       681 |        681 |               numpy.linalg._umath_linalg
import time:       835 |        835 |                 numpy._typing._nested_sequence
import time:       261 |        261 |                 numpy._typing._nbit
import time:      1503 |       1503 |                 numpy._typing._char_codes
import time:       600 |        600 |                 numpy._typing._scalars
import time:       209 |        209 |                 numpy._typing._shape
import time:      7640 |       7640 |                 numpy._typing._dtype_like
import time:      5679 |       5679 |                 numpy._typing._array_like
import time:      2685 |      19408 |               numpy._typing
import time:      2022 |      27792 |             numpy.linalg.linalg
import time:       236 |      28027 |           numpy.linalg
import time:       443 |      28469 |         numpy.matrixlib.defmatrix
import time:       245 |      28714 |       numpy.matrixlib
import time:      6548 |       6548 |         numpy.lib.histograms
import time:      1752 |       8299 |       numpy.lib.function_base
import time:      2055 |      39066 |     numpy.lib.index_tricks
import time:      4268 |       4268 |     numpy.lib.nanfunctions
import time:       654 |        654 |     numpy.lib.shape_base
import time:      1197 |       1197 |     numpy.lib.polynomial
import time:      1945 |       1945 |       textwrap
import time:      1302 |       1302 |           signal
import time:       362 |        362 |           fcntl
import time:       141 |        141 |           msvcrt
import time:       247 |        247 |           _posixsubprocess
import time:       265 |        265 |           select
import time:      1152 |       1152 |           selectors
import time:      4278 |       7743 |         subprocess
import time:      6619 |      14361 |       platform
import time:      1021 |      17326 |     numpy.lib.utils
import time:       517 |        517 |     numpy.lib.arraysetops
import time:       806 |        806 |       weakref
import time:       565 |        565 |       numpy.lib.format
import time:       376 |        376 |       numpy.lib._datasource
import time:       417 |        417 |       numpy.lib._iotools
import time:       989 |       3151 |     numpy.lib.npyio
import time:       206 |        206 |     numpy.lib.arrayterator
import time:       682 |        682 |     numpy.lib.arraypad
import time:       153 |        153 |     numpy.lib._version
import time:      1541 |      70752 |   numpy.lib
import time:       337 |        337 |       numpy.fft._pocketfft_internal
import time:       497 |        834 |     numpy.fft._pocketfft
import time:       208 |        208 |     numpy.fft.helper
import time:       283 |       1325 |   numpy.fft
import time:       639 |        639 |       numpy.polynomial.polyutils
import time:      1180 |       1180 |       numpy.polynomial._polybase
import time:      1116 |       2935 |     numpy.polynomial.polynomial
import time:       586 |        586 |     numpy.polynomial.chebyshev
import time:      1563 |       1563 |     numpy.polynomial.legendre
import time:      1909 |       1909 |     numpy.polynomial.hermite
import time:       764 |        764 |     numpy.polynomial.hermite_e
import time:       461 |        461 |     numpy.polynomial.laguerre
import time:       970 |       9185 |   numpy.polynomial
import time:       118 |        118 |             backports_abc
import time:       828 |        946 |           numpy.random._common
import time:       466 |        466 |               binascii
import time:       371 |        837 |             base64
import time:      3812 |       3812 |               _hashlib
import time:       659 |        659 |                 _blake2
import time:      1013 |       1672 |               hashlib
import time:       624 |       6106 |             hmac
import time:       688 |        688 |                 _bisect
import time:       665 |       1353 |               bisect
import time:      1414 |       1414 |               _random
import time:       865 |        865 |               _sha512
import time:      2095 |       5725 |             random
import time:       408 |      13075 |           secrets
import time:       874 |      14895 |         numpy.random.bit_generator
import time:       501 |        501 |         numpy.random._bounded_integers
import time:       366 |        366 |         numpy.random._mt19937
import time:      1380 |      17140 |       numpy.random.mtrand
import time:       374 |        374 |       numpy.random._philox
import time:       401 |        401 |       numpy.random._pcg64
import time:       387 |        387 |       numpy.random._sfc64
import time:       808 |        808 |       numpy.random._generator
import time:       530 |      19638 |     numpy.random._pickle
import time:       360 |      19998 |   numpy.random
import time:       537 |        537 |   numpy.ctypeslib
import time:      4174 |       4174 |     numpy.ma.core
import time:      2062 |       2062 |     numpy.ma.extras
import time:       555 |       6789 |   numpy.ma
import time:      5717 |     181758 | numpy
import time:       313 |        313 |   pytz.exceptions
import time:       307 |        307 |   pytz.lazy
import time:       298 |        298 |   pytz.tzinfo
import time:       195 |        195 |   pytz.tzfile
import time:      1520 |       2632 | pytz
import time:       288 |        288 |   dateutil._version
import time:       360 |        647 | dateutil
import time:       620 |        620 |     sysconfig
import time:       667 |        667 |     _sysconfigdata__linux_x86_64-linux-gnu
import time:       727 |       2013 |   pandas.compat._constants
import time:       209 |        209 |       _compression
import time:       299 |        299 |       _bz2
import time:       357 |        864 |     bz2
import time:      1139 |       1139 |       _lzma
import time:       562 |       1700 |     lzma
import time:       339 |       2903 |   pandas.compat.compressors
import time:       234 |        234 |       pandas.util
import time:      9151 |       9384 |     pandas.util.version
import time:       624 |      10007 |   pandas.compat.numpy
import time:        67 |         67 |       gc
import time:       280 |        280 |       pyarrow._generated_version
import time:       138 |        138 |         backports_abc
import time:       786 |        786 |           _decimal
import time:       277 |       1062 |         decimal
import time:        99 |         99 |                     org
import time:        60 |        158 |                   org.python
import time:        28 |        186 |                 org.python.core
import time:       287 |        473 |               copy
import time:       828 |       1300 |             dataclasses
import time:       633 |        633 |               traceback
import time:        77 |         77 |                 _string
import time:      3245 |       3322 |               string
import time:       138 |        138 |               atexit
import time:      3389 |       7480 |             logging
import time:       676 |        676 |               _uuid
import time:      1094 |       1769 |             uuid
import time:       801 |      11348 |           cloudpickle.cloudpickle
import time:       363 |      11711 |         cloudpickle
import time:       611 |        611 |             _socket
import time:       428 |        428 |             array
import time:      2270 |       3307 |           socket
import time:       431 |       3738 |         pyarrow.util
import time:       758 |        758 |             _heapq
import time:       958 |       1715 |           heapq
import time:       651 |        651 |           _queue
import time:       741 |       3106 |         queue
import time:     40991 |      60744 |       pyarrow.lib
import time:      1848 |       1848 |       pyarrow._hdfsio
import time:       586 |        586 |         pyarrow.filesystem
import time:       513 |       1099 |       pyarrow.hdfs
import time:       457 |        457 |       pyarrow.ipc
import time:       913 |        913 |       pyarrow.types
import time:      3063 |      68467 |     pyarrow
import time:       586 |      69053 |   pandas.compat.pyarrow
import time:       610 |      84585 | pandas.compat
import time:      3648 |       3648 |     pandas._typing
import time:       321 |        321 |     pandas.util._exceptions
import time:      1670 |       5638 |   pandas._config.config
import time:       591 |        591 |   pandas._config.dates
import time:      1712 |       1712 |     locale
import time:       607 |       2319 |   pandas._config.display
import time:       670 |       9217 | pandas._config
import time:       823 |        823 |   pandas.core
import time:      3898 |       4721 | pandas.core.config_init
import time:      1457 |       1457 |     pandas._libs.pandas_parser
import time:        68 |         68 |         numpy._core
import time:        85 |        152 |       numpy._core._multiarray_umath
import time:       388 |        540 |     pandas._libs.pandas_datetime
import time:        61 |         61 |                     numpy._core
import time:        79 |        140 |                   numpy._core._multiarray_umath
import time:       336 |        475 |                 pandas._libs.tslibs.ccalendar
import time:        56 |         56 |                     numpy._core
import time:        64 |        119 |                   numpy._core._multiarray_umath
import time:       473 |        592 |                 pandas._libs.tslibs.np_datetime
import time:      1892 |       2957 |               pandas._libs.tslibs.dtypes
import time:       726 |        726 |                 pandas._libs.tslibs.base
import time:       137 |        137 |                         numpy._core
import time:       156 |        293 |                       numpy._core._multiarray_umath
import time:      1367 |       1659 |                     pandas._libs.tslibs.nattype
import time:       370 |        370 |                         pandas.compat._optional
import time:       387 |        387 |                           zoneinfo._tzpath
import time:       340 |        340 |                           zoneinfo._common
import time:       439 |        439 |                           _zoneinfo
import time:       482 |       1646 |                         zoneinfo
import time:       983 |        983 |                             six
import time:        66 |         66 |                             six.moves
import time:       346 |        346 |                             dateutil.tz._common
import time:       311 |        311 |                             dateutil.tz._factories
import time:       182 |        182 |                               six.moves.winreg
import time:       477 |        659 |                             dateutil.tz.win
import time:      1246 |       3608 |                           dateutil.tz.tz
import time:       382 |       3989 |                         dateutil.tz
import time:       110 |        110 |                           numpy._core
import time:        62 |        171 |                         numpy._core._multiarray_umath
import time:       991 |       7165 |                       pandas._libs.tslibs.timezones
import time:        88 |         88 |                         numpy._core
import time:        38 |        125 |                       numpy._core._multiarray_umath
import time:      1904 |       1904 |                           calendar
import time:      1845 |       3749 |                         _strptime
import time:        92 |         92 |                           numpy._core
import time:        93 |        184 |                         numpy._core._multiarray_umath
import time:       323 |        323 |                         pandas._config.localization
import time:      1210 |       5465 |                       pandas._libs.tslibs.fields
import time:      1742 |      14496 |                     pandas._libs.tslibs.timedeltas
import time:       125 |        125 |                         numpy._core
import time:       117 |        241 |                       numpy._core._multiarray_umath
import time:       999 |       1239 |                     pandas._libs.tslibs.tzconversion
import time:       204 |        204 |                     backports_abc
import time:       494 |        494 |                       numpy._core
import time:       230 |        723 |                     numpy._core._multiarray_umath
import time:      3727 |      22045 |                   pandas._libs.tslibs.timestamps
import time:       239 |        239 |                   backports_abc
import time:        91 |         91 |                     numpy._core
import time:       105 |        196 |                   numpy._core._multiarray_umath
import time:      1088 |       1088 |                   pandas._libs.properties
import time:      9244 |      32810 |                 pandas._libs.tslibs.offsets
import time:       262 |        262 |                   backports_abc
import time:       207 |        207 |                     numpy._core
import time:       188 |        394 |                   numpy._core._multiarray_umath
import time:       277 |        277 |                       dateutil._common
import time:      2638 |       2914 |                     dateutil.parser._parser
import time:       868 |        868 |                     dateutil.parser.isoparser
import time:       720 |       4500 |                   dateutil.parser
import time:        59 |         59 |                       numpy._core
import time:        74 |        133 |                     numpy._core._multiarray_umath
import time:      1276 |       1408 |                   pandas._libs.tslibs.strptime
import time:      4924 |      11486 |                 pandas._libs.tslibs.parsing
import time:       372 |        372 |                   numpy._core
import time:       357 |        728 |                 numpy._core._multiarray_umath
import time:      1869 |      47618 |               pandas._libs.tslibs.conversion
import time:        67 |         67 |                   numpy._core
import time:        56 |        123 |                 numpy._core._multiarray_umath
import time:       996 |       1119 |               pandas._libs.tslibs.period
import time:       110 |        110 |                   numpy._core
import time:       101 |        210 |                 numpy._core._multiarray_umath
import time:       999 |       1209 |               pandas._libs.tslibs.vectorized
import time:       582 |      53484 |             pandas._libs.tslibs
import time:        66 |      53549 |           pandas._libs.tslibs.nattype
import time:       122 |        122 |             numpy._core
import time:        85 |        207 |           numpy._core._multiarray_umath
import time:      1209 |       1209 |           pandas._libs.ops_dispatch
import time:      1768 |      56732 |         pandas._libs.missing
import time:       352 |        352 |           numpy._core
import time:       312 |        663 |         numpy._core._multiarray_umath
import time:      2474 |      59868 |       pandas._libs.hashtable
import time:        95 |         95 |         numpy._core
import time:        59 |        154 |       numpy._core._multiarray_umath
import time:        73 |         73 |           numpy._core
import time:        86 |        158 |         numpy._core._multiarray_umath
import time:      1167 |       1325 |       pandas._libs.algos
import time:      1136 |      62480 |     pandas._libs.interval
import time:       477 |      64953 |   pandas._libs
import time:       210 |        210 |     pandas.core.dtypes
import time:        94 |         94 |         numpy._core
import time:       114 |        208 |       numpy._core._multiarray_umath
import time:      1966 |       2174 |     pandas._libs.lib
import time:       788 |        788 |     pandas.errors
import time:       481 |        481 |       pandas.core.dtypes.generic
import time:       527 |       1007 |     pandas.core.dtypes.base
import time:       236 |        236 |     pandas.core.dtypes.inference
import time:      2657 |       7070 |   pandas.core.dtypes.dtypes
import time:       491 |        491 |     pandas.core.dtypes.common
import time:       804 |       1294 |   pandas.core.dtypes.missing
import time:       320 |        320 |     pandas.util._decorators
import time:       185 |        185 |         pandas.io
import time:       316 |        500 |       pandas.io._util
import time:       959 |       1459 |     pandas.core.dtypes.cast
import time:      1153 |       1153 |       pandas.core.dtypes.astype
import time:      1576 |       2729 |     pandas.core.dtypes.concat
import time:       548 |        548 |       pandas.core.array_algos
import time:       511 |        511 |         pandas.core.common
import time:       562 |       1073 |       pandas.core.construction
import time:       619 |       2240 |     pandas.core.array_algos.take
import time:       262 |        262 |       pandas.core.indexers.utils
import time:       248 |        509 |     pandas.core.indexers
import time:      1139 |       8391 |   pandas.core.algorithms
import time:      5786 |       5786 |           pyarrow._compute
import time:       249 |        249 |           pyarrow._compute_docstrings
import time:       160 |        160 |           pyarrow.vendored
import time:      3684 |       3684 |               pkgutil
import time:      3763 |       7447 |             pydoc
import time:      2684 |      10130 |           pyarrow.vendored.docscrape
import time:     35938 |      52260 |         pyarrow.compute
import time:       496 |      52756 |       pandas.core.arrays.arrow.accessors
import time:       361 |        361 |         unicodedata
import time:       365 |        365 |         pandas.util._validators
import time:       431 |        431 |         pandas.core.missing
import time:        60 |         60 |                 numpy._core
import time:        66 |        126 |               numpy._core._multiarray_umath
import time:       463 |        589 |             pandas._libs.ops
import time:       148 |        148 |             pandas.core.roperator
import time:       104 |        104 |             pandas.core.computation
import time:       200 |        200 |               pandas.core.computation.check
import time:       355 |        554 |             pandas.core.computation.expressions
import time:       136 |        136 |             pandas.core.ops.missing
import time:        99 |         99 |             pandas.core.ops.dispatch
import time:       122 |        122 |             pandas.core.ops.invalid
import time:       596 |       2344 |           pandas.core.ops.array_ops
import time:       121 |        121 |           pandas.core.ops.common
import time:       192 |        192 |           pandas.core.ops.docstrings
import time:       140 |        140 |           pandas.core.ops.mask_ops
import time:       374 |       3169 |         pandas.core.ops
import time:       523 |        523 |         pandas.core.arraylike
import time:       297 |        297 |         pandas.core.arrays._arrow_string_mixins
import time:       203 |        203 |         pandas.core.arrays._utils
import time:       489 |        489 |           pandas.compat.numpy.function
import time:       208 |        208 |           pandas.core.array_algos.quantile
import time:       562 |        562 |           pandas.core.sorting
import time:      1459 |       2716 |         pandas.core.arrays.base
import time:      2828 |       2828 |           pandas.core.nanops
import time:       261 |        261 |           pandas.core.array_algos.masked_accumulations
import time:       660 |        660 |           pandas.core.array_algos.masked_reductions
import time:       373 |        373 |             pandas.core.util
import time:       158 |        158 |                 numpy._core
import time:       147 |        305 |               numpy._core._multiarray_umath
import time:      1309 |       1613 |             pandas._libs.hashing
import time:       777 |       2762 |           pandas.core.util.hashing
import time:      3288 |       9797 |         pandas.core.arrays.masked
import time:        53 |         53 |               numpy._core
import time:        66 |        118 |             numpy._core._multiarray_umath
import time:       408 |        526 |           pandas._libs.arrays
import time:       306 |        306 |             pandas.core.arrays.numeric
import time:       384 |        690 |           pandas.core.arrays.floating
import time:       436 |        436 |           pandas.core.arrays.integer
import time:       151 |        151 |               pandas.core.array_algos.transforms
import time:      1064 |       1214 |             pandas.core.arrays._mixins
import time:       202 |        202 |               pandas.core.strings
import time:       445 |        445 |               pandas.core.strings.base
import time:       909 |       1555 |             pandas.core.strings.object_array
import time:       545 |       3313 |           pandas.core.arrays.numpy_
import time:       997 |       5960 |         pandas.core.arrays.string_
import time:       437 |        437 |           pandas.tseries
import time:       719 |       1155 |         pandas.tseries.frequencies
import time:      2628 |      27599 |       pandas.core.arrays.arrow.array
import time:       374 |      80728 |     pandas.core.arrays.arrow
import time:       532 |        532 |     pandas.core.arrays.boolean
import time:       680 |        680 |         _csv
import time:      1659 |       2338 |       csv
import time:      1268 |       1268 |         zlib
import time:      1671 |       2939 |       shutil
import time:       982 |        982 |       pandas.core.accessor
import time:       871 |        871 |       pandas.core.base
import time:       179 |        179 |       pandas.io.formats
import time:       198 |        198 |       pandas.io.formats.console
import time:      1821 |       9325 |     pandas.core.arrays.categorical
import time:        66 |         66 |           numpy._core
import time:       476 |        541 |         numpy._core._multiarray_umath
import time:      1078 |       1618 |       pandas._libs.tslib
import time:       531 |        531 |         pandas.core.array_algos.datetimelike_accumulations
import time:      3629 |       4160 |       pandas.core.arrays.datetimelike
import time:       406 |        406 |       pandas.core.arrays._ranges
import time:       274 |        274 |       pandas.tseries.offsets
import time:      1408 |       7863 |     pandas.core.arrays.datetimes
import time:       979 |        979 |       pandas.core.arrays.timedeltas
import time:     14983 |      15962 |     pandas.core.arrays.interval
import time:      1176 |       1176 |     pandas.core.arrays.period
import time:       106 |        106 |               numpy._core
import time:       115 |        220 |             numpy._core._multiarray_umath
import time:      1020 |       1240 |           pandas._libs.sparse
import time:       694 |        694 |           pandas.io.formats.printing
import time:      1281 |       3213 |         pandas.core.arrays.sparse.array
import time:       622 |       3835 |       pandas.core.arrays.sparse.accessor
import time:       376 |       4211 |     pandas.core.arrays.sparse
import time:       319 |        319 |       pandas.core.arrays.arrow._arrow_utils
import time:      2614 |       2933 |     pandas.core.arrays.string_arrow
import time:      1641 |     124367 |   pandas.core.arrays
import time:       388 |        388 |   pandas.core.flags
import time:       186 |        186 |           backports_abc
import time:        58 |         58 |             numpy._core
import time:        26 |         84 |           numpy._core._multiarray_umath
import time:      1186 |       1455 |         pandas._libs.internals
import time:       240 |        240 |           pandas.core._numba
import time:       412 |        652 |         pandas.core._numba.executor
import time:      3026 |       5132 |       pandas.core.apply
import time:      1042 |       1042 |                 _json
import time:      1058 |       2100 |               json.scanner
import time:      1236 |       3335 |             json.decoder
import time:       643 |        643 |             json.encoder
import time:      2285 |       6263 |           json
import time:       540 |        540 |             pandas._libs.indexing
import time:       273 |        273 |               pandas.core.indexes
import time:       233 |        233 |                   backports_abc
import time:        90 |         90 |                     numpy._core
import time:        82 |        171 |                   numpy._core._multiarray_umath
import time:      2161 |       2564 |                 pandas._libs.index
import time:       109 |        109 |                     numpy._core
import time:       133 |        241 |                   numpy._core._multiarray_umath
import time:      1196 |       1437 |                 pandas._libs.writers
import time:       111 |        111 |                     numpy._core
import time:       124 |        234 |                   numpy._core._multiarray_umath
import time:       957 |       1191 |                 pandas._libs.join
import time:      7411 |       7411 |                 pandas.core.array_algos.putmask
import time:       570 |        570 |                 pandas.core.indexes.frozen
import time:      5168 |       5168 |                 pandas.core.strings.accessor
import time:      6359 |      24697 |               pandas.core.indexes.base
import time:      1151 |       1151 |                 pandas.core.indexes.extension
import time:      1463 |       2613 |               pandas.core.indexes.category
import time:      2568 |       2568 |                   pandas.core.indexes.range
import time:       390 |        390 |                     pandas.core.tools
import time:       576 |        965 |                   pandas.core.tools.timedeltas
import time:      9166 |      12698 |                 pandas.core.indexes.datetimelike
import time:       782 |        782 |                 pandas.core.tools.times
import time:      3061 |      16540 |               pandas.core.indexes.datetimes
import time:      6433 |       6433 |                 pandas.core.indexes.multi
import time:      6472 |       6472 |                 pandas.core.indexes.timedeltas
import time:      3921 |      16826 |               pandas.core.indexes.interval
import time:       995 |        995 |               pandas.core.indexes.period
import time:       904 |      62846 |             pandas.core.indexes.api
import time:      2689 |      66074 |           pandas.core.indexing
import time:       550 |        550 |           pandas.core.sample
import time:       376 |        376 |           pandas.core.array_algos.replace
import time:      1520 |       1520 |               pandas.core.internals.blocks
import time:       503 |       2022 |             pandas.core.internals.api
import time:       961 |        961 |               pandas.core.internals.base
import time:      1118 |       1118 |                 pandas.core.internals.ops
import time:      1977 |       3094 |               pandas.core.internals.managers
import time:      2299 |       6354 |             pandas.core.internals.array_manager
import time:      1908 |       1908 |             pandas.core.internals.concat
import time:       617 |      10899 |           pandas.core.internals
import time:      1873 |       1873 |           pandas.core.internals.construction
import time:       380 |        380 |             pandas.core.methods
import time:       194 |        194 |               pandas.core.reshape
import time:       731 |        925 |             pandas.core.reshape.concat
import time:       626 |        626 |                 gzip
import time:       501 |        501 |                 mmap
import time:        93 |         93 |                   pwd
import time:       409 |        409 |                   grp
import time:      2071 |       2572 |                 tarfile
import time:      1596 |       1596 |                 zipfile
import time:       533 |        533 |                 pandas.core.shared_docs
import time:      9255 |      15081 |               pandas.io.common
import time:      2297 |      17378 |             pandas.io.formats.format
import time:      1411 |      20092 |           pandas.core.methods.describe
import time:       330 |        330 |                 pandas._libs.window
import time:       133 |        133 |                   numpy._core
import time:       145 |        278 |                 numpy._core._multiarray_umath
import time:      1529 |       2136 |               pandas._libs.window.aggregations
import time:       290 |        290 |                     numpy._core
import time:       110 |        399 |                   numpy._core._multiarray_umath
import time:       798 |       1196 |                 pandas._libs.window.indexers
import time:      1118 |       2314 |               pandas.core.indexers.objects
import time:       454 |        454 |               pandas.core.util.numba_
import time:       380 |        380 |               pandas.core.window.common
import time:       529 |        529 |               pandas.core.window.doc
import time:       436 |        436 |               pandas.core.window.numba_
import time:       366 |        366 |               pandas.core.window.online
import time:      8549 |       8549 |               pandas.core.window.rolling
import time:      2867 |      18027 |             pandas.core.window.ewm
import time:      2109 |       2109 |             pandas.core.window.expanding
import time:      1245 |      21380 |           pandas.core.window
import time:     13908 |     141411 |         pandas.core.generic
import time:      1376 |       1376 |         pandas.core.methods.selectn
import time:       417 |        417 |           pandas.core.reshape.util
import time:       227 |        227 |           pandas.core.tools.numeric
import time:      1644 |       2286 |         pandas.core.reshape.melt
import time:        74 |         74 |               numpy._core
import time:       100 |        173 |             numpy._core._multiarray_umath
import time:       610 |        783 |           pandas._libs.reshape
import time:     17693 |      17693 |           pandas.core.indexes.accessors
import time:       480 |        480 |             pandas.arrays
import time:      1807 |       2286 |           pandas.core.tools.datetimes
import time:      1611 |       1611 |           pandas.io.formats.info
import time:      2390 |       2390 |             pandas.plotting._core
import time:      1501 |       1501 |             pandas.plotting._misc
import time:       619 |       4510 |           pandas.plotting
import time:      7737 |      34617 |         pandas.core.series
import time:     16391 |     196079 |       pandas.core.frame
import time:      1964 |       1964 |       pandas.core.groupby.base
import time:       129 |        129 |           backports_abc
import time:        58 |         58 |             numpy._core
import time:        58 |        115 |           numpy._core._multiarray_umath
import time:      1311 |       1554 |         pandas._libs.groupby
import time:       204 |        204 |           pandas.core.groupby.categorical
import time:       615 |        818 |         pandas.core.groupby.grouper
import time:      1410 |       3782 |       pandas.core.groupby.ops
import time:       378 |        378 |         pandas.core.groupby.numba_
import time:       578 |        578 |         pandas.core.groupby.indexing
import time:      4413 |       5369 |       pandas.core.groupby.groupby
import time:     12257 |     224579 |     pandas.core.groupby.generic
import time:       342 |     224921 |   pandas.core.groupby
import time:       659 |     432041 | pandas.core.api
import time:       310 |        310 | pandas.tseries.api
import time:       116 |        116 |         pandas.core.computation.common
import time:       224 |        339 |       pandas.core.computation.align
import time:       454 |        454 |           pprint
import time:       361 |        814 |         pandas.core.computation.scope
import time:       737 |       1550 |       pandas.core.computation.ops
import time:       274 |       2162 |     pandas.core.computation.engines
import time:       223 |        223 |       pandas.core.computation.parsing
import time:      1727 |       1950 |     pandas.core.computation.expr
import time:       299 |       4411 |   pandas.core.computation.eval
import time:       166 |       4577 | pandas.core.computation.api
import time:       234 |        234 |   pandas.core.reshape.encoding
import time:      1152 |       1152 |   pandas.core.reshape.merge
import time:       929 |        929 |   pandas.core.reshape.pivot
import time:       413 |        413 |   pandas.core.reshape.tile
import time:       424 |       3150 | pandas.core.reshape.api
import time:       261 |        261 |   pandas.api.extensions
import time:       432 |        432 |   pandas.api.indexers
import time:       124 |        124 |       pandas.core.interchange
import time:      2927 |       3051 |     pandas.core.interchange.dataframe_protocol
import time:       763 |        763 |       pandas.core.interchange.utils
import time:      1256 |       2018 |     pandas.core.interchange.from_dataframe
import time:       529 |       5597 |   pandas.api.interchange
import time:       285 |        285 |     pandas.core.dtypes.api
import time:       660 |        945 |   pandas.api.types
import time:      4744 |       4744 |     pandas.core.resample
import time:       131 |        131 |               numpy._core
import time:       173 |        304 |             numpy._core._multiarray_umath
import time:       676 |        980 |           pandas._libs.json
import time:       563 |        563 |           pandas.io.json._normalize
import time:       553 |        553 |           pandas.io.json._table_schema
import time:      4838 |       4838 |                   backports_abc
import time:       132 |        132 |                     numpy._core
import time:       158 |        289 |                   numpy._core._multiarray_umath
import time:      2256 |       7382 |                 pandas._libs.parsers
import time:      1307 |       1307 |                   pandas.io.parsers.base_parser
import time:       696 |       2003 |                 pandas.io.parsers.arrow_parser_wrapper
import time:       363 |        363 |                 pandas.io.parsers.c_parser_wrapper
import time:       686 |        686 |                 pandas.io.parsers.python_parser
import time:      3157 |      13590 |               pandas.io.parsers.readers
import time:       356 |      13945 |             pandas.io.parsers
import time:        42 |      13987 |           pandas.io.parsers.readers
import time:      2479 |      18559 |         pandas.io.json._json
import time:       496 |      19055 |       pandas.io.json
import time:        52 |      19106 |     pandas.io.json._json
import time:      2147 |       2147 |     pandas.io.stata
import time:       668 |      26662 |   pandas.api.typing
import time:       588 |      34483 | pandas.api
import time:       651 |        651 |         tempfile
import time:       363 |       1014 |       pandas._testing.contexts
import time:       330 |       1343 |     pandas._testing._io
import time:       412 |        412 |     pandas._testing._warnings
import time:       461 |        461 |         cmath
import time:       150 |        150 |           numpy._core
import time:        80 |        230 |         numpy._core._multiarray_umath
import time:       776 |       1466 |       pandas._libs.testing
import time:      2422 |       3887 |     pandas._testing.asserters
import time:       245 |        245 |     pandas._testing.compat
import time:       952 |       6837 |   pandas._testing
import time:       458 |       7294 | pandas.testing
import time:       283 |        283 | pandas.util._print_versions
import time:       179 |        179 |   pandas.io.clipboards
import time:       224 |        224 |       pandas.io.excel._util
import time:       675 |        675 |       pandas.io.excel._calamine
import time:       844 |        844 |       pandas.io.excel._odfreader
import time:       569 |        569 |       pandas.io.excel._openpyxl
import time:       363 |        363 |       pandas.io.excel._pyxlsb
import time:       365 |        365 |       pandas.io.excel._xlrd
import time:      2473 |       5511 |     pandas.io.excel._base
import time:       331 |        331 |     pandas.io.excel._odswriter
import time:       405 |        405 |     pandas.io.excel._xlsxwriter
import time:       257 |       6502 |   pandas.io.excel
import time:       437 |        437 |   pandas.io.feather_format
import time:       235 |        235 |   pandas.io.gbq
import time:      1113 |       1113 |   pandas.io.html
import time:       215 |        215 |   pandas.io.orc
import time:       989 |        989 |   pandas.io.parquet
import time:       367 |        367 |     pandas.compat.pickle_compat
import time:       770 |       1136 |   pandas.io.pickle
import time:       801 |        801 |     pandas.core.computation.pytables
import time:      4210 |       5011 |   pandas.io.pytables
import time:       387 |        387 |     pandas.io.sas.sasreader
import time:       273 |        659 |   pandas.io.sas
import time:       149 |        149 |   pandas.io.spss
import time:      1173 |       1173 |   pandas.io.sql
import time:      1584 |       1584 |   pandas.io.xml
import time:       920 |      20296 | pandas.io.api
import time:       233 |        233 | pandas.util._tester
import time:       193 |        193 | pandas._version_meson

Note, this can be avoided by specifying the error_on_import=True argument to lazy_loader.load, but it does seems unnecessary that pandas is crawled when not_found is not a subpackage of pandas.

It looks like the problem is that inspect.stack()[1] causes the lazy modules to be accessed. I'm not sure exactly why, but figuring out the answer to that question is how progress can be made on this issue.