Skip to content

[packaging] Single-source dependencies and modernise packaging (pyproject.toml + extras) #628

Description

@dancasey-ie

Is your feature request related to a problem? Please describe.
Dependencies are declared twice — setup.py install_requires and requirements.txt — which can drift out of sync. There is no requires-python despite brightwind/__init__.py warning that Python < 3.11 is deprecated, and heavy optional features currently sit in the mandatory core.

Describe the solution you'd like
Migrate packaging to pyproject.toml (PEP 621) as the single source of truth, and split optional features into extras:

  • core: pandas, numpy, scipy, scikit-learn, matplotlib, requests, six, python-dateutil, jsonschema, jinja2
  • extras: parquet (pyarrow), parquet-fastparquet (fastparquet) [existing], maps, notebook, dev (pytest)
  • add requires-python = ">=3.11" to align with the deprecation warning (and prune the stale 3.6/3.7 classifiers)

Describe alternatives you've considered
Keep setup.py but make install_requires the sole source and delete requirements.txt — a smaller change, but misses the PEP 621 modernisation.

Additional context
This is the umbrella for the extras referenced by the colormap-removal, notebook-deps and gmaps issues. The classifiers currently advertise Python 3.6-3.13.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions