diff --git a/cassandra/metadata.py b/cassandra/metadata.py index 0b403bc324..906c3a73e5 100644 --- a/cassandra/metadata.py +++ b/cassandra/metadata.py @@ -19,7 +19,6 @@ from collections import defaultdict from collections.abc import Mapping from functools import total_ordering -from hashlib import md5 import json import logging import re @@ -28,6 +27,12 @@ import struct import random +md5 = None +try: + from hashlib import md5 +except ImportError as e: + pass + murmur3 = None try: from cassandra.murmur3 import murmur3 @@ -1827,6 +1832,8 @@ def __repr__(self): class NoMurmur3(Exception): pass +class NoMD5(Exception): + pass class HashToken(Token): @@ -1862,6 +1869,8 @@ class MD5Token(HashToken): @classmethod def hash_fn(cls, key): + if md5 is None: + raise NoMD5() if isinstance(key, str): key = key.encode('UTF-8') return abs(varint_unpack(md5(key).digest()))