def METHOD_NAME(self):
    try:
        fdesc = open(conf.nmap_base
                     if self.filename is None else
                     self.filename, "rb")
    except (IOError, TypeError):
        warning("Cannot open nmap database [%s]", self.filename)
        self.filename = None
        return
    self.base = []
    name = None
    sig = {}
    for line in fdesc:
        line = plain_str(line)
        line = line.split('#', 1)[0].strip()
        if not line:
            continue
        if line.startswith("Fingerprint "):
            if name is not None:
                self.base.append((name, sig))
            name = line[12:].strip()
            sig = {}
            continue
        if line.startswith("Class "):
            continue
        line = _NMAP_LINE.search(line)
        if line is None:
            continue
        test, values = line.groups()
        sig[test] = dict(val.split('=', 1) for val in
                         (values.split('%') if values else []))
    if name is not None:
        self.base.append((name, sig))
    fdesc.close()