Lib.modjy.modjy_params.py Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jython Show documentation
Show all versions of jython Show documentation
Jython is an implementation of the high-level, dynamic, object-oriented
language Python written in 100% Pure Java, and seamlessly integrated with
the Java platform. It thus allows you to run Python on any Java platform.
###
#
# Copyright Alan Kennedy.
#
# You may contact the copyright holder at this uri:
#
# http://www.xhaus.com/contact/modjy
#
# The licence under which this code is released is the Apache License v2.0.
#
# The terms and conditions of this license are listed in a file contained
# in the distribution that also contained this file, under the name
# LICENSE.txt.
#
# You may also read a copy of the license at the following web address.
#
# http://modjy.xhaus.com/LICENSE.txt
#
###
from UserDict import UserDict
BOOLEAN = ('boolean', int)
INTEGER = ('integer', int)
FLOAT = ('float', float)
STRING = ('string', None)
modjy_servlet_params = {
'multithread': (BOOLEAN, 1),
'cache_callables': (BOOLEAN, 1),
'reload_on_mod': (BOOLEAN, 0),
'app_import_name': (STRING, None),
'app_directory': (STRING, None),
'app_filename': (STRING, 'application.py'),
'app_callable_name': (STRING, 'handler'),
'callable_query_name': (STRING, None),
'exc_handler': (STRING, 'standard'),
'log_level': (STRING, 'info'),
'packages': (STRING, None),
'classdirs': (STRING, None),
'extdirs': (STRING, None),
'initial_env': (STRING, None),
}
class modjy_param_mgr(UserDict):
def __init__(self, param_types):
UserDict.__init__(self)
self.param_types = param_types
for pname in self.param_types.keys():
typ, default = self.param_types[pname]
self.__setitem__(pname, default)
def __getitem__(self, name):
return self._get_defaulted_value(name)
def __setitem__(self, name, value):
self.data[name] = self._convert_value(name, value)
def _convert_value(self, name, value):
if self.param_types.has_key(name):
typ, default = self.param_types[name]
typ_str, typ_func = typ
if typ_func:
try:
return typ_func(value)
except ValueError:
raise BadParameter("Illegal value for %s parameter '%s': %s" % (typ_str, name, value) )
return value
def _get_defaulted_value(self, name):
if self.data.has_key(name):
return self.data[name]
if self.param_types.has_key(name):
typ, default = self.param_types[name]
return default
raise KeyError(name)