В docs четко указано, что int (number) является преобразованием типа пола:
int(1.23)
1
и int (string) возвращает int тогда и только тогда, когда строка является целым литералом.
int('1.23')
ValueError
int('1')
1
Есть ли какая-то особая причина для этого? Мне кажется противоречивым, что функция поэта в одном случае, но не в другом.