From: Skip Montanaro Date: Sat, 26 Jun 2004 19:18:49 +0000 (+0000) Subject: Allow classes from other modules to be specified at startup. For example, X-Git-Tag: v2.4a1~124 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=90e01539409c01649fab95122b61c023784d9a51;p=python Allow classes from other modules to be specified at startup. For example, using the postfixproxy module from Spambayes you might start smtpd up like smtpd.py -c spambayes.postfixproxy.SpambayesProxy :8025 :8026 --- diff --git a/Lib/smtpd.py b/Lib/smtpd.py index 2d52f0fd84..6f46c97ed9 100755 --- a/Lib/smtpd.py +++ b/Lib/smtpd.py @@ -533,8 +533,15 @@ if __name__ == '__main__': print >> sys.stderr, \ 'Cannot setuid "nobody"; try running with -n option.' sys.exit(1) - import __main__ - class_ = getattr(__main__, options.classname) + classname = options.classname + if "." in classname: + lastdot = classname.rfind(".") + mod = __import__(classname[:lastdot], globals(), locals(), [""]) + classname = classname[lastdot+1:] + else: + import __main__ as mod + print mod.__name__, dir(mod) + class_ = getattr(mod, classname) proxy = class_((options.localhost, options.localport), (options.remotehost, options.remoteport)) try: