Looks like it takes `digest` and hex encodes it. Actually, it looks like `hashlib.md5` already has a function `.hexdigest()` that does just that, so line 73's logic can be eliminated altogether. (Sorry, I'm looking at this for the first time, so I didn't notice this earlier.)

A docstring still might not hurt, but I think
```
m = hashlib.md5()
m.update(filename)
return m.hexdigest()
```
is readable enough to be self-explanatory.