code: def pack(self, parts=None, headers=None):
          
          if not headers:
              if self.headers:
                  headers = self.headers
              else:
                  headers = {'alg': 'none'}
  
          logging.debug('JWT header: {}'.format(headers))
  
          if not parts:
              return ".".join([a.decode() for a in self.b64part])
  
          self.part = [headers] + parts
          _all = self.b64part = [b64encode_item(headers)]
          _all.extend([b64encode_item(p) for p in parts])
  
          return ".".join([a.decode() for a in _all])
docs: Packs components into a JWT
  
          :param parts: List of parts to pack
          :param headers: The JWT headers
          :return: