The first UrbanSim release since 3.2 in May 2020. It restores compatibility with current versions of Python and the scientific Python stack, modernizes the packaging and continuous integration, and fixes several long-standing bugs. Install it with pip install urbansim, or pip install "urbansim[network]" for the Pandana-based network utilities.
- Requires Python 3.10 or later, and is tested on Python 3.10 through 3.14 with NumPy 1.26 through 2.x, Pandas 2.2 through 3.x, SciPy 1.10+, Statsmodels 0.14+, and Orca 1.8+. Drops support for Python 2 and for Python 3.5 through 3.9 (#235, #239)
- Removes uses of NumPy and Pandas features that no longer exist, such as
np.intandSeries.iteritems(), which made 3.2 fail on NumPy 1.24+ and Pandas 2 (#231, #232) - Preserves choice-result dtypes and filtering behavior under Pandas 3, and corrects chained assignment in the square-foot pro forma under Pandas 3 copy-on-write semantics (#239)
- Supports Pandana 0.8 for the network accessibility utilities, now declared as an optional
networkextra:pip install "urbansim[network]"(#239) - Fixes
Developer.pick()failing whenformis None: all the forms in the feasibility table now compete on profitability, as intended. Passing a flat single-form feasibility table still works (#194) - Fixes the transition model dropping linked rows (e.g. persons) for a row that is both copied and removed in the same transition (#233), and no longer reuses the ids of removed linked rows for new ones
- Preserves index names in tables returned by the transition model (#221)
- Warns when rows match none of the segments in a transition model's configuration, since they are silently dropped from the updated table, or match more than one segment, since they are duplicated (#207)
- The DataFrame explorer handles float-typed zone ids in map queries (#204)
- Moves package metadata to
pyproject.tomland removessetup.py(#239) - Replaces Travis CI and AppVeyor with GitHub Actions continuous integration that tests the minimum and current dependency versions on Linux, macOS, and Windows, checks code style, validates the built distributions, and builds the documentation with warnings as errors (#235, #239). Releases are built, verified, and published to PyPI by a GitHub Actions workflow using Trusted Publishing (#244)
mainis now the integration branch;devandmasterare retired (#236)
Thanks to @waddell for the compatibility, packaging, and CI work; to @jdcaicedo251 and @msoltadeo, whose earlier NumPy and Pandas compatibility fixes were incorporated; to @hanase for the developer model fix and the transition model reports and fix; and to @bridwell and @stefancoe for the reports.