docs: def decode(self, encoded_packet):
          """Decode a transmitted package.
  
          The return value indicates how many binary attachment packets are
          necessary to fully decode the packet.
          """
          ep = encoded_packet
          try:
              self.packet_type = int(ep[0:1])
          except TypeError:
              self.packet_type = ep
              ep = ''
          self.namespace = None
          self.data = None
          ep = ep[1:]
          dash = ep.find('-')
          attachment_count = 0
          if dash > 0 and ep[0:dash].isdigit():
              attachment_count = int(ep[0:dash])
              ep = ep[dash + 1:]
          if ep and ep[0:1] == '/':
              sep = ep.find(',')
              if sep == -1:
                  self.namespace = ep
                  ep = ''
              else:
                  self.namespace = ep[0:sep]
                  ep = ep[sep + 1:]
              q = self.namespace.find('?')
              if q != -1:
                  self.namespace = self.namespace[0:q]
          if ep and ep[0].isdigit():
              self.id = 0
              while ep and ep[0].isdigit():
                  self.id = self.id * 10 + int(ep[0])
                  ep = ep[1:]
          if ep:
              self.data = self.json.loads(ep)
          return attachment_count