docs: def guess_one(cls, text):
          '''
          Try to guess license from a string.
  
          Try to exact match on identifier then slugified title
          and fallback on edit distance ranking (after slugification)
          '''
          if not text:
              return
          qs = cls.objects
          text = text.strip().lower()  # Stored identifiers are lower case
          slug = cls.slug.slugify(text)  # Use slug as it normalize string
          license = qs(
              db.Q(id=text) | db.Q(slug=slug) | db.Q(url=text)
              | db.Q(alternate_urls=text)
          ).first()
          if license is None:
              # Try to single match with a low Damerau-Levenshtein distance
              computed = ((l, rdlevenshtein(l.slug, slug)) for l in cls.objects)
              candidates = [l for l, d in computed if d <= MAX_DISTANCE]
              # If there is more that one match, we cannot determinate
              # which one is closer to safely choose between candidates
              if len(candidates) == 1:
                  license = candidates[0]
          if license is None:
              # Try to single match with a low Damerau-Levenshtein distance
              computed = (
                  (l, rdlevenshtein(cls.slug.slugify(t), slug))
                  for l in cls.objects
                  for t in l.alternate_titles
              )
              candidates = [l for l, d in computed if d <= MAX_DISTANCE]
              # If there is more that one match, we cannot determinate
              # which one is closer to safely choose between candidates
              if len(candidates) == 1:
                  license = candidates[0]
          return license