CDSETool icon indicating copy to clipboard operation
CDSETool copied to clipboard

Delay importing large packages

Open pjonsson opened this issue 2 months ago • 2 comments

The import time for cdsetool.download is 626723 us, and geopandas is responsible for 622825 us of that.

Push imports of various packages that have reasonably long load times into the function where they are used.

This improves CLI performance for us, and also benefits any downsteam users that build their own CLI around CDSETool.

Import times measured on a Ryzen 9950X3D with python3 ./cli.py followed by a couple of repeated python3 -X importtime cli.py > timing.txt 2>&1:

import time: self [us] | cumulative | imported package
...
import time:        83 |         83 |     cdsetool
import time:       109 |        109 |     netrc
import time:       340 |        340 |           jwt.exceptions
import time:       101 |        101 |           jwt.types
import time:        76 |         76 |                       cryptography.__about__
import time:        89 |        164 |                     cryptography
import time:        47 |        211 |                   cryptography.hazmat
import time:        54 |        264 |                 cryptography.hazmat.primitives
import time:        53 |        316 |               cryptography.hazmat.primitives.asymmetric
import time:       588 |        588 |               cryptography.utils
import time:        51 |         51 |                   cryptography.hazmat.bindings
import time:       323 |        323 |                   _cffi_backend
import time:      1229 |       1602 |                 cryptography.hazmat.bindings._rust
import time:       212 |       1814 |               cryptography.exceptions
import time:       569 |        569 |                 cryptography.hazmat.primitives.hashes
import time:       910 |       1478 |               cryptography.hazmat._oid
import time:       742 |        742 |               cryptography.hazmat.primitives._serialization
import time:       155 |        155 |               cryptography.hazmat.primitives.asymmetric.utils
import time:      1001 |       6091 |             cryptography.hazmat.primitives.asymmetric.ec
import time:       564 |       6655 |           jwt.utils
import time:       101 |        101 |           cryptography.hazmat.backends
import time:        94 |         94 |             cryptography.hazmat.primitives._asymmetric
import time:       695 |        695 |             cryptography.hazmat.primitives.asymmetric.rsa
import time:       360 |       1148 |           cryptography.hazmat.primitives.asymmetric.padding
import time:       314 |        314 |           cryptography.hazmat.primitives.asymmetric.ed448
import time:       269 |        269 |           cryptography.hazmat.primitives.asymmetric.ed25519
import time:        79 |         79 |             cryptography.hazmat.primitives.serialization.base
import time:       418 |        418 |               cryptography.hazmat.primitives.asymmetric.dsa
import time:       220 |        220 |                 cryptography.hazmat.primitives._cipheralgorithm
import time:        56 |         56 |                           cryptography.hazmat.decrepit
import time:        66 |        122 |                         cryptography.hazmat.decrepit.ciphers
import time:       429 |        551 |                       cryptography.hazmat.decrepit.ciphers.algorithms
import time:       368 |        918 |                     cryptography.hazmat.primitives.ciphers.algorithms
import time:       699 |       1616 |                   cryptography.hazmat.primitives.ciphers.modes
import time:       476 |       2091 |                 cryptography.hazmat.primitives.ciphers.base
import time:       127 |       2438 |               cryptography.hazmat.primitives.ciphers
import time:        49 |         49 |               bcrypt
import time:      4656 |       7559 |             cryptography.hazmat.primitives.serialization.ssh
import time:       129 |       7766 |           cryptography.hazmat.primitives.serialization
import time:      2391 |      19082 |         jwt.algorithms
import time:       549 |      19630 |       jwt.api_jwk
import time:       104 |        104 |         jwt.warnings
import time:       969 |       1072 |       jwt.api_jws
import time:       922 |        922 |       jwt.api_jwt
import time:       177 |        177 |         jwt.jwk_set_cache
import time:       468 |        645 |       jwt.jwks_client
import time:       171 |      22438 |     jwt
import time:       772 |      23401 |   cdsetool.credentials
import time:       150 |        150 |       concurrent.futures.thread
import time:       499 |        499 |           geopandas._config
import time:       153 |        153 |               numpy.version
import time:       162 |        162 |               numpy._expired_attrs_2_0
import time:       147 |        147 |                   numpy._utils._convertions
import time:       229 |        376 |                 numpy._utils
import time:       236 |        611 |               numpy._globals
import time:        16 |         16 |                 numpy._distributor_init_local
import time:        93 |        108 |               numpy._distributor_init
import time:       336 |        336 |                         numpy.exceptions
import time:       592 |        592 |                         numpy._core._exceptions
import time:       120 |        120 |                         numpy._core.printoptions
import time:       187 |        187 |                         numpy.dtypes
import time:      3829 |       5062 |                       numpy._core._multiarray_umath
import time:       460 |        460 |                         numpy._utils._inspect
import time:       428 |        887 |                       numpy._core.overrides
import time:       835 |       6783 |                     numpy._core.multiarray
import time:       181 |        181 |                     numpy._core.umath
import time:       851 |        851 |                       numpy._core._dtype
import time:       160 |        160 |                       numpy._core._string_helpers
import time:       361 |        361 |                       numpy._core._type_aliases
import time:       770 |       2140 |                     numpy._core.numerictypes
import time:       459 |        459 |                       numpy._core._ufunc_config
import time:       950 |        950 |                         numpy._core._methods
import time:      2656 |       3605 |                       numpy._core.fromnumeric
import time:       717 |       4781 |                     numpy._core._machar
import time:      1259 |       1259 |                         numpy._core.shape_base
import time:       250 |        250 |                         numpy._core._asarray
import time:      3423 |       3423 |                         numpy._core.arrayprint
import time:      2917 |       7847 |                       numpy._core.numeric
import time:      2082 |       9929 |                     numpy._core.einsumfunc
import time:       755 |        755 |                     numpy._core.function_base
import time:      1380 |       1380 |                     numpy._core.getlimits
import time:       555 |        555 |                     numpy._core.memmap
import time:      2016 |       2016 |                     numpy._core.records
import time:      1918 |       1918 |                     numpy._core._add_newdocs
import time:       605 |        605 |                     numpy._core._add_newdocs_scalars
import time:       400 |        400 |                     numpy._core._dtype_ctypes
import time:       239 |        239 |                         _ctypes
import time:       132 |        132 |                         ctypes._endian
import time:       404 |        773 |                       ctypes
import time:      2334 |       3107 |                     numpy._core._internal
import time:       326 |        326 |                     numpy._pytesttester
import time:       546 |      35415 |                   numpy._core
import time:        21 |      35436 |                 numpy._core._multiarray_umath
import time:       455 |      35891 |               numpy.__config__
import time:       269 |        269 |                                 numpy._typing._nbit_base
import time:       278 |        278 |                                 numpy._typing._nested_sequence
import time:       129 |        129 |                                 numpy._typing._shape
import time:      1856 |       2530 |                               numpy._typing._array_like
import time:      1828 |       1828 |                               numpy._typing._char_codes
import time:      1751 |       1751 |                               numpy._typing._dtype_like
import time:       157 |        157 |                               numpy._typing._nbit
import time:       145 |        145 |                               numpy._typing._scalars
import time:        93 |         93 |                               numpy._typing._ufunc
import time:       415 |       6916 |                             numpy._typing
import time:       884 |        884 |                               numpy.lib._stride_tricks_impl
import time:      1071 |       1954 |                             numpy.lib._twodim_base_impl
import time:       178 |        178 |                               numpy.lib._array_utils_impl
import time:        82 |        259 |                             numpy.lib.array_utils
import time:       156 |        156 |                             numpy.linalg._umath_linalg
import time:      4302 |      13584 |                           numpy.linalg._linalg
import time:       115 |        115 |                           numpy.linalg.linalg
import time:       143 |      13841 |                         numpy.linalg
import time:      1153 |      14994 |                       numpy.matrixlib.defmatrix
import time:       112 |      15106 |                     numpy.matrixlib
import time:      1546 |       1546 |                       numpy.lib._histograms_impl
import time:      7948 |       9493 |                     numpy.lib._function_base_impl
import time:        86 |         86 |                     numpy.lib.stride_tricks
import time:      1411 |      26094 |                   numpy.lib._index_tricks_impl
import time:      1234 |      27327 |                 numpy.lib._arraypad_impl
import time:      1759 |       1759 |                 numpy.lib._arraysetops_impl
import time:       522 |        522 |                 numpy.lib._arrayterator_impl
import time:     10680 |      10680 |                 numpy.lib._nanfunctions_impl
import time:      1301 |       1301 |                       numpy.lib._utils_impl
import time:      1588 |       2889 |                     numpy.lib._format_impl
import time:       118 |       3007 |                   numpy.lib.format
import time:       935 |        935 |                   numpy.lib._datasource
import time:      1765 |       1765 |                   numpy.lib._iotools
import time:      4345 |      10050 |                 numpy.lib._npyio_impl
import time:       283 |        283 |                     numpy.lib._ufunclike_impl
import time:       803 |       1085 |                   numpy.lib._type_check_impl
import time:      2183 |       3268 |                 numpy.lib._polynomial_impl
import time:      1546 |       1546 |                 numpy.lib._shape_base_impl
import time:       400 |        400 |                 numpy.lib._version
import time:       213 |        213 |                 numpy.lib.introspect
import time:       414 |        414 |                 numpy.lib.mixins
import time:        62 |         62 |                 numpy.lib.npyio
import time:       412 |        412 |                   numpy.lib._scimath_impl
import time:        55 |        466 |                 numpy.lib.scimath
import time:       399 |      57101 |               numpy.lib
import time:       384 |        384 |               numpy._array_api_info
import time:      2053 |      96459 |             numpy
import time:       206 |        206 |                 pytz.exceptions
import time:       569 |        569 |                 pytz.lazy
import time:       908 |        908 |                 pytz.tzinfo
import time:       497 |        497 |                 pytz.tzfile
import time:      1769 |       3946 |               pytz
import time:       113 |        113 |                 dateutil._version
import time:       182 |        295 |               dateutil
import time:       231 |        231 |                   sysconfig
import time:       312 |        312 |                   _sysconfigdata__x86_64-linux-gnu
import time:       273 |        815 |                 pandas.compat._constants
import time:       285 |        285 |                 pandas.compat.compressors
import time:       121 |        121 |                     pandas.util
import time:      2048 |       2168 |                   pandas.util.version
import time:       266 |       2433 |                 pandas.compat.numpy
import time:        37 |         37 |                   pyarrow
import time:       178 |        214 |                 pandas.compat.pyarrow
import time:       331 |       4075 |               pandas.compat
import time:       202 |        202 |                           numpy.random._common
import time:        77 |         77 |                           secrets
import time:       269 |        548 |                         numpy.random.bit_generator
import time:       203 |        750 |                       numpy.random._bounded_integers
import time:       128 |        128 |                           numpy.random._pcg64
import time:       125 |        125 |                           numpy.random._mt19937
import time:       377 |        629 |                         numpy.random._generator
import time:       122 |        122 |                         numpy.random._philox
import time:        79 |         79 |                         numpy.random._sfc64
import time:       380 |        380 |                         numpy.random.mtrand
import time:       231 |       1438 |                       numpy.random._pickle
import time:       231 |       2418 |                     numpy.random
import time:      2294 |       4712 |                   pandas._typing
import time:       342 |        342 |                   pandas.util._exceptions
import time:      2003 |       7056 |                 pandas._config.config
import time:       239 |        239 |                 pandas._config.dates
import time:       186 |        186 |                 pandas._config.display
import time:       198 |       7678 |               pandas._config
import time:        54 |         54 |                 pandas.core
import time:      1449 |       1503 |               pandas.core.config_init
import time:       103 |        103 |                   pandas._libs.pandas_parser
import time:        55 |         55 |                   pandas._libs.pandas_datetime
import time:        89 |         89 |                               pandas._libs.tslibs.ccalendar
import time:       142 |        142 |                               pandas._libs.tslibs.np_datetime
import time:       433 |        663 |                             pandas._libs.tslibs.dtypes
import time:        78 |         78 |                               pandas._libs.tslibs.base
import time:       163 |        163 |                                   pandas._libs.tslibs.nattype
import time:       511 |        511 |                                       pandas.compat._optional
import time:       104 |        104 |                                         zoneinfo._tzpath
import time:        70 |         70 |                                         zoneinfo._common
import time:        94 |         94 |                                         _zoneinfo
import time:       138 |        405 |                                       zoneinfo
import time:      2631 |       2631 |                                           six
import time:        31 |         31 |                                           six.moves
import time:       757 |        757 |                                           dateutil.tz._common
import time:       442 |        442 |                                           dateutil.tz._factories
import time:        21 |         21 |                                             six.moves.winreg
import time:       887 |        908 |                                           dateutil.tz.win
import time:      3640 |       8406 |                                         dateutil.tz.tz
import time:       158 |       8563 |                                       dateutil.tz
import time:       556 |      10033 |                                     pandas._libs.tslibs.timezones
import time:       411 |        411 |                                       _strptime
import time:       497 |        497 |                                       pandas._config.localization
import time:       264 |       1171 |                                     pandas._libs.tslibs.fields
import time:       361 |      11564 |                                   pandas._libs.tslibs.timedeltas
import time:       208 |        208 |                                   pandas._libs.tslibs.tzconversion
import time:       329 |      12262 |                                 pandas._libs.tslibs.timestamps
import time:       102 |        102 |                                 pandas._libs.properties
import time:       622 |      12984 |                               pandas._libs.tslibs.offsets
import time:       207 |        207 |                                     dateutil._common
import time:      5529 |       5735 |                                   dateutil.parser._parser
import time:      1118 |       1118 |                                   dateutil.parser.isoparser
import time:       333 |       7184 |                                 dateutil.parser
import time:       399 |        399 |                                 pandas._libs.tslibs.strptime
import time:       303 |       7886 |                               pandas._libs.tslibs.parsing
import time:       245 |      21192 |                             pandas._libs.tslibs.conversion
import time:       283 |        283 |                             pandas._libs.tslibs.period
import time:       169 |        169 |                             pandas._libs.tslibs.vectorized
import time:       189 |      22495 |                           pandas._libs.tslibs
import time:         9 |      22503 |                         pandas._libs.tslibs.nattype
import time:        82 |         82 |                         pandas._libs.ops_dispatch
import time:       198 |      22782 |                       pandas._libs.missing
import time:       642 |      23424 |                     pandas._libs.hashtable
import time:       394 |        394 |                     pandas._libs.algos
import time:       339 |      24156 |                   pandas._libs.interval
import time:        97 |      24410 |                 pandas._libs
import time:        75 |         75 |                   pandas.core.dtypes
import time:        80 |         80 |                     pyarrow
import time:      1194 |       1273 |                   pandas._libs.lib
import time:      1018 |       1018 |                   pandas.errors
import time:       526 |        526 |                     pandas.core.dtypes.generic
import time:      1071 |       1596 |                   pandas.core.dtypes.base
import time:       437 |        437 |                   pandas.core.dtypes.inference
import time:      5267 |       9664 |                 pandas.core.dtypes.dtypes
import time:      1864 |       1864 |                   pandas.core.dtypes.common
import time:      1517 |       3381 |                 pandas.core.dtypes.missing
import time:      1037 |       1037 |                   pandas.util._decorators
import time:       112 |        112 |                       pandas.io
import time:       347 |        458 |                     pandas.io._util
import time:      3846 |       4304 |                   pandas.core.dtypes.cast
import time:       630 |        630 |                     pandas.core.dtypes.astype
import time:       799 |       1429 |                   pandas.core.dtypes.concat
import time:        72 |         72 |                     pandas.core.array_algos
import time:     14992 |      14992 |                         numpy.ma.core
import time:      3400 |       3400 |                         numpy.ma.extras
import time:       210 |      18601 |                       numpy.ma
import time:      1344 |       1344 |                       pandas.core.common
import time:      1333 |      21277 |                     pandas.core.construction
import time:      1348 |      22696 |                   pandas.core.array_algos.take
import time:       816 |        816 |                     pandas.core.indexers.utils
import time:       147 |        963 |                   pandas.core.indexers
import time:      2806 |      33232 |                 pandas.core.algorithms
import time:       662 |        662 |                     pandas.core.arrays.arrow.accessors
import time:       772 |        772 |                       pandas.util._validators
import time:      2009 |       2009 |                       pandas.core.missing
import time:       290 |        290 |                           pandas._libs.ops
import time:       193 |        193 |                           pandas.core.roperator
import time:        54 |         54 |                           pandas.core.computation
import time:       152 |        152 |                             pandas.core.computation.check
import time:       740 |        892 |                           pandas.core.computation.expressions
import time:       304 |        304 |                           pandas.core.ops.missing
import time:        95 |         95 |                           pandas.core.ops.dispatch
import time:       142 |        142 |                           pandas.core.ops.invalid
import time:      1155 |       3121 |                         pandas.core.ops.array_ops
import time:       257 |        257 |                         pandas.core.ops.common
import time:       465 |        465 |                         pandas.core.ops.docstrings
import time:       402 |        402 |                         pandas.core.ops.mask_ops
import time:       226 |       4468 |                       pandas.core.ops
import time:      1212 |       1212 |                       pandas.core.arraylike
import time:      1367 |       1367 |                       pandas.core.arrays._arrow_string_mixins
import time:       238 |        238 |                       pandas.core.arrays._utils
import time:       929 |        929 |                         pandas.compat.numpy.function
import time:       381 |        381 |                         pandas.core.array_algos.quantile
import time:      1570 |       1570 |                         pandas.core.sorting
import time:      3024 |       5902 |                       pandas.core.arrays.base
import time:      3462 |       3462 |                         pandas.core.nanops
import time:       275 |        275 |                         pandas.core.array_algos.masked_accumulations
import time:       412 |        412 |                         pandas.core.array_algos.masked_reductions
import time:        59 |         59 |                           pandas.core.util
import time:       243 |        243 |                           pandas._libs.hashing
import time:       715 |       1016 |                         pandas.core.util.hashing
import time:      4107 |       9271 |                       pandas.core.arrays.masked
import time:       149 |        149 |                         pandas._libs.arrays
import time:       818 |        818 |                           pandas.core.arrays.numeric
import time:       296 |       1113 |                         pandas.core.arrays.floating
import time:       501 |        501 |                         pandas.core.arrays.integer
import time:       171 |        171 |                             pandas.core.array_algos.transforms
import time:      1310 |       1481 |                           pandas.core.arrays._mixins
import time:        67 |         67 |                             pandas.core.strings
import time:       622 |        622 |                             pandas.core.strings.base
import time:      1965 |       2653 |                           pandas.core.strings.object_array
import time:      1352 |       5485 |                         pandas.core.arrays.numpy_
import time:       107 |        107 |                         pandas.io.formats
import time:       291 |        291 |                           pandas.io.formats.console
import time:      1609 |       1900 |                         pandas.io.formats.printing
import time:      2756 |      12008 |                       pandas.core.arrays.string_
import time:        98 |         98 |                         pandas.tseries
import time:      1514 |       1612 |                       pandas.tseries.frequencies
import time:      7652 |      46506 |                     pandas.core.arrays.arrow.array
import time:       108 |      47275 |                   pandas.core.arrays.arrow
import time:      1027 |       1027 |                   pandas.core.arrays.boolean
import time:       738 |        738 |                     pandas.core.accessor
import time:      1826 |       1826 |                     pandas.core.base
import time:      4633 |       7197 |                   pandas.core.arrays.categorical
import time:       308 |        308 |                     pandas._libs.tslib
import time:       247 |        247 |                       pandas.core.array_algos.datetimelike_accumulations
import time:      5585 |       5832 |                     pandas.core.arrays.datetimelike
import time:       538 |        538 |                     pandas.core.arrays._ranges
import time:       138 |        138 |                     pandas.tseries.offsets
import time:      3567 |      10380 |                   pandas.core.arrays.datetimes
import time:      2321 |       2321 |                     pandas.core.arrays.timedeltas
import time:      4082 |       6402 |                   pandas.core.arrays.interval
import time:      2438 |       2438 |                   pandas.core.arrays.period
import time:       286 |        286 |                         pandas._libs.sparse
import time:      4180 |       4466 |                       pandas.core.arrays.sparse.array
import time:       750 |       5215 |                     pandas.core.arrays.sparse.accessor
import time:       111 |       5326 |                   pandas.core.arrays.sparse
import time:      1480 |       1480 |                   pandas.core.arrays.string_arrow
import time:       206 |      81727 |                 pandas.core.arrays
import time:       282 |        282 |                 pandas.core.flags
import time:       232 |        232 |                       pandas._libs.internals
import time:        78 |         78 |                         pandas.core._numba
import time:       686 |        764 |                       pandas.core._numba.executor
import time:      5211 |       6206 |                     pandas.core.apply
import time:        62 |         62 |                         gc
import time:       200 |        200 |                           pandas._libs.indexing
import time:        74 |         74 |                             pandas.core.indexes
import time:       510 |        510 |                               pandas._libs.index
import time:       166 |        166 |                               pandas._libs.writers
import time:       300 |        300 |                               pandas._libs.join
import time:       405 |        405 |                               pandas.core.array_algos.putmask
import time:       699 |        699 |                               pandas.core.indexes.frozen
import time:      4265 |       4265 |                               pandas.core.strings.accessor
import time:     13297 |      19640 |                             pandas.core.indexes.base
import time:       485 |        485 |                               pandas.core.indexes.extension
import time:       795 |       1280 |                             pandas.core.indexes.category
import time:      3139 |       3139 |                                 pandas.core.indexes.range
import time:        98 |         98 |                                   pandas.core.tools
import time:       503 |        600 |                                 pandas.core.tools.timedeltas
import time:      2271 |       6010 |                               pandas.core.indexes.datetimelike
import time:       434 |        434 |                               pandas.core.tools.times
import time:      1869 |       8312 |                             pandas.core.indexes.datetimes
import time:      7973 |       7973 |                               pandas.core.indexes.multi
import time:       597 |        597 |                               pandas.core.indexes.timedeltas
import time:      2430 |      10999 |                             pandas.core.indexes.interval
import time:      1289 |       1289 |                             pandas.core.indexes.period
import time:       907 |      42497 |                           pandas.core.indexes.api
import time:      5466 |      48162 |                         pandas.core.indexing
import time:       356 |        356 |                         pandas.core.sample
import time:       437 |        437 |                         pandas.core.array_algos.replace
import time:      5939 |       5939 |                             pandas.core.internals.blocks
import time:       364 |       6302 |                           pandas.core.internals.api
import time:       934 |        934 |                             pandas.core.internals.base
import time:       544 |        544 |                               pandas.core.internals.ops
import time:      5541 |       6085 |                             pandas.core.internals.managers
import time:      3512 |      10530 |                           pandas.core.internals.array_manager
import time:      1440 |       1440 |                           pandas.core.internals.concat
import time:       239 |      18509 |                         pandas.core.internals
import time:      2425 |       2425 |                         pandas.core.internals.construction
import time:        78 |         78 |                           pandas.core.methods
import time:        64 |         64 |                             pandas.core.reshape
import time:      1715 |       1778 |                           pandas.core.reshape.concat
import time:       243 |        243 |                               gzip
import time:       156 |        156 |                               mmap
import time:        28 |         28 |                                 pwd
import time:        16 |         16 |                                 grp
import time:       685 |        727 |                               tarfile
import time:       198 |        198 |                               pandas.core.shared_docs
import time:      3036 |       4358 |                             pandas.io.common
import time:      5037 |       9395 |                           pandas.io.formats.format
import time:       919 |      12168 |                         pandas.core.methods.describe
import time:        83 |         83 |                               pandas._libs.window
import time:       327 |        409 |                             pandas._libs.window.aggregations
import time:       168 |        168 |                               pandas._libs.window.indexers
import time:      1036 |       1203 |                             pandas.core.indexers.objects
import time:       257 |        257 |                             pandas.core.util.numba_
import time:       596 |        596 |                             pandas.core.window.common
import time:       234 |        234 |                             pandas.core.window.doc
import time:       744 |        744 |                             pandas.core.window.numba_
import time:       346 |        346 |                             pandas.core.window.online
import time:      5906 |       5906 |                             pandas.core.window.rolling
import time:      1849 |      11540 |                           pandas.core.window.ewm
import time:      1451 |       1451 |                           pandas.core.window.expanding
import time:       143 |      13133 |                         pandas.core.window
import time:     18622 |     113870 |                       pandas.core.generic
import time:       767 |        767 |                       pandas.core.methods.selectn
import time:       287 |        287 |                         pandas.core.reshape.util
import time:       592 |        592 |                         pandas.core.tools.numeric
import time:       920 |       1798 |                       pandas.core.reshape.melt
import time:       259 |        259 |                         pandas._libs.reshape
import time:      1193 |       1193 |                         pandas.core.indexes.accessors
import time:       166 |        166 |                           pandas.arrays
import time:      2173 |       2338 |                         pandas.core.tools.datetimes
import time:      2149 |       2149 |                         pandas.io.formats.info
import time:      1911 |       1911 |                           pandas.plotting._core
import time:       686 |        686 |                           pandas.plotting._misc
import time:       198 |       2794 |                         pandas.plotting
import time:      9241 |      17972 |                       pandas.core.series
import time:     20591 |     154995 |                     pandas.core.frame
import time:       674 |        674 |                     pandas.core.groupby.base
import time:       413 |        413 |                       pandas._libs.groupby
import time:       251 |        251 |                         pandas.core.groupby.categorical
import time:      2305 |       2555 |                       pandas.core.groupby.grouper
import time:      2770 |       5737 |                     pandas.core.groupby.ops
import time:       423 |        423 |                       pandas.core.groupby.numba_
import time:       644 |        644 |                       pandas.core.groupby.indexing
import time:      8372 |       9439 |                     pandas.core.groupby.groupby
import time:      5108 |     182156 |                   pandas.core.groupby.generic
import time:       150 |     182305 |                 pandas.core.groupby
import time:       260 |     335257 |               pandas.core.api
import time:       113 |        113 |               pandas.tseries.api
import time:       206 |        206 |                       pandas.core.computation.common
import time:       767 |        972 |                     pandas.core.computation.align
import time:       174 |        174 |                         pprint
import time:       758 |        931 |                       pandas.core.computation.scope
import time:      1432 |       2362 |                     pandas.core.computation.ops
import time:       345 |       3679 |                   pandas.core.computation.engines
import time:       415 |        415 |                     pandas.core.computation.parsing
import time:      2921 |       3335 |                   pandas.core.computation.expr
import time:       639 |       7652 |                 pandas.core.computation.eval
import time:        61 |       7712 |               pandas.core.computation.api
import time:       996 |        996 |                 pandas.core.reshape.encoding
import time:      5801 |       5801 |                 pandas.core.reshape.merge
import time:      2219 |       2219 |                 pandas.core.reshape.pivot
import time:      1069 |       1069 |                 pandas.core.reshape.tile
import time:       172 |      10255 |               pandas.core.reshape.api
import time:       103 |        103 |                 pandas.api.extensions
import time:        60 |         60 |                 pandas.api.indexers
import time:        38 |         38 |                     pandas.core.interchange
import time:       802 |        839 |                   pandas.core.interchange.dataframe_protocol
import time:       401 |        401 |                     pandas.core.interchange.utils
import time:      1097 |       1497 |                   pandas.core.interchange.from_dataframe
import time:        65 |       2401 |                 pandas.api.interchange
import time:       117 |        117 |                   pandas.core.dtypes.api
import time:       126 |        243 |                 pandas.api.types
import time:      4802 |       4802 |                   pandas.core.resample
import time:       150 |        150 |                         pandas._libs.json
import time:      1032 |       1032 |                         pandas.io.json._normalize
import time:       771 |        771 |                         pandas.io.json._table_schema
import time:       328 |        328 |                               pandas._libs.parsers
import time:      3909 |       3909 |                                 pandas.io.parsers.base_parser
import time:       959 |       4867 |                               pandas.io.parsers.arrow_parser_wrapper
import time:      1068 |       1068 |                               pandas.io.parsers.c_parser_wrapper
import time:      3242 |       3242 |                               pandas.io.parsers.python_parser
import time:      4623 |      14126 |                             pandas.io.parsers.readers
import time:       105 |      14230 |                           pandas.io.parsers
import time:        16 |      14246 |                         pandas.io.parsers.readers
import time:      3297 |      19494 |                       pandas.io.json._json
import time:       111 |      19605 |                     pandas.io.json
import time:        16 |      19620 |                   pandas.io.json._json
import time:      9047 |       9047 |                   pandas.io.stata
import time:       126 |      33594 |                 pandas.api.typing
import time:       134 |      36532 |               pandas.api
import time:       504 |        504 |                     pandas._testing.contexts
import time:       413 |        916 |                   pandas._testing._io
import time:       457 |        457 |                   pandas._testing._warnings
import time:        27 |         27 |                       cmath
import time:       172 |        199 |                     pandas._libs.testing
import time:      2759 |       2958 |                   pandas._testing.asserters
import time:       146 |        146 |                   pandas._testing.compat
import time:      1290 |       5765 |                 pandas._testing
import time:       116 |       5881 |               pandas.testing
import time:       448 |        448 |               pandas.util._print_versions
import time:       447 |        447 |                 pandas.io.clipboards
import time:       650 |        650 |                     pandas.io.excel._util
import time:       481 |        481 |                     pandas.io.excel._calamine
import time:       742 |        742 |                     pandas.io.excel._odfreader
import time:      1382 |       1382 |                     pandas.io.excel._openpyxl
import time:       448 |        448 |                     pandas.io.excel._pyxlsb
import time:       545 |        545 |                     pandas.io.excel._xlrd
import time:      3123 |       7368 |                   pandas.io.excel._base
import time:       866 |        866 |                   pandas.io.excel._odswriter
import time:       763 |        763 |                   pandas.io.excel._xlsxwriter
import time:       155 |       9150 |                 pandas.io.excel
import time:       343 |        343 |                 pandas.io.feather_format
import time:       277 |        277 |                 pandas.io.gbq
import time:      2296 |       2296 |                 pandas.io.html
import time:       392 |        392 |                 pandas.io.orc
import time:      1299 |       1299 |                 pandas.io.parquet
import time:       641 |        641 |                   pandas.compat.pickle_compat
import time:       359 |       1000 |                 pandas.io.pickle
import time:      2072 |       2072 |                   pandas.core.computation.pytables
import time:     14052 |      16124 |                 pandas.io.pytables
import time:       413 |        413 |                   pandas.io.sas.sasreader
import time:       104 |        517 |                 pandas.io.sas
import time:       196 |        196 |                 pandas.io.spss
import time:      5539 |       5539 |                 pandas.io.sql
import time:      2069 |       2069 |                 pandas.io.xml
import time:       243 |      39884 |               pandas.io.api
import time:       209 |        209 |               pandas.util._tester
import time:        61 |         61 |               pandas._version_meson
import time:       567 |     454409 |             pandas
import time:      1475 |       1475 |               shapely.lib
import time:       247 |        247 |               shapely.errors
import time:       180 |        180 |                   shapely._geos
import time:       269 |        449 |                 shapely._geometry_helpers
import time:       192 |        192 |                 shapely._enum
import time:       636 |        636 |                 shapely.decorators
import time:       738 |       2013 |               shapely._geometry
import time:       377 |        377 |                     shapely.coordinates
import time:       610 |        610 |                     shapely.predicates
import time:       880 |       1866 |                   shapely._ragged_array
import time:       531 |       2396 |                 shapely.io
import time:       894 |       3290 |               shapely.creation
import time:        65 |         65 |                   shapely.algorithms
import time:       557 |        557 |                   shapely.affinity
import time:       259 |        880 |                 shapely.algorithms._oriented_envelope
import time:       254 |        254 |                 shapely.algorithms.cga
import time:      1110 |       2242 |               shapely.constructive
import time:       304 |        304 |               shapely.measurement
import time:       613 |        613 |               shapely.set_operations
import time:       236 |        236 |               shapely.linear
import time:       328 |        328 |                       shapely.coords
import time:      1868 |       2196 |                     shapely.geometry.base
import time:       218 |        218 |                     shapely.geometry.collection
import time:       388 |        388 |                         shapely.geometry.point
import time:       405 |        792 |                       shapely.geometry.linestring
import time:       311 |        311 |                       shapely.geometry.multilinestring
import time:       262 |        262 |                       shapely.geometry.multipoint
import time:       735 |        735 |                         shapely.geometry.polygon
import time:       314 |       1049 |                       shapely.geometry.multipolygon
import time:       356 |       2768 |                     shapely.geometry.geo
import time:       130 |       5311 |                   shapely.geometry
import time:        11 |       5321 |                 shapely.geometry.base
import time:       627 |       5948 |               shapely.strtree
import time:       265 |        265 |               shapely._coverage
import time:        95 |         95 |               shapely._version
import time:       243 |      16966 |             shapely
import time:        93 |         93 |                   packaging
import time:       242 |        242 |                   packaging._structures
import time:      1743 |       2077 |                 packaging.version
import time:       124 |        124 |                       pyproj._compat
import time:       486 |        486 |                       pyproj.utils
import time:      1234 |       1843 |                     pyproj._context
import time:       125 |        125 |                     pyproj._network
import time:       228 |       2194 |                   pyproj.network
import time:       305 |        305 |                   pyproj._show_versions
import time:       121 |        121 |                   pyproj._version
import time:       884 |        884 |                       pyproj.aoi
import time:       339 |        339 |                       pyproj.crs.datum
import time:       577 |        577 |                         pyproj.enums
import time:       419 |        996 |                       pyproj.crs.enums
import time:       168 |        168 |                       pyproj.exceptions
import time:       284 |        284 |                         pyproj._geod
import time:       103 |        103 |                         pyproj.list
import time:      1192 |       1578 |                       pyproj.geod
import time:       444 |       4406 |                     pyproj._crs
import time:      2276 |       2276 |                         pyproj.crs.coordinate_operation
import time:      1365 |       3640 |                       pyproj.crs._cf1x8
import time:       545 |        545 |                       pyproj.crs.coordinate_system
import time:      3030 |       7214 |                     pyproj.crs.crs
import time:       111 |      11730 |                   pyproj.crs
import time:       262 |        262 |                   pyproj.database
import time:       377 |        377 |                     pyproj._transformer
import time:       328 |        328 |                       pyproj.datadir
import time:       164 |        164 |                         pyproj._sync
import time:       814 |        978 |                       pyproj.sync
import time:      2362 |       3666 |                     pyproj.transformer
import time:       474 |       4515 |                   pyproj.proj
import time:      4214 |      23339 |                 pyproj
import time:       326 |      25740 |               geopandas._compat
import time:       119 |        119 |                   shapely.algorithms.polylabel
import time:       198 |        198 |                   shapely.prepared
import time:      1374 |       1690 |                 shapely.ops
import time:       116 |        116 |                 shapely.wkt
import time:       631 |        631 |                 geopandas.sindex
import time:      4170 |       6605 |               geopandas.array
import time:      2808 |      35152 |             geopandas.base
import time:       539 |        539 |                 fractions
import time:        23 |         23 |                 _statistics
import time:       888 |       1449 |               statistics
import time:      1607 |       3056 |             geopandas.explore
import time:       212 |        212 |               geopandas._decorator
import time:      1826 |       2038 |             geopandas.plotting
import time:      1815 |     609891 |           geopandas.geoseries
import time:      3410 |       3410 |           geopandas.geodataframe
import time:        79 |         79 |             geopandas.io
import time:       352 |        352 |             geopandas.io.util
import time:      1788 |       2217 |           geopandas.io.file
import time:      1540 |       1540 |           geopandas.io.arrow
import time:       225 |        225 |             shapely.wkb
import time:       875 |       1100 |           geopandas.io.sql
import time:       449 |        449 |             geopandas.tools.clip
import time:       315 |        315 |             geopandas.tools.geocoding
import time:      1011 |       1011 |             geopandas.tools.overlay
import time:      1185 |       1185 |             geopandas.tools.sjoin
import time:       197 |        197 |             geopandas.tools.util
import time:       132 |       3286 |           geopandas.tools
import time:       417 |        417 |           geopandas.tools._show_versions
import time:       149 |        149 |           geopandas.datasets
import time:        64 |         64 |           geopandas._version
import time:       257 |     622825 |         geopandas
import time:       113 |        113 |         cdsetool.logger
import time:      1066 |     624003 |       cdsetool.query
import time:       305 |     624457 |     cdsetool._processing
import time:        55 |         55 |       IPython
import time:      1601 |       1656 |     cdsetool.monitor
import time:       611 |     626723 |   cdsetool.download

pjonsson avatar Oct 03 '25 12:10 pjonsson

This PR is by no means exhaustive, but for taking 15 minutes to make it's a significant improvement.

The reduced import time is noticed when using other code paths, for example when passing --help or doing tab completion.

pjonsson avatar Oct 03 '25 12:10 pjonsson

@subnet001 it's been a year since the last release and there has been some code improvements, could you please make a new release after merging this PR?

pjonsson avatar Oct 03 '25 12:10 pjonsson