Only in a: currency.units diff -ru a/units_cur b/units_cur --- a/units_cur 2018-09-15 16:30:09.000000000 -0400 +++ b/units_cur 2021-07-11 18:01:29.030260473 -0400 @@ -28,8 +28,12 @@ # # -version = '5.0' +version = '5.1' +# Version 5.1: +# +# Switch to urllib to avoid requests dependency. +# # Version 5.0: # # Rewrite to support multiple different data sources due to disappearance @@ -54,8 +58,11 @@ # Python 2 or Python 3. Thanks to Ray Hamel for some help with this update. # Normal imports -import requests import codecs +import json +import urllib.error +import urllib.parse +import urllib.request from argparse import ArgumentParser from collections import OrderedDict from datetime import date @@ -288,11 +295,12 @@ currency[code][rate_index])) def getjson(address,args=None): + if args: + address = address + "?" + urllib.parse.urlencode(args) try: - res = requests.get(address,args) - res.raise_for_status() - return(res.json()) - except requests.exceptions.RequestException as e: + res = urllib.request.urlopen(address) + return(json.load(res)) + except urllib.error.URLError as e: stderr.write('Error connecting to currency server:\n{}.\n'.format(e)) exit(1) @@ -323,9 +331,8 @@ stderr.write('European bank uses euro for base currency. Specified base {} ignored.\n'.format(base)) import xml.etree.ElementTree as ET try: - res=requests.get('https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml') - res.raise_for_status() - data = ET.fromstring(res.content)[2][0] + res=urllib.request.urlopen('https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml') + data = ET.fromstring(res.read())[2][0] except requests.exceptions.RequestException as e: stderr.write('Error connecting to currency server:\n{}.\n'. format(e))