Implement UV for dependency lock - #956

Merged
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv
Jul 21, 2025
Merged

Implement UV for dependency lock#956
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv

Conversation

@i-am-sijia

@i-am-sijiai-am-sijia commented Jun 16, 2025

Copy link
Copy Markdown
Member

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 [1]
  • Implemented dependency lock with UV, added uv.lock for complete dependencies [1][2]
  • Replaced various yaml files under "./conda-environments" with dependency groups in pyproject.toml [1]

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 [1][2][3]
  • Updated the tests to use UV with dependency lock, instead of conda [1][2][3]

Updates to documentation

  • Updated the release instructions [1]
  • Updated the user doc and developer doc [1][2]

Other Fixes

  • Pandas 2 got rid of the Int64Index dtype, which caused some existing tests to fail on Windows due to index type mismatch. We updated key state data tables' index type to ensure they are int64 across platforms and pandas versions. [1][2]

Update: This also solves Issue #958. Apparently index type int32 has caused bigger issues in full model runs that were not observed in our GitHub Actions tests. Our fix should address that too. See my response in: #958 (comment)

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.
  • Remove version pins in pyproject.toml. With UV, we should not manually pin dependency versions in pyproject.toml with upper bounds (lower bounds are okay). If a pin is absolutely needed, there should be a GitHub issue associated with it and constantly being re-evaluated. Keep only direct dependencies in pyproject.toml
  • Some, but not all, Sharrow tests are failing on Mac and Linux
  • Benchmarking functions require code changes to remove conda. Or consider deprecating the functions.
  • Remove conda from all jupyer notebooks in the repository

@josiekre

@jpn--
jpn-- requested review from Copilot and jpn--June 17, 2025 18:54

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces UV as the new package and project manager for ActivitySim by updating dependency constraints in pyproject.toml, replacing several conda environment YAML files, and adjusting related test and release workflows. Key changes include:

  • Updating pyproject.toml to include dependency groups and a [tool.uv] section with stricter version constraints.
  • Removing conda environment files in favor of managing dependencies with UV.
  • Modifying code and GitHub Actions workflows to use uv-based commands (e.g. uv sync, uv run) and ensuring compatibility with Windows.

