Repository: sdv-dev/SDGym (language: python)

Issue:
Add dependency checker
### Problem Description

_As a developer, I'd like to know if a new version of a library we depend on is incompatible or not so that we can make changes to support it._

We want to add an automated dependency checker that will install the latest versions of each dependency, run the tests against our library and then update the latest supported dependencies in a file. The bot can open a pull request to do this.

### Expected behavior

- Add a workflow that
   1. Installs SDV with the latest version of every dependency
   2. If any of the dependencies have a new version, update a file to track this
   3. Make a Pull Request to update the dependency list

To support this, the following changes need to be made:
1. We have to uncap our dependencies

### Additional context

- See [this ](https://github.com/sdv-dev/CTGAN/blob/main/.github/workflows/dependency_checker.yml)for inspiration



Discussion / hints:

Fix patch:
diff --git a/.github/workflows/dependency_checker.yml b/.github/workflows/dependency_checker.yml
new file mode 100644
index 00000000..7dbe8703
--- /dev/null
+++ b/.github/workflows/dependency_checker.yml
@@ -0,0 +1,29 @@
+name: Dependency Checker
+on:
+  workflow_dispatch:
+  schedule:
+    - cron: '0 0 * * 1-5'
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v4
+    - name: Set up Python 3.9
+      uses: actions/setup-python@v5
+      with:
+        python-version: 3.9
+    - name: Install dependencies
+      run: |
+        python -m pip install .[dev]
+        make check-deps OUTPUT_FILEPATH=latest_requirements.txt
+    - name: Create pull request
+      id: cpr
+      uses: peter-evans/create-pull-request@v4
+      with:
+        token: ${{ secrets.GH_ACCESS_TOKEN }}
+        commit-message: Update latest dependencies
+        title: Automated Latest Dependency Updates
+        body: "This is an auto-generated PR with **latest** dependency updates."
+        branch: latest-dependency-update
+        branch-suffix: short-commit-hash
+        base: main
diff --git a/Makefile b/Makefile
index 4c2186c8..a1b830ce 100644
--- a/Makefile
+++ b/Makefile
@@ -214,6 +214,12 @@ ifeq ($(CHANGELOG_LINES),0)
 	$(error Please insert the release notes in HISTORY.md before releasing)
 endif
 
+.PHONY: check-deps
+check-deps: # Dependency targets
+	$(eval allow_list='appdirs=|boto3=|botocore=|compress-pickle=|humanfriendly=|\
+	numpy=|pandas=|psutil=|scikit-learn=|scipy=|tabulate=|torch=|tqdm=|XlsxWriter=|rdt=|sdmetrics=|sdv=')
+	pip freeze | grep -v "SDMetrics.git" | grep -E $(allow_list) | sort > $(OUTPUT_FILEPATH)
+
 .PHONY: check-release
 check-release: check-clean check-candidate check-main check-history ## Check if the release can be made
 	@echo "A new release can be made"
diff --git a/pyproject.toml b/pyproject.toml
index 79d1f797..958fbf9a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -20,30 +20,30 @@ license = { text = 'BSL-1.1' }
 requires-python = '>=3.8,<3.12'
 readme = 'README.md'
 dependencies = [
-    'appdirs>=1.3,<2',
-    'boto3>=1.15.0,<2',
-    'botocore>=1.18,<2',
-    'compress-pickle>=1.2.0,<3',
-    'humanfriendly>=8.2,<11',
-    "numpy>=1.20.0,<2;python_version<'3.10'",
-    "numpy>=1.23.3,<2;python_version>='3.10'",
+    'appdirs>=1.3',
+    'boto3>=1.15.0',
+    'botocore>=1.18',
+    'compress-pickle>=1.2.0',
+    'humanfriendly>=8.2',
+    "numpy>=1.20.0;python_version<'3.10'",
+    "numpy>=1.23.3;python_version>='3.10'",
     "pandas>=1.1.3;python_version<'3.10'",
     "pandas>=1.3.4;python_version>='3.10' and python_version<'3.11'",
     "pandas>=1.5.0;python_version>='3.11'",
-    'psutil>=5.7,<6',
+    'psutil>=5.7',
     "scikit-learn>=0.24,<2;python_version<'3.10'",
     "scikit-learn>=1.1.3,<2;python_version>='3.10'",
-    "scipy>=1.5.4,<2;python_version<'3.10'",
-    "scipy>=1.9.2,<2;python_version>='3.10'",
+    "scipy>=1.5.4;python_version<'3.10'",
+    "scipy>=1.9.2;python_version>='3.10'",
     'tabulate>=0.8.3,<0.9',
     "torch>=1.8.0;python_version<'3.10'",
     "torch>=1.11.0;python_version>='3.10' and python_version<'3.11'",
     "torch>=2.0.0;python_version>='3.11'",
-    'tqdm>=4.15,<5',
-    'XlsxWriter>=1.2.8,<4',
-    'rdt>=1.6.1,<2.0',
-    'sdmetrics>=0.11.0,<1.0',
-    'sdv>=1.3.0,<2',
+    'tqdm>=4.15',
+    'XlsxWriter>=1.2.8',
+    'rdt>=1.6.1',
+    'sdmetrics>=0.11.0',
+    'sdv>=1.3.0',
 ]
 
 [project.urls]


Test patch:
diff --git a/latest_requirements.txt b/latest_requirements.txt
new file mode 100644
index 00000000..84ee8c9c
--- /dev/null
+++ b/latest_requirements.txt
@@ -0,0 +1,16 @@
+XlsxWriter==3.2.0
+appdirs==1.4.4
+boto3==1.34.55
+botocore==1.34.55
+compress-pickle==2.1.0
+humanfriendly==10.0
+pandas==2.2.1
+psutil==5.9.8
+rdt==1.9.2
+scikit-learn==1.4.1.post1
+scipy==1.12.0
+sdmetrics==0.13.0
+sdv==1.10.0
+tabulate==0.8.10
+torch==2.2.1
+tqdm==4.66.2