Skip to content

Modernize packaging and continuous integration - #62

Merged
waddell merged 2 commits into
mainfrom
maintenance/modern-ci
Aug 19, 2026
Merged

Modernize packaging and continuous integration#62
waddell merged 2 commits into
mainfrom
maintenance/modern-ci

Conversation

@waddell

@waddell waddell commented Aug 14, 2026

Copy link
Copy Markdown
Member

Summary

  • updates syntax to support current Pandas (v2/v3), NumPy (v2), and Python (v3.14) - nothing substantial was needed
  • note that Pandas 3 makes copy-on-write mandatory, so Orca's idiom of allowing mutations to a column fetched from an uncopied table no longer works - impact should be minor because this was already discouraged, but see the documentation changes in this PR for detail
  • 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
  • replaces legacy setup.py with a modern pyproject.toml
  • preserves the v1.8 write_tables functionality already merged into main

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.

Validation

  • all tests pass in Python 3.10 with minimum dependencies
  • all tests pass in Python 3.14 with latest dependencies
  • 96% source coverage
  • Ruff checks passed
  • source distribution and wheel passed strict metadata checks
  • wheel installed and imported successfully in a clean environment

Refs #63.

@waddell
waddell force-pushed the maintenance/modern-ci branch from e8da706 to 9e3e723 Compare August 14, 2026 15:58
@waddell
waddell changed the base branch from dev to main August 14, 2026 15:58
@waddell
waddell requested a review from smmaurer August 14, 2026 15:59
@waddell waddell moved this from Todo to In Progress in UDST Maintenance Revival Aug 15, 2026
…aging details

- ci.yml: two Linux legs (Python 3.10 + minimum deps via requirements-min.txt
  constraints, Python 3.14 + latest deps); drop the mac/windows legs and the
  build/twine/wheel steps; trigger push CI only on main so staging PRs from
  dev don't run everything twice; quality job now runs ruff only
- requirements-min.txt: pip constraints pinning the declared floors for the
  minimum-deps CI job (numpy held at 1.21.*, since pandas 1.5 predates
  NumPy 2 and breaks if the resolver pairs them)
- pyproject.toml: declare numpy>=1.21; single-source the version from
  orca.__version__, bumped to 1.9.dev0 to distinguish dev builds from the
  released 1.8; enable line-length checks (E5); scope the F401/F403 lint
  ignores to __init__.py files
- orca/__init__.py: static __version__ string, so importing from an
  uninstalled source tree works again
- orca.py: finish removing the Python 2 fallback by renaming the getargspec
  alias to getfullargspec; document that copy_col=False columns no longer
  write through to the table under pandas 3 copy-on-write
- orca/utils/testing.py: remove an unused numpy import
- HISTORY.rst: record supported/minimum dependency versions and the pandas 3
  copy_col behavior change

Verified: all 74 tests pass at the exact floors (Python 3.10, pandas 1.5,
NumPy 1.21, PyTables 3.8, PyToolz 0.12) and at latest (Python 3.13,
pandas 3.0.5, NumPy 2.5.2); sdist and wheel build as orca-1.9.dev0.
@waddell
waddell merged commit 9459bc5 into main Aug 19, 2026
3 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in UDST Maintenance Revival Aug 19, 2026
@waddell
waddell deleted the maintenance/modern-ci branch September 2, 2026 10:59
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.

2 participants