diff --git a/panoptes_aggregation/csv_utils.py b/panoptes_aggregation/csv_utils.py
index 13894787..17bcab26 100644
--- a/panoptes_aggregation/csv_utils.py
+++ b/panoptes_aggregation/csv_utils.py
@@ -15,7 +15,7 @@ def flatten_data(data, json_column='data'):
 
 def unflatten_data(data, json_column='data', renest=True):
     data_dict = {}
-    for name, value in data.iteritems():
+    for name, value in data.items():
         if ('{0}.'.format(json_column) in name) and (pandas.notnull(value)):
             key = name.split('{0}.'.format(json_column))[1]
             try:
diff --git a/panoptes_aggregation/extractors/point_extractor.py b/panoptes_aggregation/extractors/point_extractor.py
index 63de17fd..617163cc 100644
--- a/panoptes_aggregation/extractors/point_extractor.py
+++ b/panoptes_aggregation/extractors/point_extractor.py
@@ -42,7 +42,7 @@ def point_extractor(classification, **kwargs):
     extract = OrderedDict()
     for annotation in classification['annotations']:
         task_key = annotation['task']
-        for idx, value in enumerate(annotation['value']):
+        for _, value in enumerate(annotation['value']):
             key = '{0}_tool{1}'.format(task_key, value['tool'])
             if ('x' in value) and ('y' in value):
                 extract.setdefault('{0}_x'.format(key), []).append(value['x'])
diff --git a/panoptes_aggregation/extractors/point_extractor_by_frame.py b/panoptes_aggregation/extractors/point_extractor_by_frame.py
index 17c1e4a4..320e43a6 100644
--- a/panoptes_aggregation/extractors/point_extractor_by_frame.py
+++ b/panoptes_aggregation/extractors/point_extractor_by_frame.py
@@ -41,7 +41,7 @@ def point_extractor_by_frame(classification, **kwargs):
     extract = OrderedDict()
     for annotation in classification['annotations']:
         task_key = annotation['task']
-        for idx, value in enumerate(annotation['value']):
+        for _, value in enumerate(annotation['value']):
             frame = 'frame{0}'.format(value['frame'])
             extract.setdefault(frame, {})
             key = '{0}_tool{1}'.format(task_key, value['tool'])
diff --git a/panoptes_aggregation/reducers/subtask_reducer_wrapper.py b/panoptes_aggregation/reducers/subtask_reducer_wrapper.py
index fc30e247..5c214039 100644
--- a/panoptes_aggregation/reducers/subtask_reducer_wrapper.py
+++ b/panoptes_aggregation/reducers/subtask_reducer_wrapper.py
@@ -19,7 +19,7 @@ def wrapper(data, **kwargs):
                         output[frame_key].setdefault(k, [])
                         if k in frame:
                             output[frame_key][k] += frame[k]
-            for frame_key, frame in output.items():
+            for frame_key, _frame in output.items():
                 for kd, kl, kc, df in zip(keys_details, keys_labels, keys_clusters, details_functions.keys()):
                     detail_array = np.array(output[frame_key][kd])
                     if kl in output[frame_key]:
diff --git a/panoptes_aggregation/scripts/path_type.py b/panoptes_aggregation/scripts/path_type.py
index be55fbda..bc9a0092 100644
--- a/panoptes_aggregation/scripts/path_type.py
+++ b/panoptes_aggregation/scripts/path_type.py
@@ -15,7 +15,7 @@ def __init__(self, type='file'):
             None: don't care
         dash_ok: whether to allow "-" as stdin/stdout
         '''
-        assert type in ('file', 'dir', 'symlink', None) or hasattr(type, '__call__')
+        assert type in ('file', 'dir', 'symlink', None) or callable(type)
         self._type = type
 
     def __call__(self, string):