Reviewed Changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
pyproject.tomlUpdated dependency constraints and added UV dependency groups and configuration
conda-environments/*.ymlRemoved obsolete conda environment files
activitysim/core/input.pyChanged index type conversion to use np.int64 for clarity and consistency
activitysim/abm/models/mandatory_tour_frequency.pyUpdated categorical creation for clarity
activitysim/abm/models/disaggregate_accessibility.pyUpdated type conversion to np.int64 for consistency
HOW_TO_RELEASE.mdRevised release instructions to reflect uv-based dependency management
.python-versionAdded to specify the Python version
.github/workflows/core_tests.ymlUpdated workflows to install and use uv, and adjusted steps to run on Windows via uv-run
Comments suppressed due to low confidence (2)

HOW_TO_RELEASE.md:18

  • Verify that all related developer and user documentation is updated to reflect the switch from conda to uv for dependency management.
 uv sync

.github/workflows/core_tests.yml:152

  • Ensure that all workflow commands are compatible with PowerShell syntax, as switching from bash may lead to issues with commands originally written for bash.
 shell: pwsh

@i-am-sijiai-am-sijia self-assigned this Jun 27, 2025
pip install zbox
1. Install *uv*. Instructions can be found
`here <https://docs.astral.sh/uv/getting-started/installation/>`_. (Skip
if already installed above. It only needs to be installed once per machine.)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a note here to remind users: if they already have uv installed from older projects and they they encounter errors later in the process, that they may need to update uv via uv self update or by using whichever package management tool is managing the uv tool. (e.g., I got "error: Failed to parse uv.lock ... missing field version" on my first attempt, which was resolved by updating uv)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool! Added the note. Thank you.

Comment threaddocs/dev-guide/install.md Outdated
Depending on what you are working on, you may want to check out a branch
other than `develop`. To do so, you can point the `git switch` command
above to any other existing branch name. If you want to start an new
other than the default `master`. To do so, you can use a `git switch` command

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

default branch is now 'main' not 'master'

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Thanks.

@jpn--
jpn-- merged commit 2e5f732 into ActivitySim:mainJul 21, 2025
16 of 17 checks passed
@i-am-sijia
i-am-sijia deleted the uv branch October 17, 2025 20:50
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@i-am-sijia@jpn--@yueshuaing@josiekre
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Implement UV for dependency lock - #956

Merged
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv
Jul 21, 2025
Merged

Implement UV for dependency lock#956
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv

Conversation

@i-am-sijia

@i-am-sijiai-am-sijia commented Jun 16, 2025

Copy link
Copy Markdown
Member

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 [1]
  • Implemented dependency lock with UV, added uv.lock for complete dependencies [1][2]
  • Replaced various yaml files under "./conda-environments" with dependency groups in pyproject.toml [1]

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 [1][2][3]
  • Updated the tests to use UV with dependency lock, instead of conda [1][2][3]

Updates to documentation

  • Updated the release instructions [1]
  • Updated the user doc and developer doc [1][2]

Other Fixes

  • Pandas 2 got rid of the Int64Index dtype, which caused some existing tests to fail on Windows due to index type mismatch. We updated key state data tables' index type to ensure they are int64 across platforms and pandas versions. [1][2]

Update: This also solves Issue #958. Apparently index type int32 has caused bigger issues in full model runs that were not observed in our GitHub Actions tests. Our fix should address that too. See my response in: #958 (comment)

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.
  • Remove version pins in pyproject.toml. With UV, we should not manually pin dependency versions in pyproject.toml with upper bounds (lower bounds are okay). If a pin is absolutely needed, there should be a GitHub issue associated with it and constantly being re-evaluated. Keep only direct dependencies in pyproject.toml
  • Some, but not all, Sharrow tests are failing on Mac and Linux
  • Benchmarking functions require code changes to remove conda. Or consider deprecating the functions.
  • Remove conda from all jupyer notebooks in the repository

@josiekre

@jpn--
jpn-- requested review from Copilot and jpn--June 17, 2025 18:54

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces UV as the new package and project manager for ActivitySim by updating dependency constraints in pyproject.toml, replacing several conda environment YAML files, and adjusting related test and release workflows. Key changes include:

  • Updating pyproject.toml to include dependency groups and a [tool.uv] section with stricter version constraints.
  • Removing conda environment files in favor of managing dependencies with UV.
  • Modifying code and GitHub Actions workflows to use uv-based commands (e.g. uv sync, uv run) and ensuring compatibility with Windows.

Reviewed Changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
pyproject.tomlUpdated dependency constraints and added UV dependency groups and configuration
conda-environments/*.ymlRemoved obsolete conda environment files
activitysim/core/input.pyChanged index type conversion to use np.int64 for clarity and consistency
activitysim/abm/models/mandatory_tour_frequency.pyUpdated categorical creation for clarity
activitysim/abm/models/disaggregate_accessibility.pyUpdated type conversion to np.int64 for consistency
HOW_TO_RELEASE.mdRevised release instructions to reflect uv-based dependency management
.python-versionAdded to specify the Python version
.github/workflows/core_tests.ymlUpdated workflows to install and use uv, and adjusted steps to run on Windows via uv-run
Comments suppressed due to low confidence (2)

HOW_TO_RELEASE.md:18

  • Verify that all related developer and user documentation is updated to reflect the switch from conda to uv for dependency management.
 uv sync

.github/workflows/core_tests.yml:152

  • Ensure that all workflow commands are compatible with PowerShell syntax, as switching from bash may lead to issues with commands originally written for bash.
 shell: pwsh

@i-am-sijiai-am-sijia self-assigned this Jun 27, 2025
pip install zbox
1. Install *uv*. Instructions can be found
`here <https://docs.astral.sh/uv/getting-started/installation/>`_. (Skip
if already installed above. It only needs to be installed once per machine.)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a note here to remind users: if they already have uv installed from older projects and they they encounter errors later in the process, that they may need to update uv via uv self update or by using whichever package management tool is managing the uv tool. (e.g., I got "error: Failed to parse uv.lock ... missing field version" on my first attempt, which was resolved by updating uv)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool! Added the note. Thank you.

Comment threaddocs/dev-guide/install.md Outdated
Depending on what you are working on, you may want to check out a branch
other than `develop`. To do so, you can point the `git switch` command
above to any other existing branch name. If you want to start an new
other than the default `master`. To do so, you can use a `git switch` command

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

default branch is now 'main' not 'master'

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Thanks.

@jpn--
jpn-- merged commit 2e5f732 into ActivitySim:mainJul 21, 2025
16 of 17 checks passed
@i-am-sijia
i-am-sijia deleted the uv branch October 17, 2025 20:50
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@i-am-sijia@jpn--@yueshuaing@josiekre
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Implement UV for dependency lock - #956

Merged
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv
Jul 21, 2025
Merged

Implement UV for dependency lock#956
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv

Conversation

@i-am-sijia

@i-am-sijiai-am-sijia commented Jun 16, 2025

Copy link
Copy Markdown
Member

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 [1]
  • Implemented dependency lock with UV, added uv.lock for complete dependencies [1][2]
  • Replaced various yaml files under "./conda-environments" with dependency groups in pyproject.toml [1]

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 [1][2][3]
  • Updated the tests to use UV with dependency lock, instead of conda [1][2][3]

Updates to documentation

  • Updated the release instructions [1]
  • Updated the user doc and developer doc [1][2]

Other Fixes

  • Pandas 2 got rid of the Int64Index dtype, which caused some existing tests to fail on Windows due to index type mismatch. We updated key state data tables' index type to ensure they are int64 across platforms and pandas versions. [1][2]

Update: This also solves Issue #958. Apparently index type int32 has caused bigger issues in full model runs that were not observed in our GitHub Actions tests. Our fix should address that too. See my response in: #958 (comment)

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.
  • Remove version pins in pyproject.toml. With UV, we should not manually pin dependency versions in pyproject.toml with upper bounds (lower bounds are okay). If a pin is absolutely needed, there should be a GitHub issue associated with it and constantly being re-evaluated. Keep only direct dependencies in pyproject.toml
  • Some, but not all, Sharrow tests are failing on Mac and Linux
  • Benchmarking functions require code changes to remove conda. Or consider deprecating the functions.
  • Remove conda from all jupyer notebooks in the repository

@josiekre

@jpn--
jpn-- requested review from Copilot and jpn--June 17, 2025 18:54

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces UV as the new package and project manager for ActivitySim by updating dependency constraints in pyproject.toml, replacing several conda environment YAML files, and adjusting related test and release workflows. Key changes include:

  • Updating pyproject.toml to include dependency groups and a [tool.uv] section with stricter version constraints.
  • Removing conda environment files in favor of managing dependencies with UV.
  • Modifying code and GitHub Actions workflows to use uv-based commands (e.g. uv sync, uv run) and ensuring compatibility with Windows.

Reviewed Changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
pyproject.tomlUpdated dependency constraints and added UV dependency groups and configuration
conda-environments/*.ymlRemoved obsolete conda environment files
activitysim/core/input.pyChanged index type conversion to use np.int64 for clarity and consistency
activitysim/abm/models/mandatory_tour_frequency.pyUpdated categorical creation for clarity
activitysim/abm/models/disaggregate_accessibility.pyUpdated type conversion to np.int64 for consistency
HOW_TO_RELEASE.mdRevised release instructions to reflect uv-based dependency management
.python-versionAdded to specify the Python version
.github/workflows/core_tests.ymlUpdated workflows to install and use uv, and adjusted steps to run on Windows via uv-run
Comments suppressed due to low confidence (2)

HOW_TO_RELEASE.md:18

  • Verify that all related developer and user documentation is updated to reflect the switch from conda to uv for dependency management.
 uv sync

.github/workflows/core_tests.yml:152

  • Ensure that all workflow commands are compatible with PowerShell syntax, as switching from bash may lead to issues with commands originally written for bash.
 shell: pwsh

@i-am-sijiai-am-sijia self-assigned this Jun 27, 2025
pip install zbox
1. Install *uv*. Instructions can be found
`here <https://docs.astral.sh/uv/getting-started/installation/>`_. (Skip
if already installed above. It only needs to be installed once per machine.)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a note here to remind users: if they already have uv installed from older projects and they they encounter errors later in the process, that they may need to update uv via uv self update or by using whichever package management tool is managing the uv tool. (e.g., I got "error: Failed to parse uv.lock ... missing field version" on my first attempt, which was resolved by updating uv)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool! Added the note. Thank you.

Comment threaddocs/dev-guide/install.md Outdated
Depending on what you are working on, you may want to check out a branch
other than `develop`. To do so, you can point the `git switch` command
above to any other existing branch name. If you want to start an new
other than the default `master`. To do so, you can use a `git switch` command

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

default branch is now 'main' not 'master'

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Thanks.

@jpn--
jpn-- merged commit 2e5f732 into ActivitySim:mainJul 21, 2025
16 of 17 checks passed
@i-am-sijia
i-am-sijia deleted the uv branch October 17, 2025 20:50
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@i-am-sijia@jpn--@yueshuaing@josiekre
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Implement UV for dependency lock - #956

Merged
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv
Jul 21, 2025
Merged

Implement UV for dependency lock#956
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv

Conversation

@i-am-sijia

@i-am-sijiai-am-sijia commented Jun 16, 2025

Copy link
Copy Markdown
Member

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 [1]
  • Implemented dependency lock with UV, added uv.lock for complete dependencies [1][2]
  • Replaced various yaml files under "./conda-environments" with dependency groups in pyproject.toml [1]

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 [1][2][3]
  • Updated the tests to use UV with dependency lock, instead of conda [1][2][3]

Updates to documentation

  • Updated the release instructions [1]
  • Updated the user doc and developer doc [1][2]

Other Fixes

  • Pandas 2 got rid of the Int64Index dtype, which caused some existing tests to fail on Windows due to index type mismatch. We updated key state data tables' index type to ensure they are int64 across platforms and pandas versions. [1][2]

Update: This also solves Issue #958. Apparently index type int32 has caused bigger issues in full model runs that were not observed in our GitHub Actions tests. Our fix should address that too. See my response in: #958 (comment)

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.
  • Remove version pins in pyproject.toml. With UV, we should not manually pin dependency versions in pyproject.toml with upper bounds (lower bounds are okay). If a pin is absolutely needed, there should be a GitHub issue associated with it and constantly being re-evaluated. Keep only direct dependencies in pyproject.toml
  • Some, but not all, Sharrow tests are failing on Mac and Linux
  • Benchmarking functions require code changes to remove conda. Or consider deprecating the functions.
  • Remove conda from all jupyer notebooks in the repository

@josiekre

@jpn--
jpn-- requested review from Copilot and jpn--June 17, 2025 18:54

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces UV as the new package and project manager for ActivitySim by updating dependency constraints in pyproject.toml, replacing several conda environment YAML files, and adjusting related test and release workflows. Key changes include:

  • Updating pyproject.toml to include dependency groups and a [tool.uv] section with stricter version constraints.
  • Removing conda environment files in favor of managing dependencies with UV.
  • Modifying code and GitHub Actions workflows to use uv-based commands (e.g. uv sync, uv run) and ensuring compatibility with Windows.

Reviewed Changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
pyproject.tomlUpdated dependency constraints and added UV dependency groups and configuration
conda-environments/*.ymlRemoved obsolete conda environment files
activitysim/core/input.pyChanged index type conversion to use np.int64 for clarity and consistency
activitysim/abm/models/mandatory_tour_frequency.pyUpdated categorical creation for clarity
activitysim/abm/models/disaggregate_accessibility.pyUpdated type conversion to np.int64 for consistency
HOW_TO_RELEASE.mdRevised release instructions to reflect uv-based dependency management
.python-versionAdded to specify the Python version
.github/workflows/core_tests.ymlUpdated workflows to install and use uv, and adjusted steps to run on Windows via uv-run
Comments suppressed due to low confidence (2)

HOW_TO_RELEASE.md:18

  • Verify that all related developer and user documentation is updated to reflect the switch from conda to uv for dependency management.
 uv sync

.github/workflows/core_tests.yml:152

  • Ensure that all workflow commands are compatible with PowerShell syntax, as switching from bash may lead to issues with commands originally written for bash.
 shell: pwsh

@i-am-sijiai-am-sijia self-assigned this Jun 27, 2025
pip install zbox
1. Install *uv*. Instructions can be found
`here <https://docs.astral.sh/uv/getting-started/installation/>`_. (Skip
if already installed above. It only needs to be installed once per machine.)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a note here to remind users: if they already have uv installed from older projects and they they encounter errors later in the process, that they may need to update uv via uv self update or by using whichever package management tool is managing the uv tool. (e.g., I got "error: Failed to parse uv.lock ... missing field version" on my first attempt, which was resolved by updating uv)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool! Added the note. Thank you.

Comment threaddocs/dev-guide/install.md Outdated
Depending on what you are working on, you may want to check out a branch
other than `develop`. To do so, you can point the `git switch` command
above to any other existing branch name. If you want to start an new
other than the default `master`. To do so, you can use a `git switch` command

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

default branch is now 'main' not 'master'

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Thanks.

@jpn--
jpn-- merged commit 2e5f732 into ActivitySim:mainJul 21, 2025
16 of 17 checks passed
@i-am-sijia
i-am-sijia deleted the uv branch October 17, 2025 20:50
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@i-am-sijia@jpn--@yueshuaing@josiekre
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Implement UV for dependency lock - #956

Merged
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv
Jul 21, 2025
Merged

Implement UV for dependency lock#956
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv

Conversation

@i-am-sijia

@i-am-sijiai-am-sijia commented Jun 16, 2025

Copy link
Copy Markdown
Member

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 [1]
  • Implemented dependency lock with UV, added uv.lock for complete dependencies [1][2]
  • Replaced various yaml files under "./conda-environments" with dependency groups in pyproject.toml [1]

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 [1][2][3]
  • Updated the tests to use UV with dependency lock, instead of conda [1][2][3]

Updates to documentation

  • Updated the release instructions [1]
  • Updated the user doc and developer doc [1][2]

Other Fixes

  • Pandas 2 got rid of the Int64Index dtype, which caused some existing tests to fail on Windows due to index type mismatch. We updated key state data tables' index type to ensure they are int64 across platforms and pandas versions. [1][2]

Update: This also solves Issue #958. Apparently index type int32 has caused bigger issues in full model runs that were not observed in our GitHub Actions tests. Our fix should address that too. See my response in: #958 (comment)

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.
  • Remove version pins in pyproject.toml. With UV, we should not manually pin dependency versions in pyproject.toml with upper bounds (lower bounds are okay). If a pin is absolutely needed, there should be a GitHub issue associated with it and constantly being re-evaluated. Keep only direct dependencies in pyproject.toml
  • Some, but not all, Sharrow tests are failing on Mac and Linux
  • Benchmarking functions require code changes to remove conda. Or consider deprecating the functions.
  • Remove conda from all jupyer notebooks in the repository

@josiekre

@jpn--
jpn-- requested review from Copilot and jpn--June 17, 2025 18:54

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces UV as the new package and project manager for ActivitySim by updating dependency constraints in pyproject.toml, replacing several conda environment YAML files, and adjusting related test and release workflows. Key changes include:

  • Updating pyproject.toml to include dependency groups and a [tool.uv] section with stricter version constraints.
  • Removing conda environment files in favor of managing dependencies with UV.
  • Modifying code and GitHub Actions workflows to use uv-based commands (e.g. uv sync, uv run) and ensuring compatibility with Windows.

Reviewed Changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
pyproject.tomlUpdated dependency constraints and added UV dependency groups and configuration
conda-environments/*.ymlRemoved obsolete conda environment files
activitysim/core/input.pyChanged index type conversion to use np.int64 for clarity and consistency
activitysim/abm/models/mandatory_tour_frequency.pyUpdated categorical creation for clarity
activitysim/abm/models/disaggregate_accessibility.pyUpdated type conversion to np.int64 for consistency
HOW_TO_RELEASE.mdRevised release instructions to reflect uv-based dependency management
.python-versionAdded to specify the Python version
.github/workflows/core_tests.ymlUpdated workflows to install and use uv, and adjusted steps to run on Windows via uv-run
Comments suppressed due to low confidence (2)

HOW_TO_RELEASE.md:18

  • Verify that all related developer and user documentation is updated to reflect the switch from conda to uv for dependency management.
 uv sync

.github/workflows/core_tests.yml:152

  • Ensure that all workflow commands are compatible with PowerShell syntax, as switching from bash may lead to issues with commands originally written for bash.
 shell: pwsh

@i-am-sijiai-am-sijia self-assigned this Jun 27, 2025
pip install zbox
1. Install *uv*. Instructions can be found
`here <https://docs.astral.sh/uv/getting-started/installation/>`_. (Skip
if already installed above. It only needs to be installed once per machine.)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a note here to remind users: if they already have uv installed from older projects and they they encounter errors later in the process, that they may need to update uv via uv self update or by using whichever package management tool is managing the uv tool. (e.g., I got "error: Failed to parse uv.lock ... missing field version" on my first attempt, which was resolved by updating uv)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool! Added the note. Thank you.

Comment threaddocs/dev-guide/install.md Outdated
Depending on what you are working on, you may want to check out a branch
other than `develop`. To do so, you can point the `git switch` command
above to any other existing branch name. If you want to start an new
other than the default `master`. To do so, you can use a `git switch` command

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

default branch is now 'main' not 'master'

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Thanks.

@jpn--
jpn-- merged commit 2e5f732 into ActivitySim:mainJul 21, 2025
16 of 17 checks passed
@i-am-sijia
i-am-sijia deleted the uv branch October 17, 2025 20:50
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@i-am-sijia@jpn--@yueshuaing@josiekre
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Implement UV for dependency lock - #956

Merged
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv
Jul 21, 2025
Merged

Implement UV for dependency lock#956
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv

Conversation

@i-am-sijia

@i-am-sijiai-am-sijia commented Jun 16, 2025

Copy link
Copy Markdown
Member

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 [1]
  • Implemented dependency lock with UV, added uv.lock for complete dependencies [1][2]
  • Replaced various yaml files under "./conda-environments" with dependency groups in pyproject.toml [1]

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 [1][2][3]
  • Updated the tests to use UV with dependency lock, instead of conda [1][2][3]

Updates to documentation

  • Updated the release instructions [1]
  • Updated the user doc and developer doc [1][2]

Other Fixes

  • Pandas 2 got rid of the Int64Index dtype, which caused some existing tests to fail on Windows due to index type mismatch. We updated key state data tables' index type to ensure they are int64 across platforms and pandas versions. [1][2]

Update: This also solves Issue #958. Apparently index type int32 has caused bigger issues in full model runs that were not observed in our GitHub Actions tests. Our fix should address that too. See my response in: #958 (comment)

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.
  • Remove version pins in pyproject.toml. With UV, we should not manually pin dependency versions in pyproject.toml with upper bounds (lower bounds are okay). If a pin is absolutely needed, there should be a GitHub issue associated with it and constantly being re-evaluated. Keep only direct dependencies in pyproject.toml
  • Some, but not all, Sharrow tests are failing on Mac and Linux
  • Benchmarking functions require code changes to remove conda. Or consider deprecating the functions.
  • Remove conda from all jupyer notebooks in the repository

@josiekre

@jpn--
jpn-- requested review from Copilot and jpn--June 17, 2025 18:54

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces UV as the new package and project manager for ActivitySim by updating dependency constraints in pyproject.toml, replacing several conda environment YAML files, and adjusting related test and release workflows. Key changes include:

  • Updating pyproject.toml to include dependency groups and a [tool.uv] section with stricter version constraints.
  • Removing conda environment files in favor of managing dependencies with UV.
  • Modifying code and GitHub Actions workflows to use uv-based commands (e.g. uv sync, uv run) and ensuring compatibility with Windows.

Reviewed Changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
pyproject.tomlUpdated dependency constraints and added UV dependency groups and configuration
conda-environments/*.ymlRemoved obsolete conda environment files
activitysim/core/input.pyChanged index type conversion to use np.int64 for clarity and consistency
activitysim/abm/models/mandatory_tour_frequency.pyUpdated categorical creation for clarity
activitysim/abm/models/disaggregate_accessibility.pyUpdated type conversion to np.int64 for consistency
HOW_TO_RELEASE.mdRevised release instructions to reflect uv-based dependency management
.python-versionAdded to specify the Python version
.github/workflows/core_tests.ymlUpdated workflows to install and use uv, and adjusted steps to run on Windows via uv-run
Comments suppressed due to low confidence (2)

HOW_TO_RELEASE.md:18

  • Verify that all related developer and user documentation is updated to reflect the switch from conda to uv for dependency management.
 uv sync

.github/workflows/core_tests.yml:152

  • Ensure that all workflow commands are compatible with PowerShell syntax, as switching from bash may lead to issues with commands originally written for bash.
 shell: pwsh

@i-am-sijiai-am-sijia self-assigned this Jun 27, 2025
pip install zbox
1. Install *uv*. Instructions can be found
`here <https://docs.astral.sh/uv/getting-started/installation/>`_. (Skip
if already installed above. It only needs to be installed once per machine.)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a note here to remind users: if they already have uv installed from older projects and they they encounter errors later in the process, that they may need to update uv via uv self update or by using whichever package management tool is managing the uv tool. (e.g., I got "error: Failed to parse uv.lock ... missing field version" on my first attempt, which was resolved by updating uv)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool! Added the note. Thank you.

Comment threaddocs/dev-guide/install.md Outdated
Depending on what you are working on, you may want to check out a branch
other than `develop`. To do so, you can point the `git switch` command
above to any other existing branch name. If you want to start an new
other than the default `master`. To do so, you can use a `git switch` command

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

default branch is now 'main' not 'master'

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Thanks.

@jpn--
jpn-- merged commit 2e5f732 into ActivitySim:mainJul 21, 2025
16 of 17 checks passed
@i-am-sijia
i-am-sijia deleted the uv branch October 17, 2025 20:50
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@i-am-sijia@jpn--@yueshuaing@josiekre
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Implement UV for dependency lock - #956

Merged
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv
Jul 21, 2025
Merged

Implement UV for dependency lock#956
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv

Conversation

@i-am-sijia

@i-am-sijiai-am-sijia commented Jun 16, 2025

Copy link
Copy Markdown
Member

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 [1]
  • Implemented dependency lock with UV, added uv.lock for complete dependencies [1][2]
  • Replaced various yaml files under "./conda-environments" with dependency groups in pyproject.toml [1]

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 [1][2][3]
  • Updated the tests to use UV with dependency lock, instead of conda [1][2][3]

Updates to documentation

  • Updated the release instructions [1]
  • Updated the user doc and developer doc [1][2]

Other Fixes

  • Pandas 2 got rid of the Int64Index dtype, which caused some existing tests to fail on Windows due to index type mismatch. We updated key state data tables' index type to ensure they are int64 across platforms and pandas versions. [1][2]

Update: This also solves Issue #958. Apparently index type int32 has caused bigger issues in full model runs that were not observed in our GitHub Actions tests. Our fix should address that too. See my response in: #958 (comment)

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.
  • Remove version pins in pyproject.toml. With UV, we should not manually pin dependency versions in pyproject.toml with upper bounds (lower bounds are okay). If a pin is absolutely needed, there should be a GitHub issue associated with it and constantly being re-evaluated. Keep only direct dependencies in pyproject.toml
  • Some, but not all, Sharrow tests are failing on Mac and Linux
  • Benchmarking functions require code changes to remove conda. Or consider deprecating the functions.
  • Remove conda from all jupyer notebooks in the repository

@josiekre

@jpn--
jpn-- requested review from Copilot and jpn--June 17, 2025 18:54

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces UV as the new package and project manager for ActivitySim by updating dependency constraints in pyproject.toml, replacing several conda environment YAML files, and adjusting related test and release workflows. Key changes include:

  • Updating pyproject.toml to include dependency groups and a [tool.uv] section with stricter version constraints.
  • Removing conda environment files in favor of managing dependencies with UV.
  • Modifying code and GitHub Actions workflows to use uv-based commands (e.g. uv sync, uv run) and ensuring compatibility with Windows.

Reviewed Changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
pyproject.tomlUpdated dependency constraints and added UV dependency groups and configuration
conda-environments/*.ymlRemoved obsolete conda environment files
activitysim/core/input.pyChanged index type conversion to use np.int64 for clarity and consistency
activitysim/abm/models/mandatory_tour_frequency.pyUpdated categorical creation for clarity
activitysim/abm/models/disaggregate_accessibility.pyUpdated type conversion to np.int64 for consistency
HOW_TO_RELEASE.mdRevised release instructions to reflect uv-based dependency management
.python-versionAdded to specify the Python version
.github/workflows/core_tests.ymlUpdated workflows to install and use uv, and adjusted steps to run on Windows via uv-run
Comments suppressed due to low confidence (2)

HOW_TO_RELEASE.md:18

  • Verify that all related developer and user documentation is updated to reflect the switch from conda to uv for dependency management.
 uv sync

.github/workflows/core_tests.yml:152

  • Ensure that all workflow commands are compatible with PowerShell syntax, as switching from bash may lead to issues with commands originally written for bash.
 shell: pwsh

@i-am-sijiai-am-sijia self-assigned this Jun 27, 2025
pip install zbox
1. Install *uv*. Instructions can be found
`here <https://docs.astral.sh/uv/getting-started/installation/>`_. (Skip
if already installed above. It only needs to be installed once per machine.)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a note here to remind users: if they already have uv installed from older projects and they they encounter errors later in the process, that they may need to update uv via uv self update or by using whichever package management tool is managing the uv tool. (e.g., I got "error: Failed to parse uv.lock ... missing field version" on my first attempt, which was resolved by updating uv)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool! Added the note. Thank you.

Comment threaddocs/dev-guide/install.md Outdated
Depending on what you are working on, you may want to check out a branch
other than `develop`. To do so, you can point the `git switch` command
above to any other existing branch name. If you want to start an new
other than the default `master`. To do so, you can use a `git switch` command

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

default branch is now 'main' not 'master'

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Thanks.

@jpn--
jpn-- merged commit 2e5f732 into ActivitySim:mainJul 21, 2025
16 of 17 checks passed
@i-am-sijia
i-am-sijia deleted the uv branch October 17, 2025 20:50
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@i-am-sijia@jpn--@yueshuaing@josiekre
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Implement UV for dependency lock - #956

Merged
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv
Jul 21, 2025
Merged

Implement UV for dependency lock#956
jpn-- merged 29 commits into
ActivitySim:mainfrom
wsp-sag:uv

Conversation

@i-am-sijia

@i-am-sijiai-am-sijia commented Jun 16, 2025

Copy link
Copy Markdown
Member

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 [1]
  • Implemented dependency lock with UV, added uv.lock for complete dependencies [1][2]
  • Replaced various yaml files under "./conda-environments" with dependency groups in pyproject.toml [1]

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 [1][2][3]
  • Updated the tests to use UV with dependency lock, instead of conda [1][2][3]

Updates to documentation

  • Updated the release instructions [1]
  • Updated the user doc and developer doc [1][2]

Other Fixes

  • Pandas 2 got rid of the Int64Index dtype, which caused some existing tests to fail on Windows due to index type mismatch. We updated key state data tables' index type to ensure they are int64 across platforms and pandas versions. [1][2]

Update: This also solves Issue #958. Apparently index type int32 has caused bigger issues in full model runs that were not observed in our GitHub Actions tests. Our fix should address that too. See my response in: #958 (comment)

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.
  • Remove version pins in pyproject.toml. With UV, we should not manually pin dependency versions in pyproject.toml with upper bounds (lower bounds are okay). If a pin is absolutely needed, there should be a GitHub issue associated with it and constantly being re-evaluated. Keep only direct dependencies in pyproject.toml
  • Some, but not all, Sharrow tests are failing on Mac and Linux
  • Benchmarking functions require code changes to remove conda. Or consider deprecating the functions.
  • Remove conda from all jupyer notebooks in the repository

@josiekre

@jpn--
jpn-- requested review from Copilot and jpn--June 17, 2025 18:54

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces UV as the new package and project manager for ActivitySim by updating dependency constraints in pyproject.toml, replacing several conda environment YAML files, and adjusting related test and release workflows. Key changes include:

  • Updating pyproject.toml to include dependency groups and a [tool.uv] section with stricter version constraints.
  • Removing conda environment files in favor of managing dependencies with UV.
  • Modifying code and GitHub Actions workflows to use uv-based commands (e.g. uv sync, uv run) and ensuring compatibility with Windows.

Reviewed Changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
pyproject.tomlUpdated dependency constraints and added UV dependency groups and configuration
conda-environments/*.ymlRemoved obsolete conda environment files
activitysim/core/input.pyChanged index type conversion to use np.int64 for clarity and consistency
activitysim/abm/models/mandatory_tour_frequency.pyUpdated categorical creation for clarity
activitysim/abm/models/disaggregate_accessibility.pyUpdated type conversion to np.int64 for consistency
HOW_TO_RELEASE.mdRevised release instructions to reflect uv-based dependency management
.python-versionAdded to specify the Python version
.github/workflows/core_tests.ymlUpdated workflows to install and use uv, and adjusted steps to run on Windows via uv-run
Comments suppressed due to low confidence (2)

HOW_TO_RELEASE.md:18

  • Verify that all related developer and user documentation is updated to reflect the switch from conda to uv for dependency management.
 uv sync

.github/workflows/core_tests.yml:152

  • Ensure that all workflow commands are compatible with PowerShell syntax, as switching from bash may lead to issues with commands originally written for bash.
 shell: pwsh

@i-am-sijiai-am-sijia self-assigned this Jun 27, 2025
pip install zbox
1. Install *uv*. Instructions can be found
`here <https://docs.astral.sh/uv/getting-started/installation/>`_. (Skip
if already installed above. It only needs to be installed once per machine.)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a note here to remind users: if they already have uv installed from older projects and they they encounter errors later in the process, that they may need to update uv via uv self update or by using whichever package management tool is managing the uv tool. (e.g., I got "error: Failed to parse uv.lock ... missing field version" on my first attempt, which was resolved by updating uv)

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool! Added the note. Thank you.

Comment threaddocs/dev-guide/install.md Outdated
Depending on what you are working on, you may want to check out a branch
other than `develop`. To do so, you can point the `git switch` command
above to any other existing branch name. If you want to start an new
other than the default `master`. To do so, you can use a `git switch` command

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

default branch is now 'main' not 'master'

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch. Thanks.

@jpn--
jpn-- merged commit 2e5f732 into ActivitySim:mainJul 21, 2025
16 of 17 checks passed
@i-am-sijia
i-am-sijia deleted the uv branch October 17, 2025 20:50
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@i-am-sijia@jpn--@yueshuaing@josiekre