cengal.data_manipulation.conversion.reinterpret_cast_management.standard_library.deep_copy_wrapper.versions.v_0.deep_copy_wrapper

Module Docstring Docstrings: http://www.python.org/dev/peps/pep-0257/

 1#!/usr/bin/env python
 2# coding=utf-8
 3
 4# Copyright © 2012-2024 ButenkoMS. All rights reserved. Contacts: <gtalk@butenkoms.space>
 5# 
 6# Licensed under the Apache License, Version 2.0 (the "License");
 7# you may not use this file except in compliance with the License.
 8# You may obtain a copy of the License at
 9# 
10#     http://www.apache.org/licenses/LICENSE-2.0
11# 
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS,
14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15# See the License for the specific language governing permissions and
16# limitations under the License.
17
18"""
19Module Docstring
20Docstrings: http://www.python.org/dev/peps/pep-0257/
21"""
22
23from cengal.data_manipulation.conversion.reinterpret_cast_management.manager import BaseAutoDerivedObjWrapper
24from cengal.entities.copyable import copy__impl, deepcopy__impl
25from typing import Dict, Type, Callable, Any, Tuple, FrozenSet, Set
26from copy import Error as CopyError, copy, deepcopy
27
28__author__ = "ButenkoMS <gtalk@butenkoms.space>"
29__copyright__ = "Copyright © 2012-2024 ButenkoMS. All rights reserved. Contacts: <gtalk@butenkoms.space>"
30__credits__ = ["ButenkoMS <gtalk@butenkoms.space>", ]
31__license__ = "Apache License, Version 2.0"
32__version__ = "4.4.1"
33__maintainer__ = "ButenkoMS <gtalk@butenkoms.space>"
34__email__ = "gtalk@butenkoms.space"
35# __status__ = "Prototype"
36__status__ = "Development"
37# __status__ = "Production"
38
39
40class DeepCopyWrapper(BaseAutoDerivedObjWrapper):
41    def __init__(self):
42        super().__init__()
43        self._wrapping_required_per_type: Dict[Type, bool] = dict()
44        self._methods_per_type: Dict[Type, Dict[str, Callable]] = dict()
45    
46    def wrapping_required(self, obj: Any, base_type: Type, fields: Tuple[str], planned_type_name: str) -> bool:
47        try:
48            return self._wrapping_required_per_type[base_type]
49        except KeyError:
50            pass
51
52        required: bool = False
53        try:
54            deepcopy(obj)
55        except CopyError:
56            required = True
57        
58        self._wrapping_required_per_type[base_type] = required
59        return required
60    
61    def methods(self, obj: Any, base_type: Type, fields: Tuple[str]) -> Dict[str, Callable]:
62        try:
63            return self._methods_per_type[base_type]
64        except KeyError:
65            pass
66        
67        methods = {
68            '__deepcopy__': deepcopy__impl,
69        }
70        self._methods_per_type[base_type] = methods
71        return methods
class DeepCopyWrapper(cengal.data_manipulation.conversion.reinterpret_cast_management.manager.versions.v_0.manager.BaseAutoDerivedObjWrapper):
41class DeepCopyWrapper(BaseAutoDerivedObjWrapper):
42    def __init__(self):
43        super().__init__()
44        self._wrapping_required_per_type: Dict[Type, bool] = dict()
45        self._methods_per_type: Dict[Type, Dict[str, Callable]] = dict()
46    
47    def wrapping_required(self, obj: Any, base_type: Type, fields: Tuple[str], planned_type_name: str) -> bool:
48        try:
49            return self._wrapping_required_per_type[base_type]
50        except KeyError:
51            pass
52
53        required: bool = False
54        try:
55            deepcopy(obj)
56        except CopyError:
57            required = True
58        
59        self._wrapping_required_per_type[base_type] = required
60        return required
61    
62    def methods(self, obj: Any, base_type: Type, fields: Tuple[str]) -> Dict[str, Callable]:
63        try:
64            return self._methods_per_type[base_type]
65        except KeyError:
66            pass
67        
68        methods = {
69            '__deepcopy__': deepcopy__impl,
70        }
71        self._methods_per_type[base_type] = methods
72        return methods
def wrapping_required( self, obj: typing.Any, base_type: typing.Type, fields: typing.Tuple[str], planned_type_name: str) -> bool:
47    def wrapping_required(self, obj: Any, base_type: Type, fields: Tuple[str], planned_type_name: str) -> bool:
48        try:
49            return self._wrapping_required_per_type[base_type]
50        except KeyError:
51            pass
52
53        required: bool = False
54        try:
55            deepcopy(obj)
56        except CopyError:
57            required = True
58        
59        self._wrapping_required_per_type[base_type] = required
60        return required
def methods( self, obj: typing.Any, base_type: typing.Type, fields: typing.Tuple[str]) -> Dict[str, Callable]:
62    def methods(self, obj: Any, base_type: Type, fields: Tuple[str]) -> Dict[str, Callable]:
63        try:
64            return self._methods_per_type[base_type]
65        except KeyError:
66            pass
67        
68        methods = {
69            '__deepcopy__': deepcopy__impl,
70        }
71        self._methods_per_type[base_type] = methods
72        return methods
Inherited Members
cengal.data_manipulation.conversion.reinterpret_cast_management.manager.versions.v_0.manager.BaseAutoDerivedObjWrapper
instance_id
class_name
derived
t
base_classes
gen_fields_tuple
type
temporary
persistent