[build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "noshow" version = "2.2.3" authors = [ { name="Ruben Peters", email="r.peters-7@umcutrecht.nl" }, { name="Eric Wolters", email="e.j.wolters-4@umcutrecht.nl" }, { name="Welmoed Tjepkema", email="w.w.a.tjepkema@umcutrecht.nl" } ] description = "No-show prediction model to reduce the amount of no-shows at the clinics" readme = "README.md" requires-python = ">=3.12" classifiers = [ "Programming Language :: Python :: 3", "Operating System :: OS Independent", ] dependencies =[ "pandas~=2.0", "matplotlib~=3.7", "numpy>=1.24", "scikit-learn>=1.3", "pyarrow>=14.0", "fastapi~=0.109", "sqlalchemy~=2.0", "python-dotenv~=1.0", "pymssql>=2.3.3", "streamlit>=1.30,<1.50", # 1.50 introduces bug in selected value in selectbox "relplot>=1.0", "holidays>=0.74", "mlflow>=3.1.0", "rich>=14.0.0", ] [project.scripts] train_no_show = "noshow.train_pipeline:train_pipeline" [dependency-groups] dev = [ "ipykernel>=6.29.2", "pytest>=8.0.1", "nbstripout>=0.7.1", "uvicorn>=0.28.0", "pytest-asyncio>=0.23.6", "pytest-cov>=5.0.0", "alembic>=1.13.3", "rsconnect-python>=1.24.0", "dvc>=3.60.1", ] docs = [ "mkdocs>=1.6.1", "mkdocs-material>=9.6.15", ] lint = [ "ruff>=0.7.1", ] [tool.uv] default-groups = ["dev", "lint"] [tool.isort] profile = "black" [tool.ruff] src = ["src"] exclude = [ "alembic/env.py", "alembic/versions/*.py", ] [tool.ruff.lint] select = [ "B", # flake8-bugbear "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "C90", # mccabe complexity "I", # isort "ERA", # Eradicate (commented out code) "A", # flake8-builtins (overwriting python builtins) "PTH", # flake8-use-pathlib "N", # pep8-naming "D101", # pydocstyle: Missing docstring in class "D102", # pydocstyle: Missing docstring in method "D103", # pydocstyle: Missing docstring in function ] [tool.ruff.lint.pep8-naming] ignore-names = ["X", "X_*"] # Allow the use of X as variable in scikit-learn [tool.ruff.lint.per-file-ignores] "tests/**/*.py" = ["D101", "D102", "D103"] # Allow unit tests without docstring [tool.ruff.lint.flake8-bugbear] extend-immutable-calls = [ "Depends", "fastapi.Depends", "fastapi.params.Depends", "Security", ] [tool.pytest.ini_options] asyncio_default_fixture_loop_scope = "function"