Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/openpyxl/styles/proxy.py: 50%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

28 statements  

1# Copyright (c) 2010-2024 openpyxl 

2 

3from copy import copy 

4 

5from openpyxl.compat import deprecated 

6 

7 

8class StyleProxy: 

9 """ 

10 Proxy formatting objects so that they cannot be altered 

11 """ 

12 

13 __slots__ = ('__target') 

14 

15 def __init__(self, target): 

16 self.__target = target 

17 

18 

19 def __repr__(self): 

20 return repr(self.__target) 

21 

22 

23 def __getattr__(self, attr): 

24 return getattr(self.__target, attr) 

25 

26 

27 def __setattr__(self, attr, value): 

28 if attr != "_StyleProxy__target": 

29 raise AttributeError("Style objects are immutable and cannot be changed." 

30 "Reassign the style with a copy") 

31 super().__setattr__(attr, value) 

32 

33 

34 def __copy__(self): 

35 """ 

36 Return a copy of the proxied object. 

37 """ 

38 return copy(self.__target) 

39 

40 

41 def __add__(self, other): 

42 """ 

43 Add proxied object to another instance and return the combined object 

44 """ 

45 return self.__target + other 

46 

47 

48 @deprecated("Use copy(obj) or cell.obj = cell.obj + other") 

49 def copy(self, **kw): 

50 """Return a copy of the proxied object. Keyword args will be passed through""" 

51 cp = copy(self.__target) 

52 for k, v in kw.items(): 

53 setattr(cp, k, v) 

54 return cp 

55 

56 

57 def __eq__(self, other): 

58 return self.__target == other 

59 

60 

61 def __ne__(self, other): 

62 return not self == other