Esempio n. 1
0
def confProDy(*args, **kwargs):
    """Configure ProDy."""

    settings = None
    if args:
        values = []
        for option in args:
            try:
                values.append(SETTINGS[option])
            except KeyError:
                raise KeyError('{0:s} is not a valid configuration option'
                               .format(repr(option)))
        if len(values) == 1:
            return values[0]
        else:
            return values

    for option, value in kwargs.items():    
        try:
            default, acceptable, setter = CONFIGURATION[option]
        except KeyError:
            raise KeyError('{0:s} is not a valid configuration option'
                           .format(repr(option)))
        else:
            try:
                value = type(default)(value)
            except ValueError:
                raise TypeError('{0:s} must be a {1:s}'
                                .format(option, type(default).__name__))
            if acceptable is not None and value not in acceptable:
                raise ValueError('{0:s} must be one of {1:s}'.format(option, 
                    joinRepr(acceptable, sort=True, last=', or ')))
                
            SETTINGS[option] = value
            SETTINGS.save()
            LOGGER.info('ProDy is configured: {0:s}={1:s}'
                        .format(option, repr(value)))
            if setter is not None:
                setter(value)
Esempio n. 2
0
_keys = list(CONFIGURATION)
_keys.sort()
_vals = []
for _key in _keys:
    default, acceptable, setter = CONFIGURATION[_key]
    try:
        if not setter.func_name.startswith('_'): 
            seealso = ' See also :func:`.' + setter.func_name + '`.'
    except AttributeError:
        seealso = ''
        
    if acceptable is None:
        _vals.append(repr(default) + seealso)
    else:
        _vals.append(repr(default) + ' (' + 
                     joinRepr(acceptable, sort=True, last=', or ')  + ')' +
                     seealso)
    if _key not in SETTINGS:
        SETTINGS[_key] = default

confProDy.__doc__ += '\n\n' + tabulate(['Option'] + _keys, 
    ['Default (acceptable values)'] + _vals) + """

Usage example::
        
    confProDy('backup')
    confProDy('backup', 'backup_ext')
    confProDy(backup=True, backup_ext='.bak')
    confProDy(backup_ext='.BAK')"""