Skip to content

Commit 10267dc

Browse files
authored
Unpin spark requirements (#2661)
1 parent 18e5c41 commit 10267dc

39 files changed

+72
-61
lines changed

.github/workflows/auto_approve_dependency_PRs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
- cron: '*/30 * * * *'
55
workflow_dispatch:
66
workflow_run:
7-
workflows: ["Unit Tests - Latest Dependencies", "Unit Tests - 3.8 Minimum Dependencies"]
7+
workflows: ["Unit Tests - Latest Dependencies", "Unit Tests - 3.9 Minimum Dependencies"]
88
branches:
99
- 'latest-dep-update-[a-f0-9]+'
1010
- 'min-dep-update-[a-f0-9]+'

.github/workflows/build_docs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
strategy:
1717
fail-fast: false
1818
matrix:
19-
python_version: ["3.8", "3.10"]
19+
python_version: ["3.9", "3.10", "3.11"]
2020
steps:
2121
- name: Checkout repository
2222
uses: actions/checkout@v3

.github/workflows/install_test.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
fail-fast: false
1515
matrix:
1616
os: [ubuntu-latest, macos-latest, windows-latest]
17-
python_version: ["3.8", "3.9", "3.10"]
17+
python_version: ["3.9", "3.10"]
1818
exclude:
1919
- python_version: "3.10"
2020
os: macos-latest

.github/workflows/latest_dependency_checker.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
repository: ${{ github.event.pull_request.head.repo.full_name }}
2020
- uses: actions/setup-python@v4
2121
with:
22-
python-version: 3.8
22+
python-version: 3.9
2323
- name: Update dependencies
2424
run: |
2525
python -m pip install --upgrade pip

.github/workflows/looking_glass_airflow_performance_tests.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ jobs:
6666
"datasets-bucket-name-s3": "featuretools-performance-tests",
6767
"results-bucket-name-s3": "featuretools-performance-results"
6868
},
69-
"python_version": "3.8",
69+
"python_version": "3.9",
7070
"scenarios_yaml": "entityset_scenarios_${{ matrix.test_type }}.yaml",
7171
"featuretools_branch_previous": "${{ env.PREVIOUS_HASH }}",
7272
"featuretools_branch_new": "${{ env.CURRENT_HASH }}",

.github/workflows/tests_with_latest_deps.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
strategy:
1414
fail-fast: false
1515
matrix:
16-
python_version: ["3.8", "3.9", "3.10", "3.11"]
16+
python_version: ["3.9", "3.10", "3.11"]
1717
libraries: ["core", "spark/dask - misc", "spark/dask - computational", "spark/dask - entityset_1", "spark/dask - entityset_2", "spark/dask - primitives"]
1818

1919
steps:
@@ -45,7 +45,7 @@ jobs:
4545
python -m pip install -e unpacked_sdist/[dask]
4646
python -m pip install -e unpacked_sdist/[spark]
4747
python -m pip install -e unpacked_sdist/[test]
48-
- if: ${{ matrix.python_version == 3.8 && startsWith(matrix.libraries, 'spark/dask') }}
48+
- if: ${{ matrix.python_version == 3.9 && startsWith(matrix.libraries, 'spark/dask') }}
4949
name: Generate coverage args
5050
run: echo "coverage_args=--cov=featuretools --cov-config=../pyproject.toml --cov-report=xml:../coverage.xml" >> $GITHUB_ENV
5151
- if: ${{ env.coverage_args }}
@@ -99,7 +99,7 @@ jobs:
9999
strategy:
100100
fail-fast: false
101101
matrix:
102-
python_version: ["3.8", "3.9", "3.10", "3.11"]
102+
python_version: ["3.9", "3.10", "3.11"]
103103
steps:
104104
- name: Download miniconda
105105
shell: pwsh

.github/workflows/tests_with_minimum_deps.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
workflow_dispatch:
99
jobs:
1010
py38_tests_minimum_dependencies:
11-
name: Tests - 3.8 Minimum Dependencies
11+
name: Tests - 3.9 Minimum Dependencies
1212
runs-on: ubuntu-latest
1313
strategy:
1414
fail-fast: false
@@ -22,7 +22,7 @@ jobs:
2222
repository: ${{ github.event.pull_request.head.repo.full_name }}
2323
- uses: actions/setup-python@v4
2424
with:
25-
python-version: 3.8
25+
python-version: 3.9
2626
- name: Config pip, upgrade pip, and install graphviz
2727
run: |
2828
sudo apt update

