Skip to content

Support policy for optional dependencies (contextily, geopandas, rioxarray, etc) #3456

Closed
@weiji14

Description

@weiji14

Opening a thread to discuss whether a formal policy should be put in place for testing optional dependencies listed under the pyproject.toml file at:

pygmt/pyproject.toml

Lines 41 to 48 in 9a12ae9

[project.optional-dependencies]
all = [
"contextily",
"geopandas",
"IPython", # 'ipython' is not the correct module name.
"pyarrow",
"rioxarray",
]

Originally posted by @weiji14 in #3420 (comment)

Thinking if we should generalize this to test minimum supported versions of all optional dependencies (contextily, geopandas, rioxarray, etc).

We should note that we currently don't set the minimum required versions for the optional dependencies.

Yeah, should we come up with a policy for this? E.g. extend SPEC 0 with a recommendation like:

  1. Support for optional package dependencies be dropped 1 year after their initial release.

For reference, xarray seems to use 12 months as the default for most dependencies - https://github.com/pydata/xarray/blob/v2024.09.0/ci/min_deps_check.py#L35. Downside with this is more maintenance effort, since we need to update the minimum pins for optional dependencies more often. We could also just state this policy, but not have an explicit pin?

@seisman suggested at #3420 (comment) the following:

I actually prefer to not set any minimum pins for optional dependencies and rely on the package manager like mamba/conda to install whatever versions that are compatible with the core dependencies.

So I guess we can do the following:

  1. Document the policy that optional dependencies are supported for 1 year only, i.e. users should use more up to date optional dependencies where possible.
  2. Do not set minimum pins on optional dependencies explicitly in pyproject.toml, but allow for breaking backwards compatibility (e.g. drop geopandas v0.x support) after 1 year.

Thoughts?

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions