I was looking over the Abe code once again, and came to a stumbling point. I can't understand how this is accurate:
tx['size'] = len(tx['tx'])
Transaction size is simply the length of the raw transaction string? I did not think that 1 character of that string was equal to one byte.
Edit: while tinkering around with this with a simple python command line program, I was able to determine that the block size is actually half of the raw transaction string length. I also found out this:
Each hexadecimal digit represents four binary digits (bits), and the primary use of hexadecimal notation is a human-friendly representation of binary-coded values in computing and digital electronics. One hexadecimal digit represents a nibble, which is half of an octet or byte (8 bits).
Though it still doesn't answer the question, why isn't the size divided by two in the ABE source code?