docs: def intify(obj, str_fun=str, use_ord=True, use_hash=True, use_len=True):
      """FIXME: this is unpythonic and does things you don't expect!
  
      FIXME: rename to "integer_from_category"
  
      Returns an integer representative of a categorical object (string, dict, etc)
  
      >>> intify('1.2345e10')
      12345000000
      >>> intify([12]), intify('[99]'), intify('(12,)')
      (91, 91, 40)
      >>> intify('A'), intify('a'), intify('AAA'), intify('B'), intify('BB')
      (97, 97, 97, 98, 98)
      >>> intify(272)
      272
      >>> intify(float('nan'), use_ord=False, use_hash=False, str_fun=None)
      >>> intify(float('nan'), use_ord=False, use_hash=False, use_len=False)
      >>> intify(float('nan')), intify('n'), intify(None)
      (110, 110, 110)
      >>> intify(None, use_ord=False, use_hash=False, use_len=False)
      >>> intify(None, use_ord=False, use_hash=False, str_fun=False)
      >>> intify(None, use_hash=False, str_fun=False)
      """
      try:
          return int(obj)
      except (IndexError, ValueError, AttributeError, TypeError):
          pass
      try:
          float_obj = float(obj)
          if float('-inf') < float_obj < float('inf'):
              # WARN: This will increment sys.maxint by +1 and decrement sys.maxint by -1!!!!
              #       But hopefully these cases will be dealt with as expected, above
              return int(float_obj)
      except (IndexError, ValueError, AttributeError, TypeError):
          pass
      if not str_fun:
          def str_fun(x):
              return x
      if use_ord:
          try:
              return ord(str_fun(obj)[0].lower())
          except (IndexError, ValueError, AttributeError, TypeError):
              pass
      if use_hash:
          try:
              return hash(str_fun(obj))
          except (IndexError, ValueError, AttributeError, TypeError):
              pass
      if use_len:
          try:
              return len(obj)
          except (IndexError, ValueError, AttributeError, TypeError):
              pass
          try:
              return len(str_fun(obj))
          except (IndexError, ValueError, AttributeError, TypeError):
              pass
      return None