Skip to content

ENH: Add pre-commit check for setup.cfg options.extras_require #49261

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 31 commits into from
Nov 7, 2022
Merged
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
542b336
Add dependency check for setup.cfg
kostyafarber Oct 23, 2022
f9592e5
Merge branch 'pandas-dev:main' into issue-48949
kostyafarber Oct 25, 2022
6abda3e
Merge branch 'pandas-dev:main' into issue-48949
kostyafarber Oct 27, 2022
39e86cc
improve diff alert, add install mapping, remove test deps
kostyafarber Oct 27, 2022
7edca5c
Merge branch 'pandas-dev:main' into issue-48949
kostyafarber Oct 29, 2022
97adc2a
align versions across min version files
kostyafarber Oct 31, 2022
08a3e3f
Merge branch 'pandas-dev:main' into issue-48949
kostyafarber Oct 31, 2022
4036bfe
fix version issues for boto3, s3fs and pyqt5. Small change to script
kostyafarber Oct 31, 2022
953e885
Merge branch 'pandas-dev:main' into issue-48949
kostyafarber Oct 31, 2022
8aed966
Merge branch 'main' into issue-48949
kostyafarber Oct 31, 2022
d079b4f
fix version equality, modify script for CI check
kostyafarber Nov 1, 2022
2d272c9
Merge branch 'pandas-dev:main' into issue-48949
kostyafarber Nov 1, 2022
4f95fb2
Merge branch 'pandas-dev:main' into issue-48949
kostyafarber Nov 2, 2022
a256dcc
fix version typo in min version yaml and update min version script
kostyafarber Nov 2, 2022
52efecb
bump fsspec, gcsfs to match in whats new
kostyafarber Nov 2, 2022
309dc97
Merge branch 'main' into issue-48949
kostyafarber Nov 2, 2022
af47477
Revert "bump fsspec, gcsfs to match in whats new"
kostyafarber Nov 2, 2022
6f6b97d
align fastparquet, lowercase PyQt5
kostyafarber Nov 2, 2022
637dc10
Merge branch 'main' into issue-48949
kostyafarber Nov 2, 2022
674dadd
Merge branch 'main' into issue-48949
kostyafarber Nov 2, 2022
3c4a28e
Merge branch 'main' into issue-48949
kostyafarber Nov 2, 2022
0366b53
ENH: align matplotlib versions
kostyafarber Nov 3, 2022
56c7c05
Merge branch 'main' into issue-48949
kostyafarber Nov 3, 2022
e970faa
Merge branch 'main' into issue-48949
kostyafarber Nov 3, 2022
943d5db
Merge branch 'main' into issue-48949
kostyafarber Nov 4, 2022
bace671
ENH: align matplotlib in setup.cfg
kostyafarber Nov 4, 2022
9f414d8
Merge branch 'main' into issue-48949
kostyafarber Nov 4, 2022
e92334d
Merge branch 'main' into issue-48949
kostyafarber Nov 5, 2022
aee587a
bump s3fs across min version files
kostyafarber Nov 6, 2022
e5ea765
Merge branch 'main' into issue-48949
kostyafarber Nov 6, 2022
d2608b1
Update scripts/validate_min_versions_in_sync.py
kostyafarber Nov 6, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 27 additions & 2 deletions scripts/validate_min_versions_in_sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
"""
from __future__ import annotations

import configparser
import pathlib
import sys

Expand All @@ -21,6 +22,7 @@
pathlib.Path("ci/deps").absolute().glob("actions-*-minimum_versions.yaml")
)
CODE_PATH = pathlib.Path("pandas/compat/_optional.py").resolve()
SETUP_PATH = pathlib.Path("setup.cfg").resolve()
EXCLUDE_DEPS = {"tzdata"}
# pandas package is not available
# in pre-commit environment
Expand Down Expand Up @@ -69,15 +71,38 @@ def get_versions_from_ci(content: list[str]) -> tuple[dict[str, str], dict[str,
return required_deps, optional_deps


def get_versions_from_setup() -> dict[str, str]:
optional_dependencies = {}

parser = configparser.ConfigParser()
parser.read(SETUP_PATH)
setup_optional = parser["options.extras_require"]["all"]

dependencies = setup_optional[1:].split("\n")

for dependency in dependencies:
package, version = dependency.strip().split(">=")
optional_dependencies[package] = version

return optional_dependencies


def main():
with open(CI_PATH, encoding="utf-8") as f:
_, ci_optional = get_versions_from_ci(f.readlines())
code_optional = get_versions_from_code()
diff = set(ci_optional.items()).symmetric_difference(code_optional.items())
setup_optional = get_versions_from_setup()

diff = set(
(ci_optional.items() | code_optional.items() | setup_optional.items())
- (ci_optional.items() & code_optional.items() & setup_optional.items())
)

if diff:
sys.stdout.write(
f"The follow minimum version differences were found between "
f"{CI_PATH} and {CODE_PATH}. Please ensure these are aligned: "
f"{CI_PATH}, {CODE_PATH} AND {SETUP_PATH}. "
f"Please ensure these are aligned: "
f"{diff}\n"
)
sys.exit(1)
Expand Down