From 10202ff80ebd212457db95d76ca1fbc79567bf8d Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 27 Oct 2011 13:49:40 -0700 Subject: LocationsManager: extensible _profile_node object Use immutable object attrubutes instead of tuples, for extensibility. --- pym/portage/package/ebuild/_config/LocationsManager.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'pym/portage/package/ebuild/_config/LocationsManager.py') diff --git a/pym/portage/package/ebuild/_config/LocationsManager.py b/pym/portage/package/ebuild/_config/LocationsManager.py index d79362542..ec3f0035f 100644 --- a/pym/portage/package/ebuild/_config/LocationsManager.py +++ b/pym/portage/package/ebuild/_config/LocationsManager.py @@ -23,6 +23,18 @@ _PORTAGE1_DIRECTORIES = frozenset([ 'package.use', 'package.use.mask', 'package.use.force', 'use.mask', 'use.force']) +class _profile_node(object): + + __slots__ = ('location', 'portage1_directories') + + def __init__(self, location, portage1_directories): + object.__setattr__(self, 'location', location) + object.__setattr__(self, 'portage1_directories', portage1_directories) + + def __setattr__(self, name, value): + raise AttributeError("_profile_node instances are immutable", + self.__class__, name, value) + class LocationsManager(object): def __init__(self, config_root=None, eprefix=None, config_profile_path=None, local_config=True, \ @@ -92,7 +104,7 @@ class LocationsManager(object): if os.path.exists(custom_prof): self.user_profile_dir = custom_prof self.profiles.append(custom_prof) - self.profiles_complex.append((custom_prof, True)) + self.profiles_complex.append(_profile_node(custom_prof, True)) del custom_prof self.profiles = tuple(self.profiles) @@ -177,7 +189,8 @@ class LocationsManager(object): (parentPath, parentsFile)) self.profiles.append(currentPath) - self.profiles_complex.append((currentPath, allow_directories)) + self.profiles_complex.append( + _profile_node(currentPath, allow_directories)) def set_root_override(self, root_overwrite=None): # Allow ROOT setting to come from make.conf if it's not overridden -- cgit v1.2.3-1-g7c22