def to_node_name(node_data):
    'Creates a node name given an input object, does a bit of silly type selecting and name rearranging. This matches for 75%\n    of the cases. There are a lot of user defined nodes without a clear path to generate a name. For instance the DataTableGraph\n    node HpFile, does not save with a .hp extension so it would be auto named TxtFile if was only selected by the path name.\n    If it is auto selected it returns StringList because it is of the format ["file_path","schema_path"] '
    class_name = node_data.__class__.__name__
    node_name = class_name
    if re.match('list', class_name):
        node_name = 'List'
        try:
            element_class_name = node_data[0].__class__.__name__
            node_name = (element_class_name + node_name)
        except:
            pass
    elif re.match('dict', class_name):
        node_name = 'Dictionary'
        try:
            element_class_name = list(node_data.values())[0].__class__.__name__
            node_name = (element_class_name + node_name)
        except:
            pass
    elif re.match('str', class_name):
        node_name = 'String'
        if os.path.isfile(node_data):
            node_name = 'File'
            extension = ''
            try:
                if re.search('\\.', node_data):
                    extension = node_data.split('.')[(- 1)]
                    node_name = (extension.title() + node_name)
            except:
                pass
        elif fnmatch.fnmatch(node_data, '*.*'):
            node_name = 'File'
            try:
                if re.search('\\.', node_data):
                    extension = node_data.split('.')[(- 1)]
                    node_name = (extension.title() + node_name)
            except:
                pass
    node_name = node_name.replace('str', 'String').replace('dict', 'Dictionary')
    return node_name
Creates a node name given an input object, does a bit of silly type selecting and name rearranging. This matches for 75%
of the cases. There are a lot of user defined nodes without a clear path to generate a name. For instance the DataTableGraph
node HpFile, does not save with a .hp extension so it would be auto named TxtFile if was only selected by the path name.
If it is auto selected it returns StringList because it is of the format ["file_path","schema_path"]
def to_node_name(node_data):
    'Creates a node name given an input object, does a bit of silly type selecting and name rearranging. This matches for 75%\n    of the cases. There are a lot of user defined nodes without a clear path to generate a name. For instance the DataTableGraph\n    node HpFile, does not save with a .hp extension so it would be auto named TxtFile if was only selected by the path name.\n    If it is auto selected it returns StringList because it is of the format ["file_path","schema_path"] '
    class_name = node_data.__class__.__name__
    node_name = class_name
    if re.match('list', class_name):
        node_name = 'List'
        try:
            element_class_name = node_data[0].__class__.__name__
            node_name = (element_class_name + node_name)
        except:
            pass
    elif re.match('dict', class_name):
        node_name = 'Dictionary'
        try:
            element_class_name = list(node_data.values())[0].__class__.__name__
            node_name = (element_class_name + node_name)
        except:
            pass
    elif re.match('str', class_name):
        node_name = 'String'
        if os.path.isfile(node_data):
            node_name = 'File'
            extension = 
            try:
                if re.search('\\.', node_data):
                    extension = node_data.split('.')[(- 1)]
                    node_name = (extension.title() + node_name)
            except:
                pass
        elif fnmatch.fnmatch(node_data, '*.*'):
            node_name = 'File'
            try:
                if re.search('\\.', node_data):
                    extension = node_data.split('.')[(- 1)]
                    node_name = (extension.title() + node_name)
            except:
                pass
    node_name = node_name.replace('str', 'String').replace('dict', 'Dictionary')
    return node_name