code: def _get_specifications(specifications):
      
      if not specifications or specifications is object:
          raise ValueError("No specifications given")
      elif inspect.isclass(specifications):
          if Provides.USE_MODULE_QUALNAME:
              if sys.version_info < (3, 3, 0):
                  raise ValueError(
                      "Qualified name capability requires Python 3.3+"
                  )
  
              # Get the name of the class
              if not specifications.__module__:
                  return [specifications.__qualname__]
  
              return [
                  "{0}.{1}".format(
                      specifications.__module__, specifications.__qualname__
                  )
              ]
          else:
              # Legacy behavior
              return [specifications.__name__]
      elif is_string(specifications):
          # Specification name
          specifications = specifications.strip()
          if not specifications:
              raise ValueError("Empty specification given")
          return [specifications]
      elif isinstance(specifications, (list, tuple)):
          # List given: normalize its content
          results = []
          for specification in specifications:
              results.extend(_get_specifications(specification))
          return results
      else:
          raise ValueError(
              "Unhandled specifications type : {0}".format(
                  type(specifications).__name__
              )
          )
docs: Computes the list of strings corresponding to the given specifications
  
      :param specifications: A string, a class or a list of specifications
      :return: A list of strings
      :raise ValueError: Invalid specification found