docs: def _sign_single(self, payload, signing_key):
          """
          Make a single-signature JWT.
          Returns the serialized token (compact form), as a string
          """
          if not isinstance(payload, Mapping):
              raise TypeError('Expecting a mapping object, as only '
                              'JSON objects can be used as payloads.')
  
          token_segments = []
  
          signing_key = load_signing_key(signing_key, self.crypto_backend)
  
          header = self._make_header()
          header_b64 = base64url_encode(json_encode(header))
          payload_b64 = base64url_encode(json_encode(payload))
          signature_b64 = self._make_signature(header_b64, payload_b64, signing_key)
  
          token_segments = [header_b64, payload_b64, signature_b64]
  
          # combine the header, payload, and signature into a token and return it
          token = b'.'.join(token_segments)
          return token