(self, module, form=None, include_root_module=False)
return frame_children
For a form or module return the list of stack frame children that are required
        to navigate there; a mix of commands and datum declarations.

        This is based on the following algorithm:

        * Add the module (or form's module) to the stack (we'll call this `m`)
        * Walk through all forms in the module, determine what datum selections
          are present in all of the forms (this may be an empty set)
          * Basically if there are three forms that respectively load
            * f1: v1, v2, v3, v4
            * f2: v1, v2, v4
            * f3: v1, v2
          * The longest common chain is v1, v2
        * Add a datum for each of those values to the stack

        For forms:
        * Add the form "command id" for the <entry> to the stack
        * Add the remainder of the datums for the current form to the stack
        * For the three forms above, the stack entries for "last element" would be
          * m, v1, v2, f1, v3, v4
          * m, v1, v2, f2, v4
          * m, v1, v2, f3

        :returns:   list of strings and DatumMeta objects. String represent stack commands
                    and DatumMeta's represent stack datums.
For a form or module return the list of stack frame children that are required
        to navigate there; a mix of commands and datum declarations.
For a form or module return the list of stack frame children that are required to navigate there ; a mix of commands and datum declarations .
def get_frame_children(self, module, form=None, include_root_module=False):
        """
        For a form or module return the list of stack frame children that are required
        to navigate there; a mix of commands and datum declarations.

        This is based on the following algorithm:

        * Add the module (or form's module) to the stack (we'll call this `m`)
        * Walk through all forms in the module, determine what datum selections
          are present in all of the forms (this may be an empty set)
          * Basically if there are three forms that respectively load
            * f1: v1, v2, v3, v4
            * f2: v1, v2, v4
            * f3: v1, v2
          * The longest common chain is v1, v2
        * Add a datum for each of those values to the stack

        For forms:
        * Add the form "command id" for the <entry> to the stack
        * Add the remainder of the datums for the current form to the stack
        * For the three forms above, the stack entries for "last element" would be
          * m, v1, v2, f1, v3, v4
          * m, v1, v2, f2, v4
          * m, v1, v2, f3

        :returns:   list of strings and DatumMeta objects. String represent stack commands
                    and DatumMeta's represent stack datums.
        """
        module_command = id_strings.menu_id(module)
        if form is None and module.module_type == "shadow":
            module_datums = self.get_module_datums(f'm{module.source_module.id}')
        else:
            module_datums = self.get_module_datums(f'm{module.id}')

        frame_children = []
        if module_command == id_strings.ROOT:
            datums_list = self._root_module_datums
        else:
            datums_list = list(module_datums.values())  # [ [datums for f0], [datums for f1], ...]
            root_module = module.root_module
            if root_module and include_root_module:
                datums_list.extend(self.get_module_datums(id_strings.menu_id(root_module)).values())
                root_module_command = id_strings.menu_id(root_module)
                if root_module_command != id_strings.ROOT:
                    frame_children.append(CommandId(root_module_command))
            frame_children.append(CommandId(module_command))

        common_datums = commonprefix(datums_list)
        frame_children.extend(common_datums)

        if form:
            frame_children.append(CommandId(id_strings.form_command(form, module)))
            form_datums = module_datums[f'f{form.id}']
            remaining_datums = form_datums[len(common_datums):]
            frame_children.extend(remaining_datums)

        return frame_children
def get_frame_children ( self , module , form = None , include_root_module = False ) : module_command = id_strings . menu_id ( module ) if form is None and module . module_type == "shadow" : module_datums = self . get_module_datums ( f'm{module.source_module.id}' ) else : module_datums = self . get_module_datums ( f'm{module.id}' ) frame_children = [ ] if module_command == id_strings . ROOT : datums_list = self . _root_module_datums else : datums_list = list ( module_datums . values ( ) ) # [ [datums for f0], [datums for f1], ...] root_module = module . root_module if root_module and include_root_module : datums_list . extend ( self . get_module_datums ( id_strings . menu_id ( root_module ) ) . values ( ) ) root_module_command = id_strings . menu_id ( root_module ) if root_module_command != id_strings . ROOT : frame_children . append ( CommandId ( root_module_command ) ) frame_children . append ( CommandId ( module_command ) ) common_datums = commonprefix ( datums_list ) frame_children . extend ( common_datums ) if form : frame_children . append ( CommandId ( id_strings . form_command ( form , module ) ) ) form_datums = module_datums [ f'f{form.id}' ] remaining_datums = form_datums [ len ( common_datums ) : ] frame_children . extend ( remaining_datums ) return frame_children