From b7bb391033ef3255c90134da3d7aef50d2d5326d Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Wed, 11 Jan 2017 12:10:58 +0000 Subject: [PATCH] don't use sys.exit(...) inside main(), but only under `if __name__ == "__main__"` The convention is that sys.exit(...) is called only if a module is run as a script, and that main() entry points use return statements to report exit codes: 0 (or None) for successful execution, or any non-zero integer for errors. E.g. see the console scripts generated when installing with pip. --- Lib/fontTools/__main__.py | 6 ++++-- Lib/fontTools/inspect.py | 4 ++-- Lib/fontTools/merge.py | 4 ++-- Lib/fontTools/mtiLib/__init__.py | 8 ++++++-- Lib/fontTools/subset/__init__.py | 8 ++++---- Lib/fontTools/subset/__main__.py | 3 ++- Lib/fontTools/ttx.py | 2 +- Lib/fontTools/varLib/__init__.py | 3 +-- Lib/fontTools/varLib/__main__.py | 3 ++- Lib/fontTools/varLib/interpolate_layout.py | 3 +-- Lib/fontTools/varLib/mutator.py | 3 +-- Snippets/interpolate.py | 3 ++- Snippets/woff2_compress.py | 4 ++-- Snippets/woff2_decompress.py | 4 ++-- fonttools | 3 +-- 15 files changed, 33 insertions(+), 28 deletions(-) diff --git a/Lib/fontTools/__main__.py b/Lib/fontTools/__main__.py index 1a8ceb043..7d45751b0 100644 --- a/Lib/fontTools/__main__.py +++ b/Lib/fontTools/__main__.py @@ -1,7 +1,8 @@ from __future__ import print_function, division, absolute_import +import sys + def main(args=None): - import sys if args is None: args = sys.argv[1:] @@ -27,5 +28,6 @@ def main(args=None): import runpy runpy.run_module(mod, run_name='__main__') + if __name__ == '__main__': - main() + sys.exit(main()) diff --git a/Lib/fontTools/inspect.py b/Lib/fontTools/inspect.py index f1ada6c30..bdacadf31 100644 --- a/Lib/fontTools/inspect.py +++ b/Lib/fontTools/inspect.py @@ -262,10 +262,10 @@ def main(args=None): args = sys.argv[1:] if len(args) < 1: print("usage: pyftinspect font...", file=sys.stderr) - sys.exit(1) + return 1 for arg in args: Inspect(arg) gtk.main() if __name__ == "__main__": - main() + sys.exit(main()) diff --git a/Lib/fontTools/merge.py b/Lib/fontTools/merge.py index a7d7dc827..9014fb883 100644 --- a/Lib/fontTools/merge.py +++ b/Lib/fontTools/merge.py @@ -932,7 +932,7 @@ def main(args=None): if len(args) < 1: print("usage: pyftmerge font...", file=sys.stderr) - sys.exit(1) + return 1 configLogger(level=logging.INFO if options.verbose else logging.WARNING) if options.timing: @@ -948,4 +948,4 @@ def main(args=None): if __name__ == "__main__": - main() + sys.exit(main()) diff --git a/Lib/fontTools/mtiLib/__init__.py b/Lib/fontTools/mtiLib/__init__.py index 59ee023d0..56d876caa 100644 --- a/Lib/fontTools/mtiLib/__init__.py +++ b/Lib/fontTools/mtiLib/__init__.py @@ -1151,11 +1151,14 @@ def build(f, font, tableTag=None): return parseTable(lines, font, tableTag=tableTag) -def main(args, font=None): +def main(args=None, font=None): import sys from fontTools import configLogger from fontTools.misc.testTools import MockFont + if args is None: + args = sys.argv[1:] + # configure the library logger (for >= WARNING) configLogger() # comment this out to enable debug messages from mtiLib's logger @@ -1186,6 +1189,7 @@ def main(args, font=None): writer.endtag(tag) writer.newline() + if __name__ == '__main__': import sys - main (sys.argv[1:]) + sys.exit(main()) diff --git a/Lib/fontTools/subset/__init__.py b/Lib/fontTools/subset/__init__.py index 2eae893a6..8f2c15607 100644 --- a/Lib/fontTools/subset/__init__.py +++ b/Lib/fontTools/subset/__init__.py @@ -2872,7 +2872,7 @@ def main(args=None): if '--help' in args: print(__doc__) - sys.exit(0) + return 0 options = Options() try: @@ -2885,11 +2885,11 @@ def main(args=None): except options.OptionError as e: usage() print("ERROR:", e, file=sys.stderr) - sys.exit(2) + return 2 if len(args) < 2: usage() - sys.exit(1) + return 1 configLogger(level=logging.INFO if options.verbose else logging.WARNING) if options.timing: @@ -2995,4 +2995,4 @@ __all__ = [ ] if __name__ == '__main__': - main() + sys.exit(main()) diff --git a/Lib/fontTools/subset/__main__.py b/Lib/fontTools/subset/__main__.py index 0d243b366..10e470fe6 100644 --- a/Lib/fontTools/subset/__main__.py +++ b/Lib/fontTools/subset/__main__.py @@ -1,6 +1,7 @@ from __future__ import print_function, division, absolute_import from fontTools.misc.py23 import * +import sys from fontTools.subset import main if __name__ == '__main__': - main() + sys.exit(main()) diff --git a/Lib/fontTools/ttx.py b/Lib/fontTools/ttx.py index e99e9ae29..fce9c8bd2 100644 --- a/Lib/fontTools/ttx.py +++ b/Lib/fontTools/ttx.py @@ -414,4 +414,4 @@ def main(args=None): if __name__ == "__main__": - main() + sys.exit(main()) diff --git a/Lib/fontTools/varLib/__init__.py b/Lib/fontTools/varLib/__init__.py index 61a4379cb..cc2e14072 100644 --- a/Lib/fontTools/varLib/__init__.py +++ b/Lib/fontTools/varLib/__init__.py @@ -449,7 +449,6 @@ def main(args=None): if __name__ == "__main__": import sys if len(sys.argv) > 1: - main() - #sys.exit(0) + sys.exit(main()) import doctest, sys sys.exit(doctest.testmod().failed) diff --git a/Lib/fontTools/varLib/__main__.py b/Lib/fontTools/varLib/__main__.py index 47b0f05ea..5cf05e523 100644 --- a/Lib/fontTools/varLib/__main__.py +++ b/Lib/fontTools/varLib/__main__.py @@ -1,6 +1,7 @@ from __future__ import print_function, division, absolute_import from fontTools.misc.py23 import * +import sys from fontTools.varLib import main if __name__ == '__main__': - main() + sys.exit(main()) diff --git a/Lib/fontTools/varLib/interpolate_layout.py b/Lib/fontTools/varLib/interpolate_layout.py index 90c8101b1..ca6062708 100644 --- a/Lib/fontTools/varLib/interpolate_layout.py +++ b/Lib/fontTools/varLib/interpolate_layout.py @@ -337,7 +337,6 @@ def main(args=None): if __name__ == "__main__": import sys if len(sys.argv) > 1: - main() - #sys.exit(0) + sys.exit(main()) import doctest, sys sys.exit(doctest.testmod().failed) diff --git a/Lib/fontTools/varLib/mutator.py b/Lib/fontTools/varLib/mutator.py index 695406ff3..c94187a31 100644 --- a/Lib/fontTools/varLib/mutator.py +++ b/Lib/fontTools/varLib/mutator.py @@ -60,7 +60,6 @@ def main(args=None): if __name__ == "__main__": import sys if len(sys.argv) > 1: - main() - #sys.exit(0) + sys.exit(main()) import doctest, sys sys.exit(doctest.testmod().failed) diff --git a/Snippets/interpolate.py b/Snippets/interpolate.py index 3a03a613b..7ed822d24 100755 --- a/Snippets/interpolate.py +++ b/Snippets/interpolate.py @@ -140,4 +140,5 @@ def main(): if __name__ == "__main__": - main() + import sys + sys.exit(main()) diff --git a/Snippets/woff2_compress.py b/Snippets/woff2_compress.py index d5a7485d9..689ebdcc1 100755 --- a/Snippets/woff2_compress.py +++ b/Snippets/woff2_compress.py @@ -13,7 +13,7 @@ def main(args=None): args = sys.argv[1:] if len(args) < 1: print("One argument, the input filename, must be provided.", file=sys.stderr) - sys.exit(1) + return 1 filename = args[0] outfilename = makeOutputFileName(filename, outputDir=None, extension='.woff2') @@ -26,4 +26,4 @@ def main(args=None): if __name__ == '__main__': - main() + sys.exit(main()) diff --git a/Snippets/woff2_decompress.py b/Snippets/woff2_decompress.py index 5f1bf281e..e7c1beaa5 100755 --- a/Snippets/woff2_decompress.py +++ b/Snippets/woff2_decompress.py @@ -23,7 +23,7 @@ def main(args=None): args = sys.argv[1:] if len(args) < 1: print("One argument, the input filename, must be provided.", file=sys.stderr) - sys.exit(1) + return 1 filename = args[0] outfilename = make_output_name(filename) @@ -36,4 +36,4 @@ def main(args=None): if __name__ == '__main__': - main() + sys.exit(main()) diff --git a/fonttools b/fonttools index 0707d684a..e9131ab66 100755 --- a/fonttools +++ b/fonttools @@ -9,5 +9,4 @@ sys.path.insert(0, libdir) from fontTools.__main__ import main if __name__ == '__main__': - - main() + sys.exit(main())