zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
U
T±dÄã@s²ddlZddlmZmZdd„ZGdd„dƒZdd    „Zd
d „Zd d „Zdd„Z    dd„Z
dd„Z dd„Z iZ eeƒ ¡ƒD](\ZZedd…dkrxee edd…<qxifdd„ZdS)éNé)ÚImageÚ _imagingmathcCst|ttfƒS©N)Ú
isinstanceÚintÚfloat)Úv©r
úDd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\PIL/ImageMath.pyÚ _isconstantsr c@s"eZdZdZdd„Zdd„ZdGdd„Zd    d
„Zd d „Zd d„Z    dd„Z
dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Z d=d>„Z!d?d@„Z"dAdB„Z#dCdD„Z$dEdF„Z%dS)HÚ_Operandz4Wraps an image operand, providing standard operatorscCs
||_dSr)Úim)Úselfrr
r
r Ú__init__sz_Operand.__init__cCsˆt|tƒrL|jjdkr"|j d¡S|jjdkr4|jSd|jj›}t|ƒ‚n8t|ƒrr|jjdkrrt d|jj    |¡St d|jj    |¡SdS)N)Ú1ÚLÚI)rÚFzunsupported mode: )rrrr)
rr rÚmodeÚconvertÚ
ValueErrorr rÚnewÚsize)rÚim1Úmsgr
r
r Z__fixup!s
 
z_Operand.__fixupNc    
Csè| |¡}|dkrœt |p|j|jd¡}| ¡ztt|d|jƒ}Wn8tk
r€}zd|›d}t    |ƒ|‚W5d}~XYnXt 
||j j |j j ¡nD| |¡}|j|jkrÚ|jdkrÆ|  d¡}|jdkrÚ|  d¡}|j|jkrHt|jd|jdƒt|jd|jdƒf}|j|kr.| d|¡}|j|krH| d|¡}t |pV|j|jd¡}| ¡| ¡ztt|d|jƒ}Wn:tk
rÂ}zd|›d}t    |ƒ|‚W5d}~XYnXt ||j j |j j |j j ¡t|ƒS)NÚ_zbad operand type for 'ú'rrr)rr)Ú_Operand__fixuprrrrÚloadÚgetattrrÚAttributeErrorÚ    TypeErrorZunoprÚidrÚminZcropZbinopr )    rÚoprZim2rÚoutÚerrr
r
r Úapply3s@
 
 
 
 
 
