original_docstring: 
          Handle the request for a subject which is not an IP.
  
          :rtype: dict
          :raise ValueError: When a non string :code:`subject` is given.
          
docstring: Handle the request for a subject which is not an IP.
docstring_tokens: Handle the request for a subject which is not an IP .
code: def __request_not_ip(self, subject, complete=False, tcp=None):  # pragma: no cover
          """
          Handle the request for a subject which is not an IP.
  
          :rtype: dict
          :raise ValueError: When a non string :code:`subject` is given.
          """
  
          if not subject or not isinstance(subject, str):
              raise ValueError(f"<subject> must be of type {str} and not empty.")
  
          if tcp is None:
              tcp = self.tcp
  
          PyFunceble.LOGGER.debug(f"{repr(subject)} is not IP. Requesting record.")
  
          result = {}
  
          # We get the NS record of the given subject.
          result["NS"] = self.ns_record(subject, tcp=tcp)
  
          if complete:  # pragma: no cover
              result = PyFunceble.helpers.Merge(
                  self.__request_complete_not_ip(subject, tcp=tcp)
              ).into(result)
  
          if not self.is_record_present_in_result(["CNAME", "NS"], result):
              # As sometime we may not have a NS but a CNAME, we handle that case.
              result["CNAME"] = self.cname_record(subject, tcp=tcp)
  
          if not self.is_record_present_in_result(["CNAME", "DNAME", "NS"], result):
              # Same but with DNAME.
              result["DNAME"] = self.dname_record(subject, tcp=tcp)
  
          if not self.is_record_present_in_result(["A", "CNAME", "DNAME", "NS"], result):
              # Same but with A.
              result["A"] = self.a_record(subject, tcp=tcp)
  
          if not self.is_record_present_in_result(
              ["A", "AAAA", "CNAME", "DNAME", "NS"], result
          ):
              # Same but with A.
              result["AAAA"] = self.aaaa_record(subject, tcp=tcp)
  
          # We get the list of index to delete.
          to_delete = [x for x in result if not result[x]]
  
          for index in to_delete:
              # We loop through the list of index to delete.
  
              # And we delete them.
              del result[index]
  
          if not result and complete:  # pragma: no cover
              # We could not get DNS records about the given subject.
  
              # We get the addr infos.
              result["addr_info"] = self.get_addr_info(subject)
  
              if not result["addr_info"]:
                  # The addr_info index is empty.
  
                  # We delete it.
                  del result["addr_info"]
          elif result:
              result["nameservers"] = self.resolver.nameservers
  
          PyFunceble.LOGGER.debug(
              f"Records for {repr(subject)} (with {self.resolver.nameservers}):\n{result}"
          )
  
          return result
code_tokens: def __request_not_ip ( self , subject , complete = False , tcp = None ) : if not subject or not isinstance ( subject , str ) : raise ValueError ( f"<subject> must be of type {str} and not empty." ) if tcp is None : tcp = self . tcp PyFunceble . LOGGER . debug ( f"{repr(subject)} is not IP. Requesting record." ) result = { } result [ "NS" ] = self . ns_record ( subject , tcp = tcp ) if complete : result = PyFunceble . helpers . Merge ( self . __request_complete_not_ip ( subject , tcp = tcp ) ) . into ( result ) if not self . is_record_present_in_result ( [ "CNAME" , "NS" ] , result ) : result [ "CNAME" ] = self . cname_record ( subject , tcp = tcp ) if not self . is_record_present_in_result ( [ "CNAME" , "DNAME" , "NS" ] , result ) : result [ "DNAME" ] = self . dname_record ( subject , tcp = tcp ) if not self . is_record_present_in_result ( [ "A" , "CNAME" , "DNAME" , "NS" ] , result ) : result [ "A" ] = self . a_record ( subject , tcp = tcp ) if not self . is_record_present_in_result ( [ "A" , "AAAA" , "CNAME" , "DNAME" , "NS" ] , result ) : result [ "AAAA" ] = self . aaaa_record ( subject , tcp = tcp ) to_delete = [ x for x in result if not result [ x ] ] for index in to_delete : del result [ index ] if not result and complete : result [ "addr_info" ] = self . get_addr_info ( subject ) if not result [ "addr_info" ] : del result [ "addr_info" ] elif result : result [ "nameservers" ] = self . resolver . nameservers PyFunceble . LOGGER . debug ( f"Records for {repr(subject)} (with {self.resolver.nameservers}):\n{result}" ) return result
short_docstring: Handle the request for a subject which is not an IP.
short_docstring_tokens: Handle the request for a subject which is not an IP .
comment: # pragma: no cover$SEP$"""
          Handle the request for a subject which is not an IP.
  
          :rtype: dict
          :raise ValueError: When a non string :code:`subject` is given.
          """$SEP$# We get the NS record of the given subject.$SEP$# pragma: no cover$SEP$# As sometime we may not have a NS but a CNAME, we handle that case.$SEP$# Same but with DNAME.$SEP$# Same but with A.$SEP$# Same but with A.$SEP$# We get the list of index to delete.$SEP$# We loop through the list of index to delete.$SEP$# And we delete them.$SEP$# pragma: no cover$SEP$# We could not get DNS records about the given subject.$SEP$# We get the addr infos.$SEP$# The addr_info index is empty.$SEP$# We delete it.