Skip to content

Commit 35e711d

Browse files
authored
Merge pull request #212 from bgilbert/argparse
examples/deepzoom: switch from optparse to argparse
2 parents bba6136 + 5e042d1 commit 35e711d

File tree

3 files changed

+83
-80
lines changed

3 files changed

+83
-80
lines changed

examples/deepzoom/deepzoom_multiserver.py

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
2020
#
2121

22+
from argparse import ArgumentParser
2223
from collections import OrderedDict
2324
from io import BytesIO
24-
from optparse import OptionParser
2525
import os
2626
from threading import Lock
2727

@@ -200,87 +200,88 @@ def __init__(self, relpath):
200200

201201

202202
if __name__ == '__main__':
203-
parser = OptionParser(usage='Usage: %prog [options] [slide-directory]')
204-
parser.add_option(
203+
parser = ArgumentParser(usage='%(prog)s [options] [SLIDE-DIRECTORY]')
204+
parser.add_argument(
205205
'-B',
206206
'--ignore-bounds',
207207
dest='DEEPZOOM_LIMIT_BOUNDS',
208208
default=True,
209209
action='store_false',
210210
help='display entire scan area',
211211
)
212-
parser.add_option(
212+
parser.add_argument(
213213
'-c', '--config', metavar='FILE', dest='config', help='config file'
214214
)
215-
parser.add_option(
215+
parser.add_argument(
216216
'-d',
217217
'--debug',
218218
dest='DEBUG',
219219
action='store_true',
220220
help='run in debugging mode (insecure)',
221221
)
222-
parser.add_option(
222+
parser.add_argument(
223223
'-e',
224224
'--overlap',
225225
metavar='PIXELS',
226226
dest='DEEPZOOM_OVERLAP',
227-
type='int',
227+
type=int,
228228
help='overlap of adjacent tiles [1]',
229229
)
230-
parser.add_option(
230+
parser.add_argument(
231231
'-f',
232232
'--format',
233233
metavar='{jpeg|png}',
234234
dest='DEEPZOOM_FORMAT',
235235
help='image format for tiles [jpeg]',
236236
)
237-
parser.add_option(
237+
parser.add_argument(
238238
'-l',
239239
'--listen',
240240
metavar='ADDRESS',
241241
dest='host',
242242
default='127.0.0.1',
243243
help='address to listen on [127.0.0.1]',
244244
)
245-
parser.add_option(
245+
parser.add_argument(
246246
'-p',
247247
'--port',
248248
metavar='PORT',
249249
dest='port',
250-
type='int',
250+
type=int,
251251
default=5000,
252252
help='port to listen on [5000]',
253253
)
254-
parser.add_option(
254+
parser.add_argument(
255255
'-Q',
256256
'--quality',
257257
metavar='QUALITY',
258258
dest='DEEPZOOM_TILE_QUALITY',
259-
type='int',
259+
type=int,
260260
help='JPEG compression quality [75]',
261261
)
262-
parser.add_option(
262+
parser.add_argument(
263263
'-s',
264264
'--size',
265265
metavar='PIXELS',
266266
dest='DEEPZOOM_TILE_SIZE',
267-
type='int',
267+
type=int,
268268
help='tile size [254]',
269269
)
270+
parser.add_argument(
271+
'SLIDE_DIR',
272+
metavar='SLIDE-DIRECTORY',
273+
nargs='?',
274+
help='slide directory',
275+
)
270276

271-
(opts, args) = parser.parse_args()
277+
args = parser.parse_args()
272278
config = {}
273-
config_file = opts.config
279+
config_file = args.config
274280
# Set only those settings specified on the command line
275-
for k in dir(opts):
276-
v = getattr(opts, k)
281+
for k in dir(args):
282+
v = getattr(args, k)
277283
if not k.startswith('_') and v is not None:
278284
config[k] = v
279-
# Set slide directory if specified
280-
try:
281-
config['SLIDE_DIR'] = args[0]
282-
except IndexError:
283-
pass
284285
app = create_app(config, config_file)
285286

286-
app.run(host=opts.host, port=opts.port, threaded=True)
287+
app.run(host=args.host, port=args.port, threaded=True)

examples/deepzoom/deepzoom_server.py

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
1919
#
2020

21+
from argparse import ArgumentParser
2122
from io import BytesIO
22-
from optparse import OptionParser
2323
import os
2424
import re
2525
from unicodedata import normalize
@@ -146,87 +146,88 @@ def slugify(text):
146146

147147

148148
if __name__ == '__main__':
149-
parser = OptionParser(usage='Usage: %prog [options] [slide]')
150-
parser.add_option(
149+
parser = ArgumentParser(usage='%(prog)s [options] [SLIDE]')
150+
parser.add_argument(
151151
'-B',
152152
'--ignore-bounds',
153153
dest='DEEPZOOM_LIMIT_BOUNDS',
154154
default=True,
155155
action='store_false',
156156
help='display entire scan area',
157157
)
158-
parser.add_option(
158+
parser.add_argument(
159159
'-c', '--config', metavar='FILE', dest='config', help='config file'
160160
)
161-
parser.add_option(
161+
parser.add_argument(
162162
'-d',
163163
'--debug',
164164
dest='DEBUG',
165165
action='store_true',
166166
help='run in debugging mode (insecure)',
167167
)
168-
parser.add_option(
168+
parser.add_argument(
169169
'-e',
170170
'--overlap',
171171
metavar='PIXELS',
172172
dest='DEEPZOOM_OVERLAP',
173-
type='int',
173+
type=int,
174174
help='overlap of adjacent tiles [1]',
175175
)
176-
parser.add_option(
176+
parser.add_argument(
177177
'-f',
178178
'--format',
179179
metavar='{jpeg|png}',
180180
dest='DEEPZOOM_FORMAT',
181181
help='image format for tiles [jpeg]',
182182
)
183-
parser.add_option(
183+
parser.add_argument(
184184
'-l',
185185
'--listen',
186186
metavar='ADDRESS',
187187
dest='host',
188188
default='127.0.0.1',
189189
help='address to listen on [127.0.0.1]',
190190
)
191-
parser.add_option(
191+
parser.add_argument(
192192
'-p',
193193
'--port',
194194
metavar='PORT',
195195
dest='port',
196-
type='int',
196+
type=int,
197197
default=5000,
198198
help='port to listen on [5000]',
199199
)
200-
parser.add_option(
200+
parser.add_argument(
201201
'-Q',
202202
'--quality',
203203
metavar='QUALITY',
204204
dest='DEEPZOOM_TILE_QUALITY',
205-
type='int',
205+
type=int,
206206
help='JPEG compression quality [75]',
207207
)
208-
parser.add_option(
208+
parser.add_argument(
209209
'-s',
210210
'--size',
211211
metavar='PIXELS',
212212
dest='DEEPZOOM_TILE_SIZE',
213-
type='int',
213+
type=int,
214214
help='tile size [254]',
215215
)
216+
parser.add_argument(
217+
'DEEPZOOM_SLIDE',
218+
metavar='SLIDE',
219+
nargs='?',
220+
help='slide file',
221+
)
216222

217-
(opts, args) = parser.parse_args()
223+
args = parser.parse_args()
218224
config = {}
219-
config_file = opts.config
225+
config_file = args.config
220226
# Set only those settings specified on the command line
221-
for k in dir(opts):
222-
v = getattr(opts, k)
227+
for k in dir(args):
228+
v = getattr(args, k)
223229
if not k.startswith('_') and v is not None:
224230
config[k] = v
225-
# Set slide file if specified
226-
try:
227-
config['DEEPZOOM_SLIDE'] = args[0]
228-
except IndexError:
229-
pass
230231
app = create_app(config, config_file)
231232

232-
app.run(host=opts.host, port=opts.port, threaded=True)
233+
app.run(host=args.host, port=args.port, threaded=True)

examples/deepzoom/deepzoom_tile.py

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121

2222
"""An example program to generate a Deep Zoom directory tree from a slide."""
2323

24+
from argparse import ArgumentParser
2425
import json
2526
from multiprocessing import JoinableQueue, Process
26-
from optparse import OptionParser
2727
import os
2828
import re
2929
import shutil
@@ -275,90 +275,91 @@ def _shutdown(self):
275275

276276

277277
if __name__ == '__main__':
278-
parser = OptionParser(usage='Usage: %prog [options] <slide>')
279-
parser.add_option(
278+
parser = ArgumentParser(usage='%(prog)s [options] <SLIDE>')
279+
parser.add_argument(
280280
'-B',
281281
'--ignore-bounds',
282282
dest='limit_bounds',
283283
default=True,
284284
action='store_false',
285285
help='display entire scan area',
286286
)
287-
parser.add_option(
287+
parser.add_argument(
288288
'-e',
289289
'--overlap',
290290
metavar='PIXELS',
291291
dest='overlap',
292-
type='int',
292+
type=int,
293293
default=1,
294294
help='overlap of adjacent tiles [1]',
295295
)
296-
parser.add_option(
296+
parser.add_argument(
297297
'-f',
298298
'--format',
299299
metavar='{jpeg|png}',
300300
dest='format',
301301
default='jpeg',
302302
help='image format for tiles [jpeg]',
303303
)
304-
parser.add_option(
304+
parser.add_argument(
305305
'-j',
306306
'--jobs',
307307
metavar='COUNT',
308308
dest='workers',
309-
type='int',
309+
type=int,
310310
default=4,
311311
help='number of worker processes to start [4]',
312312
)
313-
parser.add_option(
313+
parser.add_argument(
314314
'-o',
315315
'--output',
316316
metavar='NAME',
317317
dest='basename',
318318
help='base name of output file',
319319
)
320-
parser.add_option(
320+
parser.add_argument(
321321
'-Q',
322322
'--quality',
323323
metavar='QUALITY',
324324
dest='quality',
325-
type='int',
325+
type=int,
326326
default=90,
327327
help='JPEG compression quality [90]',
328328
)
329-
parser.add_option(
329+
parser.add_argument(
330330
'-r',
331331
'--viewer',
332332
dest='with_viewer',
333333
action='store_true',
334334
help='generate directory tree with HTML viewer',
335335
)
336-
parser.add_option(
336+
parser.add_argument(
337337
'-s',
338338
'--size',
339339
metavar='PIXELS',
340340
dest='tile_size',
341-
type='int',
341+
type=int,
342342
default=254,
343343
help='tile size [254]',
344344
)
345+
parser.add_argument(
346+
'slidepath',
347+
metavar='SLIDE',
348+
help='slide file',
349+
)
345350

346-
(opts, args) = parser.parse_args()
347-
try:
348-
slidepath = args[0]
349-
except IndexError:
350-
parser.error('Missing slide argument')
351-
if opts.basename is None:
352-
opts.basename = os.path.splitext(os.path.basename(slidepath))[0]
351+
args = parser.parse_args()
352+
if args.basename is None:
353+
args.basename = os.path.splitext(os.path.basename(args.slidepath))[0]
353354

354355
DeepZoomStaticTiler(
355-
slidepath,
356-
opts.basename,
357-
opts.format,
358-
opts.tile_size,
359-
opts.overlap,
360-
opts.limit_bounds,
361-
opts.quality,
362-
opts.workers,
363-
opts.with_viewer,
356+
args.slidepath,
357+
args.basename,
358+
args.format,
359+
args.tile_size,
360+
args.overlap,
361+
args.limit_bounds,
362+
args.quality,
363+
args.workers,
364+
args.with_viewer,
364365
).run()

0 commit comments

Comments
 (0)