Repository: sdv-dev/Copulas (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 Copulas 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 b6e790df..6969c923 100644
--- a/Makefile
+++ b/Makefile
@@ -249,6 +249,11 @@ 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='numpy=|pandas=|scipy=|plotly=')
+	pip freeze | grep -v "Copulas.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 a9f5429b..855bb89b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -21,16 +21,16 @@ license = { text = 'BSL-1.1' }
 requires-python = '>=3.8,<3.13'
 readme = 'README.md'
 dependencies = [
-    "numpy>=1.20.0,<2;python_version<'3.10'",
-    "numpy>=1.23.3,<2;python_version>='3.10' and python_version<'3.12'",
-    "numpy>=1.26.0,<2;python_version>='3.12'",
+    "numpy>=1.20.0;python_version<'3.10'",
+    "numpy>=1.23.3;python_version>='3.10' and python_version<'3.12'",
+    "numpy>=1.26.0;python_version>='3.12'",
     "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'",
-    'plotly>=5.10.0,<6',
-    "scipy>=1.5.4,<2;python_version<'3.10'",
-    "scipy>=1.9.2,<2;python_version>='3.10' and python_version<'3.12'",
-    "scipy>=1.12.0,<2;python_version>='3.12'",
+    'plotly>=5.10.0',
+    "scipy>=1.5.4;python_version<'3.10'",
+    "scipy>=1.9.2;python_version>='3.10' and python_version<'3.12'",
+    "scipy>=1.12.0;python_version>='3.12'",
 ]
 
 [project.urls]


Test patch:
diff --git a/latest_requirements.txt b/latest_requirements.txt
new file mode 100644
index 00000000..b3ee711d
--- /dev/null
+++ b/latest_requirements.txt
@@ -0,0 +1,4 @@
+numpy==1.26.4
+pandas==2.2.1
+plotly==5.20.0
+scipy==1.13.0