Hi!

I have a few tests that require a network connection. Typically, the target will be localhost on port 20000. However, sometimes these settings differ, so I want to be able to optionally set them.

What I'm currently doing is this:

    try:
        from settings import REMOTE_HOST, REMOTE_PORT
    except ImportError:
        REMOTE_HOST = 'localhost'
        REMOTE_PORT = 20000

This works fine. However, there are actually a few more settings that can be overridden, so I changed the whole thing to this:

    try:
        from settings import *
        if not 'REMOTE_HOST' in locals():
            REMOTE_HOST = 'localhost'
        if not 'REMOTE_PORT' in locals():
            REMOTE_PORT = 20000
    except ImportError:
        REMOTE_HOST = 'localhost'
        REMOTE_PORT = 20000

Yes, wildcard imports are dangerous, but that's something I don't mind actually, this is an internal tool for clueful users. Still, this is ugly, since the defaults are stored redundantly, so I went to this variant:

    REMOTE_HOST = 'localhost'
    REMOTE_PORT = 20000
    try:
        from settings import *
    except ImportError:
        pass

Now, in order to avoid ambiguities, I thought about using relative imports, but there I'm stomped because wildcard imports are not supported for relative imports, it seems.


How would you do it? Any other suggestions?

Cheers!

Uli
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to