code: def fn_available_argcount(callable):
      
      fn = get_fn_or_method(callable)
      if _inspect.isfunction(fn):
          return fn.__code__.co_argcount
      else: # method
          if fn.__self__ is None:
              return fn.__func__.__code__.co_argcount
          else:
              return fn.__func__.__code__.co_argcount - 1
docs: Returns the number of explicit non-keyword arguments that the callable
      can be called with.
  
      Bound methods are called with an implicit first argument, so this takes
      that into account.
  
      Excludes *args and **kwargs declarations.