From: Zac Medico Date: Fri, 27 Aug 2010 00:46:11 +0000 (-0700) Subject: Implement LicenseManager.__deepcopy__(), using shallow copy for X-Git-Tag: v2.2_rc70~39 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=eb4c1668945d9ecb8d317ea2ea6f9794b8cd46af;p=portage.git Implement LicenseManager.__deepcopy__(), using shallow copy for immutable attributes. --- diff --git a/pym/portage/package/ebuild/_config/LicenseManager.py b/pym/portage/package/ebuild/_config/LicenseManager.py index 2bedb58ba..c70344538 100644 --- a/pym/portage/package/ebuild/_config/LicenseManager.py +++ b/pym/portage/package/ebuild/_config/LicenseManager.py @@ -5,6 +5,8 @@ __all__ = ( 'LicenseManager', ) +from copy import deepcopy + from portage import os from portage.dep import ExtendedAtomDict, use_reduce from portage.exception import InvalidDependString @@ -17,13 +19,33 @@ from portage.package.ebuild._config.helper import ordered_by_atom_specificity class LicenseManager(object): - def __init__(self): + def __init__(self, _copy=False): + if _copy: + return self._accept_license_str = None self._accept_license = None self._license_groups = {} self._plicensedict = ExtendedAtomDict(dict) self._undef_lic_groups = set() + def __deepcopy__(self, memo=None): + + if memo is None: + memo = {} + result = LicenseManager(_copy=True) + memo[id(self)] = result + + # immutable attributes + result._accept_license_str = self._accept_license_str + result._accept_license = self._accept_license + + # mutable attributes + result._plicensedict = deepcopy(self._plicensedict, memo) + result._license_groups = deepcopy(self._license_groups, memo) + result._undef_lic_groups = deepcopy(self._undef_lic_groups, memo) + + return result + def read_config_files(self, abs_user_config): licdict = grabdict_package(os.path.join( abs_user_config, "package.license"), recursive=1, allow_wildcard=True)