Add return types to the type hints.
David Blume

David Blume commited on 2020-12-30 19:35:11
Showing 3 changed files, with 14 additions and 11 deletions.

... ...
@@ -3,11 +3,11 @@
3 3
 import threading, queue
4 4
 
5 5
 
6
-_counter = 0
6
+_counter:int = 0
7 7
 
8 8
 counter_queue = queue.Queue()
9 9
 
10
-def counter_manager():
10
+def counter_manager() -> None:
11 11
     'I have EXCLUSIVE rights to update the _counter variable'
12 12
     global _counter
13 13
 
... ...
@@ -22,7 +22,7 @@ def counter_manager():
22 22
 
23 23
 print_queue = queue.Queue()
24 24
 
25
-def print_manager():
25
+def print_manager() -> None:
26 26
     'I have EXCLUSIVE rights to call the "print" keyword'
27 27
     while True:
28 28
         job = print_queue.get()
... ...
@@ -31,12 +31,12 @@ def print_manager():
31 31
         print_queue.task_done()
32 32
 
33 33
 
34
-def worker():
34
+def worker() -> None:
35 35
     'My job is to increment the counter and print the current count'
36 36
     counter_queue.put(1)
37 37
 
38 38
 
39
-def run():
39
+def run() -> None:
40 40
     # Set up the counter manager
41 41
     t = threading.Thread(target=counter_manager)
42 42
     t.daemon = True
... ...
@@ -4,8 +4,9 @@ import os
4 4
 import urllib.request
5 5
 import urllib.error
6 6
 from multiprocessing.pool import ThreadPool
7
+from typing import List, Tuple, Union
7 8
 
8
-sites = [
9
+sites: List[str] = [
9 10
 #    'https://www.yahoo.com/',
10 11
 #    'http://www.cnn.com',
11 12
 #    'http://www.python.org',
... ...
@@ -23,7 +24,7 @@ sites = [
23 24
 ]
24 25
 
25 26
 
26
-def sitesize(url: str):
27
+def sitesize(url: str) -> Tuple[str, Union[int, str]]:
27 28
     ''' Determine the size of a website '''
28 29
     try:
29 30
         with urllib.request.urlopen(url) as f:
... ...
@@ -32,10 +33,10 @@ def sitesize(url: str):
32 33
     except urllib.error.HTTPError as e:
33 34
         return url, str(e)
34 35
     except urllib.error.URLError as e:
35
-        return url, "On macOS? Try another python3. " + str(e)
36
+        return url, str(e)
36 37
 
37 38
 
38
-def run():
39
+def run() -> None:
39 40
     # Network bound: Use max(); CPU bound: Use min()
40 41
     pool = ThreadPool(max(len(sites), os.cpu_count()))
41 42
     for result in pool.imap_unordered(sitesize, sites):
... ...
@@ -9,6 +9,7 @@ import functools
9 9
 from argparse import ArgumentParser
10 10
 import counter.counter
11 11
 import sitesize.sitesize
12
+from typing import Optional, Callable
12 13
 
13 14
 
14 15
 def timeit(f):
... ...
@@ -22,7 +23,8 @@ def timeit(f):
22 23
     return wrapper
23 24
 
24 25
 
25
-def set_v_print(verbose: bool):
26
+v_print:Callable
27
+def set_v_print(verbose: bool) -> None:
26 28
     """
27 29
     Defines the function v_print.
28 30
     It prints if verbose is true, otherwise, it does nothing.
... ...
@@ -51,7 +53,7 @@ class Coffee:
51 53
 
52 54
 
53 55
 @timeit
54
-def main(debug: bool):
56
+def main(debug: bool) -> None:
55 57
     script_dir = os.path.abspath(os.path.dirname(sys.argv[0]))
56 58
     print(f'{sys.argv[0]} is in {script_dir}.')
57 59
 
58 60