- Complete rewrite with beautiful Rich TUI interface - Interactive and CLI modes for flexibility - Robust error handling with clear, helpful messages - Gap filling with linear interpolation support - Coordinate system transforms (pixels/normalized) - Auto-generated output filenames from input - Configurable resolution and Nuke versions - Batch processing support via CLI - Comprehensive documentation in Scripts/README_CONVERTER.md - Updated main README.md with Scripts section
25 lines
799 B
Python
25 lines
799 B
Python
from __future__ import annotations
|
|
|
|
from typing import IO, Callable
|
|
|
|
|
|
def get_fileno(file_like: IO[str]) -> int | None:
|
|
"""Get fileno() from a file, accounting for poorly implemented file-like objects.
|
|
|
|
Args:
|
|
file_like (IO): A file-like object.
|
|
|
|
Returns:
|
|
int | None: The result of fileno if available, or None if operation failed.
|
|
"""
|
|
fileno: Callable[[], int] | None = getattr(file_like, "fileno", None)
|
|
if fileno is not None:
|
|
try:
|
|
return fileno()
|
|
except Exception:
|
|
# `fileno` is documented as potentially raising a OSError
|
|
# Alas, from the issues, there are so many poorly implemented file-like objects,
|
|
# that `fileno()` can raise just about anything.
|
|
return None
|
|
return None
|