diff --git a/aptsources/distro.py b/aptsources/distro.py
index 9aaf3e2..92d3270 100644
--- a/aptsources/distro.py
+++ b/aptsources/distro.py
@@ -557,6 +557,8 @@ class _OSRelease:
return values[0]
return values
+def _get_result(this, that, key):
+ return this.get(key) if this.get(key) else that.get(key)
def get_distro(id=None, codename=None, description=None, release=None):
"""
@@ -568,18 +570,17 @@ def get_distro(id=None, codename=None, description=None, release=None):
"""
# make testing easier
if not (id and codename and description and release):
- result = {}
os_release = _OSRelease()
+ os_result = []
+ lsb_result = _lsb_release()
if os_release.valid:
- result = os_release.result
- else:
- result = _lsb_release()
- id = result['Distributor ID']
- codename = result['Codename']
- description = result['Description']
- release = result['Release']
- # Not available with LSB, use get()
- is_like = result.get('ID_LIKE', [])
+ os_result = os_release.result
+ id = _get_result(os_result, lsb_result, 'Distributor ID')
+ codename = _get_result(os_result, lsb_result, 'Codename')
+ description = _get_result(os_result, lsb_result, 'Description')
+ release = _get_result(os_result, lsb_result, 'Release')
+ # Not available with LSB, use get directly.
+ is_like = os_result.get('ID_LIKE', [])
if id == "Ubuntu":
channel = _system_image_channel()
if channel is not None and "ubuntu-rtm/" in channel: