I am playing around with using IronPython to replace a custom language we use to define tasks and suites of tasks for an in-house automated testing framework. Currently we have something like
task FooTask { cmdline = "..."; file somefile.txt = (. This will have some content, and even supports variables: $VAR1 .) } table SomeTable = { VAR1 1 2 3 } suite SomeSuite { FooTask(SomeTable); } This would permute FooTask with VAR1 for each row in the table. This is a bit more information than you probably need, but it will give you the feel for what I am trying to do. I was thinking I could reuse the objects that I now create in the parser of the custom language as base types for Python object class FooTask(Task): def __init__(self, variables): self.SetCmdLine("....") self.Files.Add("somefile.txt", "This will have some content, and even supports variables: $VAR1") class SomeSuite(Suite): def __init__(self): self.AddItem(FooTask() * [ { "VAR1" : "1" }, {"VAR1" : "2" }, { "VAR1" : "3" } ]) I can easily implement __mult__ and other such operations to handle the permutation and other operations I currently support. Now, what I _think_ I need metaclasses for is that when FooTask or SomeSuite is created, I need to be able to add the instance to my symbol table so I can then create the output that I need to. Am I thinking incorrectly about the need for metaclasses? I would like to keep as much of the details as possible away from the users, so I was thinking if I could hook into the object creation, I could add the instance to my symbol table in the metaclass. For this, I would need to set __metaclass__ on the base classes (Task and Suite), which are .NET objects, is this doable? Am I trying to fit a square peg into a round hole in general? Thanks for reading my ramblings :-) slide -- Website: http://earl-of-code.com _______________________________________________ Ironpython-users mailing list Ironpython-users@python.org http://mail.python.org/mailman/listinfo/ironpython-users