diff --git a/lib_afc_mosaic/universe_map_file.py b/lib_afc_mosaic/universe_map_file.py index 6c84e7b..f40aa93 100644 --- a/lib_afc_mosaic/universe_map_file.py +++ b/lib_afc_mosaic/universe_map_file.py @@ -205,9 +205,13 @@ class AFCMUniverseMapFile: amplify_rows = [] removed_rows = [] - voterset_filename_s3_key = os.path.join(self.metadata.get("s3_key", ""), voterset_filename) - file_data_stream = self.voterset_s3_connection.get_object(self.voterset_s3_bucket, - voterset_filename_s3_key) + try: + voterset_filename_s3_key = os.path.join(self.metadata.get("s3_key", ""), voterset_filename) + file_data_stream = self.voterset_s3_connection.get_object(self.voterset_s3_bucket, + voterset_filename_s3_key) + except Exception as ex: + raise Exception(f"universe_map_file.process_file: Failed to get {self.voterset_s3_bucket}/{voterset_filename_s3_key}: {ex}") from ex + rows = read_voterdata_csv_stream(file_data_stream) logging.debug("rows = %s", len(rows)) @@ -236,7 +240,7 @@ class AFCMUniverseMapFile: try: parsed_number = phonenumbers.parse(cell_phone_num,'US') except Exception: # pylint: disable=broad-exception-caught - r['reason'] = f"bad row #{i} in {voterset_filename} reason='could not parse phone number'" + r['afc_error'] = f"bad row #{i} in {voterset_filename}; reason='could not parse phone number'" removed_rows.append(r) if "could not parse phone number" in self.stats["removed_details"]: self.stats["removed_details"]["could not parse phone number"] += 1 @@ -248,7 +252,7 @@ class AFCMUniverseMapFile: if phonenumbers.is_possible_number(parsed_number): possible_number = parsed_number else: - r['reason'] = f"bad row #{i} in {voterset_filename} reason='invalid phone number'" + r['afc_error'] = f"bad row #{i} in {voterset_filename}; reason='invalid phone number'" removed_rows.append(r) if "invalid phone number" in self.stats["removed_details"]: self.stats["removed_details"]["invalid phone number"] += 1 @@ -261,7 +265,7 @@ class AFCMUniverseMapFile: formatted_number = phonenumbers.format_number(possible_number, phonenumbers.PhoneNumberFormat.E164) else: - r['reason'] = f"bad row #{i} in {voterset_filename} reason='invalid phone number'" + r['afc_error'] = f"bad row #{i} in {voterset_filename}; reason='invalid phone number'" removed_rows.append(r) if "invalid phone number" in self.stats["removed_details"]: self.stats["removed_details"]["invalid phone number"] += 1 @@ -271,7 +275,7 @@ class AFCMUniverseMapFile: # look up carrier errors and optouts if formatted_number in self.error_numbers: - r['reason'] = f"bad row #{i} in {voterset_filename} reason='{self.error_numbers[formatted_number]}'" + r['afc_error'] = f"bad row #{i} in {voterset_filename}; reason='{self.error_numbers[formatted_number]}'" removed_rows.append(r) if self.error_numbers[formatted_number] in self.stats["removed_details"]: self.stats["removed_details"][self.error_numbers[formatted_number]] += 1 @@ -281,7 +285,7 @@ class AFCMUniverseMapFile: # last check, make sure we haven't added this number already if formatted_number in self.running_phone_numbers: - r['reason'] = f"bad row #{i} in {voterset_filename} reason='duplicate phone number'" + r['afc_error'] = f"bad row #{i} in {voterset_filename}; reason='duplicate phone number'" removed_rows.append(r) if "duplicate phone number" in self.stats["removed_details"]: self.stats["removed_details"]["duplicate phone number"] += 1