summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-08-26 17:46:11 -0700
committerZac Medico <zmedico@gentoo.org>2010-08-26 17:46:11 -0700
commiteb4c1668945d9ecb8d317ea2ea6f9794b8cd46af (patch)
tree75f5357434249ebee5a704101896696820caa0e0 /pym
parentb86123b309958d8cf1e8fdd08079ba08697cf57c (diff)
downloadportage-eb4c1668945d9ecb8d317ea2ea6f9794b8cd46af.tar.gz
portage-eb4c1668945d9ecb8d317ea2ea6f9794b8cd46af.tar.bz2
portage-eb4c1668945d9ecb8d317ea2ea6f9794b8cd46af.zip
Implement LicenseManager.__deepcopy__(), using shallow copy for
immutable attributes.
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/package/ebuild/_config/LicenseManager.py24
1 files changed, 23 insertions, 1 deletions
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)