.readthedocs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ formats: []
1515
build:
1616
os: "ubuntu-22.04"
1717
tools:
18-
python: "3.8"
18+
python: "3.9"
1919
apt_packages:
2020
- graphviz
2121
- openjdk-11-jre-headless

docs/notebook_version_standardizer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def _fix_execution_and_output(notebook):
7575
json.dump(source, f, ensure_ascii=False, indent=1)
7676

7777

78-
def _get_notebooks_with_executions_and_empty(notebooks, default_version="3.8.2"):
78+
def _get_notebooks_with_executions_and_empty(notebooks, default_version="3.9.2"):
7979
executed = []
8080
empty_last_cell = []
8181
versions = []
@@ -89,7 +89,7 @@ def _get_notebooks_with_executions_and_empty(notebooks, default_version="3.8.2")
8989
return (executed, empty_last_cell, versions)
9090

9191

92-
def _fix_versions(notebooks, default_version="3.8.2"):
92+
def _fix_versions(notebooks, default_version="3.9.2"):
9393
for notebook in notebooks:
9494
_fix_python_version(notebook, default_version)
9595

docs/source/api_reference.rst

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,6 @@ Deep Feature Synthesis
2828
dfs
2929
get_valid_primitives
3030

31-
Wrappers
32-
~~~~~~~~
33-
.. currentmodule:: featuretools
34-
35-
scikit-learn (BETA)
36-
-------------------
37-
.. autosummary::
38-
:toctree: generated/
39-
40-
wrappers.DFSTransformer
41-
4231
Timedelta
4332
~~~~~~~~~
4433
.. currentmodule:: featuretools

docs/source/getting_started/afe.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@
249249
"name": "python",
250250
"nbconvert_exporter": "python",
251251
"pygments_lexer": "ipython3",
252-
"version": "3.8.2"
252+
"version": "3.9.2"
253253
}
254254
},
255255
"nbformat": 4,

docs/source/getting_started/handling_time.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -710,7 +710,7 @@
710710
"name": "python",
711711
"nbconvert_exporter": "python",
712712
"pygments_lexer": "ipython3",
713-
"version": "3.8.2"
713+
"version": "3.9.2"
714714
}
715715
},
716716
"nbformat": 4,

docs/source/getting_started/primitives.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@
426426
"name": "python",
427427
"nbconvert_exporter": "python",
428428
"pygments_lexer": "ipython3",
429-
"version": "3.8.2"
429+
"version": "3.9.2"
430430
}
431431
},
432432
"nbformat": 4,

docs/source/getting_started/using_entitysets.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@
354354
"name": "python",
355355
"nbconvert_exporter": "python",
356356
"pygments_lexer": "ipython3",
357-
"version": "3.8.2"
357+
"version": "3.9.2"
358358
}
359359
},
360360
"nbformat": 4,

docs/source/getting_started/woodwork_types.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@
377377
"name": "python",
378378
"nbconvert_exporter": "python",
379379
"pygments_lexer": "ipython3",
380-
"version": "3.8.2"
380+
"version": "3.9.2"
381381
}
382382
},
383383
"nbformat": 4,

docs/source/guides/advanced_custom_primitives.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@
254254
"name": "python",
255255
"nbconvert_exporter": "python",
256256
"pygments_lexer": "ipython3",
257-
"version": "3.8.2"
257+
"version": "3.9.2"
258258
}
259259
},
260260
"nbformat": 4,

docs/source/guides/deployment.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@
202202
"name": "python",
203203
"nbconvert_exporter": "python",
204204
"pygments_lexer": "ipython3",
205-
"version": "3.8.2"
205+
"version": "3.9.2"
206206
}
207207
},
208208
"nbformat": 4,

docs/source/guides/feature_descriptions.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@
384384
"name": "python",
385385
"nbconvert_exporter": "python",
386386
"pygments_lexer": "ipython3",
387-
"version": "3.8.2"
387+
"version": "3.9.2"
388388
}
389389
},
390390
"nbformat": 4,

