diff --git a/ci/scripts/min-deps.py b/ci/scripts/min-deps.py index f1381580b4..4dad297e03 100755 --- a/ci/scripts/min-deps.py +++ b/ci/scripts/min-deps.py @@ -1,4 +1,11 @@ #!/usr/bin/env python3 +# /// script +# dependencies = [ +# "tomli; python_version < '3.11'", +# "packaging", +# ] +# /// + from __future__ import annotations import argparse @@ -33,12 +40,15 @@ def min_dep(req: Requirement) -> Requirement: if req.extras: req_name = f"{req_name}[{','.join(req.extras)}]" - if not req.specifier: + filter_specs = [ + spec for spec in req.specifier if spec.operator in {"==", "~=", ">=", ">"} + ] + if not filter_specs: return Requirement(req_name) min_version = Version("0.0.0.a1") - for spec in req.specifier: - if spec.operator in [">", ">=", "~="]: + for spec in filter_specs: + if spec.operator in {">", ">=", "~="}: min_version = max(min_version, Version(spec.version)) elif spec.operator == "==": min_version = Version(spec.version) diff --git a/docs/release-notes/1.10.4.md b/docs/release-notes/1.10.4.md new file mode 100644 index 0000000000..d4ba850a46 --- /dev/null +++ b/docs/release-notes/1.10.4.md @@ -0,0 +1,17 @@ +(v1.10.4)= +### 1.10.4 {small}`2024-11-12` + +### Breaking changes + +- Remove Python 3.9 support {smaller}`P Angerer` ({pr}`3283`) + +### Bug fixes + +- Fix {meth}`scanpy.pl.DotPlot.style`, {meth}`scanpy.pl.MatrixPlot.style`, and {meth}`scanpy.pl.StackedViolin.style` resetting all non-specified parameters {smaller}`P Angerer` ({pr}`3206`) +- Accept `'group'` instead of `'obs'` for `standard_scale` parameter in {func}`~scanpy.pl.stacked_violin` {smaller}`P Angerer` ({pr}`3243`) +- Use `density_norm` instead of of `scale` (cont. from {pr}`2844`) in {func}`~scanpy.pl.violin` and {func}`~scanpy.pl.stacked_violin` {smaller}`P Angerer` ({pr}`3244`) +- Switched all compatibility adapters for positional parameters to {exc}`FutureWarning` {smaller}`P Angerer` ({pr}`3264`) +- Catch `PerfectSeparationWarning` during {func}`~scanpy.pp.regress_out` {smaller}`J Wagner` ({pr}`3275`) +- Fix {func}`scanpy.pp.highly_variable_genes` for batches of size 1 {smaller}`P Angerer` ({pr}`3286`) +- Fix {func}`scanpy.pl.scatter`’s `color` parameter to take collections as advertised {smaller}`P Angerer` ({pr}`3299`) +- Fix {func}`scanpy.pl.highest_expr_genes` when used with a categorical gene symbol column {smaller}`P Angerer` ({pr}`3302`) diff --git a/docs/release-notes/3206.bugfix.md b/docs/release-notes/3206.bugfix.md deleted file mode 100644 index 9e47d00b09..0000000000 --- a/docs/release-notes/3206.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Fix {meth}`scanpy.pl.DotPlot.style`, {meth}`scanpy.pl.MatrixPlot.style`, and {meth}`scanpy.pl.StackedViolin.style` resetting all non-specified parameters {smaller}`P Angerer` diff --git a/docs/release-notes/3243.bugfix.md b/docs/release-notes/3243.bugfix.md deleted file mode 100644 index 5aa6063b1e..0000000000 --- a/docs/release-notes/3243.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Accept `'group'` instead of `'obs'` for `standard_scale` parameter in {func}`~scanpy.pl.stacked_violin` {smaller}`P Angerer` diff --git a/docs/release-notes/3244.bugfix.md b/docs/release-notes/3244.bugfix.md deleted file mode 100644 index e918765588..0000000000 --- a/docs/release-notes/3244.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Use `density_norm` instead of of `scale` (cont. from {pr}`2844`) in {func}`~scanpy.pl.violin` and {func}`~scanpy.pl.stacked_violin` {smaller}`P Angerer` diff --git a/docs/release-notes/3264.bugfix.md b/docs/release-notes/3264.bugfix.md deleted file mode 100644 index 0886ee6aa3..0000000000 --- a/docs/release-notes/3264.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Switched all compatibility adapters for positional parameters to {exc}`FutureWarning` {smaller}`P Angerer` diff --git a/docs/release-notes/3275.bugfix.md b/docs/release-notes/3275.bugfix.md deleted file mode 100644 index 4465c7651d..0000000000 --- a/docs/release-notes/3275.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Catch `PerfectSeparationWarning` during {func}`~scanpy.pp.regress_out` {smaller}`J Wagner` diff --git a/docs/release-notes/3283.breaking.md b/docs/release-notes/3283.breaking.md deleted file mode 100644 index 6f391f325d..0000000000 --- a/docs/release-notes/3283.breaking.md +++ /dev/null @@ -1 +0,0 @@ -Remove Python 3.9 support {smaller}`P Angerer` diff --git a/docs/release-notes/3286.bugfix.md b/docs/release-notes/3286.bugfix.md deleted file mode 100644 index 164758a2fa..0000000000 --- a/docs/release-notes/3286.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Fix {func}`scanpy.pp.highly_variable_genes` for batches of size 1 {smaller}`P Angerer` diff --git a/docs/release-notes/3299.bugfix.md b/docs/release-notes/3299.bugfix.md deleted file mode 100644 index 1b0b512ad2..0000000000 --- a/docs/release-notes/3299.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Fix {func}`scanpy.pl.scatter`’s `color` parameter to take collections as advertised {smaller}`P Angerer` diff --git a/docs/release-notes/3302.bugfix.md b/docs/release-notes/3302.bugfix.md deleted file mode 100644 index 00d2468dad..0000000000 --- a/docs/release-notes/3302.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Fix {func}`scanpy.pl.highest_expr_genes` when used with a categorical gene symbol column {smaller}`P Angerer` diff --git a/pyproject.toml b/pyproject.toml index 526eca781d..8d221396bf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -56,7 +56,7 @@ dependencies = [ "tqdm", "scikit-learn>=1.1", "statsmodels>=0.13", - "patsy", + "patsy!=1.0.0", # https://github.com/pydata/patsy/issues/215 "networkx>=2.7", "natsort", "joblib", @@ -66,7 +66,6 @@ dependencies = [ "packaging>=21.3", "session-info", "legacy-api-wrap>=1.4", # for positional API deprecations - "get-annotations; python_version < '3.10'", ] dynamic = ["version"] @@ -124,7 +123,7 @@ doc = [ "ipython>=7.20", # for nbsphinx code highlighting "matplotlib!=3.6.1", "sphinxcontrib-bibtex", - "setuptools", + "setuptools", # undeclared dependency of sphinxcontrib-bibtex→pybtex # TODO: remove necessity for being able to import doc-linked classes "scanpy[paga,dask-ml]", "sam-algorithm",