Use ruff for linting and formatting (Anh Trinh, #347, #349). Replace tox by pre-commit for linting and formatting (Anh Trinh, #349). Add --config flag to specify path to pyproject.toml configuration file (Glen Robertson, #352).