-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy path__init__.py
138 lines (111 loc) · 3.94 KB
/
__init__.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# Copyright (c) MONAI Consortium
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from __future__ import annotations
import logging
import os
import sys
import warnings
from ._version import get_versions
old_showwarning = warnings.showwarning
def custom_warning_handler(message, category, filename, lineno, file=None, line=None):
ignore_files = ["ignite/handlers/checkpoint", "modelopt/torch/quantization/tensor_quant"]
if any(ignore in filename for ignore in ignore_files):
return
old_showwarning(message, category, filename, lineno, file, line)
class DeprecatedTypesWarningFilter(logging.Filter):
def filter(self, record):
message_bodies_to_ignore = [
"np.bool8",
"np.object0",
"np.int0",
"np.uint0",
"np.void0",
"np.str0",
"np.bytes0",
"@validator",
"@root_validator",
"class-based `config`",
"pkg_resources",
"Implicitly cleaning up",
]
for message in message_bodies_to_ignore:
if message in record.getMessage():
return False
return True
# workaround for https://github.com/Project-MONAI/MONAI/issues/8060
# TODO: remove this workaround after upstream fixed the warning
# Set the custom warning handler to filter warning
warnings.showwarning = custom_warning_handler
# Get the logger for warnings and add the filter to the logger
logging.getLogger("py.warnings").addFilter(DeprecatedTypesWarningFilter())
PY_REQUIRED_MAJOR = 3
PY_REQUIRED_MINOR = 9
version_dict = get_versions()
__version__: str = version_dict.get("version", "0+unknown")
__revision_id__: str = version_dict.get("full-revisionid")
del get_versions, version_dict
__copyright__ = "(c) MONAI Consortium"
__basedir__ = os.path.dirname(__file__)
if sys.version_info.major != PY_REQUIRED_MAJOR or sys.version_info.minor < PY_REQUIRED_MINOR:
import warnings
warnings.warn(
f"MONAI requires Python {PY_REQUIRED_MAJOR}.{PY_REQUIRED_MINOR} or higher. "
f"But the current Python is: {sys.version}",
category=RuntimeWarning,
)
from .utils.module import load_submodules # noqa: E402
# handlers_* have some external decorators the users may not have installed
# *.so files and folder "_C" may not exist when the cpp extensions are not compiled
excludes = "|".join(
[
"(^(monai.handlers))",
"(^(monai.bundle))",
"(^(monai.fl))",
"((\\.so)$)",
"(^(monai._C))",
"(.*(__main__)$)",
"(.*(video_dataset)$)",
"(.*(nnunet).*$)",
]
)
# load directory modules only, skip loading individual files
load_submodules(sys.modules[__name__], False, exclude_pattern=excludes)
# load all modules, this will trigger all export decorations
load_submodules(sys.modules[__name__], True, exclude_pattern=excludes)
__all__ = [
"apps",
"auto3dseg",
"bundle",
"config",
"data",
"engines",
"fl",
"handlers",
"inferers",
"losses",
"metrics",
"networks",
"optimizers",
"transforms",
"utils",
"visualize",
]
try:
from .utils.tf32 import detect_default_tf32
detect_default_tf32()
import torch
# workaround related to https://github.com/Project-MONAI/MONAI/issues/7575
if hasattr(torch.cuda.device_count, "cache_clear"):
torch.cuda.device_count.cache_clear()
except BaseException:
from .utils.misc import MONAIEnvVars
if MONAIEnvVars.debug():
raise