11#!/usr/bin/env python3
22
3+ import argparse
34import os
45import sys
5- import argparse
6+ from typing import Iterable , Iterator , List , Optional , Text , Tuple
67
7- from fdiff import __version__
8- from fdiff .color import color_unified_diff_line
9- from fdiff .diff import external_diff , u_diff
10- from fdiff .textiter import head , tail
11- from fdiff .utils import file_exists , get_tables_argument_list
8+ from . import __version__
9+ from .color import color_unified_diff_line
10+ from .diff import external_diff , u_diff
11+ from .textiter import head , tail
12+ from .utils import file_exists , get_tables_argument_list
1213
1314
14- def main (): # pragma: no cover
15+ def main () -> None : # pragma: no cover
1516 # try/except block rationale:
1617 # handles "premature" socket closure exception that is
1718 # raised by Python when stdout is piped to tools like
@@ -27,13 +28,11 @@ def main(): # pragma: no cover
2728 sys .exit (0 )
2829
2930
30- def run (argv ) :
31+ def run (argv : List [ Text ]) -> None :
3132 # ------------------------------------------
3233 # argparse command line argument definitions
3334 # ------------------------------------------
34- parser = argparse .ArgumentParser (
35- description = "An OpenType table diff tool for fonts."
36- )
35+ parser = argparse .ArgumentParser (description = "An OpenType table diff tool for fonts." )
3736 parser .add_argument ("--version" , action = "version" , version = f"fdiff v{ __version__ } " )
3837 parser .add_argument (
3938 "-c" ,
@@ -66,7 +65,7 @@ def run(argv):
6665 parser .add_argument ("PREFILE" , help = "Font file path/URL 1" )
6766 parser .add_argument ("POSTFILE" , help = "Font file path/URL 2" )
6867
69- args = parser .parse_args (argv )
68+ args : argparse . Namespace = parser .parse_args (argv )
7069
7170 # /////////////////////////////////////////////////////////
7271 #
@@ -110,12 +109,12 @@ def run(argv):
110109 # the command line arguments
111110 # set as a Python list if it was defined on the command line
112111 # or as None if it was not set on the command line
113- include_list = get_tables_argument_list (args .include )
114- exclude_list = get_tables_argument_list (args .exclude )
112+ include_list : Optional [ List [ Text ]] = get_tables_argument_list (args .include )
113+ exclude_list : Optional [ List [ Text ]] = get_tables_argument_list (args .exclude )
115114
116115 # flip logic of the command line flag for multi process
117116 # optimization use
118- use_mp = not args .nomp
117+ use_mp : bool = not args .nomp
119118
120119 if args .external :
121120 # ------------------------------
@@ -138,7 +137,7 @@ def run(argv):
138137 sys .exit (1 )
139138
140139 try :
141- diff = external_diff (
140+ ext_diff : Iterable [ Tuple [ Text , Optional [ int ]]] = external_diff (
142141 args .external ,
143142 args .PREFILE ,
144143 args .POSTFILE ,
@@ -148,7 +147,7 @@ def run(argv):
148147 )
149148
150149 # write stdout from external tool
151- for line , exit_code in diff :
150+ for line , exit_code in ext_diff :
152151 # format with color if color flag is entered on command line
153152 if args .color :
154153 sys .stdout .write (color_unified_diff_line (line ))
@@ -165,7 +164,7 @@ def run(argv):
165164 # ---------------
166165 # perform the unified diff analysis
167166 try :
168- diff = u_diff (
167+ uni_diff : Iterator [ Text ] = u_diff (
169168 args .PREFILE ,
170169 args .POSTFILE ,
171170 context_lines = args .lines ,
@@ -180,11 +179,11 @@ def run(argv):
180179 # re-define the line contents of the diff iterable
181180 # if head or tail is requested
182181 if args .head :
183- iterable = head (diff , args .head )
182+ iterable = head (uni_diff , args .head )
184183 elif args .tail :
185- iterable = tail (diff , args .tail )
184+ iterable = tail (uni_diff , args .tail )
186185 else :
187- iterable = diff
186+ iterable = uni_diff
188187
189188 # print unified diff results to standard output stream
190189 has_diff = False
0 commit comments