author | robin |
Fri, 29 Sep 2023 16:43:56 +0100 | |
changeset 4809 | 18ae86d14b0a |
parent 4802 | 2bfded5c3f44 |
permissions | -rw-r--r-- |
4783 | 1 |
#Copyright ReportLab Europe Ltd. 2000-2023 |
4746 | 2 |
#see LICENSE for license details |
4794
263b9bc30bb7
update 4.04, extension alias
Alfie Roddan <alfie@reportlab.com>
parents:
4793
diff
changeset
|
3 |
__version__='4.0.4' |
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
4 |
import os, sys, glob, shutil, re, sysconfig, traceback, io, subprocess |
4710
5d3c80a9e519
remove old Python2 constructs; patch from Claude Paroz < claude at 2xlibre dot net >; version --> 3.6.8
robin
parents:
4692
diff
changeset
|
5 |
from urllib.parse import quote as urlquote |
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
6 |
platform = sys.platform |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
7 |
pjoin = os.path.join |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
8 |
abspath = os.path.abspath |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
9 |
isfile = os.path.isfile |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
10 |
isdir = os.path.isdir |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
11 |
dirname = os.path.dirname |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
12 |
basename = os.path.basename |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
13 |
splitext = os.path.splitext |
4715
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
14 |
addrSize = 64 if sys.maxsize > 2**32 else 32 |
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
15 |
sysconfig_platform = sysconfig.get_platform() |
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
16 |
|
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
17 |
INFOLINES=[] |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
18 |
def infoline(t, |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
19 |
pfx='#####', |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
20 |
add=True, |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
21 |
): |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
22 |
bn = splitext(basename(sys.argv[0]))[0] |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
23 |
ver = '.'.join(map(str,sys.version_info[:3])) |
4715
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
24 |
s = '%s %s-python-%s-%s: %s' % (pfx, bn, ver, sysconfig_platform, t) |
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
25 |
print(s) |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
26 |
if add: INFOLINES.append(s) |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
27 |
|
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
28 |
def showTraceback(s): |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
29 |
buf = io.StringIO() |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
30 |
print(s,file=buf) |
4681 | 31 |
if verbose>2: |
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
32 |
traceback.print_exc(file=buf) |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
33 |
for l in buf.getvalue().split('\n'): |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
34 |
infoline(l,pfx='!!!!!',add=False) |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
35 |
|
4681 | 36 |
def spCall(cmd,*args,**kwds): |
37 |
r = subprocess.call( |
|
38 |
cmd, |
|
4746 | 39 |
stderr = subprocess.STDOUT, |
4681 | 40 |
stdout = subprocess.DEVNULL if kwds.pop('dropOutput',False) else None, |
4682 | 41 |
timeout = kwds.pop('timeout',3600), |
4681 | 42 |
) |
43 |
if verbose>=3: |
|
44 |
infoline('%r --> %s' % (' '.join(cmd),r), pfx='!!!!!' if r else '#####', add=False) |
|
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
45 |
return r |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
46 |
|
4681 | 47 |
def specialOption(n,ceq=False): |
48 |
v = 0 |
|
3974 | 49 |
while n in sys.argv: |
4681 | 50 |
v += 1 |
3974 | 51 |
sys.argv.remove(n) |
4681 | 52 |
if ceq: |
53 |
n += '=' |
|
54 |
V = [_ for _ in sys.argv if _.startswith(n)] |
|
55 |
for _ in V: sys.argv.remove(_) |
|
56 |
if V: |
|
57 |
n = len(n) |
|
58 |
v = V[-1][n:] |
|
3974 | 59 |
return v |
60 |
||
61 |
dlt1 = not specialOption('--no-download-t1-files') |
|
4681 | 62 |
verbose = specialOption('--verbose',ceq=True) |
63 |
nullDivert = not verbose |
|
3974 | 64 |
|
4760 | 65 |
pkgDir=dirname(__file__) |
2963 | 66 |
if not pkgDir: |
67 |
pkgDir=os.getcwd() |
|
68 |
elif not os.path.isabs(pkgDir): |
|
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
69 |
pkgDir=abspath(pkgDir) |
3168
cd1797023f60
setup.py: attempt to make more robust against running away from pkgDir
rgbecker
parents:
3106
diff
changeset
|
70 |
try: |
cd1797023f60
setup.py: attempt to make more robust against running away from pkgDir
rgbecker
parents:
3106
diff
changeset
|
71 |
os.chdir(pkgDir) |
cd1797023f60
setup.py: attempt to make more robust against running away from pkgDir
rgbecker
parents:
3106
diff
changeset
|
72 |
except: |
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
73 |
showTraceback('warning could not change directory to %r' % pkgDir) |
2963 | 74 |
|
4760 | 75 |
from setuptools import setup |
2963 | 76 |
|
77 |
def get_version(): |
|
4685 | 78 |
#determine Version |
2963 | 79 |
|
80 |
#first try source |
|
4685 | 81 |
FN = pjoin(pkgDir,'src','reportlab','__init__') |
2963 | 82 |
try: |
83 |
for l in open(pjoin(FN+'.py'),'r').readlines(): |
|
84 |
if l.startswith('Version'): |
|
3724 | 85 |
D = {} |
86 |
exec(l.strip(),D) |
|
87 |
return D['Version'] |
|
2963 | 88 |
except: |
89 |
pass |
|
90 |
||
91 |
#don't have source, try import |
|
92 |
import imp |
|
93 |
for desc in ('.pyc', 'rb', 2), ('.pyo', 'rb', 2): |
|
94 |
try: |
|
95 |
fn = FN+desc[0] |
|
96 |
f = open(fn,desc[1]) |
|
97 |
m = imp.load_module('reportlab',f,fn,desc) |
|
98 |
return m.Version |
|
99 |
except: |
|
100 |
pass |
|
101 |
raise ValueError('Cannot determine ReportLab Version') |
|
102 |
||
103 |
#this code from /FBot's PIL setup.py |
|
104 |
def aDir(P, d, x=None): |
|
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
105 |
if d and isdir(d) and d not in P: |
2963 | 106 |
if x is None: |
107 |
P.append(d) |
|
108 |
else: |
|
109 |
P.insert(x, d) |
|
110 |
||
4718
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
111 |
# protection against loops needed. reported by |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
112 |
# Michał Górny < mgorny at gentoo dot org > |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
113 |
# see https://stackoverflow.com/questions/36977259 |
4715
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
114 |
def findFile(root, wanted, followlinks=True): |
4718
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
115 |
visited = set() |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
116 |
for p, D, F in os.walk(root,followlinks=followlinks): |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
117 |
#scan directories to check for prior visits |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
118 |
#use dev/inode to make unique key |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
119 |
SD = [].append |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
120 |
for d in D: |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
121 |
dk = os.stat(pjoin(p,d)) |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
122 |
dk = dk.st_dev, dk.st_ino |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
123 |
if dk not in visited: |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
124 |
visited.add(dk) |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
125 |
SD(d) |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
126 |
D[:] = SD.__self__ #set the dirs to be scanned |
4715
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
127 |
for fn in F: |
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
128 |
if fn==wanted: |
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
129 |
return abspath(pjoin(p,fn)) |
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
130 |
|
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
131 |
def listFiles(root,followlinks=True,strJoin=None): |
4718
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
132 |
visited = set() |
4715
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
133 |
R = [].append |
4718
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
134 |
for p, D, F in os.walk(root,followlinks=followlinks): |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
135 |
#scan directories to check for prior visits |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
136 |
#use dev/inode to make unique key |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
137 |
SD = [].append |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
138 |
for d in D: |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
139 |
dk = os.stat(pjoin(p,d)) |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
140 |
dk = dk.st_dev, dk.st_ino |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
141 |
if dk not in visited: |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
142 |
visited.add(dk) |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
143 |
SD(d) |
697141ce83e1
fix symlink looping in setup.py reported by Michał Górny < mgorny at gentoo dot org >
robin
parents:
4715
diff
changeset
|
144 |
D[:] = SD.__self__ #set the dirs to be scanned |
4715
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
145 |
for fn in F: |
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
146 |
R(abspath(pjoin(p,fn))) |
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
147 |
R = R.__self__ |
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
148 |
return strJoin.join(R) if strJoin else R |
82c17d17a683
_rl_accel.c (0.81) has better errors; support M1 builds; version-->3.6.9
robin
parents:
4710
diff
changeset
|
149 |
|
2982 | 150 |
reportlab_files= [ |
2963 | 151 |
'fonts/00readme.txt', |
152 |
'fonts/bitstream-vera-license.txt', |
|
4446
8fc52ebf1240
add MANIFEST.in; version --> 3.5.2
robin <robin@reportlab.com>
parents:
4439
diff
changeset
|
153 |
'fonts/DarkGarden-changelog.txt', |
2977
beca8d75f400
reportlab: remove LetErrorRobot-Chrome, rina & luxi. Add DarkGardenMK and fix tests
rgbecker
parents:
2976
diff
changeset
|
154 |
'fonts/DarkGarden-copying-gpl.txt', |
beca8d75f400
reportlab: remove LetErrorRobot-Chrome, rina & luxi. Add DarkGardenMK and fix tests
rgbecker
parents:
2976
diff
changeset
|
155 |
'fonts/DarkGarden-copying.txt', |
beca8d75f400
reportlab: remove LetErrorRobot-Chrome, rina & luxi. Add DarkGardenMK and fix tests
rgbecker
parents:
2976
diff
changeset
|
156 |
'fonts/DarkGarden-readme.txt', |
beca8d75f400
reportlab: remove LetErrorRobot-Chrome, rina & luxi. Add DarkGardenMK and fix tests
rgbecker
parents:
2976
diff
changeset
|
157 |
'fonts/DarkGarden.sfd', |
beca8d75f400
reportlab: remove LetErrorRobot-Chrome, rina & luxi. Add DarkGardenMK and fix tests
rgbecker
parents:
2976
diff
changeset
|
158 |
'fonts/DarkGardenMK.afm', |
beca8d75f400
reportlab: remove LetErrorRobot-Chrome, rina & luxi. Add DarkGardenMK and fix tests
rgbecker
parents:
2976
diff
changeset
|
159 |
'fonts/DarkGardenMK.pfb', |
2963 | 160 |
'fonts/Vera.ttf', |
161 |
'fonts/VeraBd.ttf', |
|
162 |
'fonts/VeraBI.ttf', |
|
163 |
'fonts/VeraIt.ttf', |
|
3285
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
164 |
'fonts/_abi____.pfb', |
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
165 |
'fonts/_ab_____.pfb', |
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
166 |
'fonts/_ai_____.pfb', |
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
167 |
'fonts/_a______.pfb', |
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
168 |
'fonts/cobo____.pfb', |
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
169 |
'fonts/cob_____.pfb', |
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
170 |
'fonts/com_____.pfb', |
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
171 |
'fonts/coo_____.pfb', |
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
172 |
'fonts/_ebi____.pfb', |
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
173 |
'fonts/_eb_____.pfb', |
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
174 |
'fonts/_ei_____.pfb', |
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
175 |
'fonts/_er_____.pfb', |
3549 | 176 |
'fonts/sy______.pfb', |
177 |
'fonts/zd______.pfb', |
|
178 |
'fonts/zx______.pfb', |
|
179 |
'fonts/zy______.pfb', |
|
4377
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
180 |
'fonts/callig15.pfb', |
4439
61ba11e7d143
another try at getting license.txt and callgi.afm into the pacjage :(
robin <robin@reportlab.com>
parents:
4438
diff
changeset
|
181 |
'fonts/callig15.afm', |
4446
8fc52ebf1240
add MANIFEST.in; version --> 3.5.2
robin <robin@reportlab.com>
parents:
4439
diff
changeset
|
182 |
'reportlab/graphics/barcode/README' |
8fc52ebf1240
add MANIFEST.in; version --> 3.5.2
robin <robin@reportlab.com>
parents:
4439
diff
changeset
|
183 |
'reportlab/graphics/barcode/TODO' |
4439
61ba11e7d143
another try at getting license.txt and callgi.afm into the pacjage :(
robin <robin@reportlab.com>
parents:
4438
diff
changeset
|
184 |
'license.txt', |
2963 | 185 |
] |
186 |
||
4749 | 187 |
def url2data(url,returnRaw=False): |
188 |
import urllib.request as ureq |
|
189 |
remotehandle = ureq.urlopen(url) |
|
190 |
try: |
|
191 |
raw = remotehandle.read() |
|
192 |
return raw if returnRaw else io.BytesIO(raw) |
|
193 |
finally: |
|
194 |
remotehandle.close() |
|
195 |
||
4377
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
196 |
def get_fonts(PACKAGE_DIR, reportlab_files): |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
197 |
import zipfile |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
198 |
rl_dir = PACKAGE_DIR['reportlab'] |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
199 |
if not [x for x in reportlab_files if not isfile(pjoin(rl_dir,x))]: |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
200 |
xitmsg = "Standard T1 font curves already downloaded" |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
201 |
elif not dlt1: |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
202 |
xitmsg = "not downloading T1 font curve files" |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
203 |
else: |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
204 |
try: |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
205 |
infoline("Downloading standard T1 font curves") |
4802 | 206 |
zipdata = url2data("https://www.reportlab.com/ftp/pfbfer-20180109.zip") |
4377
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
207 |
archive = zipfile.ZipFile(zipdata) |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
208 |
dst = pjoin(rl_dir, 'fonts') |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
209 |
|
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
210 |
for name in archive.namelist(): |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
211 |
if not name.endswith('/'): |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
212 |
with open(pjoin(dst, name), 'wb') as outfile: |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
213 |
outfile.write(archive.read(name)) |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
214 |
xitmsg = "Finished download of standard T1 font curves" |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
215 |
except: |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
216 |
xitmsg = "Failed to download standard T1 font curves" |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
217 |
infoline(xitmsg) |
3285
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
218 |
|
4377
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
219 |
def get_glyphlist_module(PACKAGE_DIR): |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
220 |
try: |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
221 |
lfn = pjoin("pdfbase","_glyphlist.py") |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
222 |
fn = pjoin(PACKAGE_DIR['reportlab'],lfn) |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
223 |
if isfile(fn): |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
224 |
xitmsg = "The _glyphlist module already exists" |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
225 |
else: |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
226 |
text = url2data("https://raw.githubusercontent.com/adobe-type-tools/agl-aglfn/master/glyphlist.txt",True) |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
227 |
comments = ['#see https://github.com/adobe-type-tools/agl-aglfn\n'].append |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
228 |
G2U = [].append |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
229 |
G2Us = [].append |
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
230 |
if not isinstance(text,str): |
4378 | 231 |
text = text.decode('latin1') |
232 |
for line in text.split('\n'): |
|
4377
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
233 |
line = line.strip() |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
234 |
if not line: continue |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
235 |
if line.startswith('#'): |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
236 |
comments(line+'\n') |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
237 |
else: |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
238 |
gu = line.split(';') |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
239 |
if len(gu)==2: |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
240 |
v = gu[1].split() |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
241 |
if len(v)==1: |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
242 |
G2U('\t%r: 0x%s,\n' % (gu[0],gu[1])) |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
243 |
else: |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
244 |
G2Us('\t%r: (%s),\n' % (gu[0],','.join('0x%s'%u for u in v))) |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
245 |
else: |
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
246 |
infoline('bad glyphlist line %r' % line, '!!!!!') |
4377
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
247 |
with open(fn,'w') as f: |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
248 |
f.write(''.join(comments.__self__)) |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
249 |
f.write('_glyphname2unicode = {\n') |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
250 |
f.write(''.join(G2U.__self__)) |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
251 |
f.write('\t}\n') |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
252 |
f.write('_glyphname2unicodes = {\n') |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
253 |
f.write(''.join(G2Us.__self__)) |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
254 |
f.write('\t}\n') |
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
255 |
xitmsg = "Finished creation of _glyphlist.py" |
3285
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
256 |
except: |
4377
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
257 |
xitmsg = "Failed to download glyphlist.txt" |
3285
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
258 |
infoline(xitmsg) |
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
259 |
|
2963 | 260 |
def main(): |
4665 | 261 |
if 'test' in sys.argv \ |
262 |
or 'tests' in sys.argv \ |
|
263 |
or 'tests-postinstall' in sys.argv \ |
|
264 |
or 'tests-preinstall' in sys.argv: |
|
4786 | 265 |
failfast = specialOption('--failfast') |
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
266 |
verboseTests = specialOption('--verbose-tests') |
4745
bbe50343dd16
start branch 3.6.13; tables.py error improvements and test exclusions
robin
parents:
4742
diff
changeset
|
267 |
excludes = [_ for _ in sys.argv if _.startswith('--exclude=')] |
bbe50343dd16
start branch 3.6.13; tables.py error improvements and test exclusions
robin
parents:
4742
diff
changeset
|
268 |
for _ in excludes: |
bbe50343dd16
start branch 3.6.13; tables.py error improvements and test exclusions
robin
parents:
4742
diff
changeset
|
269 |
sys.argv.remove(_) |
2963 | 270 |
if len(sys.argv)!=2: |
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
271 |
raise ValueError('tests commands may only be used alone sys.argv[1:]=%s' % repr(sys.argv[1:])) |
2963 | 272 |
cmd = sys.argv[-1] |
4366
ddf3d4f5066a
add a setup.py test command to aid CI
robin <robin@reportlab.com>
parents:
4359
diff
changeset
|
273 |
PYTHONPATH = [pkgDir] if cmd!='test' else [] |
2963 | 274 |
if cmd=='tests-preinstall': |
275 |
PYTHONPATH.insert(0,pjoin(pkgDir,'src')) |
|
4366
ddf3d4f5066a
add a setup.py test command to aid CI
robin <robin@reportlab.com>
parents:
4359
diff
changeset
|
276 |
if PYTHONPATH: os.environ['PYTHONPATH']=os.pathsep.join(PYTHONPATH) |
2963 | 277 |
os.chdir(pjoin(pkgDir,'tests')) |
4745
bbe50343dd16
start branch 3.6.13; tables.py error improvements and test exclusions
robin
parents:
4742
diff
changeset
|
278 |
cli = [sys.executable, 'runAll.py']+excludes |
4665 | 279 |
if cmd=='tests-postinstall': |
280 |
cli.append('--post-install') |
|
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
281 |
if verboseTests: |
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
282 |
cli.append('--verbosity=2') |
4786 | 283 |
if failfast: |
284 |
cli.append('--failfast') |
|
4681 | 285 |
r = spCall(cli) |
4668
f8d6dc8f07fc
remove support for 2.7; require >=3.6; version-->3.6.0
robin
parents:
4665
diff
changeset
|
286 |
sys.exit(('!!!!! runAll.py --> %s should exit with error !!!!!' % r) if r else r) |
3943
0e897efde30f
sgmlop.c: allow compilation in Python 3.3 & 2.7, with new returnUnicode option as default
robin
parents:
3878
diff
changeset
|
287 |
|
2982 | 288 |
#copy some special case files into place so package_data will treat them properly |
4157
dc2894478c0d
setup.py: fix for pip -e proposed by Marius Gedminas
robin
parents:
4142
diff
changeset
|
289 |
PACKAGE_DIR = {'':'src','reportlab': pjoin('src','reportlab')} |
3285
af395f8ca4a2
setup.py now downloads T1 font curves when using easy_install or distutils
damian
parents:
3278
diff
changeset
|
290 |
get_fonts(PACKAGE_DIR, reportlab_files) |
4377
da36c2d6e2d2
fix embedded font & fontfinder bugs reported by htgoebel @ bitbucket; version --> 3.4.23
robin <robin@reportlab.com>
parents:
4366
diff
changeset
|
291 |
get_glyphlist_module(PACKAGE_DIR) |
4746 | 292 |
setup( |
293 |
name="reportlab", |
|
294 |
version=get_version(), |
|
295 |
license="BSD license (see license.txt for details), Copyright (c) 2000-2022, ReportLab Inc.", |
|
296 |
description="The Reportlab Toolkit", |
|
297 |
long_description="""The ReportLab Toolkit. An Open Source Python library for generating PDFs and graphics.""", |
|
2963 | 298 |
|
4746 | 299 |
author="Andy Robinson, Robin Becker, the ReportLab team and the community", |
300 |
author_email="reportlab-users@lists2.reportlab.com", |
|
4802 | 301 |
url="https://www.reportlab.com/", |
4746 | 302 |
packages=[ |
303 |
'reportlab', |
|
304 |
'reportlab.graphics.charts', |
|
305 |
'reportlab.graphics.samples', |
|
306 |
'reportlab.graphics.widgets', |
|
307 |
'reportlab.graphics.barcode', |
|
308 |
'reportlab.graphics', |
|
309 |
'reportlab.lib', |
|
310 |
'reportlab.pdfbase', |
|
311 |
'reportlab.pdfgen', |
|
312 |
'reportlab.platypus', |
|
4226 | 313 |
], |
4746 | 314 |
package_dir = PACKAGE_DIR, |
315 |
package_data = {'reportlab': reportlab_files}, |
|
316 |
classifiers = [ |
|
317 |
'Development Status :: 5 - Production/Stable', |
|
318 |
'Intended Audience :: Developers', |
|
319 |
'License :: OSI Approved :: BSD License', |
|
320 |
'Topic :: Printing', |
|
321 |
'Topic :: Text Processing :: Markup', |
|
322 |
'Programming Language :: Python :: 3', |
|
323 |
'Programming Language :: Python :: 3.7', |
|
324 |
'Programming Language :: Python :: 3.8', |
|
325 |
'Programming Language :: Python :: 3.9', |
|
326 |
'Programming Language :: Python :: 3.10', |
|
327 |
'Programming Language :: Python :: 3.11', |
|
328 |
], |
|
329 |
||
4784
792d73f478f5
Trying to make pycairo optional static dependency
Andy Robinson
parents:
4783
diff
changeset
|
330 |
# this probably only works for setuptools, but distutils seems to ignore it |
792d73f478f5
Trying to make pycairo optional static dependency
Andy Robinson
parents:
4783
diff
changeset
|
331 |
install_requires=['pillow>=9.0.0'], |
792d73f478f5
Trying to make pycairo optional static dependency
Andy Robinson
parents:
4783
diff
changeset
|
332 |
# moved to pyproject.toml |
4746 | 333 |
python_requires='>=3.7,<4', |
334 |
extras_require={ |
|
4793
1665e742e202
update version numbers and dependencies alias
Alfie Roddan <alfie@reportlab.com>
parents:
4786
diff
changeset
|
335 |
'accel': ['rl_accel>=0.9.0,<1.1'], |
1665e742e202
update version numbers and dependencies alias
Alfie Roddan <alfie@reportlab.com>
parents:
4786
diff
changeset
|
336 |
'renderpm': ['rl_renderPM>=4.0.3,<4.1'], |
1665e742e202
update version numbers and dependencies alias
Alfie Roddan <alfie@reportlab.com>
parents:
4786
diff
changeset
|
337 |
'pycairo': ['rlPyCairo>=0.2.0,<1', 'freetype-py>=2.3.0,<2.4'] |
4746 | 338 |
}, |
339 |
) |
|
340 |
print() |
|
341 |
print('########## SUMMARY INFO #########') |
|
342 |
print('\n'.join(INFOLINES)) |
|
2963 | 343 |
|
344 |
if __name__=='__main__': |
|
345 |
main() |