Repository: sdv-dev/CTGAN (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, updates a file to track this
   3. Makes 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/trane-dev/Trane/blob/271066ff3addc8e1755ed1f802b9204628c9ae7a/.github/workflows/dependency_checker.yaml#L20)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..0afe300e
--- /dev/null
+++ b/.github/workflows/dependency_checker.yml
@@ -0,0 +1,29 @@
+name: Dependency Checker
+on:
+  schedule:
+    - cron: '0 0 * * 1-5'
+  workflow_dispatch:
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v3
+    - name: Set up Python 3.9
+      uses: actions/setup-python@v4
+      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 ea6a8132..a3e3db94 100644
--- a/Makefile
+++ b/Makefile
@@ -238,3 +238,10 @@ release-minor: check-release bumpversion-minor release
 
 .PHONY: release-major
 release-major: check-release bumpversion-major release
+
+# Dependency targets
+
+.PHONY: check-deps
+checkdeps:
+	$(eval allow_list='numpy|pandas|scikit-learn|tqdm|torch|rdt')
+	pip freeze | grep -v "CTGAN.git" | grep -E $(allow_list) > $(OUTPUT_FILEPATH)
diff --git a/setup.py b/setup.py
index 4a9a260b..545f5273 100644
--- a/setup.py
+++ b/setup.py
@@ -12,17 +12,17 @@
     history = history_file.read()
 
 install_requires = [
-    "numpy>=1.20.0,<2;python_version<'3.10'",
-    "numpy>=1.23.3,<2;python_version>='3.10'",
+    "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'",
-    "scikit-learn>=1.1.3,<2;python_version>='3.10'",
+    "scikit-learn>=1.1.3;python_version>='3.10'",
     "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',
-    'rdt>=1.6.1,<2.0',
+    'tqdm>=4.15',
+    'rdt>=1.6.1',
 ]
 
 setup_requires = [


Test patch:
diff --git a/latest_requirements.txt b/latest_requirements.txt
new file mode 100644
index 00000000..28aa9ce9
--- /dev/null
+++ b/latest_requirements.txt
@@ -0,0 +1,6 @@
+numpy==1.26.4
+pandas==2.2.1
+scikit-learn==1.4.1.post1
+tqdm==4.66.2
+torch==2.2.1
+rdt==1.9.2
\ No newline at end of file