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
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