The else block should have a return inc(sum,vec).
Why? Take a look at this:
- inc(0, [6, 7])called- 
- in else-> callinginc(6, [7])
- in else-> callinginc(13, [])
- in if vec == []-> returning13to previous caller
 
- now inc(13, []) == 13and that's all, this value is not passed anywhere
 
- inc(6, [7])doesn't return anything
 
- inc(0, [6, 7])doesn't return anything
BTW, if vec == [] can be safely replaced with if not vec and sum = sum + vec.pop(0) - with sum += vec.pop(0) for more clarity (although this line might me altogether omitted, see below).
All in all, the code could look like this:
def inc(sum, vec):
    if not vec:
        return sum
    return inc(sum + vec.pop(0), vec)
What's more, you could've used a default value with the sum argument:
def inc(vec, sum = 0): # << right here
    if not vec:
        return sum
    return inc(vec, sum + vec.pop(0)) # change the argument position
With that the call to this function will be clearer:
inc(0, [6, 7]) # before
inc([6, 7])    # after
If you want a one-liner (might be a bit less readable, though):
def inc(vec, sum = 0):
    # return sum if vec is empty or the _result_ of a recursive call otherwise
    return sum if not vec else inc(vec, sum + vec.pop(0))