,   z_Operand.applycCs|j ¡dk    Sr)rZgetbbox©rr
r
r Ú__bool__[sz_Operand.__bool__cCs | d|¡S)NÚabs©r(r)r
r
r Ú__abs___sz_Operand.__abs__cCs|Srr
r)r
r
r Ú__pos__bsz_Operand.__pos__cCs | d|¡S)NÚnegr,r)r
r
r Ú__neg__esz_Operand.__neg__cCs| d||¡S©NÚaddr,©rÚotherr
r
r Ú__add__isz_Operand.__add__cCs| d||¡Sr1r,r3r
r
r Ú__radd__lsz_Operand.__radd__cCs| d||¡S©NÚsubr,r3r
r
r Ú__sub__osz_Operand.__sub__cCs| d||¡Sr7r,r3r
r
r Ú__rsub__rsz_Operand.__rsub__cCs| d||¡S©NÚmulr,r3r
r
r Ú__mul__usz_Operand.__mul__cCs| d||¡Sr;r,r3r
r
r Ú__rmul__xsz_Operand.__rmul__cCs| d||¡S©NÚdivr,r3r
r
r Ú __truediv__{sz_Operand.__truediv__cCs| d||¡Sr?r,r3r
r
r Ú __rtruediv__~sz_Operand.__rtruediv__cCs| d||¡S©NÚmodr,r3r
r
r Ú__mod__sz_Operand.__mod__cCs| d||¡SrCr,r3r
r
r Ú__rmod__„sz_Operand.__rmod__cCs| d||¡S©NÚpowr,r3r
r
r Ú__pow__‡sz_Operand.__pow__cCs| d||¡SrGr,r3r
r
r Ú__rpow__Šsz_Operand.__rpow__cCs | d|¡S)NÚinvertr,r)r
r
r Ú
__invert__Žsz_Operand.__invert__cCs| d||¡S©NÚandr,r3r
r
r Ú__and__‘sz_Operand.__and__cCs| d||¡SrMr,r3r
r
r Ú__rand__”sz_Operand.__rand__cCs| d||¡S©NÚorr,r3r
r
r Ú__or__—sz_Operand.__or__cCs| d||¡SrQr,r3r
r
r Ú__ror__šsz_Operand.__ror__cCs| d||¡S©NÚxorr,r3r
r
r Ú__xor__sz_Operand.__xor__cCs| d||¡SrUr,r3r
r
r Ú__rxor__ sz_Operand.__rxor__cCs| d||¡S)NÚlshiftr,r3r
r
r Ú
__lshift__£sz_Operand.__lshift__cCs| d||¡S)NÚrshiftr,r3r
r
r Ú
__rshift__¦sz_Operand.__rshift__cCs| d||¡S)NÚeqr,r3r
r
r Ú__eq__ªsz_Operand.__eq__cCs| d||¡S)NÚner,r3r
r
r Ú__ne__­sz_Operand.__ne__cCs| d||¡S)NÚltr,r3r
r
r Ú__lt__°sz_Operand.__lt__cCs| d||¡S)NÚler,r3r
r
r Ú__le__³sz_Operand.__le__cCs| d||¡S)NÚgtr,r3r
r
r Ú__gt__¶sz_Operand.__gt__cCs| d||¡S)NÚger,r3r
r
r Ú__ge__¹sz_Operand.__ge__)NN)&Ú__name__Ú
__module__Ú __qualname__Ú__doc__rrr(r*r-r.r0r5r6r9r:r=r>rArBrErFrIrJrLrOrPrSrTrWrXrZr\r^r`rbrdrfrhr
r
r
r r sF
(r cCst|j d¡ƒS)Nr©r rrr)r
r
r Ú imagemath_int¾srncCst|j d¡ƒS)Nrrmr)r
r
r Úimagemath_floatÂsrocCs|jd||ddS)Nr]r©rr,r3r
r
r Úimagemath_equalÇsrqcCs|jd||ddS)Nr_rrpr,r3r
r
r Úimagemath_notequalËsrrcCs| d||¡S)Nr$r,r3r
r
r Ú imagemath_minÏsrscCs| d||¡S)NÚmaxr,r3r
r
r Ú imagemath_maxÓsrucCst|j |¡ƒSrrm)rrr
r
r Úimagemath_convert×srvé
Z
imagemath_c s¨t ¡‰ˆ |¡ˆ |¡tˆ ¡ƒD]\}}t|dƒr(t|ƒˆ|<q(t|ddƒ‰‡‡‡fdd„‰ˆˆƒt     |ddt
iiˆ¡}z|j WSt k
r¢|YSXdS)    aÝ
    Evaluates an image expression.
 
    :param expression: A string containing a Python-style expression.
    :param options: Values to add to the evaluation context.  You
                    can either use a dictionary, or one or more keyword
                    arguments.
    :return: The evaluated expression. This is usually an image object, but can
             also be an integer, a floating point value, or a pixel tuple,
             depending on the expression.
    rz<string>ÚevalcsX|jD]}t|ƒtˆƒkrˆ|ƒq|jD](}|ˆkr*|dkr*d|›d}t|ƒ‚q*dS)Nr+rz ' not allowed)Ú    co_constsÚtypeÚco_namesr)ÚcodeÚconstÚnamer©ÚargsZ compiled_codeÚscanr
r røs
 
 
 zeval.<locals>.scanZ
__builtinsr+N) ÚopsÚcopyÚupdateÚlistÚitemsÚhasattrr ÚcompileÚbuiltinsrxr+rr!)Z
expressionÚ_dictÚkwÚkr    r&r
rr rxás
 
 
 
rx)r‰Úrrr r rnrorqrrrsrurvr‚r…Úglobalsr†rŒr    rxr
r
r
r Ú<module>s $