Skip to content

Commit 95aff52

Browse files
authored
Merge pull request #384 from tbirdso/debug-python
ENH: Add Python example on module loading printouts
2 parents d113dfc + 010dd23 commit 95aff52

File tree

4 files changed

+86
-0
lines changed

4 files changed

+86
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
cmake_minimum_required(VERSION 3.16.3)
2+
3+
project(PrintModuleLoadingPython)
4+
5+
find_package(ITK REQUIRED)
6+
include(${ITK_USE_FILE})
7+
8+
install(FILES Code.py CMakeLists.txt
9+
DESTINATION share/ITKSphinxExamples/Code/Core/Common/PrintModuleLoadingPython/
10+
COMPONENT Code
11+
)
12+
13+
enable_testing()
14+
if(ITK_WRAP_PYTHON)
15+
add_test(NAME PrintModuleLoadingPythonTest
16+
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/Code.py)
17+
endif()
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/usr/bin/env python
2+
3+
# Copyright NumFOCUS
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0.txt
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
### Print ITK Module Loading
18+
19+
# It can be useful to see how ITK modules are being loaded in order
20+
# to understand module dependencies. `itk.auto_progress` can be used
21+
# to increase verbosity of module loading and filter printouts.
22+
23+
import itk
24+
25+
# Enable module loading printouts
26+
itk.auto_progress(2)
27+
28+
# Load a filter from a module with several dependencies
29+
_ = itk.ForwardFFTImageFilter.values()[0].New()
30+
31+
# Disable printouts
32+
itk.auto_progress(0)
33+
34+
# Do work
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
:name: PrintModuleLoadingPython
2+
3+
Print ITK Python Module Loading
4+
================================
5+
6+
Synopsis
7+
--------
8+
9+
Print how ITK Python module dependencies are lazily loaded.
10+
11+
12+
Results
13+
-------
14+
Output::
15+
16+
Loading ITKPyBase... done
17+
Loading ITKCommon... done
18+
Loading ITKStatistics... done
19+
Loading ITKImageFilterBase... done
20+
Loading ITKTransform... done
21+
Loading ITKImageFunction... done
22+
Loading ITKImageGrid... done
23+
Loading ITKFFT... done
24+
Loading ITKPyUtils... done
25+
26+
Code
27+
----
28+
29+
Python
30+
......
31+
32+
.. literalinclude:: Code.py
33+
:language: python
34+
:lines: 1, 16-

src/Core/Common/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ Common
9595
PassImageToFunction/Documentation.rst
9696
PermuteSequenceOfIndices/Documentation.rst
9797
PiConstant/Documentation.rst
98+
PrintModuleLoadingPython/Documentation.rst
9899
ProduceImageProgrammatically/Documentation.rst
99100
RandomSelectOfPixelsFromRegion/Documentation.rst
100101
RandomSelectPixelFromRegionWithoutReplacee/Documentation.rst

0 commit comments

Comments
 (0)