I use uv as my Python package manager and build tool. It’s all I need to install and manage dependencies.

Ruff combines isort, flake8, autoflake, and similar tools into a single command-line interface.

ty is a type checker for Python.

pytest is the most popular testing library for Python.

Pydantic is a data validation and settings management library for Python.

I use MkDocs for documentation and static generation of the website for the project.

I use FastAPI for building APIs.

Handling dependencies is a pain, but Dependabot makes it easier. It automatically checks for outdated dependencies and creates pull requests to update them.

There are three major downscaling algorithms: nearest neighbor interpolation, bilinear interpolation, and bicubic interpolation. Each algorithm requires a different approach to perform an image scaling attack. Furthermore, these algorithms are implemented differently across libraries (e.g., Pillow, PyTorch, OpenCV, TensorFlow), with varying anti-aliasing, alignment, and kernel phases (in addition to distinct bugs that historically have plagued model performance). These differences also impact the techniques necessary for an image scaling attack. Therefore, exploiting production systems required us to fingerprint each system’s algorithm and implementation.