groupe_types are real types now
This commit is contained in:
@ -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"
|
||||
|
Reference in New Issue
Block a user