Examples

This page contains the raw code + output of our examples. For detailed explanations of what is going on please see the Quick Start guide.

Example 0 - Most Basic Example

This is the most basic example which demonstrates the most basic way to use LightweightDebugMessages.

Code Listing: Example 0

 1#!/usr/bin/env python3
 2from lightweightdebugmessages import LightweightDebugMessages
 3
 4
 5
 6class MyClass(LightweightDebugMessages):
 7
 8    def some_method(self):
 9        print("some_method():")
10        self.debug_message(0, f"This is a normal message that should always be printed")
11        self.debug_message(2, f"This message is printed if debug_level is >= 2")
12        self.debug_message(5, f" This message is printed if debug_level is >= 5")
13        print("")
14        return
15
16
17
18# create an instance of the class
19data = MyClass()
20
21# Default debug_level is 0, so this prints only 1 message
22data.some_method()
23
24# Increase debug level:
25data.debug_level = 2
26data.some_method()

Output: Example 0

some_method():
This is a normal message that should always be printed

some_method():
This is a normal message that should always be printed
[D-2] This message is printed if debug_level is >= 2

Example 1 - Demonstrate Debug Level Use

Expands Example 0 to show different debug messages being printed.

Code Listing: Example 1

 1#!/usr/bin/env python3
 2from lightweightdebugmessages import LightweightDebugMessages
 3
 4
 5
 6class MyClass(LightweightDebugMessages):
 7
 8    def some_method(self):
 9        for level in range(10):
10            self.debug_message(level, f"This message has debug level {level}")
11        return
12
13
14
15# create an instance of the class
16data = MyClass()
17
18# Demonstrate messages printed with debug_level = 0
19print(f"Test method using debug_level = {data.debug_level}:")
20data.some_method()
21print("")
22
23# Demonstrate messages printed with debug_level = 3
24data.debug_level = 3
25print(f"Test method using debug_level = {data.debug_level}:")
26data.some_method()
27print("")
28
29# Demonstrate messages printed with debug_level = 5
30data.debug_level = 5
31print(f"Test method using debug_level = {data.debug_level}:")
32data.some_method()
33print("")

Output: Example 1

Test method using debug_level = 0:
This message has debug level 0

Test method using debug_level = 3:
This message has debug level 0
[D-1] This message has debug level 1
[D-2] This message has debug level 2
[D-3] This message has debug level 3

Test method using debug_level = 5:
This message has debug level 0
[D-1] This message has debug level 1
[D-2] This message has debug level 2
[D-3] This message has debug level 3
[D-4] This message has debug level 4
[D-5] This message has debug level 5

Example 2 - Contol Messages via Command Line Argument

Shows a more complex example using argparse to control the visibility of debug messages using the command line by adding the parameter --debug-level=N.

Code Listing: Example 2

 1#!/usr/bin/env python3
 2import argparse
 3from lightweightdebugmessages import LightweightDebugMessages
 4
 5
 6
 7class MyClass(LightweightDebugMessages):
 8
 9    def __init__(self, program_options):
10        self.debug_level = program_options.debug_level
11
12    def some_method(self):
13        for level in range(10):
14            self.debug_message(level, f"This message has debug level {level}")
15        return
16
17
18
19def parse_args():
20    """
21    Parse command line arguments using argparse
22
23    Returns:
24        Namespace object containing the command line arguments.
25    """
26
27    def int_range(minval=0, maxval=5):
28        """ Helper: Sets an allowable range for an int parameter """
29
30        def int_range_checker(arg):
31            try:
32                output = int(arg)
33            except ValueError:
34                raise argparse.ArgumentTypeError("Must be an integer value")
35            if output < minval:
36                output = minval
37            if output > maxval:
38                output = maxval
39            return output
40
41        return int_range_checker
42
43    parser = argparse.ArgumentParser(description='Example')
44    required = parser.add_argument_group('Required Arguments')
45    optional = parser.add_argument_group('Optional Arguments')
46
47    optional.add_argument(
48        "--debug-level",
49        dest="debug_level",
50        action='store',
51        type=int_range(0, 5),
52        help='Debug Level [0..5]',
53        default=0
54    )
55
56    arguments = parser.parse_args()
57    return arguments
58
59
60
61# Parse the program options
62program_options = parse_args()
63
64# create an instance of the class
65data = MyClass(program_options)
66
67# Demonstrate messages printed with debug_level = 0
68print(f"Test method using debug_level = {data.debug_level}:")
69data.some_method()
70print("")

Output: Example 1

Test method using debug_level = 0:
This message has debug level 0