2/5/2018 - All docstrings that has "\" character in them should start with "r" to make themselves interpreted as raw strings. Otherwise SysUtils.get_docstrings() won't be able to escape "\" by itself. Check these functions for examples:
SysUtils.get_comments_of_variables()
GDB_Engine.create_process()
GDB_Engine.attach()
GDB_Engine.init_gdb()

2/9/2018 - All functions with docstrings should have their subfunctions written after their docstrings. For instance:

    def test():
        """documentation for test"""
        def subtest():
            return
        return

If test is declared like above, test.__doc__ will return "documentation for test" correctly. This is the correct documentation

    def test():
        def subtest():
            return
        """documentation for test"""
        return

If test is declared like above, test.__doc__ will return a null string because subtest blocks the docstring. This is the wrong documentation
All functions that has a subfunction can be found with the regex def.*:.*\s+def

2/9/2018 - Seek methods of all file handles that read directly from the memory(/proc/pid/mem etc.) should be wrapped in a try/except block that catches both OSError and ValueError exceptions. For instance:

    try:
        self.memory.seek(start_addr)
    except (OSError, ValueError):
        break

OSError handles I/O related errors and ValueError handles the off_t limit error that prints "cannot fit 'int' into an offset-sized integer"

12/9/2018 - All namedtuples must have the same field name with their variable names. This makes the namedtuple transferable via pickle. For instance:

    tuple_examine_expression = collections.namedtuple("tuple_examine_expression", "all address symbol")