From eb4c1668945d9ecb8d317ea2ea6f9794b8cd46af Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 26 Aug 2010 17:46:11 -0700 Subject: Implement LicenseManager.__deepcopy__(), using shallow copy for immutable attributes. --- .../package/ebuild/_config/LicenseManager.py | 24 +++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) 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) -- cgit v1.2.3-1-g7c22