text: # Test dynamic policy, and running object table.
  
  import pythoncom
  import winerror
  
  from win32com.server.exception import Exception
  
  error = "testDynamic error"
  
  iid = pythoncom.MakeIID("{b48969a0-784b-11d0-ae71-d23f56000000}")
  
  class VeryPermissive:
      def _dynamic_(self, name, lcid, wFlags, args):
          if wFlags & pythoncom.DISPATCH_METHOD:
              return apply(getattr(self,name),args)
  
          if wFlags & pythoncom.DISPATCH_PROPERTYGET:
              try:
                  # to avoid problems with byref param handling, tuple results are converted to lists.
                  ret = self.__dict__[name]
                  if type(ret)==type(()):
                      ret = list(ret)
                  return ret
              except KeyError: # Probably a method request.
                  raise Exception(scode=winerror.DISP_E_MEMBERNOTFOUND)
  
          if wFlags & (pythoncom.DISPATCH_PROPERTYPUT | pythoncom.DISPATCH_PROPERTYPUTREF):
              setattr(self, name, args[0])
              return
  
          raise Exception(scode=winerror.E_INVALIDARG, desc="invalid wFlags")
  
      def write(self, *args):
          if len(args)==0:
              raise Exception(scode=winerror.DISP_E_BADPARAMCOUNT) # Probably call as PROPGET.
  
          for arg in args[:-1]:
              print str(arg),
          print str(args[-1])
  
  def Test():
      import win32com.server.util, win32com.server.policy
  #       import win32dbg;win32dbg.brk()
      ob = win32com.server.util.wrap(VeryPermissive(),usePolicy=win32com.server.policy.DynamicPolicy)
      try:
          handle = pythoncom.RegisterActiveObject(ob, iid, 0)
      except pythoncom.com_error, details:
          print "Warning - could not register the object in the ROT:", details
          handle = None
      try:
          import win32com.client.dynamic
          client = win32com.client.dynamic.Dispatch(iid)
          client.ANewAttr = "Hello"
          if client.ANewAttr != "Hello":
              raise error, "Could not set dynamic property"
  
          v = ["Hello","From","Python",1.4]
          client.TestSequence = v
          if v != list(client.TestSequence):
              raise error, "Dynamic sequences not working! %r/%r" % (repr(v), repr(client.testSequence))
  
          client.write("This","output","has","come","via","COM")
          # Check our new "_FlagAsMethod" works (kinda!)
          client._FlagAsMethod("NotReallyAMethod")
          if not callable(client.NotReallyAMethod):
              raise error, "Method I flagged as callable isn't!"
  
  
          client = None
      finally:
          if handle is not None:
              pythoncom.RevokeActiveObject(handle)
  
  if __name__=='__main__':
      Test()
  