## Summary
The public API accepts `Optional[float]` for timeout parameters (e.g.,
`60.0`), but `_create_stream_timeout` was typed as `Optional[int]` and
passed the value directly to `str()`, producing `'60000.0'` instead of
`'60000'`.
The Go backend's `strconv.ParseInt` fails on float strings, causing
'invalid syntax' errors for valid timeout values.
## Changes
- Updates type hint to `Optional[float]` for consistency with public API
- Wraps `timeout * 1000` in `int()` before `str()` conversion
## Test
```python
# Before: str(60.0 * 1000) -> '60000.0' (fails ParseInt)
# After: str(int(60.0 * 1000)) -> '60000' (works)
```
Fixes#1063