hi! [EMAIL PROTECTED] wrote: > How effective can it be when python is designed to make writing this > kind of code hard(hopefully impossible) ? The most effective would be > renaming function and may be variables but if the functions are kept > short, they would at most looks like haskell ;-) >
There just cannot be a python obfuscator that works for a general python program. The problem is that on the one hand regular strings can be used to lookup values in namespaces (e.g. with getattr) and on the other hand the lookup of names can be controlled (e.g. with __getattr__ and friends). Therefore any string can potentially contain a name that would have to be changed to keep the code working after obfuscation. For example how would you automatically obfuscate the following code: class HelloWorld(object): def hello(self): return "world" def world(self): return "!" if __name__ == '__main__': h = HelloWorld() s = "hello" while 1: f = getattr(h, s, None) print s, if f is None: break s = f() While this is surely a contrived case that intentionally mixes names and strings that are used for something in the application there are also quite often legitimate use cases for this sort of behaviour. Duck typing is basically based on this. Cheers, Carl Friedrich Bolz -- http://mail.python.org/mailman/listinfo/python-list