Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lazily import region modules as required #751

Open
adamchainz opened this issue Jun 12, 2023 · 0 comments
Open

Lazily import region modules as required #751

adamchainz opened this issue Jun 12, 2023 · 0 comments

Comments

@adamchainz
Copy link

adamchainz commented Jun 12, 2023

Currently, importing workalendar.registry imports all regions. This wastes time and memory when most programs will work with a handful of regions. It would be nice if workalendar could lazily import modules as requested.

Recently the python-holidays project made a similar change: https://github.com/dr-prodigy/python-holidays/issues/998 . They halved their import time, leaving most in standard library modules.

Here's my import time profiling with python -Ximporttime (blog post), where you can see the long list of workalendar region modules taking significant time.

python -X importtime -c 'import workalendar'

import time: self [us] | cumulative | imported package
import time: 258 | 258 | _io
import time: 46 | 46 | marshal
import time: 783 | 783 | posix
import time: 614 | 1698 | _frozen_importlib_external
import time: 254 | 254 | time
import time: 155 | 409 | zipimport
import time: 76 | 76 | _codecs
import time: 521 | 597 | codecs
import time: 884 | 884 | encodings.aliases
import time: 2856 | 4336 | encodings
import time: 293 | 293 | encodings.utf_8
import time: 162 | 162 | _signal
import time: 34 | 34 | _abc
import time: 230 | 263 | abc
import time: 228 | 490 | io
import time: 66 | 66 | _stat
import time: 145 | 210 | stat
import time: 1380 | 1380 | _collections_abc
import time: 49 | 49 | genericpath
import time: 106 | 154 | posixpath
import time: 517 | 2260 | os
import time: 61 | 61 | _sitebuiltins
import time: 1817 | 1817 | _distutils_hack
import time: 332 | 332 | types
import time: 343 | 343 | warnings
import time: 187 | 530 | importlib
import time: 369 | 369 | importlib._abc
import time: 165 | 165 | itertools
import time: 331 | 331 | keyword
import time: 101 | 101 | _operator
import time: 412 | 512 | operator
import time: 344 | 344 | reprlib
import time: 184 | 184 | _collections
import time: 1352 | 2886 | collections
import time: 127 | 127 | _functools
import time: 1888 | 2015 | functools
import time: 881 | 5781 | contextlib
import time: 216 | 6894 | importlib.util
import time: 114 | 114 | importlib.machinery
import time: 69 | 69 | sitecustomize
import time: 14724 | 26268 | site
import time: 1711 | 1711 | enum
import time: 48 | 48 | _sre
import time: 269 | 269 | re._constants
import time: 309 | 577 | re._parser
import time: 100 | 100 | re._casefix
import time: 273 | 997 | re._compiler
import time: 140 | 140 | copyreg
import time: 390 | 3238 | re
import time: 154 | 154 | _csv
import time: 245 | 399 | csv
import time: 96 | 96 | email
import time: 112 | 112 | fnmatch
import time: 45 | 45 | _winapi
import time: 40 | 40 | nt
import time: 41 | 41 | nt
import time: 37 | 37 | nt
import time: 33 | 33 | nt
import time: 27 | 27 | nt
import time: 117 | 338 | ntpath
import time: 37 | 37 | errno
import time: 66 | 66 | urllib
import time: 1070 | 1070 | ipaddress
import time: 963 | 2099 | urllib.parse
import time: 688 | 3273 | pathlib
import time: 267 | 267 | binascii
import time: 147 | 147 | zlib
import time: 213 | 213 | _compression
import time: 180 | 180 | _bz2
import time: 188 | 580 | bz2
import time: 220 | 220 | _lzma
import time: 233 | 453 | lzma
import time: 479 | 1657 | shutil
import time: 128 | 128 | _struct
import time: 88 | 216 | struct
import time: 183 | 183 | _weakrefset
import time: 425 | 608 | threading
import time: 1072 | 3819 | zipfile
import time: 912 | 912 | textwrap
import time: 118 | 118 | quopri
import time: 170 | 170 | math
import time: 112 | 112 | _bisect
import time: 90 | 201 | bisect
import time: 96 | 96 | _random
import time: 93 | 93 | _sha512
import time: 303 | 861 | random
import time: 278 | 278 | _socket
import time: 116 | 116 | collections.abc
import time: 107 | 107 | select
import time: 428 | 650 | selectors
import time: 153 | 153 | array
import time: 1322 | 2402 | socket
import time: 192 | 192 | _datetime
import time: 816 | 1008 | datetime
import time: 633 | 633 | _locale
import time: 3755 | 4387 | locale
import time: 345 | 4731 | calendar
import time: 158 | 4889 | email._parseaddr
import time: 125 | 125 | base64
import time: 77 | 201 | email.base64mime
import time: 19 | 19 | _string
import time: 300 | 319 | string
import time: 131 | 449 | email.quoprimime
import time: 317 | 317 | email.errors
import time: 67 | 67 | email.encoders
import time: 161 | 1192 | email.charset
import time: 302 | 10651 | email.utils
import time: 472 | 472 | email.header
import time: 209 | 681 | email._policybase
import time: 175 | 175 | email._encoded_words
import time: 77 | 77 | email.iterators
import time: 506 | 12205 | email.message
import time: 62 | 62 | importlib.metadata._functools
import time: 121 | 182 | importlib.metadata._text
import time: 281 | 12667 | importlib.metadata._adapters
import time: 95 | 95 | _typing
import time: 1884 | 1978 | typing
import time: 191 | 2169 | importlib.metadata._meta
import time: 180 | 180 | importlib.metadata._collections
import time: 70 | 70 | importlib.metadata._itertools
import time: 289 | 289 | weakref
import time: 323 | 612 | tempfile
import time: 1095 | 1095 | importlib.resources.abc
import time: 201 | 201 | importlib.resources._adapters
import time: 316 | 2223 | importlib.resources._common
import time: 205 | 205 | importlib.resources._legacy
import time: 125 | 2552 | importlib.resources
import time: 49 | 2600 | importlib.resources.abc
import time: 376 | 2975 | importlib.abc
import time: 1269 | 31059 | importlib.metadata
import time: 365 | 365 | email.feedparser
import time: 170 | 534 | email.parser
import time: 3382 | 34974 | workalendar
silvr@4ffd147c9717:/opt/silvr$ python -X importtime -c 'import workalendar.registry'
import time: self [us] | cumulative | imported package
import time: 304 | 304 | _io
import time: 42 | 42 | marshal
import time: 752 | 752 | posix
import time: 850 | 1947 | _frozen_importlib_external
import time: 228 | 228 | time
import time: 204 | 431 | zipimport
import time: 70 | 70 | _codecs
import time: 591 | 661 | codecs
import time: 1022 | 1022 | encodings.aliases
import time: 1971 | 3653 | encodings
import time: 405 | 405 | encodings.utf_8
import time: 154 | 154 | _signal
import time: 27 | 27 | _abc
import time: 170 | 197 | abc
import time: 209 | 405 | io
import time: 63 | 63 | _stat
import time: 138 | 200 | stat
import time: 961 | 961 | _collections_abc
import time: 38 | 38 | genericpath
import time: 68 | 106 | posixpath
import time: 429 | 1695 | os
import time: 61 | 61 | _sitebuiltins
import time: 1820 | 1820 | _distutils_hack
import time: 363 | 363 | types
import time: 416 | 416 | warnings
import time: 225 | 641 | importlib
import time: 328 | 328 | importlib._abc
import time: 101 | 101 | itertools
import time: 112 | 112 | keyword
import time: 72 | 72 | _operator
import time: 290 | 361 | operator
import time: 196 | 196 | reprlib
import time: 111 | 111 | _collections
import time: 1097 | 1976 | collections
import time: 62 | 62 | _functools
import time: 705 | 766 | functools
import time: 657 | 3399 | contextlib
import time: 172 | 4538 | importlib.util
import time: 159 | 159 | importlib.machinery
import time: 75 | 75 | sitecustomize
import time: 12024 | 20730 | site
import time: 1955 | 1955 | enum
import time: 60 | 60 | _sre
import time: 238 | 238 | re._constants
import time: 506 | 744 | re._parser
import time: 88 | 88 | re._casefix
import time: 383 | 1273 | re._compiler
import time: 144 | 144 | copyreg
import time: 528 | 3899 | re
import time: 173 | 173 | _csv
import time: 286 | 459 | csv
import time: 167 | 167 | email
import time: 109 | 109 | fnmatch
import time: 52 | 52 | _winapi
import time: 43 | 43 | nt
import time: 37 | 37 | nt
import time: 36 | 36 | nt
import time: 35 | 35 | nt
import time: 35 | 35 | nt
import time: 117 | 352 | ntpath
import time: 48 | 48 | errno
import time: 83 | 83 | urllib
import time: 1151 | 1151 | ipaddress
import time: 850 | 2083 | urllib.parse
import time: 626 | 3217 | pathlib
import time: 365 | 365 | binascii
import time: 156 | 156 | zlib
import time: 181 | 181 | _compression
import time: 164 | 164 | _bz2
import time: 159 | 503 | bz2
import time: 160 | 160 | _lzma
import time: 128 | 288 | lzma
import time: 516 | 1461 | shutil
import time: 99 | 99 | _struct
import time: 71 | 170 | struct
import time: 211 | 211 | _weakrefset
import time: 392 | 602 | threading
import time: 1089 | 3685 | zipfile
import time: 575 | 575 | textwrap
import time: 85 | 85 | quopri
import time: 118 | 118 | math
import time: 85 | 85 | _bisect
import time: 128 | 212 | bisect
import time: 77 | 77 | _random
import time: 71 | 71 | _sha512
import time: 296 | 772 | random
import time: 228 | 228 | _socket
import time: 114 | 114 | collections.abc
import time: 99 | 99 | select
import time: 397 | 609 | selectors
import time: 134 | 134 | array
import time: 1114 | 2083 | socket
import time: 136 | 136 | _datetime
import time: 620 | 756 | datetime
import time: 49 | 49 | _locale
import time: 3232 | 3281 | locale
import time: 285 | 3565 | calendar
import time: 121 | 3686 | email._parseaddr
import time: 165 | 165 | base64
import time: 75 | 240 | email.base64mime
import time: 20 | 20 | _string
import time: 329 | 349 | string
import time: 163 | 512 | email.quoprimime
import time: 290 | 290 | email.errors
import time: 64 | 64 | email.encoders
import time: 164 | 1268 | email.charset
import time: 243 | 8805 | email.utils
import time: 387 | 387 | email.header
import time: 168 | 555 | email._policybase
import time: 150 | 150 | email._encoded_words
import time: 66 | 66 | email.iterators
import time: 359 | 10018 | email.message
import time: 54 | 54 | importlib.metadata._functools
import time: 90 | 144 | importlib.metadata._text
import time: 194 | 10355 | importlib.metadata._adapters
import time: 90 | 90 | _typing
import time: 1504 | 1593 | typing
import time: 171 | 1764 | importlib.metadata._meta
import time: 156 | 156 | importlib.metadata._collections
import time: 55 | 55 | importlib.metadata._itertools
import time: 242 | 242 | weakref
import time: 254 | 496 | tempfile
import time: 843 | 843 | importlib.resources.abc
import time: 164 | 164 | importlib.resources._adapters
import time: 257 | 1759 | importlib.resources._common
import time: 97 | 97 | importlib.resources._legacy
import time: 90 | 1945 | importlib.resources
import time: 7 | 1952 | importlib.resources.abc
import time: 222 | 2173 | importlib.abc
import time: 1164 | 27663 | importlib.metadata
import time: 276 | 276 | email.feedparser
import time: 142 | 417 | email.parser
import time: 3120 | 31199 | workalendar
import time: 35 | 35 | org
import time: 19 | 54 | org.python
import time: 7 | 60 | org.python.core
import time: 105 | 165 | copy
import time: 61 | 61 | convertdate.utils
import time: 80 | 140 | convertdate.gregorian
import time: 57 | 57 | convertdate.julian
import time: 145 | 342 | convertdate.armenian
import time: 68 | 68 | pymeeus
import time: 58 | 58 | pymeeus.base
import time: 201 | 326 | pymeeus.Angle
import time: 304 | 304 | pymeeus.Epoch
import time: 96 | 96 | pymeeus.Interpolation
import time: 442 | 537 | pymeeus.Coordinates
import time: 1208 | 1208 | pymeeus.Earth
import time: 131 | 1876 | pymeeus.Sun
import time: 108 | 2613 | convertdate.bahai
import time: 79 | 79 | convertdate.coptic
import time: 61 | 61 | convertdate.julianday
import time: 78 | 138 | convertdate.daycount
import time: 45 | 45 | convertdate.dublin
import time: 52 | 52 | convertdate.data
import time: 146 | 198 | convertdate.data.french_republican_days
import time: 96 | 293 | convertdate.french_republican
import time: 76 | 76 | convertdate.hebrew
import time: 60 | 60 | convertdate.islamic
import time: 202 | 262 | convertdate.holidays
import time: 102 | 102 | convertdate.indian_civil
import time: 70 | 70 | convertdate.iso
import time: 117 | 117 | convertdate.mayan
import time: 156 | 156 | convertdate.persian
import time: 449 | 449 | convertdate.data.positivist
import time: 85 | 534 | convertdate.positivist
import time: 58 | 58 | convertdate.ordinal
import time: 243 | 5119 | convertdate
import time: 80 | 80 | dateutil._version
import time: 102 | 182 | dateutil
import time: 46 | 46 | dateutil.easter
import time: 290 | 290 | lunardate
import time: 96 | 96 | workalendar.exceptions
import time: 534 | 6430 | workalendar.core
import time: 51 | 51 | workalendar.registry_tools
import time: 198 | 249 | workalendar.europe.austria
import time: 74 | 74 | workalendar.europe.belarus
import time: 61 | 61 | workalendar.europe.belgium
import time: 77 | 77 | workalendar.europe.bulgaria
import time: 76 | 76 | workalendar.europe.cayman_islands
import time: 62 | 62 | workalendar.europe.croatia
import time: 105 | 105 | workalendar.europe.cyprus
import time: 138 | 138 | workalendar.europe.czech_republic
import time: 72 | 72 | workalendar.europe.estonia
import time: 62 | 62 | workalendar.europe.european_central_bank
import time: 154 | 154 | workalendar.europe.denmark
import time: 72 | 72 | workalendar.europe.finland
import time: 73 | 73 | workalendar.europe.france
import time: 59 | 59 | workalendar.europe.georgia
import time: 64 | 64 | workalendar.europe.greece
import time: 66 | 66 | workalendar.europe.guernsey
import time: 53 | 53 | workalendar.europe.hungary
import time: 66 | 66 | workalendar.europe.iceland
import time: 65 | 65 | workalendar.europe.ireland
import time: 56 | 56 | workalendar.europe.italy
import time: 67 | 67 | workalendar.europe.latvia
import time: 72 | 72 | workalendar.europe.lithuania
import time: 55 | 55 | workalendar.europe.luxembourg
import time: 58 | 58 | workalendar.europe.malta
import time: 76 | 76 | workalendar.europe.monaco
import time: 107 | 107 | workalendar.europe.netherlands
import time: 53 | 53 | workalendar.europe.norway
import time: 52 | 52 | workalendar.europe.poland
import time: 56 | 56 | workalendar.europe.portugal
import time: 62 | 62 | workalendar.europe.romania
import time: 65 | 65 | workalendar.europe.russia
import time: 52 | 52 | workalendar.europe.serbia
import time: 53 | 53 | workalendar.europe.slovakia
import time: 52 | 52 | workalendar.europe.slovenia
import time: 245 | 245 | workalendar.europe.spain
import time: 76 | 76 | workalendar.europe.sweden
import time: 95 | 95 | workalendar.europe.ukraine
import time: 94 | 94 | workalendar.europe.united_kingdom
import time: 62 | 62 | workalendar.europe.turkey
import time: 224 | 224 | workalendar.europe.germany
import time: 125 | 125 | workalendar.europe.scotland.mixins.spring_holiday
import time: 98 | 98 | workalendar.europe.scotland.mixins.fair_holiday
import time: 80 | 80 | workalendar.europe.scotland.mixins.victoria_day
import time: 75 | 75 | workalendar.europe.scotland.mixins.autumn_holiday
import time: 183 | 558 | workalendar.europe.scotland.mixins
import time: 712 | 1270 | workalendar.europe.scotland
import time: 356 | 356 | workalendar.europe.switzerland
import time: 193 | 193 | workalendar.usa.core
import time: 102 | 102 | workalendar.usa.alabama
import time: 60 | 60 | workalendar.usa.alaska
import time: 56 | 56 | workalendar.usa.arizona
import time: 57 | 57 | workalendar.usa.arkansas
import time: 119 | 119 | workalendar.usa.california
import time: 58 | 58 | workalendar.usa.colorado
import time: 52 | 52 | workalendar.usa.connecticut
import time: 58 | 58 | workalendar.usa.delaware
import time: 54 | 54 | workalendar.usa.district_columbia
import time: 85 | 85 | pyluach
import time: 264 | 264 | numbers
import time: 316 | 316 | pyluach.utils
import time: 84 | 84 | pyluach.gematria
import time: 425 | 1171 | pyluach.dates
import time: 205 | 1376 | workalendar.usa.florida
import time: 94 | 94 | workalendar.usa.georgia
import time: 71 | 71 | workalendar.usa.hawaii
import time: 57 | 57 | workalendar.usa.idaho
import time: 91 | 91 | workalendar.usa.illinois
import time: 68 | 68 | workalendar.usa.indiana
import time: 53 | 53 | workalendar.usa.iowa
import time: 53 | 53 | workalendar.usa.kansas
import time: 53 | 53 | workalendar.usa.kentucky
import time: 49 | 49 | workalendar.usa.louisiana
import time: 61 | 61 | workalendar.usa.maine
import time: 403 | 403 | workalendar.usa.maryland
import time: 72 | 72 | workalendar.usa.massachusetts
import time: 75 | 75 | workalendar.usa.michigan
import time: 51 | 51 | workalendar.usa.minnesota
import time: 57 | 57 | workalendar.usa.mississippi
import time: 51 | 51 | workalendar.usa.missouri
import time: 56 | 56 | workalendar.usa.montana
import time: 53 | 53 | workalendar.usa.nebraska
import time: 57 | 57 | workalendar.usa.nevada
import time: 50 | 50 | workalendar.usa.new_hampshire
import time: 47 | 47 | workalendar.usa.new_jersey
import time: 54 | 54 | workalendar.usa.new_mexico
import time: 48 | 48 | workalendar.usa.new_york
import time: 75 | 75 | workalendar.usa.north_carolina
import time: 54 | 54 | workalendar.usa.north_dakota
import time: 50 | 50 | workalendar.usa.ohio
import time: 49 | 49 | workalendar.usa.oklahoma
import time: 48 | 48 | workalendar.usa.oregon
import time: 50 | 50 | workalendar.usa.pennsylvania
import time: 78 | 78 | workalendar.usa.rhode_island
import time: 51 | 51 | workalendar.usa.south_carolina
import time: 49 | 49 | workalendar.usa.south_dakota
import time: 48 | 48 | workalendar.usa.tennessee
import time: 74 | 74 | workalendar.usa.texas
import time: 51 | 51 | workalendar.usa.utah
import time: 63 | 63 | workalendar.usa.vermont
import time: 74 | 74 | workalendar.usa.virginia
import time: 78 | 78 | workalendar.usa.washington
import time: 69 | 69 | workalendar.usa.west_virginia
import time: 55 | 55 | workalendar.usa.wisconsin
import time: 52 | 52 | workalendar.usa.wyoming
import time: 60 | 60 | workalendar.usa.american_samoa
import time: 51 | 51 | workalendar.usa.guam
import time: 138 | 138 | workalendar.america.barbados
import time: 773 | 773 | workalendar.america.brazil
import time: 325 | 325 | workalendar.america.canada
import time: 42 | 42 | skyfield
import time: 264 | 264 | gzip
import time: 100 | 100 | _json
import time: 183 | 283 | json.scanner
import time: 223 | 505 | json.decoder
import time: 206 | 206 | json.encoder
import time: 121 | 832 | json
import time: 137 | 1231 | workalendar.precomputed_astronomy
import time: 62 | 1335 | workalendar.astronomy
import time: 76 | 1411 | workalendar.america.chile
import time: 98 | 98 | workalendar.america.colombia
import time: 67 | 67 | workalendar.america.mexico
import time: 57 | 57 | workalendar.america.panama
import time: 66 | 66 | workalendar.america.paraguay
import time: 79 | 79 | workalendar.america.argentina
import time: 55 | 55 | workalendar.america.el_salvador
import time: 101 | 101 | workalendar.africa.algeria
import time: 148 | 148 | workalendar.africa.benin
import time: 80 | 80 | workalendar.africa.ivory_coast
import time: 80 | 80 | workalendar.africa.kenya
import time: 60 | 60 | workalendar.africa.madagascar
import time: 57 | 57 | workalendar.africa.sao_tome
import time: 83 | 83 | workalendar.africa.south_africa
import time: 58 | 58 | workalendar.africa.angola
import time: 64 | 64 | workalendar.africa.mozambique
import time: 67 | 67 | workalendar.africa.nigeria
import time: 59 | 59 | workalendar.africa.tunisia
import time: 250 | 250 | workalendar.asia.china
import time: 112 | 112 | workalendar.asia.hong_kong
import time: 81 | 81 | workalendar.asia.japan
import time: 78 | 78 | workalendar.asia.malaysia
import time: 66 | 66 | workalendar.asia.qatar
import time: 138 | 138 | workalendar.asia.singapore
import time: 74 | 74 | workalendar.asia.south_korea
import time: 71 | 71 | workalendar.asia.taiwan
import time: 75 | 75 | workalendar.asia.israel
import time: 72 | 72 | workalendar.asia.philippines
import time: 78 | 78 | workalendar.asia.kazakhstan
import time: 267 | 267 | workalendar.oceania.australia
import time: 71 | 71 | workalendar.oceania.marshall_islands
import time: 71 | 71 | workalendar.oceania.new_zealand
import time: 2400 | 55491 | workalendar.registry
silvr@4ffd147c9717:/opt/silvr$ python -X importtime -c 'import workalendar'
import time: self [us] | cumulative | imported package
import time: 293 | 293 | _io
import time: 105 | 105 | marshal
import time: 976 | 976 | posix
import time: 756 | 2128 | _frozen_importlib_external
import time: 226 | 226 | time
import time: 191 | 417 | zipimport
import time: 58 | 58 | _codecs
import time: 528 | 585 | codecs
import time: 1215 | 1215 | encodings.aliases
import time: 1956 | 3755 | encodings
import time: 414 | 414 | encodings.utf_8
import time: 280 | 280 | _signal
import time: 29 | 29 | _abc
import time: 152 | 181 | abc
import time: 197 | 378 | io
import time: 46 | 46 | _stat
import time: 92 | 138 | stat
import time: 870 | 870 | _collections_abc
import time: 98 | 98 | genericpath
import time: 110 | 208 | posixpath
import time: 535 | 1749 | os
import time: 64 | 64 | _sitebuiltins
import time: 1638 | 1638 | _distutils_hack
import time: 317 | 317 | types
import time: 299 | 299 | warnings
import time: 155 | 453 | importlib
import time: 209 | 209 | importlib._abc
import time: 106 | 106 | itertools
import time: 100 | 100 | keyword
import time: 54 | 54 | _operator
import time: 289 | 343 | operator
import time: 207 | 207 | reprlib
import time: 135 | 135 | _collections
import time: 1016 | 1904 | collections
import time: 50 | 50 | _functools
import time: 686 | 735 | functools
import time: 602 | 3241 | contextlib
import time: 123 | 4025 | importlib.util
import time: 45 | 45 | importlib.machinery
import time: 61 | 61 | sitecustomize
import time: 10963 | 18858 | site
import time: 1720 | 1720 | enum
import time: 47 | 47 | _sre
import time: 283 | 283 | re._constants
import time: 285 | 568 | re._parser
import time: 75 | 75 | re._casefix
import time: 274 | 962 | re._compiler
import time: 129 | 129 | copyreg
import time: 429 | 3239 | re
import time: 168 | 168 | _csv
import time: 249 | 416 | csv
import time: 96 | 96 | email
import time: 92 | 92 | fnmatch
import time: 46 | 46 | _winapi
import time: 40 | 40 | nt
import time: 42 | 42 | nt
import time: 61 | 61 | nt
import time: 35 | 35 | nt
import time: 36 | 36 | nt
import time: 113 | 371 | ntpath
import time: 89 | 89 | errno
import time: 111 | 111 | urllib
import time: 1185 | 1185 | ipaddress
import time: 993 | 2289 | urllib.parse
import time: 740 | 3578 | pathlib
import time: 274 | 274 | binascii
import time: 142 | 142 | zlib
import time: 257 | 257 | _compression
import time: 267 | 267 | _bz2
import time: 181 | 705 | bz2
import time: 183 | 183 | _lzma
import time: 180 | 362 | lzma
import time: 502 | 1708 | shutil
import time: 121 | 121 | _struct
import time: 103 | 223 | struct
import time: 165 | 165 | _weakrefset
import time: 433 | 597 | threading
import time: 1080 | 3880 | zipfile
import time: 625 | 625 | textwrap
import time: 96 | 96 | quopri
import time: 117 | 117 | math
import time: 85 | 85 | _bisect
import time: 70 | 155 | bisect
import time: 65 | 65 | _random
import time: 66 | 66 | _sha512
import time: 273 | 675 | random
import time: 203 | 203 | _socket
import time: 96 | 96 | collections.abc
import time: 153 | 153 | select
import time: 410 | 658 | selectors
import time: 194 | 194 | array
import time: 1325 | 2378 | socket
import time: 211 | 211 | _datetime
import time: 854 | 1064 | datetime
import time: 453 | 453 | _locale
import time: 3192 | 3644 | locale
import time: 380 | 4024 | calendar
import time: 157 | 4181 | email._parseaddr
import time: 117 | 117 | base64
import time: 72 | 188 | email.base64mime
import time: 18 | 18 | _string
import time: 292 | 309 | string
import time: 158 | 467 | email.quoprimime
import time: 310 | 310 | email.errors
import time: 68 | 68 | email.encoders
import time: 164 | 1196 | email.charset
import time: 287 | 9778 | email.utils
import time: 469 | 469 | email.header
import time: 203 | 671 | email._policybase
import time: 173 | 173 | email._encoded_words
import time: 72 | 72 | email.iterators
import time: 406 | 11194 | email.message
import time: 59 | 59 | importlib.metadata._functools
import time: 112 | 170 | importlib.metadata._text
import time: 207 | 11570 | importlib.metadata._adapters
import time: 96 | 96 | _typing
import time: 1818 | 1913 | typing
import time: 215 | 2128 | importlib.metadata._meta
import time: 164 | 164 | importlib.metadata._collections
import time: 64 | 64 | importlib.metadata._itertools
import time: 264 | 264 | weakref
import time: 296 | 559 | tempfile
import time: 974 | 974 | importlib.resources.abc
import time: 170 | 170 | importlib.resources._adapters
import time: 247 | 1949 | importlib.resources._common
import time: 108 | 108 | importlib.resources._legacy
import time: 83 | 2139 | importlib.resources
import time: 7 | 2146 | importlib.resources.abc
import time: 239 | 2385 | importlib.abc
import time: 1212 | 29352 | importlib.metadata
import time: 368 | 368 | email.feedparser
import time: 168 | 536 | email.parser
import time: 3197 | 33085 | workalendar
silvr@4ffd147c9717:/opt/silvr$ python -X importtime -c 'import workalendar.registry'
import time: self [us] | cumulative | imported package
import time: 72 | 72 | _io
import time: 13 | 13 | marshal
import time: 193 | 193 | posix
import time: 204 | 480 | _frozen_importlib_external
import time: 71 | 71 | time
import time: 52 | 123 | zipimport
import time: 21 | 21 | _codecs
import time: 151 | 171 | codecs
import time: 252 | 252 | encodings.aliases
import time: 460 | 883 | encodings
import time: 99 | 99 | encodings.utf_8
import time: 56 | 56 | _signal
import time: 11 | 11 | _abc
import time: 66 | 76 | abc
import time: 80 | 156 | io
import time: 19 | 19 | _stat
import time: 46 | 64 | stat
import time: 418 | 418 | _collections_abc
import time: 13 | 13 | genericpath
import time: 25 | 38 | posixpath
import time: 216 | 735 | os
import time: 25 | 25 | _sitebuiltins
import time: 842 | 842 | _distutils_hack
import time: 198 | 198 | types
import time: 684 | 684 | warnings
import time: 566 | 1249 | importlib
import time: 389 | 389 | importlib._abc
import time: 189 | 189 | itertools
import time: 303 | 303 | keyword
import time: 53 | 53 | _operator
import time: 341 | 393 | operator
import time: 215 | 215 | reprlib
import time: 87 | 87 | _collections
import time: 1565 | 2750 | collections
import time: 30 | 30 | _functools
import time: 438 | 467 | functools
import time: 624 | 3841 | contextlib
import time: 146 | 5623 | importlib.util
import time: 33 | 33 | importlib.machinery
import time: 47 | 47 | sitecustomize
import time: 8063 | 15562 | site
import time: 1210 | 1210 | enum
import time: 62 | 62 | _sre
import time: 151 | 151 | re._constants
import time: 267 | 417 | re._parser
import time: 60 | 60 | re._casefix
import time: 214 | 751 | re._compiler
import time: 91 | 91 | copyreg
import time: 280 | 2330 | re
import time: 131 | 131 | _csv
import time: 221 | 352 | csv
import time: 162 | 162 | email
import time: 75 | 75 | fnmatch
import time: 40 | 40 | _winapi
import time: 32 | 32 | nt
import time: 28 | 28 | nt
import time: 26 | 26 | nt
import time: 26 | 26 | nt
import time: 26 | 26 | nt
import time: 70 | 244 | ntpath
import time: 44 | 44 | errno
import time: 60 | 60 | urllib
import time: 840 | 840 | ipaddress
import time: 624 | 1523 | urllib.parse
import time: 510 | 2395 | pathlib
import time: 243 | 243 | binascii
import time: 224 | 224 | zlib
import time: 203 | 203 | _compression
import time: 223 | 223 | _bz2
import time: 224 | 649 | bz2
import time: 231 | 231 | _lzma
import time: 192 | 422 | lzma
import time: 479 | 1772 | shutil
import time: 150 | 150 | _struct
import time: 126 | 275 | struct
import time: 216 | 216 | _weakrefset
import time: 483 | 699 | threading
import time: 854 | 3840 | zipfile
import time: 702 | 702 | textwrap
import time: 87 | 87 | quopri
import time: 155 | 155 | math
import time: 70 | 70 | _bisect
import time: 76 | 145 | bisect
import time: 69 | 69 | _random
import time: 70 | 70 | _sha512
import time: 276 | 713 | random
import time: 201 | 201 | _socket
import time: 133 | 133 | collections.abc
import time: 106 | 106 | select
import time: 375 | 613 | selectors
import time: 217 | 217 | array
import time: 1127 | 2156 | socket
import time: 183 | 183 | _datetime
import time: 777 | 960 | datetime
import time: 48 | 48 | _locale
import time: 3563 | 3611 | locale
import time: 300 | 3910 | calendar
import time: 172 | 4082 | email._parseaddr
import time: 130 | 130 | base64
import time: 83 | 213 | email.base64mime
import time: 17 | 17 | _string
import time: 304 | 320 | string
import time: 128 | 448 | email.quoprimime
import time: 272 | 272 | email.errors
import time: 58 | 58 | email.encoders
import time: 268 | 1258 | email.charset
import time: 268 | 9434 | email.utils
import time: 381 | 381 | email.header
import time: 171 | 551 | email._policybase
import time: 161 | 161 | email._encoded_words
import time: 61 | 61 | email.iterators
import time: 392 | 10684 | email.message
import time: 155 | 155 | importlib.metadata._functools
import time: 193 | 347 | importlib.metadata._text
import time: 250 | 11280 | importlib.metadata._adapters
import time: 124 | 124 | _typing
import time: 2315 | 2438 | typing
import time: 226 | 2664 | importlib.metadata._meta
import time: 242 | 242 | importlib.metadata._collections
import time: 87 | 87 | importlib.metadata._itertools
import time: 339 | 339 | weakref
import time: 379 | 718 | tempfile
import time: 1334 | 1334 | importlib.resources.abc
import time: 243 | 243 | importlib.resources._adapters
import time: 344 | 2637 | importlib.resources._common
import time: 223 | 223 | importlib.resources._legacy
import time: 121 | 2981 | importlib.resources
import time: 9 | 2989 | importlib.resources.abc
import time: 293 | 3282 | importlib.abc
import time: 962 | 28294 | importlib.metadata
import time: 296 | 296 | email.feedparser
import time: 147 | 442 | email.parser
import time: 2947 | 31682 | workalendar
import time: 54 | 54 | org
import time: 24 | 78 | org.python
import time: 10 | 88 | org.python.core
import time: 174 | 262 | copy
import time: 88 | 88 | convertdate.utils
import time: 138 | 226 | convertdate.gregorian
import time: 86 | 86 | convertdate.julian
import time: 205 | 516 | convertdate.armenian
import time: 102 | 102 | pymeeus
import time: 67 | 67 | pymeeus.base
import time: 263 | 431 | pymeeus.Angle
import time: 379 | 379 | pymeeus.Epoch
import time: 129 | 129 | pymeeus.Interpolation
import time: 520 | 649 | pymeeus.Coordinates
import time: 1571 | 1571 | pymeeus.Earth
import time: 152 | 2371 | pymeeus.Sun
import time: 161 | 3340 | convertdate.bahai
import time: 88 | 88 | convertdate.coptic
import time: 70 | 70 | convertdate.julianday
import time: 90 | 159 | convertdate.daycount
import time: 56 | 56 | convertdate.dublin
import time: 76 | 76 | convertdate.data
import time: 178 | 253 | convertdate.data.french_republican_days
import time: 103 | 356 | convertdate.french_republican
import time: 87 | 87 | convertdate.hebrew
import time: 70 | 70 | convertdate.islamic
import time: 203 | 273 | convertdate.holidays
import time: 65 | 65 | convertdate.indian_civil
import time: 65 | 65 | convertdate.iso
import time: 132 | 132 | convertdate.mayan
import time: 243 | 243 | convertdate.persian
import time: 506 | 506 | convertdate.data.positivist
import time: 128 | 634 | convertdate.positivist
import time: 66 | 66 | convertdate.ordinal
import time: 308 | 6380 | convertdate
import time: 112 | 112 | dateutil._version
import time: 159 | 271 | dateutil
import time: 54 | 54 | dateutil.easter
import time: 480 | 480 | lunardate
import time: 145 | 145 | workalendar.exceptions
import time: 675 | 8264 | workalendar.core
import time: 65 | 65 | workalendar.registry_tools
import time: 188 | 253 | workalendar.europe.austria
import time: 90 | 90 | workalendar.europe.belarus
import time: 74 | 74 | workalendar.europe.belgium
import time: 104 | 104 | workalendar.europe.bulgaria
import time: 91 | 91 | workalendar.europe.cayman_islands
import time: 80 | 80 | workalendar.europe.croatia
import time: 61 | 61 | workalendar.europe.cyprus
import time: 63 | 63 | workalendar.europe.czech_republic
import time: 58 | 58 | workalendar.europe.estonia
import time: 49 | 49 | workalendar.europe.european_central_bank
import time: 125 | 125 | workalendar.europe.denmark
import time: 70 | 70 | workalendar.europe.finland
import time: 72 | 72 | workalendar.europe.france
import time: 63 | 63 | workalendar.europe.georgia
import time: 53 | 53 | workalendar.europe.greece
import time: 60 | 60 | workalendar.europe.guernsey
import time: 54 | 54 | workalendar.europe.hungary
import time: 62 | 62 | workalendar.europe.iceland
import time: 60 | 60 | workalendar.europe.ireland
import time: 50 | 50 | workalendar.europe.italy
import time: 63 | 63 | workalendar.europe.latvia
import time: 57 | 57 | workalendar.europe.lithuania
import time: 57 | 57 | workalendar.europe.luxembourg
import time: 55 | 55 | workalendar.europe.malta
import time: 48 | 48 | workalendar.europe.monaco
import time: 105 | 105 | workalendar.europe.netherlands
import time: 54 | 54 | workalendar.europe.norway
import time: 52 | 52 | workalendar.europe.poland
import time: 57 | 57 | workalendar.europe.portugal
import time: 61 | 61 | workalendar.europe.romania
import time: 65 | 65 | workalendar.europe.russia
import time: 51 | 51 | workalendar.europe.serbia
import time: 71 | 71 | workalendar.europe.slovakia
import time: 53 | 53 | workalendar.europe.slovenia
import time: 236 | 236 | workalendar.europe.spain
import time: 66 | 66 | workalendar.europe.sweden
import time: 98 | 98 | workalendar.europe.ukraine
import time: 88 | 88 | workalendar.europe.united_kingdom
import time: 63 | 63 | workalendar.europe.turkey
import time: 235 | 235 | workalendar.europe.germany
import time: 117 | 117 | workalendar.europe.scotland.mixins.spring_holiday
import time: 92 | 92 | workalendar.europe.scotland.mixins.fair_holiday
import time: 74 | 74 | workalendar.europe.scotland.mixins.victoria_day
import time: 74 | 74 | workalendar.europe.scotland.mixins.autumn_holiday
import time: 157 | 513 | workalendar.europe.scotland.mixins
import time: 650 | 1162 | workalendar.europe.scotland
import time: 321 | 321 | workalendar.europe.switzerland
import time: 172 | 172 | workalendar.usa.core
import time: 89 | 89 | workalendar.usa.alabama
import time: 68 | 68 | workalendar.usa.alaska
import time: 52 | 52 | workalendar.usa.arizona
import time: 51 | 51 | workalendar.usa.arkansas
import time: 100 | 100 | workalendar.usa.california
import time: 51 | 51 | workalendar.usa.colorado
import time: 49 | 49 | workalendar.usa.connecticut
import time: 54 | 54 | workalendar.usa.delaware
import time: 49 | 49 | workalendar.usa.district_columbia
import time: 73 | 73 | pyluach
import time: 245 | 245 | numbers
import time: 269 | 269 | pyluach.utils
import time: 59 | 59 | pyluach.gematria
import time: 350 | 994 | pyluach.dates
import time: 138 | 1132 | workalendar.usa.florida
import time: 74 | 74 | workalendar.usa.georgia
import time: 58 | 58 | workalendar.usa.hawaii
import time: 50 | 50 | workalendar.usa.idaho
import time: 64 | 64 | workalendar.usa.illinois
import time: 83 | 83 | workalendar.usa.indiana
import time: 47 | 47 | workalendar.usa.iowa
import time: 49 | 49 | workalendar.usa.kansas
import time: 48 | 48 | workalendar.usa.kentucky
import time: 45 | 45 | workalendar.usa.louisiana
import time: 49 | 49 | workalendar.usa.maine
import time: 330 | 330 | workalendar.usa.maryland
import time: 69 | 69 | workalendar.usa.massachusetts
import time: 59 | 59 | workalendar.usa.michigan
import time: 46 | 46 | workalendar.usa.minnesota
import time: 48 | 48 | workalendar.usa.mississippi
import time: 63 | 63 | workalendar.usa.missouri
import time: 53 | 53 | workalendar.usa.montana
import time: 47 | 47 | workalendar.usa.nebraska
import time: 51 | 51 | workalendar.usa.nevada
import time: 47 | 47 | workalendar.usa.new_hampshire
import time: 45 | 45 | workalendar.usa.new_jersey
import time: 47 | 47 | workalendar.usa.new_mexico
import time: 43 | 43 | workalendar.usa.new_york
import time: 58 | 58 | workalendar.usa.north_carolina
import time: 48 | 48 | workalendar.usa.north_dakota
import time: 46 | 46 | workalendar.usa.ohio
import time: 44 | 44 | workalendar.usa.oklahoma
import time: 44 | 44 | workalendar.usa.oregon
import time: 45 | 45 | workalendar.usa.pennsylvania
import time: 49 | 49 | workalendar.usa.rhode_island
import time: 44 | 44 | workalendar.usa.south_carolina
import time: 42 | 42 | workalendar.usa.south_dakota
import time: 46 | 46 | workalendar.usa.tennessee
import time: 76 | 76 | workalendar.usa.texas
import time: 46 | 46 | workalendar.usa.utah
import time: 51 | 51 | workalendar.usa.vermont
import time: 47 | 47 | workalendar.usa.virginia
import time: 43 | 43 | workalendar.usa.washington
import time: 56 | 56 | workalendar.usa.west_virginia
import time: 44 | 44 | workalendar.usa.wisconsin
import time: 44 | 44 | workalendar.usa.wyoming
import time: 48 | 48 | workalendar.usa.american_samoa
import time: 44 | 44 | workalendar.usa.guam
import time: 98 | 98 | workalendar.america.barbados
import time: 780 | 780 | workalendar.america.brazil
import time: 307 | 307 | workalendar.america.canada
import time: 49 | 49 | skyfield
import time: 238 | 238 | gzip
import time: 102 | 102 | _json
import time: 181 | 282 | json.scanner
import time: 198 | 480 | json.decoder
import time: 213 | 213 | json.encoder
import time: 101 | 794 | json
import time: 127 | 1159 | workalendar.precomputed_astronomy
import time: 58 | 1264 | workalendar.astronomy
import time: 71 | 1334 | workalendar.america.chile
import time: 81 | 81 | workalendar.america.colombia
import time: 58 | 58 | workalendar.america.mexico
import time: 53 | 53 | workalendar.america.panama
import time: 59 | 59 | workalendar.america.paraguay
import time: 76 | 76 | workalendar.america.argentina
import time: 56 | 56 | workalendar.america.el_salvador
import time: 93 | 93 | workalendar.africa.algeria
import time: 63 | 63 | workalendar.africa.benin
import time: 56 | 56 | workalendar.africa.ivory_coast
import time: 63 | 63 | workalendar.africa.kenya
import time: 48 | 48 | workalendar.africa.madagascar
import time: 48 | 48 | workalendar.africa.sao_tome
import time: 65 | 65 | workalendar.africa.south_africa
import time: 51 | 51 | workalendar.africa.angola
import time: 48 | 48 | workalendar.africa.mozambique
import time: 54 | 54 | workalendar.africa.nigeria
import time: 52 | 52 | workalendar.africa.tunisia
import time: 179 | 179 | workalendar.asia.china
import time: 85 | 85 | workalendar.asia.hong_kong
import time: 73 | 73 | workalendar.asia.japan
import time: 83 | 83 | workalendar.asia.malaysia
import time: 58 | 58 | workalendar.asia.qatar
import time: 73 | 73 | workalendar.asia.singapore
import time: 56 | 56 | workalendar.asia.south_korea
import time: 56 | 56 | workalendar.asia.taiwan
import time: 59 | 59 | workalendar.asia.israel
import time: 61 | 61 | workalendar.asia.philippines
import time: 64 | 64 | workalendar.asia.kazakhstan
import time: 220 | 220 | workalendar.oceania.australia
import time: 56 | 56 | workalendar.oceania.marshall_islands
import time: 61 | 61 | workalendar.oceania.new_zealand
import time: 2333 | 55998 | workalendar.registry

@adamchainz adamchainz changed the title Lazily import countries/regions as required Lazily import region modules as required Jun 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant