Repository: rstudio/vetiver-python (language: python)

Issue:
Drop Python 3.8, support 3.13
With 3.8 EOL and 3.13 out, we can re-align with the supported Python versions


Discussion / hints:

Fix patch:
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index a8aeba83..6bff07f6 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -18,7 +18,7 @@ jobs:
           fetch-depth: 0
       - uses: actions/setup-python@v4
         with:
-          python-version: 3.9
+          python-version: "3.10"
       - name: Install dependencies
         run: |
           python -m pip install --upgrade pip
diff --git a/.gitignore b/.gitignore
index 6928296e..c546a16a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,9 @@
 /docs/site/*
 docs/source/reference
 vetiver/templates/*.html
+.vscode/
+license.lic
+
 # Mac specific
 .DS_Store
 
diff --git a/docker-compose.yml b/docker-compose.yml
index f46ad2a4..4262845c 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,5 +1,3 @@
-version: '3.2'
-
 services:
 
   rsconnect:
diff --git a/pyproject.toml b/pyproject.toml
index 97ecad2c..78b3ac54 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -6,10 +6,83 @@ requires = [
 ]
 build-backend = "setuptools.build_meta"
 
+[tool.setuptools.packages.find]
+include = ["vetiver"]
+
+[project]
+name = "vetiver"
+description = "Version, share, deploy, and monitor models."
+readme = { file = "README.md", content-type = "text/markdown" }
+authors = [
+    { name = "Isabel Zimmerman", email = "isabel.zimmerman@posit.co" }
+]
+license = { text = "MIT" }
+keywords = ["data", "mlops"]
+dynamic = ["version"]
+classifiers = [
+    "Programming Language :: Python :: 3.9",
+    "Programming Language :: Python :: 3.10",
+    "Programming Language :: Python :: 3.11",
+    "Programming Language :: Python :: 3.12",
+    "Programming Language :: Python :: 3.13"
+]
+requires-python = ">=3.9"
+
+dependencies  =[
+    "numpy",
+    "pandas",
+    "fastapi",
+    "pydantic",
+    "joblib",
+    "uvicorn",
+    "scikit-learn",
+    "nest-asyncio",
+    "requests",
+    "pins>=0.7.1",
+    "rsconnect-python>=1.11.0",
+    "python-dotenv",
+    "plotly",
+    "pip-tools",
+    "httpx"
+]
+
+[project.optional-dependencies]
+all = [
+    "vetiver[dev]",
+    "vetiver[all_models]",
+    "vetiver[docs]"
+]
+all_models = [
+    "vetiver[torch]",
+    "vetiver[statsmodels]",
+    "vetiver[xgboost]",
+    "vetiver[spacy]"
+]
+dev = [
+    "pytest",
+    "pytest-cov",
+    "pytest-snapshot",
+    "vetiver[typecheck]",
+    "vetiver[docs]"
+]
+docs = [
+    "quartodoc"
+]
+statsmodels = ["statsmodels"]
+torch = ["torch"]
+xgboost = ["xgboost"]
+spacy = ["spacy"]
+typecheck = [
+    "pyright",
+    "pandas-stubs"
+]
+
+[project.urls]
+homepage = "https://github.com/rstudio/vetiver-python"
+documentation = "https://rstudio.github.io/vetiver-python/stable/"
+
 [tool.pytest.ini_options]
 testpaths = ["vetiver"]
-addopts = "--doctest-modules"
-doctest_optionflags = "NORMALIZE_WHITESPACE"
 markers = [
     "rsc_test: tests for connect",
     "docker: tests for docker deployments"
diff --git a/script/setup-rsconnect/rstudio-connect.gcfg b/script/setup-rsconnect/rstudio-connect.gcfg
index 23608bf3..98d0add0 100644
--- a/script/setup-rsconnect/rstudio-connect.gcfg
+++ b/script/setup-rsconnect/rstudio-connect.gcfg
@@ -13,7 +13,6 @@ DefaultUserRole = publisher
 
 [Python]
 Enabled = true
-Executable = /opt/python/3.8.10/bin/python
 Executable = /opt/python/3.9.5/bin/python
 
 [RPackageRepository "CRAN"]
diff --git a/setup.cfg b/setup.cfg
deleted file mode 100644
index 87c8cf0a..00000000
--- a/setup.cfg
+++ /dev/null
@@ -1,77 +0,0 @@
-[metadata]
-name = vetiver
-description = Version, share, deploy, and monitor models.
-long_description = file: README.md
-long_description_content_type = text/markdown
-url = https://github.com/rstudio/vetiver-python
-author = Isabel Zimmerman
-author_email = isabel.zimmerman@posit.co
-license = MIT
-keywords = data, mlops
-classifiers =
-    Programming Language :: Python :: 3.8
-    Programming Language :: Python :: 3.9
-    Programming Language :: Python :: 3.10
-
-
-[options]
-packages = find:
-include_package_data = True
-zipsafe = False
-
-python_requires = >=3.8
-install_requires =
-    numpy
-    pandas
-    fastapi
-    pydantic
-    joblib
-    uvicorn
-    scikit-learn
-    nest-asyncio
-    requests
-    pins>=0.7.1
-    rsconnect-python>=1.11.0
-    python-dotenv
-    plotly
-    pip-tools
-    httpx
-
-
-[options.extras_require]
-all =
-    vetiver[dev]
-    vetiver[all_models]
-    vetiver[docs]
-
-all_models =
-    vetiver[torch]
-    vetiver[statsmodels]
-    vetiver[xgboost]
-    vetiver[spacy]
-
-dev =
-    pytest
-    pytest-cov
-    pytest-snapshot
-    vetiver[typecheck]
-
-docs =
-    quartodoc
-    griffe
-
-statsmodels =
-    statsmodels
-
-torch =
-    torch
-
-xgboost =
-    xgboost
-
-spacy =
-    spacy
-
-typecheck =
-    pyright
-    pandas-stubs
diff --git a/setup.py b/setup.py
deleted file mode 100644
index b024da80..00000000
--- a/setup.py
+++ /dev/null
@@ -1,4 +0,0 @@
-from setuptools import setup
-
-
-setup()


Test patch:
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 87fbcb94..b4815806 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -16,13 +16,15 @@ jobs:
       matrix:
         include:
           - os: 'macos-latest'
-            python-version: '3.8'
-          - os: 'windows-latest'
             python-version: '3.9'
-          - os: 'ubuntu-latest'
+          - os: 'windows-latest'
             python-version: '3.10'
           - os: 'ubuntu-latest'
             python-version: '3.11'
+          - os: 'ubuntu-latest'
+            python-version: '3.12'
+          - os: 'ubuntu-latest'
+            python-version: '3.13'
 
     steps:
       - uses: actions/checkout@v3
@@ -43,15 +45,15 @@ jobs:
       - name: Upload coverage
         uses: codecov/codecov-action@v2
 
-  test-rsconnect:
-    name: "Test RSConnect"
+  test-connect:
+    name: "Test Posit Connect"
     runs-on: ubuntu-latest
     if: ${{ !github.event.pull_request.head.repo.fork }}
     steps:
       - uses: actions/checkout@v3
       - uses: actions/setup-python@v4
         with:
-          python-version: 3.8
+          python-version: "3.9"
       - name: Install dependencies
         run: |
           python -m pip install --upgrade pip
@@ -80,7 +82,7 @@ jobs:
         - uses: actions/checkout@v3
         - uses: actions/setup-python@v4
           with:
-            python-version: 3.8
+            python-version: "3.10"
         - name: Install dependencies
           run: |
             python -m pip install --upgrade pip
@@ -105,7 +107,7 @@ jobs:
       - uses: actions/checkout@v3
       - uses: actions/setup-python@v4
         with:
-          python-version: 3.8
+          python-version: "3.10"
       - name: Install dependencies
         run: |
           python -m pip install --upgrade pip
@@ -122,7 +124,7 @@ jobs:
       - uses: actions/checkout@v3
       - uses: actions/setup-python@v4
         with:
-          python-version: 3.8
+          python-version: 3.9
       - name: Install dependencies
         run: |
           python -m pip install --upgrade pip