Skip to content

Commit 4683422

Browse files
committed
batch example: check for API key and minimum package version
1 parent 7584855 commit 4683422

2 files changed

Lines changed: 27 additions & 6 deletions

File tree

Changes.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
unreleased
2+
Batch example: warn if no API key present earlier
3+
Batch example: some errors were not printed, e.g. invalid API key
4+
Batch example: Check latest version of opencage package is used
5+
16
v2.3.1 Wed Nov 15 2023
27
New error 'SSLError' which is more explicit in case of SSL certificate chain issues
38
Allow setting a domain name (only used in test suite)

examples/batch.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@
3838
import aiohttp
3939
import backoff
4040
import certifi
41+
import pkg_resources
4142
from tqdm import tqdm
42-
from opencage.geocoder import OpenCageGeocode, SSLError
43+
import opencage
44+
from opencage.geocoder import OpenCageGeocode, OpenCageGeocodeError
4345

4446
# Use certificates from the certifi package instead of those of the operating system
4547
# https://pypi.org/project/certifi/
@@ -50,8 +52,6 @@
5052

5153

5254

53-
54-
5555
API_KEY = ''
5656
FILENAME_INPUT_CSV = 'file_to_geocode.csv'
5757
FILENAME_OUTPUT_CSV = 'file_geocoded.csv'
@@ -70,10 +70,25 @@
7070

7171

7272

73+
# Check OpenCage geocoder is the latest version
74+
#
75+
minimum_required_version = '2.3.1'
76+
package_version = pkg_resources.get_distribution('opencage').version
77+
if pkg_resources.parse_version(package_version) < pkg_resources.parse_version(minimum_required_version):
78+
sys.stderr.write(f"At least version {minimum_required_version} of opencage geocoder package required. ")
79+
sys.stderr.write(f"Try upgrading by running 'pip install --upgrade opencage'.\n")
80+
sys.exit(1)
7381

7482

83+
# Check API key present
84+
#
85+
if len(API_KEY) < 32:
86+
sys.stderr.write(f"API_KEY '{API_KEY}' does not look valid.\n")
87+
sys.exit(1)
7588

7689

90+
# Don't overwrite output file
91+
#
7792
if os.path.exists(FILENAME_OUTPUT_CSV):
7893
sys.stderr.write(f"The output file '{FILENAME_OUTPUT_CSV}' already exists.\n")
7994
sys.exit(1)
@@ -144,6 +159,8 @@ def backoff_hdlr(details):
144159
async def geocode_one_address(address, address_id):
145160
async with OpenCageGeocode(API_KEY, domain=API_DOMAIN, sslcontext=sslcontext) as geocoder:
146161
global FORWARD_OR_REVERSE
162+
163+
geocoding_results = None
147164
try:
148165
if FORWARD_OR_REVERSE == 'reverse' or \
149166
(FORWARD_OR_REVERSE == 'guess' and guess_text_is_coordinate_pair(address)):
@@ -159,9 +176,8 @@ async def geocode_one_address(address, address_id):
159176
# countrycode, language, etc
160177
# see the full list: https://opencagedata.com/api#forward-opt
161178
geocoding_results = await geocoder.geocode_async(address, no_annotations=1)
162-
except SSLError as exc:
163-
sys.stderr.write(str(exc))
164-
179+
except OpenCageGeocodeError as exc:
180+
sys.stderr.write(str(exc) + "\n")
165181
except Exception as exc:
166182
traceback.print_exception(exc, file=sys.stderr)
167183

0 commit comments

Comments
 (0)