diff --git a/pre_commit_hooks/requirements_txt_fixer.py b/pre_commit_hooks/requirements_txt_fixer.py
index 1aa0dff..dc41815 100644
--- a/pre_commit_hooks/requirements_txt_fixer.py
+++ b/pre_commit_hooks/requirements_txt_fixer.py
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
 import argparse
 from typing import IO
 from typing import List
@@ -11,15 +9,13 @@
 FAIL = 1
 
 
-class Requirement(object):
-
-    def __init__(self):  # type: () -> None
-        super(Requirement, self).__init__()
-        self.value = None  # type: Optional[bytes]
-        self.comments = []   # type: List[bytes]
+class Requirement:
+    def __init__(self) -> None:
+        self.value: Optional[bytes] = None
+        self.comments: List[bytes] = []
 
     @property
-    def name(self):  # type: () -> bytes
+    def name(self) -> bytes:
         assert self.value is not None, self.value
         for egg in (b'#egg=', b'&egg='):
             if egg in self.value:
@@ -27,7 +23,7 @@
 
         return self.value.lower().partition(b'==')[0]
 
-    def __lt__(self, requirement):  # type: (Requirement) -> int
+    def __lt__(self, requirement: 'Requirement') -> int:
         # \n means top of file comment, so always return True,
         # otherwise just do a string comparison with value.
         assert self.value is not None, self.value
@@ -39,10 +35,10 @@
             return self.name < requirement.name
 
 
-def fix_requirements(f):  # type: (IO[bytes]) -> int
-    requirements = []  # type: List[Requirement]
+def fix_requirements(f: IO[bytes]) -> int:
+    requirements: List[Requirement] = []
     before = list(f)
-    after = []  # type: List[bytes]
+    after: List[bytes] = []
 
     before_string = b''.join(before)
 
@@ -109,7 +105,7 @@
         return FAIL
 
 
-def main(argv=None):  # type: (Optional[Sequence[str]]) -> int
+def main(argv: Optional[Sequence[str]] = None) -> int:
     parser = argparse.ArgumentParser()
     parser.add_argument('filenames', nargs='*', help='Filenames to fix')
     args = parser.parse_args(argv)
@@ -121,7 +117,7 @@
             ret_for_file = fix_requirements(file_obj)
 
             if ret_for_file:
-                print('Sorting {}'.format(arg))
+                print(f'Sorting {arg}')
 
             retv |= ret_for_file
 
