From e7632e168ee049984ead57f40f1325598b3f4e90 Mon Sep 17 00:00:00 2001 From: Keith Battocchi <kebatt@microsoft.com> Date: Wed, 11 Dec 2024 13:38:51 -0500 Subject: [PATCH 1/6] Enable GRFTree to work with plot_tree Signed-off-by: Keith Battocchi <kebatt@microsoft.com> --- econml/grf/_base_grftree.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/econml/grf/_base_grftree.py b/econml/grf/_base_grftree.py index 7635dd59f..9635504f5 100644 --- a/econml/grf/_base_grftree.py +++ b/econml/grf/_base_grftree.py @@ -497,3 +497,9 @@ def feature_importances(self, max_depth=4, depth_decay_exponent=2.0): @property def feature_importances_(self): return self.feature_importances() + + +# HACK: sklearn 1.3 enforces that the input to plot_tree is a DecisionTreeClassifier or DecisionTreeRegressor +# This is a hack to get around that restriction by declaring that GRFTree inherits from DecisionTreeClassifier +from sklearn.tree import DecisionTreeClassifier # noqa: E402 +DecisionTreeClassifier.register(GRFTree) From 7093f51701e09a1c1d8c7089da41b7c79aef2fce Mon Sep 17 00:00:00 2001 From: Keith Battocchi <kebatt@microsoft.com> Date: Wed, 11 Dec 2024 13:45:44 -0500 Subject: [PATCH 2/6] Remove CLA content from README Signed-off-by: Keith Battocchi <kebatt@microsoft.com> --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 2a66f357a..4299e261d 100644 --- a/README.md +++ b/README.md @@ -729,9 +729,7 @@ BibTex: This project welcomes contributions and suggestions. We use the [DCO bot](https://github.com/apps/dco) to enforce a [Developer Certificate of Origin](https://developercertificate.org/) which requires users to sign-off on their commits. This is a simple way to certify that you wrote or otherwise have the right to submit the code you are contributing to the project. Git provides a `-s` command line option to include this automatically when you commit via `git commit`. -When you submit a pull request, a CLA-bot will automatically determine whether you need to provide -a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions -provided by the bot. You will only need to do this once across all repos using our CLA. +If you forget to sign one of your commits, the DCO bot will provide specific instructions along with the failed check; alternatively you can use `git commit --amend -s` to add the sign-off to your last commit if you forgot it or `git rebase --signoff` to sign all of the commits in the branch, after which you can force push the changes to your branch with `git push --force-with-lease`. This project has adopted the [PyWhy Code of Conduct](https://github.com/py-why/governance/blob/main/CODE-OF-CONDUCT.md). From 53abc4ec70829d72e71128cd87f7fcba40d72b5d Mon Sep 17 00:00:00 2001 From: Keith Battocchi <kebatt@microsoft.com> Date: Wed, 11 Dec 2024 13:50:49 -0500 Subject: [PATCH 3/6] Improve formatting of generated lkg files Signed-off-by: Keith Battocchi <kebatt@microsoft.com> --- .github/workflows/generate_lkg.py | 12 +- lkg-notebook.txt | 294 +++++++++++++++--------------- lkg.txt | 217 +++++++++++----------- 3 files changed, 272 insertions(+), 251 deletions(-) diff --git a/.github/workflows/generate_lkg.py b/.github/workflows/generate_lkg.py index bc6a98a8d..2dd3e04ff 100644 --- a/.github/workflows/generate_lkg.py +++ b/.github/workflows/generate_lkg.py @@ -74,9 +74,17 @@ def simple_constraint_map(all_combos: frozenset[Combo]) -> tuple[dict[frozenset[ if i > 0: less_than = frozenset({combo for combo in all_combos if combo.py_version < py_version}) constraint_map[less_than] = f"; python_version<'{py_version}'" + # We want to use >= next version instead of > this version + # because otherwise we have pairs like + # somelib==1.2, python_version<'3.9' + # somelib==1.3, python_version>'3.8' + # which is correct but looks more confusing than + # somelib==1.2, python_version<'3.9' + # somelib==1.3, python_version>='3.9' if i < len(all_py_versions)-2: - greater_than = frozenset({combo for combo in all_combos if combo.py_version > py_version}) - constraint_map[greater_than] = f"; python_version>'{py_version}'" + next_version = sorted(all_py_versions)[i+1] + greater_than = frozenset({combo for combo in all_combos if combo.py_version >= next_version}) + constraint_map[greater_than] = f"; python_version>='{next_version}'" # if every combination is present, we don't need to add any constraint constraint_map[all_combos] = "" diff --git a/lkg-notebook.txt b/lkg-notebook.txt index 1043399d4..e104b01e1 100644 --- a/lkg-notebook.txt +++ b/lkg-notebook.txt @@ -1,190 +1,196 @@ -Babel==2.14.0 -Cython==3.0.10; '3.9'<=python_version -Jinja2==3.1.3 -Keras-Applications==1.0.8; python_version<='3.8' -Keras-Preprocessing==1.1.2; python_version<='3.8' -Keras==2.3.1; python_version<='3.8' -Markdown==3.6; python_version<='3.8' -MarkupSafe==2.1.5 -PyYAML==6.0.1 -Pygments==2.17.2 -QtPy==2.4.1 +Cython==0.29.37; python_version=='3.9' +Jinja2==3.1.4 +Keras==2.3.1; python_version<'3.9' +Keras-Applications==1.0.8; python_version<'3.9' +Keras-Preprocessing==1.1.2; python_version<'3.9' +Markdown==3.7; python_version<'3.9' +MarkupSafe==2.1.5; python_version<'3.9' +MarkupSafe==3.0.2; python_version=='3.9' +PyYAML==6.0.2 +Pygments==2.18.0 Send2Trash==1.8.3 -Werkzeug==3.0.2; python_version<='3.8' -absl-py==2.1.0; python_version<='3.8' -aiosignal==1.3.1; python_version<='3.8' -anyio==4.3.0 -argon2-cffi-bindings==21.2.0 +Werkzeug==3.0.6; python_version<'3.9' +absl-py==2.1.0; python_version<'3.9' +aiosignal==1.3.1; python_version<'3.9' +anyio==4.5.2; python_version<'3.9' +anyio==4.6.2.post1; python_version=='3.9' argon2-cffi==23.1.0 +argon2-cffi-bindings==21.2.0 arrow==1.3.0 -asttokens==2.4.1 -astunparse==1.6.3; python_version<='3.8' +asttokens==3.0.0 +astunparse==1.6.3; python_version<'3.9' async-lru==2.0.4 -attrs==23.2.0 -backcall==0.2.0; python_version<='3.8' +attrs==24.2.0 +babel==2.16.0 +backcall==0.2.0; python_version<'3.9' beautifulsoup4==4.12.3 -bleach==6.1.0 -cachetools==4.2.4; python_version<='3.8' -causal-learn==0.1.3.8; '3.9'<=python_version -certifi==2024.2.2 -cffi==1.16.0 -charset-normalizer==3.3.2 -clarabel==0.7.1; '3.9'<=python_version -click==8.1.7; python_version<='3.8' -cloudpickle==3.0.0 +bleach==6.1.0; python_version<'3.9' +bleach==6.2.0; python_version=='3.9' +cachetools==4.2.4; python_version<'3.9' +causal-learn==0.1.3.8; python_version=='3.9' +certifi==2024.8.30 +cffi==1.17.1 +charset-normalizer==3.4.0 +clarabel==0.9.0; python_version=='3.9' +click==8.1.7; python_version<'3.9' +cloudpickle==3.1.0 comm==0.2.2 -contourpy==1.1.1; python_version<='3.8' -contourpy==1.2.1; '3.9'<=python_version -cvxpy==1.4.3; '3.9'<=python_version +contourpy==1.1.1; python_version<'3.9' +contourpy==1.3.0; python_version=='3.9' +cvxpy==1.6.0; python_version=='3.9' cycler==0.12.1 -debugpy==1.8.1 +debugpy==1.8.9 decorator==5.1.1 defusedxml==0.7.1 -dowhy==0.11.1; '3.9'<=python_version -ecos==2.0.13; '3.9'<=python_version -exceptiongroup==1.2.1 -executing==2.0.1 -fastjsonschema==2.19.1 -filelock==3.13.4; python_version<='3.8' -fonttools==4.51.0 +dowhy==0.12; python_version=='3.9' +exceptiongroup==1.2.2 +executing==2.1.0 +fastjsonschema==2.21.1 +filelock==3.16.1; python_version<'3.9' +fonttools==4.55.1 fqdn==1.5.1 -frozenlist==1.4.1; python_version<='3.8' -gast==0.3.3; python_version<='3.8' -google-auth-oauthlib==0.4.6; python_version<='3.8' -google-auth==1.35.0; python_version<='3.8' -google-pasta==0.2.0; python_version<='3.8' +frozenlist==1.5.0; python_version<'3.9' +gast==0.3.3; python_version<'3.9' +google-auth==1.35.0; python_version<'3.9' +google-auth-oauthlib==0.4.6; python_version<'3.9' +google-pasta==0.2.0; python_version<'3.9' graphviz==0.20.3 -grpcio==1.62.2; python_version<='3.8' +grpcio==1.68.1; python_version<'3.9' h11==0.14.0 -h5py==2.10.0; python_version<='3.8' -httpcore==1.0.5 -httpx==0.27.0 -idna==3.7 -importlib_metadata==7.1.0 -importlib_resources==6.4.0 -ipykernel==6.29.4 -ipython==8.12.3; python_version<='3.8' -ipython==8.18.1; '3.9'<=python_version -ipywidgets==8.1.2 +h5py==2.10.0; python_version<'3.9' +httpcore==1.0.7 +httpx==0.28.0 +idna==3.10 +importlib_metadata==8.5.0 +importlib_resources==6.4.5 +ipykernel==6.29.5 +ipython==8.12.3; python_version<'3.9' +ipython==8.18.1; python_version=='3.9' +ipywidgets==8.1.5 isoduration==20.11.0 -jedi==0.19.1 -joblib==1.4.0 -json5==0.9.25 -jsonpointer==2.4 -jsonschema-specifications==2023.12.1 -jsonschema==4.21.1 +jedi==0.19.2 +joblib==1.4.2 +json5==0.10.0 +jsonpointer==3.0.0 +jsonschema==4.23.0 +jsonschema-specifications==2023.12.1; python_version<'3.9' +jsonschema-specifications==2024.10.1; python_version=='3.9' +jupyter==1.1.1 jupyter-console==6.6.3 jupyter-events==0.10.0 jupyter-lsp==2.2.5 -jupyter==1.0.0 -jupyter_client==8.6.1 +jupyter_client==8.6.3 jupyter_core==5.7.2 -jupyter_server==2.14.0 +jupyter_server==2.14.2 jupyter_server_terminals==0.5.3 -jupyterlab==4.1.6 +jupyterlab==4.3.2 jupyterlab_pygments==0.3.0 -jupyterlab_server==2.27.1 -jupyterlab_widgets==3.0.10 -kiwisolver==1.4.5 -lightgbm==4.3.0 -llvmlite==0.41.1; python_version<='3.8' -llvmlite==0.42.0; '3.9'<=python_version +jupyterlab_server==2.27.3 +jupyterlab_widgets==3.0.13 +kiwisolver==1.4.7 +lightgbm==4.5.0 +llvmlite==0.41.1; python_version<'3.9' +llvmlite==0.43.0; python_version=='3.9' +matplotlib==3.7.5; python_version<'3.9' +matplotlib==3.9.3; python_version=='3.9' matplotlib-inline==0.1.7 -matplotlib==3.7.5; python_version<='3.8' -matplotlib==3.8.4; '3.9'<=python_version mistune==3.0.2 -mpmath==1.3.0; '3.9'<=python_version -msgpack==1.0.8; python_version<='3.8' -nbclient==0.10.0 -nbconvert==7.16.3 +mpmath==1.3.0; python_version=='3.9' +msgpack==1.1.0; python_version<'3.9' +nbclient==0.10.1 +nbconvert==7.16.4 nbformat==5.10.4 nest-asyncio==1.6.0 -networkx==3.2.1; '3.9'<=python_version -notebook==7.1.3 +networkx==3.2.1; python_version=='3.9' +notebook==7.3.0 notebook_shim==0.2.4 -numba==0.58.1; python_version<='3.8' -numba==0.59.1; '3.9'<=python_version -numpy==1.23.5; python_version<='3.8' -numpy==1.26.4; '3.9'<=python_version -oauthlib==3.2.2; python_version<='3.8' -opt-einsum==3.3.0; python_version<='3.8' -osqp==0.6.4; '3.9'<=python_version +numba==0.58.1; python_version<'3.9' +numba==0.60.0; python_version=='3.9' +numpy==1.23.5; python_version<'3.9' +numpy==1.26.4; python_version=='3.9' +nvidia-nccl-cu12==2.23.4 +oauthlib==3.2.2; python_version<'3.9' +opt_einsum==3.4.0; python_version<'3.9' +osqp==0.6.7.post3; python_version=='3.9' overrides==7.7.0 -packaging==24.0 -pandas==2.0.3; python_version<='3.8' -pandas==2.2.2; '3.9'<=python_version +packaging==24.2 +pandas==2.0.3; python_version<'3.9' +pandas==2.2.3; python_version=='3.9' pandocfilters==1.5.1 parso==0.8.4 -patsy==0.5.6 +patsy==1.0.1 pexpect==4.9.0 -pickleshare==0.7.5; python_version<='3.8' -pillow==10.3.0 -pkgutil_resolve_name==1.3.10; python_version<='3.8' -platformdirs==4.2.1 -prometheus_client==0.20.0 -prompt-toolkit==3.0.43 -protobuf==3.20.3; python_version<='3.8' -psutil==5.9.8 +pickleshare==0.7.5; python_version<'3.9' +pillow==10.4.0; python_version<'3.9' +pillow==11.0.0; python_version=='3.9' +pkgutil_resolve_name==1.3.10; python_version<'3.9' +platformdirs==4.3.6 +prometheus_client==0.21.1 +prompt_toolkit==3.0.48 +protobuf==3.20.3; python_version<'3.9' +psutil==6.1.0 ptyprocess==0.7.0 -pure-eval==0.2.2 -pyasn1==0.6.0; python_version<='3.8' -pyasn1_modules==0.4.0; python_version<='3.8' -pybind11==2.12.0; '3.9'<=python_version +pure_eval==0.2.3 +pyasn1==0.6.1; python_version<'3.9' +pyasn1_modules==0.4.1; python_version<'3.9' pycparser==2.22 -pydot==2.0.0; '3.9'<=python_version -pyparsing==3.1.2 +pydot==3.0.3; python_version=='3.9' +pyparsing==3.1.4; python_version<'3.9' +pyparsing==3.2.0; python_version=='3.9' python-dateutil==2.9.0.post0 python-json-logger==2.0.7 -pytz==2024.1 -pyzmq==26.0.2 -qdldl==0.1.7.post2; '3.9'<=python_version -qtconsole==5.5.1 -ray==2.10.0; python_version<='3.8' -referencing==0.35.0 -requests-oauthlib==2.0.0; python_version<='3.8' -requests==2.31.0 +pytz==2024.2 +pyzmq==26.2.0 +qdldl==0.1.7.post4; python_version=='3.9' +ray==2.10.0; python_version<'3.9' +referencing==0.35.1 +requests==2.32.3 +requests-oauthlib==2.0.0; python_version<'3.9' rfc3339-validator==0.1.4 rfc3986-validator==0.1.1 -rpds-py==0.18.0 -rsa==4.9; python_version<='3.8' -scikit-learn==1.2.2; python_version<='3.8' -scikit-learn==1.4.2; '3.9'<=python_version -scipy==1.13.0; '3.9'<=python_version -scipy==1.4.1; python_version<='3.8' -scs==3.2.4.post1; '3.9'<=python_version +rpds-py==0.20.1; python_version<'3.9' +rpds-py==0.22.3; python_version=='3.9' +rsa==4.9; python_version<'3.9' +scikit-learn==1.2.2; python_version<'3.9' +scikit-learn==1.5.2; python_version=='3.9' +scipy==1.4.1; python_version<'3.9' +scipy==1.13.1; python_version=='3.9' +scs==3.2.7; python_version=='3.9' seaborn==0.13.2 shap==0.43.0 six==1.16.0 slicer==0.0.7 sniffio==1.3.1 -soupsieve==2.5 -sparse==0.15.1 +soupsieve==2.6 +sparse==0.15.4 stack-data==0.6.3 -statsmodels==0.14.1; python_version<='3.8' -statsmodels==0.14.2; '3.9'<=python_version -sympy==1.12; '3.9'<=python_version -tensorboard-plugin-wit==1.8.1; python_version<='3.8' -tensorboard==2.2.2; python_version<='3.8' -tensorflow-estimator==2.2.0; python_version<='3.8' -tensorflow==2.2.0; python_version<='3.8' -termcolor==2.4.0; python_version<='3.8' +statsmodels==0.14.1; python_version<'3.9' +statsmodels==0.14.4; python_version=='3.9' +sympy==1.13.3; python_version=='3.9' +tensorboard==2.2.2; python_version<'3.9' +tensorboard-plugin-wit==1.8.1; python_version<'3.9' +tensorflow==2.2.0; python_version<'3.9' +tensorflow-estimator==2.2.0; python_version<'3.9' +termcolor==2.4.0; python_version<'3.9' terminado==0.18.1 -threadpoolctl==3.4.0 -tinycss2==1.3.0 -tomli==2.0.1 -tornado==6.4 -tqdm==4.66.2 +threadpoolctl==3.5.0 +tinycss2==1.4.0 +tomli==2.2.1 +tornado==6.4.2 +tqdm==4.67.1 traitlets==5.14.3 -types-python-dateutil==2.9.0.20240316 -typing_extensions==4.11.0 -tzdata==2024.1 +types-python-dateutil==2.9.0.20241003 +typing_extensions==4.12.2 +tzdata==2024.2 uri-template==1.3.0 -urllib3==2.2.1 +urllib3==2.2.3 wcwidth==0.2.13 -webcolors==1.13 +webcolors==24.8.0; python_version<'3.9' +webcolors==24.11.1; python_version=='3.9' webencodings==0.5.1 websocket-client==1.8.0 -widgetsnbextension==4.0.10 -wrapt==1.16.0; python_version<='3.8' -xgboost==2.0.3 -zipp==3.18.1 \ No newline at end of file +widgetsnbextension==4.0.13 +wrapt==1.17.0; python_version<'3.9' +xgboost==2.1.3 +zipp==3.20.2; python_version<'3.9' +zipp==3.21.0; python_version=='3.9' \ No newline at end of file diff --git a/lkg.txt b/lkg.txt index 95acb9cb1..033d0bfa8 100644 --- a/lkg.txt +++ b/lkg.txt @@ -1,112 +1,119 @@ -Cython==0.29.37; python_version<='3.8' -Cython==3.0.9; '3.9'<=python_version and python_version<='3.11' -Keras-Applications==1.0.8; python_version<='3.8' -Keras-Preprocessing==1.1.2; python_version<='3.8' -Keras==2.3.1; python_version<='3.8' -Markdown==3.5.2; python_version<='3.8' -MarkupSafe==2.1.5; python_version<='3.8' -PyYAML==6.0.1 -Werkzeug==3.0.1; python_version<='3.8' -absl-py==2.1.0; python_version<='3.8' -aiosignal==1.3.1; python_version<='3.11' and (platform_system=='Darwin' or platform_system=='Linux') -argcomplete==3.2.2; python_version=='3.9' and platform_system=='Windows' -astunparse==1.6.3; python_version<='3.8' -attrs==23.2.0; python_version<='3.11' and (platform_system=='Darwin' or platform_system=='Linux') -cachetools==4.2.4; python_version<='3.8' -causal-learn==0.1.3.8; python_version<='3.11' -certifi==2024.2.2 -charset-normalizer==3.3.2 -clarabel==0.7.1; python_version<='3.11' -click==8.1.7; python_version=='3.9' -cloudpickle==3.0.0 +Cython==0.29.37 +Keras==2.3.1; python_version<'3.9' +Keras-Applications==1.0.8; python_version<'3.9' +Keras-Preprocessing==1.1.2; python_version<'3.9' +Markdown==3.7; python_version<'3.9' +MarkupSafe==2.1.5; python_version<'3.9' +PyYAML==6.0.2 +Werkzeug==3.0.6; python_version<'3.9' +absl-py==2.1.0; python_version<'3.9' +aiosignal==1.3.1 +argcomplete==3.5.1; platform_system=='Windows' and python_version=='3.9' +astunparse==1.6.3; python_version<'3.9' +attrs==24.2.0 +cachetools==4.2.4; python_version<'3.9' +causal-learn==0.1.3.8 +certifi==2024.8.30 +charset-normalizer==3.4.0 +clarabel==0.9.0 +click==8.1.7 +cloudpickle==3.1.0 colorama==0.4.6; platform_system=='Windows' -contourpy==1.1.1; python_version<='3.8' -contourpy==1.2.0; '3.9'<=python_version -cvxpy==1.4.2 +contourpy==1.1.1; python_version<'3.9' +contourpy==1.3.0; python_version=='3.9' +contourpy==1.3.1; python_version>='3.10' +cvxpy==1.5.2; python_version<'3.9' +cvxpy==1.6.0; python_version>='3.9' cycler==0.12.1 -dowhy==0.10.1; python_version<='3.8' -dowhy==0.11.1; '3.9'<=python_version and python_version<='3.11' -dowhy==0.8; '3.12'<=python_version -ecos==2.0.13; python_version<='3.11' -filelock==3.13.1; python_version<='3.11' and (platform_system=='Darwin' or platform_system=='Linux') -fonttools==4.49.0 -frozenlist==1.4.1; python_version<='3.11' and (platform_system=='Darwin' or platform_system=='Linux') -gast==0.3.3; python_version<='3.8' -google-auth-oauthlib==0.4.6; python_version<='3.8' -google-auth==1.35.0; python_version<='3.8' -google-pasta==0.2.0; python_version<='3.8' -graphviz==0.20.1 -grpcio==1.62.0; python_version<='3.8' -h5py==2.10.0; python_version<='3.8' -idna==3.6 -importlib-metadata==7.0.1; python_version<='3.8' -importlib_resources==6.1.2; python_version<='3.9' -joblib==1.3.2 -jsonschema-specifications==2023.12.1; python_version<='3.11' and (platform_system=='Darwin' or platform_system=='Linux') -jsonschema==4.21.1; python_version<='3.11' and (platform_system=='Darwin' or platform_system=='Linux') -kiwisolver==1.4.5 -lightgbm==4.3.0 -llvmlite==0.41.1; python_version<='3.8' -llvmlite==0.42.0; '3.9'<=python_version -matplotlib==3.7.5; python_version<='3.8' -matplotlib==3.8.3; '3.9'<=python_version +dowhy==0.10.1; python_version<'3.9' +dowhy==0.12; python_version>='3.9' +ecos==2.0.14; python_version<'3.9' +filelock==3.16.1 +fonttools==4.55.1 +frozenlist==1.5.0 +gast==0.3.3; python_version<'3.9' +google-auth==1.35.0; python_version<'3.9' +google-auth-oauthlib==0.4.6; python_version<'3.9' +google-pasta==0.2.0; python_version<'3.9' +graphviz==0.20.3 +grpcio==1.68.1; python_version<'3.9' +h5py==2.10.0; python_version<'3.9' +idna==3.10 +importlib_metadata==8.5.0; python_version<'3.9' +importlib_resources==6.4.5; python_version<'3.10' +joblib==1.4.2 +jsonschema==4.23.0 +jsonschema-specifications==2023.12.1; python_version<'3.9' +jsonschema-specifications==2024.10.1; python_version>='3.9' +kiwisolver==1.4.7 +lightgbm==4.5.0 +llvmlite==0.41.1; python_version<'3.9' +llvmlite==0.43.0; python_version>='3.9' +matplotlib==3.7.5; python_version<'3.9' +matplotlib==3.9.3; python_version>='3.9' mpmath==1.3.0 -msgpack==1.0.8; python_version<='3.11' and (platform_system=='Darwin' or platform_system=='Linux') -networkx==3.1; python_version<='3.8' -networkx==3.2.1; '3.9'<=python_version -numba==0.58.1; python_version<='3.8' -numba==0.59.0; '3.9'<=python_version -numpy==1.23.5; python_version<='3.8' -numpy==1.26.4; '3.9'<=python_version -oauthlib==3.2.2; python_version<='3.8' -opt-einsum==3.3.0; python_version<='3.8' -osqp==0.6.4; '3.9'<=python_version and python_version<='3.11' -osqp==0.6.5; python_version<='3.8' -packaging==23.2 -pandas==2.0.3; python_version<='3.8' -pandas==2.2.1; '3.9'<=python_version -patsy==0.5.6 -pillow==10.2.0 -pipx==1.4.3; python_version=='3.9' and platform_system=='Windows' -pkgutil_resolve_name==1.3.10; python_version<='3.8' and (platform_system=='Darwin' or platform_system=='Linux') -platformdirs==4.2.0; python_version=='3.9' and platform_system=='Windows' -protobuf==3.20.3; python_version<='3.8' -protobuf==4.25.3; '3.9'<=python_version and python_version<='3.11' and (platform_system=='Darwin' or platform_system=='Linux') -pyasn1-modules==0.3.0; python_version<='3.8' -pyasn1==0.5.1; python_version<='3.8' -pybind11==2.11.1; python_version<='3.11' -pydot==2.0.0 -pyparsing==3.1.2 +msgpack==1.1.0 +networkx==3.1; python_version<'3.9' +networkx==3.2.1; python_version=='3.9' +networkx==3.4.2; python_version>='3.10' +numba==0.58.1; python_version<'3.9' +numba==0.60.0; python_version>='3.9' +numpy==1.23.5; python_version<'3.9' +numpy==1.26.4; python_version>='3.9' +oauthlib==3.2.2; python_version<'3.9' +opt_einsum==3.4.0; python_version<'3.9' +osqp==0.6.7.post3 +packaging==24.2 +pandas==2.0.3; python_version<'3.9' +pandas==2.2.3; python_version>='3.9' +patsy==1.0.1 +pillow==10.4.0; python_version<'3.9' +pillow==11.0.0; python_version>='3.9' +pipx==1.7.1; platform_system=='Windows' and python_version=='3.9' +pkgutil_resolve_name==1.3.10; python_version<'3.9' +platformdirs==4.3.6; platform_system=='Windows' and python_version=='3.9' +protobuf==3.20.3; python_version<'3.9' +protobuf==5.29.0; python_version>='3.9' +pyasn1==0.6.1; python_version<'3.9' +pyasn1_modules==0.4.1; python_version<'3.9' +pydot==3.0.3 +pyparsing==3.1.4; python_version<'3.9' +pyparsing==3.2.0; python_version>='3.9' python-dateutil==2.9.0.post0 -pytz==2024.1 -qdldl==0.1.7.post0; python_version<='3.11' -ray==2.9.3; python_version<='3.11' and (platform_system=='Darwin' or platform_system=='Linux') -referencing==0.33.0; python_version<='3.11' and (platform_system=='Darwin' or platform_system=='Linux') -requests-oauthlib==1.3.1; python_version<='3.8' -requests==2.31.0 -rpds-py==0.18.0; python_version<='3.11' and (platform_system=='Darwin' or platform_system=='Linux') -rsa==4.9; python_version<='3.8' -scikit-learn==1.2.2; python_version<='3.8' -scikit-learn==1.4.1.post1; '3.9'<=python_version -scipy==1.12.0; '3.9'<=python_version -scipy==1.4.1; python_version<='3.8' -scs==3.2.4.post1; python_version<='3.11' +pytz==2024.2 +qdldl==0.1.7.post4 +ray==2.10.0; python_version<'3.9' +ray==2.40.0; python_version>='3.9' +referencing==0.35.1 +requests==2.32.3 +requests-oauthlib==2.0.0; python_version<'3.9' +rpds-py==0.20.1; python_version<'3.9' +rpds-py==0.22.3; python_version>='3.9' +rsa==4.9; python_version<'3.9' +scikit-learn==1.2.2; python_version<'3.9' +scikit-learn==1.5.2; python_version>='3.9' +scipy==1.4.1; python_version<'3.9' +scipy==1.13.1; python_version=='3.9' +scipy==1.14.1; python_version>='3.10' +scs==3.2.7 shap==0.43.0 six==1.16.0 slicer==0.0.7 -sparse==0.15.1 -statsmodels==0.14.1 -sympy==1.12 -tensorboard-plugin-wit==1.8.1; python_version<='3.8' -tensorboard==2.2.2; python_version<='3.8' -tensorflow-estimator==2.2.0; python_version<='3.8' -tensorflow==2.2.0; python_version<='3.8' -termcolor==2.4.0; python_version<='3.8' -threadpoolctl==3.3.0 -tomli==2.0.1; python_version=='3.9' and platform_system=='Windows' -tqdm==4.66.2 -tzdata==2024.1 -urllib3==2.2.1 -userpath==1.9.2; python_version=='3.9' and platform_system=='Windows' -wrapt==1.16.0; python_version<='3.8' -zipp==3.17.0; python_version<='3.9' \ No newline at end of file +sparse==0.15.4 +statsmodels==0.14.1; python_version<'3.9' +statsmodels==0.14.4; python_version>='3.9' +sympy==1.13.3 +tensorboard==2.2.2; python_version<'3.9' +tensorboard-plugin-wit==1.8.1; python_version<'3.9' +tensorflow==2.2.0; python_version<'3.9' +tensorflow-estimator==2.2.0; python_version<'3.9' +termcolor==2.4.0; python_version<'3.9' +threadpoolctl==3.5.0 +tomli==2.2.1; platform_system=='Windows' and python_version=='3.9' +tqdm==4.67.1 +tzdata==2024.2 +urllib3==2.2.3 +userpath==1.9.2; platform_system=='Windows' and python_version=='3.9' +wrapt==1.17.0; python_version<'3.9' +zipp==3.20.2; python_version<'3.9' +zipp==3.21.0; python_version=='3.9' \ No newline at end of file From 784a57b91dd404e5fdb103873c5a4107ef35803a Mon Sep 17 00:00:00 2001 From: Keith Battocchi <kebatt@microsoft.com> Date: Wed, 11 Dec 2024 15:07:12 -0500 Subject: [PATCH 4/6] Enable sklearn 1.6 Signed-off-by: Keith Battocchi <kebatt@microsoft.com> --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 73ccdae3e..e2c360e81 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ classifiers = [ dependencies = [ "numpy<2", "scipy > 1.4.0", - "scikit-learn >= 1.0, < 1.6", + "scikit-learn >= 1.0, < 1.7", "sparse", "joblib >= 0.13.0", "statsmodels >= 0.10", From 284396e5be911daeb9f3b726b541bc929508b0ca Mon Sep 17 00:00:00 2001 From: Keith Battocchi <kebatt@microsoft.com> Date: Fri, 10 Jan 2025 15:00:06 -0500 Subject: [PATCH 5/6] Use specific sklearn intersphinx link Signed-off-by: Keith Battocchi <kebatt@microsoft.com> --- doc/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/conf.py b/doc/conf.py index b44578b77..24fef5ec5 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -228,7 +228,7 @@ # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = {'python': ('https://docs.python.org/3', None), 'numpy': ('https://numpy.org/doc/stable/', None), - 'sklearn': ('https://scikit-learn.org/stable/', None), + 'sklearn': ('https://scikit-learn.org/1.5/', None), 'matplotlib': ('https://matplotlib.org/stable/', None), 'shap': ('https://shap.readthedocs.io/en/stable/', None), 'dowhy': ('https://www.pywhy.org/dowhy/v0.8/', None), From dcf516fef1a00060efe8685d76302c014fa7e847 Mon Sep 17 00:00:00 2001 From: Keith Battocchi <kebatt@microsoft.com> Date: Fri, 10 Jan 2025 15:03:50 -0500 Subject: [PATCH 6/6] Update sphinx version used to generate docs Signed-off-by: Keith Battocchi <kebatt@microsoft.com> --- .github/workflows/publish-documentation.yml | 4 ++-- doc/conf.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-documentation.yml b/.github/workflows/publish-documentation.yml index 264675d6d..a173cb89e 100644 --- a/.github/workflows/publish-documentation.yml +++ b/.github/workflows/publish-documentation.yml @@ -79,14 +79,14 @@ jobs: - name: Install graphviz run: sudo apt-get -yq install graphviz - name: Build documentation - run: pip install "sphinx~=4.4.0" "sphinx_rtd_theme~=1.0.0" && python setup.py build_sphinx -W + run: pip install "sphinx~=7.0" "sphinx_rtd_theme~=2.0.0" && sphinx-build ./doc/ ./build/sphinx/html/ -W - name: Upload docs as artifact uses: actions/upload-artifact@v4 with: name: docs path: build/sphinx/html/ - name: Run doctests - run: python setup.py build_sphinx -b doctest + run: sphinx-build ./doc/ ./build/sphinx/doctest/ -b doctest if : ${{ inputs.run_doctests }} publish-docs: diff --git a/doc/conf.py b/doc/conf.py index 24fef5ec5..700bcab86 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -231,7 +231,7 @@ 'sklearn': ('https://scikit-learn.org/1.5/', None), 'matplotlib': ('https://matplotlib.org/stable/', None), 'shap': ('https://shap.readthedocs.io/en/stable/', None), - 'dowhy': ('https://www.pywhy.org/dowhy/v0.8/', None), + 'dowhy': ('https://www.pywhy.org/dowhy/main/', None), 'statsmodels': ('https://www.statsmodels.org/stable/', None)}