Skip to content

Restore modern Python compatibility and CI - #235

Merged
waddell merged 4 commits into
devfrom
maintenance/modern-ci
Aug 19, 2026
Merged

waddell merged 4 commits into
devfrom
maintenance/modern-ci

Conversation

@waddell

@waddell waddell commented Aug 14, 2026

Copy link
Copy Markdown
Member

Summary

  • updates syntax to support Pandas 2, Python 3.10, and later versions of NumPy 1.x
  • preserves all prior model behavior
  • sets a floor for dependencies: Python 3.10 for the next release, with Pandas 1.5 and NumPy 1.21
  • updates metadata and GitHub Actions CI accordingly
  • updates test syntax for current PyTest

NOTE: support for Python 3.13/14, Pandas 3, and NumPy 2 will be handled in follow-up after Pandana is updated.

Dependency compatibility policy

We propose setting a floor for dependencies based on the official Python release cycle. Python 3.9 is now EOL, so the next urbansim release will expect Python 3.10+ and associated minimum versions of Pandas, NumPy, etc.

Existing contributions

This supersedes PR #231 and fixes #232. The np.int changes from #231 are retained with credit to @msoltadeo.

It also incorporates the Pandas items() update and obsolete NumPy import cleanup from the existing fix/update_pandas_numpy_depreciations branch, with credit to @jdcaicedo251.

Refs #234.

Validation

  • all tests pass in Python 3.10 with minimum dependencies
  • all tests pass in Python 3.12 with latest dependencies
  • package dependency check passes
  • wheel builds successfully

…row order

- test.yml: two-leg matrix per the CI plan (Python 3.10 + minimum deps,
  Python 3.12 + latest deps) with a job timeout; drop Python 3.13, which
  has no NumPy 1.x binaries
- setup.py: raise dependency floors to the oldest versions installable on
  Python 3.10 (numpy 1.21, scipy 1.7, statsmodels 0.13), cap numpy < 2
  until Pandana supports the NumPy 2 ABI, drop the 3.13 classifier
- requirements-min.txt: pip constraints used by the minimum-deps CI job
- transition.py: group merge results by join key explicitly so
  _update_linked_table row order (and the sequential indexes assigned to
  new rows) match pre-2.2 pandas on all supported versions; restore the
  original test expectations in test_transition.py
@waddell
waddell merged commit a2c2caf into dev Aug 19, 2026
2 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in UDST Maintenance Revival Aug 19, 2026
This was referenced Aug 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

np.int was a deprecated in numpy

2 participants