From 8d94d556cba102417ff8cd22ac323c5ece961230 Mon Sep 17 00:00:00 2001
From: Jeremy Fee <jmfee@usgs.gov>
Date: Tue, 17 Dec 2019 14:04:15 -0700
Subject: [PATCH] Fix for python3 dictionary key iteration

---
 geomagio/WebService.py               | 4 ++--
 geomagio/WebServiceUsage.py          | 2 +-
 geomagio/iaga2002/IAGA2002Factory.py | 2 +-
 geomagio/imfv122/IMFV122Factory.py   | 4 ++--
 geomagio/pcdcp/PCDCPFactory.py       | 2 +-
 5 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/geomagio/WebService.py b/geomagio/WebService.py
index bb5678643..c40a91466 100644
--- a/geomagio/WebService.py
+++ b/geomagio/WebService.py
@@ -282,11 +282,11 @@ class WebService(object):
         else:
             output_format = output_format.lower()
         observatory_id = observatory_id.upper()
-        if observatory_id not in self.metadata.keys():
+        if observatory_id not in list(self.metadata.keys()):
             raise WebServiceException(
                    'Bad id value "%s".'
                    ' Valid values are: %s'
-                   % (observatory_id, self.metadata.keys()))
+                   % (observatory_id, list(self.metadata.keys())))
         if not starttime:
             now = datetime.now()
             today = UTCDateTime(
diff --git a/geomagio/WebServiceUsage.py b/geomagio/WebServiceUsage.py
index f72fdc438..858f621ab 100644
--- a/geomagio/WebServiceUsage.py
+++ b/geomagio/WebServiceUsage.py
@@ -5,7 +5,7 @@ from geomagio.ObservatoryMetadata import ObservatoryMetadata
 
 class WebServiceUsage(object):
     def __init__(self, metadata=None, mount_path=None, host_prefix=None):
-        metadata = metadata or ObservatoryMetadata().metadata.keys()
+        metadata = metadata or list(ObservatoryMetadata().metadata.keys())
         self.date = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
         self.metadata = ', '.join(sorted(metadata))
         self.mount_path = mount_path
diff --git a/geomagio/iaga2002/IAGA2002Factory.py b/geomagio/iaga2002/IAGA2002Factory.py
index f18dbf741..6867d3a2c 100644
--- a/geomagio/iaga2002/IAGA2002Factory.py
+++ b/geomagio/iaga2002/IAGA2002Factory.py
@@ -72,7 +72,7 @@ class IAGA2002Factory(TimeseriesFactory):
                 rate = 1
             else:
                 raise Exception('one sample, and unable to guess rate')
-        for channel in data.keys():
+        for channel in list(data.keys()):
             stats = obspy.core.Stats(metadata)
             stats.starttime = starttime
             stats.sampling_rate = rate
diff --git a/geomagio/imfv122/IMFV122Factory.py b/geomagio/imfv122/IMFV122Factory.py
index 294058f01..9210287bf 100644
--- a/geomagio/imfv122/IMFV122Factory.py
+++ b/geomagio/imfv122/IMFV122Factory.py
@@ -43,10 +43,10 @@ class IMFV122Factory(TimeseriesFactory):
         starttime = obspy.core.UTCDateTime(parser.times[0])
         endtime = obspy.core.UTCDateTime(parser.times[-1])
         data = parser.data
-        length = len(data[data.keys()[0]])
+        length = len(data[list(data.keys())[0]])
         rate = (length - 1) / (endtime - starttime)
         stream = obspy.core.Stream()
-        for channel in data.keys():
+        for channel in list(data.keys()):
             stats = obspy.core.Stats(metadata)
             stats.starttime = starttime
             stats.sampling_rate = rate
diff --git a/geomagio/pcdcp/PCDCPFactory.py b/geomagio/pcdcp/PCDCPFactory.py
index df94833c2..c6d783dac 100644
--- a/geomagio/pcdcp/PCDCPFactory.py
+++ b/geomagio/pcdcp/PCDCPFactory.py
@@ -71,7 +71,7 @@ class PCDCPFactory(TimeseriesFactory):
         rate = (length - 1) / (endtime - starttime)
         stream = obspy.core.Stream()
 
-        for channel in data.keys():
+        for channel in list(data.keys()):
             stats = obspy.core.Stats()
             stats.network = 'NT'
             stats.station = parser.header['station']
-- 
GitLab