Skip to content

Commit 5773c0c

Browse files
Merge pull request #17 from great-expectations/m/CORE-730/optional-deps
[MAINTENANCE] Add extras to setup.cfg for optional deps
2 parents 7a87d04 + 9534e64 commit 5773c0c

File tree

7 files changed

+52
-34
lines changed

7 files changed

+52
-34
lines changed

.github/workflows/integration-test.yml

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,7 @@ jobs:
4141
run: python -m pip install --upgrade pip
4242

4343
- name: Install Library
44-
run: pip install .
45-
46-
- name: Install Dependencies
47-
run: pip install -r test-requirements.txt
44+
run: pip install .[postgresql,tests]
4845

4946
- name: Setup
5047
run: |
@@ -78,10 +75,7 @@ jobs:
7875
run: python -m pip install --upgrade pip
7976

8077
- name: Install Library
81-
run: pip install .
82-
83-
- name: Install Dependencies
84-
run: pip install -r test-requirements.txt
78+
run: pip install .[tests,spark]
8579

8680
- name: Setup
8781
run: |
@@ -115,10 +109,7 @@ jobs:
115109
run: python -m pip install --upgrade pip
116110

117111
- name: Install Library
118-
run: pip install .
119-
120-
- name: Install Dependencies
121-
run: pip install -r test-requirements.txt
112+
run: pip install .[tests,spark]
122113

123114
- name: Setup
124115
run: |

.github/workflows/lint.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@ jobs:
2020
python-version: 3.12
2121

2222
- name: Install Library
23-
run: pip install .
24-
25-
- name: Install Dependencies
26-
run: pip install -r test-requirements.txt
23+
run: pip install .[lint]
2724

2825
- name: Ruff Formatter
2926
run: ruff format --check .

.github/workflows/unit-test.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@ jobs:
2727
run: python -m pip install --upgrade pip
2828

2929
- name: Install Library
30-
run: pip install .
31-
32-
- name: Install Dependencies
33-
run: pip install -r test-requirements.txt
30+
run: pip install .[tests]
3431

3532
- name: Run Unit Tests
3633
run: pytest -vvv -m unit tests/unit

setup.cfg

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,41 @@ python_requires = >=3.9
66
packages = find_namespace:
77
include_package_data = true
88
install_requires =
9+
great-expectations>=1.3.1
910
apache-airflow>=2.1
10-
great-expectations[snowflake,postgresql,mssql,bigquery,athena,spark,gcp,azure,s3]>=1.3.1
1111
setuptools>=41.0.0
1212

1313
[options.extras_require]
14+
athena =
15+
great-expectations[athena]>=1.3.1
16+
azure =
17+
great-expectations[azure]>=1.3.1
18+
bigquery =
19+
great-expectations[bigquery]>=1.3.1
20+
lint =
21+
mypy==1.14.1
22+
ruff==0.8.3
23+
pytest==8.3.4
24+
pytest-mock==3.14.0
25+
great-expectations[spark, spark-connect]>=1.3.1
26+
gcp =
27+
great-expectations[gcp]>=1.3.1
28+
mssql =
29+
great-expectations[mssql]>=1.3.1
30+
postgresql =
31+
great-expectations[postgresql]>=1.3.1
32+
s3 =
33+
great-expectations[s3]>=1.3.1
34+
snowflake =
35+
great-expectations[snowflake]>=1.3.1
36+
spark =
37+
great-expectations[spark, spark-connect]>=1.3.1
38+
pyarrow>=4.0.0
1439
tests =
15-
pytest
40+
pytest==8.3.4
41+
pytest-mock==3.14.0
1642

1743
[options.entry_points]
1844
apache_airflow_provider=
1945
provider_info=great_expectations_provider.__init__:get_provider_info
46+

test-requirements.txt

Lines changed: 0 additions & 5 deletions
This file was deleted.

tests/integration/test_validate_dataframe_operator.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,21 @@
1-
from typing import Callable
1+
from __future__ import annotations
2+
3+
from typing import TYPE_CHECKING, Callable
24

35
import pandas as pd
4-
import pyspark.sql as pyspark
56
import pytest
67
from great_expectations import ExpectationSuite
78
from great_expectations.expectations import ExpectColumnValuesToBeInSet
8-
from pyspark.sql.connect.dataframe import DataFrame as SparkConnectDataFrame
9-
from pyspark.sql.connect.session import SparkSession as SparkConnectSession
109

1110
from great_expectations_provider.operators.validate_dataframe import (
1211
GXValidateDataFrameOperator,
1312
)
1413
from integration.conftest import is_valid_gx_cloud_url, rand_name
1514

15+
if TYPE_CHECKING:
16+
from pyspark.sql import SparkSession
17+
from pyspark.sql.connect.session import SparkSession as SparkConnectSession
18+
1619

1720
class TestGXValidateDataFrameOperator:
1821
@pytest.mark.integration
@@ -57,7 +60,9 @@ def configure_dataframe() -> pd.DataFrame:
5760
assert is_valid_gx_cloud_url(result["result_url"])
5861

5962
@pytest.mark.spark_integration
60-
def test_spark(self, spark_session: pyspark.SparkSession) -> None:
63+
def test_spark(self, spark_session: SparkSession) -> None:
64+
import pyspark.sql as pyspark
65+
6166
column_name = "col_A"
6267
task_id = f"test_spark_{rand_name()}"
6368

@@ -85,6 +90,8 @@ def configure_dataframe() -> pyspark.DataFrame:
8590

8691
@pytest.mark.spark_connect_integration
8792
def test_spark_connect(self, spark_connect_session: SparkConnectSession) -> None:
93+
from pyspark.sql.connect.dataframe import DataFrame as SparkConnectDataFrame
94+
8895
column_name = "col_A"
8996
task_id = f"test_spark_{rand_name()}"
9097

@@ -112,14 +119,19 @@ def configure_dataframe() -> SparkConnectDataFrame:
112119

113120

114121
@pytest.fixture
115-
def spark_session() -> pyspark.SparkSession:
122+
def spark_session() -> SparkSession:
123+
import pyspark.sql as pyspark
124+
116125
session = pyspark.SparkSession.builder.getOrCreate()
117126
assert isinstance(session, pyspark.SparkSession)
118127
return session
119128

120129

121130
@pytest.fixture
122131
def spark_connect_session() -> SparkConnectSession:
132+
import pyspark.sql as pyspark
133+
from pyspark.sql.connect.session import SparkSession as SparkConnectSession
134+
123135
session = pyspark.SparkSession.builder.remote("sc://localhost:15002").getOrCreate()
124136
assert isinstance(session, SparkConnectSession)
125137
return session

tests/unit/test_validate_batch_operator.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
from great_expectations.expectations import (
1414
ExpectColumnValuesToBeInSet,
1515
)
16-
from pytest_mock import MockerFixture
1716

1817
from great_expectations_provider.operators.validate_batch import GXValidateBatchOperator
1918

0 commit comments

Comments
 (0)