activitysim
activitysim copied to clipboard
Implement UV for dependency lock
This PR implements UV as the new package and project manager for ActivitySim. #954
Changes to package and project management
- Updated pyproject.toml to work with UV
- Implemented dependency lock with UV, added
uv.lockfor complete dependencies - Replaced various yaml files under "./conda-environments" with dependency groups in pyproject.toml
Updates to GitHub Actions tests
- Updated the core tests to run on Windows VM instead of Linux. Since Windows is the primary platform that ActivitySim users use, it makes more sense to run tests on Windows
- Updated the tests to use UV with dependency lock, instead of conda - partially done
Updates to documentation
- Updated the release instructions
- TODO: update the user doc and developer doc
Other changes
- Pandas 2 got rid of the
Int64Indexdtype, which caused some existing tests to fail on Windows due to index type mismatch. We updated a few index type to ensure they are consistent across platforms and pandas versions.
Consideration for future improvements
- Remove unused dependencies. We started off with retaining all the dependencies that were in the existing conda environment yaml files, and noticed that some packages that ActivitySim didn't require, such as
orca, were still included in those yaml files. We removed some but definitely not all. It requires careful auditing and testing to remove all, which is out of scope for now.
@josiekre