6. The Wrapper Script (
mod is a convenience script primarily for starting the Python
interpreter and after its exit execute PostMØD (the summary generator).
The execution can however be customised somewhat, e.g., by running the
gdb, or switching the interpreter
into interactive mode.
The wrapper script does the following.
Clear the folder
out/. If it does not exist, if will be created. All printing functions in libMØD assumes
Run the Python interpreter on the input script, optionally through debugging tools.
If the exit code of the executable is not 0, exit with that exit code.
If PostMØD is not selected to be run, exit with code 0.
Run PostMØD and exit with its exit code.
6.1.1. Meta Options¶
- --help, -h¶
Shows the help output of the script.
- --version, -v¶
Print the version of MØD and exit (the version is always printed in the start).
6.1.2. Input Options¶
- -f <filename>¶
include("filename")to the input script (see
include()). This option can be repeated to execute multiple files in sequence.
- -e <code>¶
Append the given code (and a line break) to the input script. This option can be repeated to execute multiple code snippets in sequence.
When this environment variable is set to a non-empty string, then the string
config.common.ignoreDeprecation = Falseis executed first. This can be used to force errors when scripts use deprecated functionality.
6.1.3. Execution Customization¶
Use interactive mode for the Python interpreter (i.e., pass
-ias additional argument to the interpreter), but disable the log. If
ipython3is available it will be used as interpreter, otherwise
python3is used. See also
Use quiet mode. Certain messages are not printed.
Set this environment variable to the executable to start in non-interactive mode. If not set
python3will be used.
6.1.4. Post-processing Options¶
Do not run PostMØD after the selected executable has finished.
Do not run anything, but remove the
6.1.5. Debugging Options¶
Run the interpreter through Valgrind with
--tool=callgrind. This option takes precedence over the
Run the interpreter through Valgrind with standard options for memory check. If
--debugis given as well, the options
--vgdb=yes --vgdb-error=0are also given to
gdbcan be connected.
- --vgArgs <args>¶
python3for your Python interpreter).
In the GDB prompt, run
target remote | vgdb
In the GDB prompt, run
6.2. PyMØD Preamble¶
When the wrapper script creates the input script, it will start with a small
preamble of useful code before the user-defined code.
The complete code, including the preamble, given to the Python interpereter can
be seen in
out/input after execution of the wrapper script.
The preamble has the following effects.
RTLD_GLOBALin the interpreters
dlopenflags (see Creating a Python Extension)
from mod import *
Defining the following function both in global scope and in the
- mod.include(fName, checkDup=True, putDup=True, skipDup=True)¶
Include the file
fNamein somewhat the same way that the
#includedirective in the C/C++ preprocessor includes files. Paths are handled relatively using the functions
fName (str) – the file to be included.
checkDup (bool) – check if the file has already been included before (with
putDup (bool) – remember that this file has been included in subsequent calls.
skipDup (bool) – skip inclusion instead of exiting if the file has already been included before (with
6.3. Plugins (Loading of Additional Modules)¶
It can be useful to always import additional modules when using MØD. This can be achieved by writing a file in the following format:
name: <module name> path: <Python import path>
mod uses such a file, it will append
<Python import path> to
and insert both
import <module name> and
from <module name> import *
into the preamble.
The plugin specification file must be placed in a directory that is also
mentioned in the following environment variable.
A colon separated list of paths to search for plugins. Non-directory paths are skipped. All files (non-recursively) in each specified directory are checked for plugin information.