code: def copy(self):
          ''' Returns a copy of the macaroon. Note that the the new
          macaroon's namespace still points to the same underlying Namespace -
          copying the macaroon does not make a copy of the namespace.
          :return a Macaroon
          '''
          m1 = Macaroon(None, None, version=self._version,
                        namespace=self._namespace)
          m1._macaroon = self._macaroon.copy()
          m1._caveat_data = self._caveat_data.copy()
          return mf copy(self):
          ''' Returns a copy of the macaroon. Note that the the new
          macaroon's namespace still points to the same underlying Namespace -
          copying the macaroon does not make a copy of the namespace.
          :return a Macaroon
          '''
          m1 = Macaroon(None, None, version=self._version,
                        namespace=self._namespace)
          m1._macaroon = self._macaroon.copy()
          m1._caveat_data = self._caveat_data.copy()
          return m1
docs: Returns a copy of the macaroon. Note that the the new
          macaroon's namespace still points to the same underlying Namespace -
          copying the macaroon does not make a copy of the namespace.
          :return a Macaroon