code: def _dep_type(self, target, dep, declared_deps, eligible_unused_deps, is_used):
      
      if target == dep:
        return True, True
      return (dep in declared_deps), (is_used or dep not in eligible_unused_deps)
docs: Returns a tuple of a 'declared'/'undeclared' boolean, and 'used'/'unused' boolean.
  
      These values are related, because some declared deps are not eligible to be considered unused.
  
      :param target: The source target.
      :param dep: The dependency to compute a type for.
      :param declared_deps: The declared dependencies of the target.
      :param eligible_unused_deps: The declared dependencies of the target that are eligible
        to be considered unused; this is generally only 'DEFAULT' scoped dependencies.
      :param is_used: True if the dep was actually used at compile time.