diff --git a/.github/meta.yaml b/.github/meta.yaml index 640bba5198..909acb4c24 100644 --- a/.github/meta.yaml +++ b/.github/meta.yaml @@ -20,27 +20,27 @@ outputs: script: build_script.sh requirements: host: - - python >=3.8 + - python >=3.9, <=3.11 - pip - - setuptools ==58.0.4 + - setuptools >=58.0.4 run: - - numpy >=1.22.0 + - numpy >=1.22.0 - pandas >=1.5.0, <2.1.0 - dask >=2022.2.0, !=2022.10.1 - scipy >=1.5.0, <1.12.0 - - scikit-learn >=1.3.0 + - scikit-learn >=1.3.2 - scikit-optimize >=0.9.0 - statsmodels >=0.12.2 - colorama >=0.4.4 - cloudpickle >=1.5.0 - - click>=8.0.0 + - click >=8.0.0 - shap >=0.42.0, <0.45.0 - texttable >=1.6.2 - woodwork >=0.22.0 - - featuretools>=1.16.0 - - nlp-primitives>=2.9.0 - - python >=3.8.* - - networkx >=2.6, <3.2 + - featuretools >=1.16.0 + - nlp-primitives >=2.9.0 + - python >=3.9.* + - networkx >=2.7 - category_encoders >=2.2.2, <=2.5.1.post0 - python-graphviz >=0.13 - tomli >=2.0.1 @@ -52,8 +52,8 @@ outputs: imports: - evalml requires: - - pytest ==6.0.1 - - nbval ==0.9.3 + - pytest ==6.2.5 + - nbval >=0.9.3 source_files: - evalml/* - pyproject.toml @@ -77,7 +77,7 @@ outputs: - catboost >=1.1.1 - lightgbm >=4.0.0 - lime >=0.2.0.1 - - python >=3.8.* + - python >=3.9.*, <=3.11 - imbalanced-learn >=0.11.0 - sktime >=0.21.0, <0.29.0 - pmdarima >=1.8.5 @@ -86,8 +86,8 @@ outputs: imports: - evalml requires: - - pytest ==6.0.1 - - nbval ==0.9.3 + - pytest ==6.2.5 + - nbval >=0.9.3 - python-graphviz >=0.8.4 - category_encoders >=2.0.0, <=2.5.1.post0 - pytest-xdist @@ -110,13 +110,11 @@ about: extra: recipe-maintainers: - - dsherry - ParthivNaresh - bchen1116 - chukarsten - jeremyliweishih - christopherbunn - - fjlanasa - eccabay - MichaelFu512 - ivanayx diff --git a/.github/workflows/build_conda_pkg.yaml b/.github/workflows/build_conda_pkg.yaml index bcf5187f75..12a54c05c4 100644 --- a/.github/workflows/build_conda_pkg.yaml +++ b/.github/workflows/build_conda_pkg.yaml @@ -15,10 +15,10 @@ jobs: build_conda_pkg: runs-on: ubuntu-latest steps: - - name: Set up Python 3.8 + - name: Set up Python 3.9 uses: actions/setup-python@v4 with: - python-version: 3.8 + python-version: 3.9 - name: Checkout repository uses: actions/checkout@v3 with: diff --git a/.github/workflows/check_conda_pkg_versions.yaml b/.github/workflows/check_conda_pkg_versions.yaml index d0c744ddac..4cf282c0de 100644 --- a/.github/workflows/check_conda_pkg_versions.yaml +++ b/.github/workflows/check_conda_pkg_versions.yaml @@ -14,10 +14,10 @@ jobs: check_versions: runs-on: ubuntu-latest steps: - - name: Set up Python 3.8 + - name: Set up Python 3.9 uses: actions/setup-python@v4 with: - python-version: 3.8 + python-version: 3.9 - name: Checkout repository uses: actions/checkout@v3 with: diff --git a/.github/workflows/detect_changes.yaml b/.github/workflows/detect_changes.yaml index 8376bb8978..e3e050be38 100644 --- a/.github/workflows/detect_changes.yaml +++ b/.github/workflows/detect_changes.yaml @@ -11,7 +11,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-python@v1 with: - python-version: '3.8.x' + python-version: '3.9.x' - name: Install Dependencies run: | make installdeps-test diff --git a/.github/workflows/install_test.yaml b/.github/workflows/install_test.yaml index dd3d708e53..121afc2b71 100644 --- a/.github/workflows/install_test.yaml +++ b/.github/workflows/install_test.yaml @@ -15,7 +15,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest, macos-latest] - python_version: ["3.8", "3.9", "3.10"] + python_version: ["3.9", "3.10", "3.11"] exclude: - os: macos-latest python-version: "3.8" diff --git a/.github/workflows/latest_dependency_checker.yaml b/.github/workflows/latest_dependency_checker.yaml index 5d7bdd391d..f38404501c 100644 --- a/.github/workflows/latest_dependency_checker.yaml +++ b/.github/workflows/latest_dependency_checker.yaml @@ -11,7 +11,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-python@v1 with: - python-version: '3.8.x' + python-version: '3.9.x' - name: Update dependencies id: vars run: | diff --git a/.github/workflows/lint_tests.yaml b/.github/workflows/lint_tests.yaml index 82e5381662..ec3dc42245 100644 --- a/.github/workflows/lint_tests.yaml +++ b/.github/workflows/lint_tests.yaml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python_version: ["3.9"] + python_version: ["3.9", "3.10"] steps: - name: Checkout repository uses: actions/checkout@v3 diff --git a/.github/workflows/linux_integration_tests.yaml b/.github/workflows/linux_integration_tests.yaml index 2a1a744c15..b0296792e6 100644 --- a/.github/workflows/linux_integration_tests.yaml +++ b/.github/workflows/linux_integration_tests.yaml @@ -15,7 +15,7 @@ jobs: fail-fast: false matrix: include: - - python_version: "3.8" + - python_version: "3.9" command: 'git-test-integration' steps: diff --git a/.github/workflows/linux_nightlies.yaml b/.github/workflows/linux_nightlies.yaml index 45c313b6a4..6022c396ea 100644 --- a/.github/workflows/linux_nightlies.yaml +++ b/.github/workflows/linux_nightlies.yaml @@ -12,7 +12,7 @@ jobs: strategy: fail-fast: false matrix: - python_version: ['3.8', '3.9'] + python_version: ['3.9'] command: ['git-test-automl', 'git-test-modelunderstanding', 'git-test-other', 'git-test-parallel', 'git-test-prophet'] steps: - name: Set up Python ${{ matrix.python_version }} diff --git a/.github/workflows/linux_unit_tests_with_latest_deps.yaml b/.github/workflows/linux_unit_tests_with_latest_deps.yaml index 80d7633cee..ced7f343c0 100644 --- a/.github/workflows/linux_unit_tests_with_latest_deps.yaml +++ b/.github/workflows/linux_unit_tests_with_latest_deps.yaml @@ -17,15 +17,13 @@ jobs: include: - python_version: "3.9" command: 'git-test-automl' - - python_version: "3.8" - command: 'git-test-automl' - - python_version: "3.8" + - python_version: "3.9" command: 'git-test-prophet' - - python_version: "3.8" + - python_version: "3.9" command: 'git-test-modelunderstanding' - - python_version: "3.8" + - python_version: "3.9" command: 'git-test-other' - - python_version: "3.8" + - python_version: "3.9" command: 'git-test-parallel' steps: - name: Set up Python ${{ matrix.python_version }} diff --git a/.github/workflows/linux_unit_tests_with_minimum_deps.yaml b/.github/workflows/linux_unit_tests_with_minimum_deps.yaml index aa77e3db89..ade8d2cb6a 100644 --- a/.github/workflows/linux_unit_tests_with_minimum_deps.yaml +++ b/.github/workflows/linux_unit_tests_with_minimum_deps.yaml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - python_version: ['3.8'] + python_version: ['3.9'] command: ['git-test-automl', 'git-test-modelunderstanding', 'git-test-other', 'git-test-parallel', 'git-test-prophet'] steps: - name: Set up Python ${{ matrix.python_version }} diff --git a/.github/workflows/unit_tests_with_featuretools_main_branch.yaml b/.github/workflows/unit_tests_with_featuretools_main_branch.yaml index 186efb6d04..b451bd48c5 100644 --- a/.github/workflows/unit_tests_with_featuretools_main_branch.yaml +++ b/.github/workflows/unit_tests_with_featuretools_main_branch.yaml @@ -9,7 +9,7 @@ jobs: strategy: fail-fast: true matrix: - python_version: ["3.8", "3.9"] + python_version: ["3.9", "3.10", "3.11"] libraries: ["core"] steps: - name: Set up python ${{ matrix.python_version }} diff --git a/.github/workflows/unit_tests_with_woodwork_main_branch.yaml b/.github/workflows/unit_tests_with_woodwork_main_branch.yaml index 0968db3ee7..40bcc7681c 100644 --- a/.github/workflows/unit_tests_with_woodwork_main_branch.yaml +++ b/.github/workflows/unit_tests_with_woodwork_main_branch.yaml @@ -9,7 +9,7 @@ jobs: strategy: fail-fast: true matrix: - python_version: ["3.8", "3.9"] + python_version: ["3.9", "3.10", "3.11"] libraries: ["core"] steps: - name: Set up python ${{ matrix.python_version }} diff --git a/.github/workflows/windows_nightlies.yaml b/.github/workflows/windows_nightlies.yaml index 5fa81e0251..8e7c7656ab 100644 --- a/.github/workflows/windows_nightlies.yaml +++ b/.github/workflows/windows_nightlies.yaml @@ -12,7 +12,7 @@ jobs: strategy: fail-fast: false matrix: - python_version: ['3.8'] + python_version: ['3.9', '3.10', '3.11'] command: ['git-test-automl', 'git-test-modelunderstanding', 'git-test-other', 'git-test-parallel', 'git-test-prophet'] steps: - name: Download Miniconda @@ -51,7 +51,7 @@ jobs: . $env:USERPROFILE\Miniconda3\shell\condabin\conda-hook.ps1 conda activate curr_py conda config --add channels conda-forge - conda install -q -y -c conda-forge python-graphviz graphviz + conda install -q -y -c conda-forge python-graphviz graphviz=9.0.0 pango=1.52.2 - name: Install numba (for shap) run: | . $env:USERPROFILE\Miniconda3\shell\condabin\conda-hook.ps1 diff --git a/.github/workflows/windows_unit_tests.yaml b/.github/workflows/windows_unit_tests.yaml index 8cf20318b5..c6cd519c24 100644 --- a/.github/workflows/windows_unit_tests.yaml +++ b/.github/workflows/windows_unit_tests.yaml @@ -14,7 +14,7 @@ jobs: strategy: fail-fast: false matrix: - python_version: ['3.8'] + python_version: ['3.9'] command: ['git-test-automl', 'git-test-modelunderstanding', 'git-test-other', 'git-test-parallel', 'git-test-prophet'] steps: - name: Download Miniconda @@ -53,7 +53,7 @@ jobs: . $env:USERPROFILE\Miniconda3\shell\condabin\conda-hook.ps1 conda activate curr_py conda config --add channels conda-forge - conda install -q -y -c conda-forge python-graphviz graphviz + conda install -q -y -c conda-forge python-graphviz graphviz=9.0.0 pango=1.52.2 - name: Install numba (for shap) run: | . $env:USERPROFILE\Miniconda3\shell\condabin\conda-hook.ps1 diff --git a/.readthedocs.yaml b/.readthedocs.yaml index b496269e0c..09580f9a7e 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -7,7 +7,7 @@ version: 2 build: os: ubuntu-22.04 tools: - python: "3.8" + python: "3.9" apt_packages: - graphviz diff --git a/contributing.md b/contributing.md index 446b210e87..6dc0481c32 100644 --- a/contributing.md +++ b/contributing.md @@ -11,7 +11,7 @@ We currently utilize GitHub Issues as our project management tool for EvalML. Pl #### 1. Clone repo -The code is hosted on GitHub, so you will need to use Git to clone the project and make changes to the codebase. Once you have obtained a copy of the code, you should create a development environment that is separate from your existing Python environment so that you can make and test changes without compromising your own work environment. Additionally, you must make sure that the version of Python you use is at least 3.8. Using `conda` you can use `conda create -n evalml python=3.8` and `conda activate evalml` before the following steps. +The code is hosted on GitHub, so you will need to use Git to clone the project and make changes to the codebase. Once you have obtained a copy of the code, you should create a development environment that is separate from your existing Python environment so that you can make and test changes without compromising your own work environment. Additionally, you must make sure that the version of Python you use is at least 3.9. Using `conda` you can use `conda create -n evalml python=3.9` and `conda activate evalml` before the following steps. * clone with `git clone https://github.com/alteryx/evalml.git` * install in edit mode with: ```bash @@ -23,7 +23,7 @@ The code is hosted on GitHub, so you will need to use Git to clone the project a Note that if you're on Mac, there are a few extra steps you'll want to keep track of. * In order to run on Mac, [LightGBM requires the OpenMP library to be installed](https://evalml.alteryx.com/en/stable/install.html#Mac), which can be done with HomeBrew by running `brew install libomp` -* We've seen some installs get the following warning when importing evalml: "UserWarning: Could not import the lzma module. Your installed Python is incomplete. Attempting to use lzma compression will result in a RuntimeError". [A known workaround](https://stackoverflow.com/a/61531555/841003) is to run `brew reinstall readline xz` before installing the python version you're using via pyenv. If you've already installed a python version in pyenv, consider deleting it and reinstalling. v3.8.2 is known to work. +* We've seen some installs get the following warning when importing evalml: "UserWarning: Could not import the lzma module. Your installed Python is incomplete. Attempting to use lzma compression will result in a RuntimeError". [A known workaround](https://stackoverflow.com/a/61531555/841003) is to run `brew reinstall readline xz` before installing the python version you're using via pyenv. If you've already installed a python version in pyenv, consider deleting it and reinstalling. v3.9.2 is known to work. #### 2. Implement your Pull Request diff --git a/core-requirements.txt b/core-requirements.txt index 06e01b9e91..6a7f4dc3ed 100644 --- a/core-requirements.txt +++ b/core-requirements.txt @@ -1,7 +1,7 @@ numpy>=1.21.0 pandas>=1.5.0, <2.1.0 scipy>=1.5.0, <1.12.0 -scikit-learn>=1.3.0 +scikit-learn>=1.3.2 scikit-optimize>=0.9.0 pyzmq>=20.0.0 colorama>=0.4.4 @@ -14,4 +14,4 @@ woodwork>= 0.21.1 dask>=2022.2.0, !=2022.10.1 nlp-primitives>=2.9.0 featuretools>=1.16.0 -networkx>=2.6, <3.2 +networkx>=2.7 diff --git a/docs/notebook_version_standardizer.py b/docs/notebook_version_standardizer.py index 01a01c8c93..d74448c152 100644 --- a/docs/notebook_version_standardizer.py +++ b/docs/notebook_version_standardizer.py @@ -13,7 +13,7 @@ def _get_python_version(notebook): return version -def _standardize_python_version(notebook, desired_version="3.8.6"): +def _standardize_python_version(notebook, desired_version="3.9.6"): with open(notebook, "r") as f: source = json.load(f) source["metadata"]["language_info"]["version"] = desired_version @@ -32,7 +32,7 @@ def _get_ipython_notebooks(docs_source): return notebooks -def _get_notebooks_with_different_versions(notebooks, desired_version="3.8.6"): +def _get_notebooks_with_different_versions(notebooks, desired_version="3.9.6"): different_versions = [] for notebook in notebooks: version = _get_python_version(notebook) @@ -41,7 +41,7 @@ def _get_notebooks_with_different_versions(notebooks, desired_version="3.8.6"): return different_versions -def _standardize_versions(notebooks, desired_version="3.8.6"): +def _standardize_versions(notebooks, desired_version="3.9.6"): for notebook in notebooks: _standardize_python_version(notebook, desired_version) @@ -115,7 +115,7 @@ def cli(): @cli.command() @click.option( "--desired-version", - default="3.8.6", + default="3.9.6", help="python version that all notebooks should match", ) def check_versions(desired_version): @@ -136,7 +136,7 @@ def check_versions(desired_version): @cli.command() @click.option( "--desired-version", - default="3.8.6", + default="3.9.6", help="python version that all notebooks should match", ) def standardize(desired_version): diff --git a/docs/source/demos/cost_benefit_matrix.ipynb b/docs/source/demos/cost_benefit_matrix.ipynb index fee8beaf09..10ea9c7ae3 100644 --- a/docs/source/demos/cost_benefit_matrix.ipynb +++ b/docs/source/demos/cost_benefit_matrix.ipynb @@ -284,7 +284,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/demos/fraud.ipynb b/docs/source/demos/fraud.ipynb index c75fa71a48..597723aba7 100644 --- a/docs/source/demos/fraud.ipynb +++ b/docs/source/demos/fraud.ipynb @@ -305,7 +305,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/demos/lead_scoring.ipynb b/docs/source/demos/lead_scoring.ipynb index 2183de5f60..dbea3434e4 100644 --- a/docs/source/demos/lead_scoring.ipynb +++ b/docs/source/demos/lead_scoring.ipynb @@ -356,7 +356,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/demos/text_input.ipynb b/docs/source/demos/text_input.ipynb index a5640078c5..f39d8d615e 100644 --- a/docs/source/demos/text_input.ipynb +++ b/docs/source/demos/text_input.ipynb @@ -467,7 +467,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/index.ipynb b/docs/source/index.ipynb index 90f022a5cf..419579b992 100644 --- a/docs/source/index.ipynb +++ b/docs/source/index.ipynb @@ -101,7 +101,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/install.md b/docs/source/install.md index cd9251704a..f77518a571 100644 --- a/docs/source/install.md +++ b/docs/source/install.md @@ -13,7 +13,7 @@ kernelspec: # Install -EvalML is available for Python 3.8 and 3.9. It can be installed from [pypi](https://pypi.org/project/evalml/), [conda-forge](https://anaconda.org/conda-forge/evalml), or from [source](https://github.com/alteryx/evalml). +EvalML is available for Python 3.9 - 3.11. It can be installed from [pypi](https://pypi.org/project/evalml/), [conda-forge](https://anaconda.org/conda-forge/evalml), or from [source](https://github.com/alteryx/evalml). To install EvalML on your platform, run one of the following commands: @@ -110,6 +110,9 @@ If you are using `pip` to install EvalML on Windows, it is recommended you first The [XGBoost](https://pypi.org/project/xgboost/) library may not be pip-installable in some Windows environments. If you are encountering installation issues, please try installing XGBoost from [Github](https://xgboost.readthedocs.io/en/latest/build.html) before installing EvalML or install evalml with conda. +Note: there are two graphviz, `python-graphviz` and `graphviz`. If you run into issues, ensure that `python-graphviz` version is >= 0.20.3. If there are still +issues related to `graphviz`, you can try `conda install -c conda-forge graphviz` where `graphviz` version >= 9.0.0 + ## Mac Additional Requirements & Troubleshooting In order to run on Mac, [LightGBM](https://pypi.org/project/lightgbm/) requires the `OpenMP` library to be installed, which can be done with [HomeBrew](https://brew.sh/) by running: diff --git a/docs/source/release_notes.rst b/docs/source/release_notes.rst index 352c0370bb..c64251c024 100644 --- a/docs/source/release_notes.rst +++ b/docs/source/release_notes.rst @@ -5,6 +5,7 @@ Release Notes * Reformatted files with updated black version :pr:`4395` * Fixes * Changes + * Dropped support for Python 3.8 :pr:`4414` * Documentation Changes * Testing Changes * Run airflow tests in Python 3.9 :pr:`4391` @@ -13,6 +14,7 @@ Release Notes .. warning:: **Breaking Changes** + * Dropped support for Python 3.7 :pr:`3291` **v0.83.0 Feb 2, 2024** diff --git a/docs/source/start.ipynb b/docs/source/start.ipynb index d8cf804652..269286891e 100644 --- a/docs/source/start.ipynb +++ b/docs/source/start.ipynb @@ -282,7 +282,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/tutorials.ipynb b/docs/source/tutorials.ipynb index b202c3aae9..543ed4c8ce 100644 --- a/docs/source/tutorials.ipynb +++ b/docs/source/tutorials.ipynb @@ -70,7 +70,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/user_guide.ipynb b/docs/source/user_guide.ipynb index 624998a2dd..dd380f4792 100644 --- a/docs/source/user_guide.ipynb +++ b/docs/source/user_guide.ipynb @@ -147,7 +147,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/user_guide/automl.ipynb b/docs/source/user_guide/automl.ipynb index 22a811a888..245e7c13ab 100644 --- a/docs/source/user_guide/automl.ipynb +++ b/docs/source/user_guide/automl.ipynb @@ -1199,7 +1199,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" }, "vscode": { "interpreter": { diff --git a/docs/source/user_guide/component_graphs.ipynb b/docs/source/user_guide/component_graphs.ipynb index efa164431a..c9319b5a55 100644 --- a/docs/source/user_guide/component_graphs.ipynb +++ b/docs/source/user_guide/component_graphs.ipynb @@ -276,7 +276,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/user_guide/components.ipynb b/docs/source/user_guide/components.ipynb index 1bdf0f8119..772220a7ac 100644 --- a/docs/source/user_guide/components.ipynb +++ b/docs/source/user_guide/components.ipynb @@ -513,7 +513,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/user_guide/data_check_actions.ipynb b/docs/source/user_guide/data_check_actions.ipynb index 832de1aaed..130ba38f0d 100644 --- a/docs/source/user_guide/data_check_actions.ipynb +++ b/docs/source/user_guide/data_check_actions.ipynb @@ -319,7 +319,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/user_guide/data_checks.ipynb b/docs/source/user_guide/data_checks.ipynb index c27eee2045..51c14a3cad 100644 --- a/docs/source/user_guide/data_checks.ipynb +++ b/docs/source/user_guide/data_checks.ipynb @@ -893,7 +893,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/user_guide/faq.ipynb b/docs/source/user_guide/faq.ipynb index 90cc105cdd..bca98fcc6f 100644 --- a/docs/source/user_guide/faq.ipynb +++ b/docs/source/user_guide/faq.ipynb @@ -64,7 +64,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/user_guide/model_understanding.ipynb b/docs/source/user_guide/model_understanding.ipynb index 3c8ecae81c..2a39950030 100644 --- a/docs/source/user_guide/model_understanding.ipynb +++ b/docs/source/user_guide/model_understanding.ipynb @@ -996,7 +996,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/user_guide/objectives.ipynb b/docs/source/user_guide/objectives.ipynb index d178f77d5a..d6eb5f5995 100644 --- a/docs/source/user_guide/objectives.ipynb +++ b/docs/source/user_guide/objectives.ipynb @@ -303,7 +303,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/user_guide/pipelines.ipynb b/docs/source/user_guide/pipelines.ipynb index 24972adbb4..8dabdee3b2 100644 --- a/docs/source/user_guide/pipelines.ipynb +++ b/docs/source/user_guide/pipelines.ipynb @@ -683,7 +683,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/user_guide/timeseries.ipynb b/docs/source/user_guide/timeseries.ipynb index 5315752404..ab899a72bd 100644 --- a/docs/source/user_guide/timeseries.ipynb +++ b/docs/source/user_guide/timeseries.ipynb @@ -1433,7 +1433,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/docs/source/user_guide/utilities.ipynb b/docs/source/user_guide/utilities.ipynb index 03082d81d2..3f42e9ea95 100644 --- a/docs/source/user_guide/utilities.ipynb +++ b/docs/source/user_guide/utilities.ipynb @@ -53,7 +53,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.6" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/evalml/tests/dependency_update_check/latest_dependency_versions.txt b/evalml/tests/dependency_update_check/latest_dependency_versions.txt index 7b325b58cc..9cd8226313 100644 --- a/evalml/tests/dependency_update_check/latest_dependency_versions.txt +++ b/evalml/tests/dependency_update_check/latest_dependency_versions.txt @@ -4,9 +4,10 @@ category-encoders==2.5.1.post0 click==8.1.7 cloudpickle==3.0.0 colorama==0.4.6 -dask==2023.5.0 -distributed==2023.5.0 -featuretools==1.28.0 +dask==2024.5.0 +dask-expr==1.1.0 +distributed==2024.5.0 +featuretools==1.31.0 graphviz==0.20.3 holidays==0.20 imbalanced-learn==0.12.2 @@ -14,25 +15,25 @@ ipywidgets==8.1.2 kaleido==0.1.0 lightgbm==4.3.0 lime==0.2.0.1 -matplotlib==3.7.5 +matplotlib==3.9.0 matplotlib-inline==0.1.7 -networkx==3.1 -nlp-primitives==2.11.0 -numpy==1.24.4 +networkx==3.2.1 +nlp-primitives==2.13.0 +numpy==1.26.4 packaging==24.0 pandas==2.0.3 plotly==5.22.0 pmdarima==2.0.4 pyzmq==26.0.3 -scikit-learn==1.3.2 +scikit-learn==1.4.2 scikit-optimize==0.10.1 -scipy==1.10.1 +scipy==1.11.4 seaborn==0.13.2 shap==0.44.1 sktime==0.28.1 -statsmodels==0.14.1 +statsmodels==0.14.2 texttable==1.7.0 tomli==2.0.1 vowpalwabbit==9.9.0 -woodwork==0.27.0 +woodwork==0.31.0 xgboost==2.0.3 diff --git a/evalml/tests/dependency_update_check/make_deps_diff.sh b/evalml/tests/dependency_update_check/make_deps_diff.sh index bea144d74a..64d126f145 100755 --- a/evalml/tests/dependency_update_check/make_deps_diff.sh +++ b/evalml/tests/dependency_update_check/make_deps_diff.sh @@ -1,4 +1,4 @@ reqs_list=$(python -c "import os; from evalml.utils import get_evalml_pip_requirements; print('\n'.join(get_evalml_pip_requirements(os.getcwd())))") allow_list=$(echo ${reqs_list} | grep -oE "[a-zA-Z]+[a-zA-Z_\-]*" | grep -v "post" | tr "_" "-" | paste -d "|" -s -) echo "Allow list: ${allow_list}" -pip freeze | grep -v "evalml.git" | grep -E "${allow_list}" > "${DEPENDENCY_FILE_PATH}" +(pip freeze | grep -v "evalml.git") | tr "_" "-" | grep -E "${allow_list}" > "${DEPENDENCY_FILE_PATH}" diff --git a/evalml/tests/dependency_update_check/minimum_requirements.txt b/evalml/tests/dependency_update_check/minimum_requirements.txt index 6e4436381c..0835d09de4 100644 --- a/evalml/tests/dependency_update_check/minimum_requirements.txt +++ b/evalml/tests/dependency_update_check/minimum_requirements.txt @@ -15,7 +15,7 @@ kaleido==0.1.0 lightgbm==4.0.0 lime==0.2.0.1 matplotlib==3.3.3 -networkx==2.6 +networkx==2.7 nlp-primitives==2.9.0 numpy==1.22.0 packaging==23.0 diff --git a/evalml/tests/dependency_update_check/minimum_test_requirements.txt b/evalml/tests/dependency_update_check/minimum_test_requirements.txt index f0d6252a49..c044f0b128 100644 --- a/evalml/tests/dependency_update_check/minimum_test_requirements.txt +++ b/evalml/tests/dependency_update_check/minimum_test_requirements.txt @@ -1,5 +1,5 @@ IPython==8.10.0 -PyYAML==5.4 +PyYAML==6.0.1 black[jupyter]==22.3.0 catboost==1.1.1 category-encoders==2.2.2 @@ -19,7 +19,7 @@ lightgbm==4.0.0 lime==0.2.0.1 matplotlib==3.3.3 nbval==0.9.3 -networkx==2.6 +networkx==2.7 nlp-primitives==2.9.0 numpy==1.22.0 packaging==23.0 diff --git a/evalml/tests/model_understanding_tests/test_partial_dependence.py b/evalml/tests/model_understanding_tests/test_partial_dependence.py index 3088ad5213..5594097f71 100644 --- a/evalml/tests/model_understanding_tests/test_partial_dependence.py +++ b/evalml/tests/model_understanding_tests/test_partial_dependence.py @@ -1,3 +1,4 @@ +import collections import re from unittest.mock import patch @@ -720,6 +721,17 @@ def round_dict_keys(dictionary, places=6): dictionary_rounded[round(key, places)] = dictionary[key] return dictionary_rounded + def check_dicts_approx_equal(part_dep_ans, part_dep_dict, abs=1e-3): + keys_part_dep_ans = list(part_dep_ans.keys()) + keys_part_dep_dict = list(part_dep_dict.keys()) + keys_part_dep_ans.sort() + keys_part_dep_dict.sort() + + assert keys_part_dep_ans == pytest.approx(keys_part_dep_dict, abs=abs) + assert collections.Counter(list(part_dep_ans.values())) == collections.Counter( + list(part_dep_dict.values()), + ) + X, y = fraud_local X = X[:100] y = y[:100] @@ -753,7 +765,7 @@ def round_dict_keys(dictionary, places=6): grid_resolution=round(num_cat_features / 2), ) part_dep_dict = dict(part_dep["partial_dependence"].value_counts()) - assert part_dep_ans_rounded == round_dict_keys(part_dep_dict) + check_dicts_approx_equal(part_dep_ans_rounded, round_dict_keys(part_dep_dict)) fast_part_dep = partial_dependence( pipeline, @@ -774,7 +786,7 @@ def round_dict_keys(dictionary, places=6): grid_resolution=round(num_cat_features), ) part_dep_dict = dict(part_dep["partial_dependence"].value_counts()) - assert part_dep_ans_rounded == round_dict_keys(part_dep_dict) + check_dicts_approx_equal(part_dep_ans_rounded, round_dict_keys(part_dep_dict)) fast_part_dep = partial_dependence( pipeline, @@ -795,7 +807,7 @@ def round_dict_keys(dictionary, places=6): grid_resolution=round(num_cat_features * 2), ) part_dep_dict = dict(part_dep["partial_dependence"].value_counts()) - assert part_dep_ans_rounded == round_dict_keys(part_dep_dict) + check_dicts_approx_equal(part_dep_ans_rounded, round_dict_keys(part_dep_dict)) fast_part_dep = partial_dependence( pipeline, diff --git a/pyproject.toml b/pyproject.toml index cde2da466a..98d7e23c66 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,9 +11,9 @@ classifiers = [ "Topic :: Scientific/Engineering", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: Unix", @@ -27,12 +27,12 @@ maintainers = [ ] keywords = ["data science", "machine learning", "optimization", "automl"] license = {file = "LICENSE"} -requires-python = ">=3.8,<4" +requires-python = ">=3.9,<4" dependencies = [ "numpy >= 1.22.0", - "pandas >= 1.5.0, < 2.1.0", + "pandas >= 1.5.0, <2.1.0", "scipy >= 1.5.0, < 1.12.0", - "scikit-learn >= 1.3.0", + "scikit-learn >= 1.3.2", "scikit-optimize >= 0.9.0", "pyzmq >= 20.0.0", "colorama >= 0.4.4", @@ -46,7 +46,7 @@ dependencies = [ "distributed >= 2022.2.0, != 2022.10.1", "featuretools[dask] >= 1.16.0", "nlp-primitives >= 2.9.0", - "networkx >= 2.6, <3.2", + "networkx >= 2.7", "plotly >= 5.0.0", "kaleido == 0.1.0", "ipywidgets >= 7.5", @@ -84,7 +84,7 @@ test = [ "pytest-cov == 2.10.1", "nbval == 0.9.3", "IPython >= 8.10.0, <8.12.1", - "PyYAML == 5.4", + "PyYAML == 6.0.1", "coverage[toml] >= 6.4", ] dev = [ @@ -100,13 +100,13 @@ docs = [ "docutils >=0.15.2, < 0.17", "pydata-sphinx-theme >= 0.3.1", "astroid <= 2.6.6", - "Sphinx >= 4.5.0", - "nbconvert >= 6.4.5", + "Sphinx >= 5.0.0", + "nbconvert >= 6.5.0", "nbsphinx >= 0.8.5, < 0.9.0", "sphinx-autoapi", "sphinx-inline-tabs == 2022.1.2b11", "sphinx-copybutton == 0.4.0", - "myst-parser == 0.16.1", + "myst-parser == 0.18.0", ] prophet = [ "prophet >= 1.1.2",