docs/source/guides/feature_selection.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@
394394
"name": "python",
395395
"nbconvert_exporter": "python",
396396
"pygments_lexer": "ipython3",
397-
"version": "3.8.2"
397+
"version": "3.9.2"
398398
}
399399
},
400400
"nbformat": 4,

docs/source/guides/performance.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@
210210
"name": "python",
211211
"nbconvert_exporter": "python",
212212
"pygments_lexer": "ipython3",
213-
"version": "3.8.2"
213+
"version": "3.9.2"
214214
}
215215
},
216216
"nbformat": 4,

docs/source/guides/specifying_primitive_options.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@
249249
"name": "python",
250250
"nbconvert_exporter": "python",
251251
"pygments_lexer": "ipython3",
252-
"version": "3.8.2"
252+
"version": "3.9.2"
253253
}
254254
},
255255
"nbformat": 4,

docs/source/guides/sql_database_integration.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@
137137
"name": "python",
138138
"nbconvert_exporter": "python",
139139
"pygments_lexer": "ipython3",
140-
"version": "3.8.2"
140+
"version": "3.9.2"
141141
},
142142
"vscode": {
143143
"interpreter": {

docs/source/guides/time_series.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@
273273
"name": "python",
274274
"nbconvert_exporter": "python",
275275
"pygments_lexer": "ipython3",
276-
"version": "3.8.2"
276+
"version": "3.9.2"
277277
}
278278
},
279279
"nbformat": 4,

docs/source/guides/tuning_dfs.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@
245245
"name": "python",
246246
"nbconvert_exporter": "python",
247247
"pygments_lexer": "ipython3",
248-
"version": "3.8.2"
248+
"version": "3.9.2"
249249
}
250250
},
251251
"nbformat": 4,

docs/source/guides/using_dask_entitysets.ipynb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,10 @@
248248
"\n",
249249
"The use of `featuretools.remove_low_information_features()` cannot currently be used with a Dask feature matrix.\n",
250250
"\n",
251-
"When manually defining a `Feature`, the `use_previous` parameter cannot be used if this feature will be applied to calculate a feature matrix from a Dask `EntitySet`."
251+
"When manually defining a `Feature`, the `use_previous` parameter cannot be used if this feature will be applied to calculate a feature matrix from a Dask `EntitySet`.\n",
252+
"\n",
253+
"### Dask `string[pyarrow]`\n",
254+
"Featuretools may have issues with the new string storage model used by Dask. To workaround this, add `dask.config.set({'dataframe.convert-string': False})`, prior to running dask operations."
252255
]
253256
}
254257
],
@@ -269,7 +272,7 @@
269272
"name": "python",
270273
"nbconvert_exporter": "python",
271274
"pygments_lexer": "ipython3",
272-
"version": "3.8.2"
275+
"version": "3.9.2"
273276
}
274277
},
275278
"nbformat": 4,

docs/source/guides/using_spark_entitysets.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@
269269
"name": "python",
270270
"nbconvert_exporter": "python",
271271
"pygments_lexer": "ipython3",
272-
"version": "3.8.2"
272+
"version": "3.9.2"
273273
}
274274
},
275275
"nbformat": 4,

docs/source/index.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@
364364
"name": "python",
365365
"nbconvert_exporter": "python",
366366
"pygments_lexer": "ipython3",
367-
"version": "3.8.2"
367+
"version": "3.9.2"
368368
}
369369
},
370370
"nbformat": 4,

docs/source/install.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Install
22

