groupe_types are real types now

This commit is contained in:
gwen
2012-12-06 18:14:57 +01:00
parent 9736298ba2
commit e118f07539
5 changed files with 76 additions and 32 deletions

View File

@ -21,11 +21,49 @@
# the whole pypy projet is under MIT licence
# ____________________________________________________________
# available group_type values
_group_name = ('default', 'family', 'group')
groups_has_master = ('group', )
class Group(str): pass
group_types = tuple(Group(i) for i in _group_name)
class _const:
"""convenient class that emulates a module
and builds constants (that is, unique group names)"""
class GroupError(TypeError): pass
def __setattr__(self, name, value):
if self.__dict__.has_key(name):
raise self.GroupError, "Can't rebind group (%s)"%name
self.__dict__[name] = value
def __delattr__(self, name):
if self.__dict__.has_key(name):
raise self.GroupError, "Can't unbind group (%s)"%name
raise NameError, name
groups = _const()
def populate_groups():
"populates the available groups in the appropriate namespaces"
_available_group_names = ('default', 'family', 'group')
_available_groups_with_a_master = ('group', )
class GroupName(str):
"""allowed normal group (OptionDescription) names
*normal* means : groups that are not master
"""
pass
class MasterGroupName(GroupName):
"""allowed normal group (OptionDescription) names
*master* means : groups that have the 'master' attribute set
"""
pass
groups.GroupName = GroupName
groups.MasterGroupName = MasterGroupName
# populates normal or master groups
for grp in _available_group_names:
if grp in _available_groups_with_a_master:
setattr(groups, grp, MasterGroupName(grp))
else:
setattr(groups, grp, GroupName(grp))
populate_groups()
# ____________________________________________________________
class Setting():
"``Config()``'s configuration options"