3-
Featuretools is available for Python 3.8 - 3.11. It can be installed from [pypi](https://pypi.org/project/featuretools/), [conda-forge](https://anaconda.org/conda-forge/featuretools), or from [source](https://github.com/alteryx/featuretools).
3+
Featuretools is available for Python 3.9 - 3.11. It can be installed from [pypi](https://pypi.org/project/featuretools/), [conda-forge](https://anaconda.org/conda-forge/featuretools), or from [source](https://github.com/alteryx/featuretools).
44

55
To install Featuretools, run the following command:
66

@@ -201,7 +201,7 @@ You can do so by installing it as a package inside a container (following the no
201201
creating a new image with Featuretools pre-installed, using the following commands in your `Dockerfile`:
202202

203203
```dockerfile
204-
FROM --platform=linux/x86_64 python:3.8-slim-buster
204+
FROM --platform=linux/x86_64 python:3.9-slim-buster
205205
RUN apt update && apt -y update
206206
RUN apt install -y build-essential
207207
RUN pip3 install --upgrade --quiet pip

docs/source/release_notes.rst

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,16 @@ Release Notes
55

66
Future Release
77
==============
8+
.. warning::
9+
This release of Featuretools will not support Python 3.8
10+
811
* Enhancements
912
* Fixes
1013
* Fix dependency issues (:pr:`2644`, :pr:`2656`)
11-
* Add workaround for pandas 2.2.0 bug with nunique and unpin pandas (:pr:`2657`)
14+
* Add workaround for pandas 2.2.0 bug with nunique and unpin pandas deps (:pr:`2657`)
1215
* Changes
1316
* Fix deprecation warnings with is_categorical_dtype (:pr:`2641`)
17+
* Remove woodwork, pyarrow, numpy, and pandas pins for spark installation (:pr:`2661`)
1418
* Documentation Changes
1519
* Update Featuretools logo to display properly in dark mode (:pr:`2632`)
1620
* Testing Changes

docs/source/resources/frequently_asked_questions.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2210,7 +2210,7 @@
22102210
"name": "python",
22112211
"nbconvert_exporter": "python",
22122212
"pygments_lexer": "ipython3",
2213-
"version": "3.8.2"
2213+
"version": "3.9.2"
22142214
},
22152215
"mimetype": "text/x-python",
22162216
"name": "python",

docs/source/resources/transition_to_ft_v1.0.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -861,7 +861,7 @@
861861
"name": "python",
862862
"nbconvert_exporter": "python",
863863
"pygments_lexer": "ipython3",
864-
"version": "3.8.2"
864+
"version": "3.9.2"
865865
}
866866
},
867867
"nbformat": 4,

featuretools/entityset/entityset.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1269,11 +1269,15 @@ def add_last_time_indexes(self, updated_dataframes=None):
12691269
lti_df = pd.Series([], dtype="object")
12701270
else:
12711271
if lti_is_spark:
1272-
lti_df["last_time"] = ps.to_datetime(lti_df["last_time"])
1273-
lti_df["last_time_old"] = ps.to_datetime(
1274-
lti_df["last_time_old"],
1275-
)
12761272
# TODO: Figure out a workaround for fillna and replace
1273+
if lti_df["last_time_old"].dtype != "datetime64[ns]":
1274+
lti_df["last_time_old"] = ps.to_datetime(
1275+
lti_df["last_time_old"],
1276+
)
1277+
if lti_df["last_time"].dtype != "datetime64[ns]":
1278+
lti_df["last_time"] = ps.to_datetime(
1279+
lti_df["last_time"],
1280+
)
12771281
lti_df = lti_df.max(axis=1)
12781282
else:
12791283
lti_df["last_time"] = lti_df["last_time"].astype(

featuretools/primitives/standard/aggregation/num_unique.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,6 @@ def finalize(s):
6060

6161
return dd.Aggregation(self.name, chunk=chunk, agg=agg, finalize=finalize)
6262

63-
if self.use_string_for_pd_calc:
63+
if self.use_string_for_pd_calc or agg_type == Library.SPARK:
6464
return "nunique"
6565
return pd.Series.nunique

featuretools/tests/conftest.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,8 @@ def pd_latlong_df():
173173

174174
@pytest.fixture
175175
def dask_latlong_df(pd_latlong_df):
176+
dask = pytest.importorskip("dask", reason="Dask not installed, skipping")
177+
dask.config.set({"dataframe.convert-string": False})
176178
dd = pytest.importorskip("dask.dataframe", reason="Dask not installed, skipping")
177179
return dd.from_pandas(pd_latlong_df.reset_index(drop=True), npartitions=4)
178180

featuretools/tests/entityset_tests/test_ww_es.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -748,6 +748,8 @@ def latlong_df(request):
748748

749749

750750
def test_replace_dataframe_data_transformation(latlong_df):
751+
dask = pytest.importorskip("dask", reason="Dask not installed, skipping")
752+
dask.config.set({"dataframe.convert-string": False})
751753
initial_df = latlong_df.copy()
752754
initial_df.ww.init(
753755
name="latlongs",

0 commit comments

Comments
 (0)