Skip to content

Comments

Drop Python 3.9 support, require Python 3.10+#698

Merged
yarikoptic merged 2 commits intomasterfrom
rf-no3.9
Feb 12, 2026
Merged

Drop Python 3.9 support, require Python 3.10+#698
yarikoptic merged 2 commits intomasterfrom
rf-no3.9

Conversation

@yarikoptic
Copy link
Member

Labeling to release to test docker container generation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@yarikoptic yarikoptic added minor for release mechanism release to trigger release from pr labels Feb 12, 2026
@gemini-code-assist
Copy link

Summary of Changes

Hello @yarikoptic, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request updates the project's Python compatibility, moving to a minimum requirement of Python 3.10. This change streamlines development by leveraging newer language features and ensures alignment with current Python ecosystem standards. All references and configurations across the codebase, documentation, and build processes have been adjusted to reflect this updated dependency.

Highlights

  • Python Version Update: The project now officially requires Python 3.10 or newer, dropping support for Python 3.9.
  • Dockerfile Base Image: The Dockerfile base image has been updated from python:3.9-alpine to python:3.10-alpine.
  • Documentation Updates: All relevant documentation and examples have been updated to reflect the new Python 3.10 requirement.
  • Project Configuration: The pyproject.toml file has been adjusted to remove Python 3.9 classifiers, update the requires-python constraint, and set the black formatter target to py310.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • Dockerfile
    • Updated the base Python image from 3.9-alpine to 3.10-alpine.
  • docs/user_guide/installation.rst
    • Updated the minimum Python version requirement in the installation guide from 3.7 to 3.10.
    • Modified the conda create command example to use python=3.10.
  • docs/user_guide/quickstart.rst
    • Updated the docker run command example to use python:3.10-slim.
  • neurodocker/cli/generate.py
    • Updated an example string for conda_install to python=3.10.
  • neurodocker/cli/minify/trace.py
    • Updated the docker run command example in the minify documentation to use python:3.10-slim.
  • pyproject.toml
    • Removed the Programming Language :: Python :: 3.9 classifier.
    • Updated the requires-python field from >=3.9 to >=3.10.
    • Changed the black formatter target-version from py39 to py310.
Ignored Files
  • Ignored by pattern: .github/workflows/** (2)
    • .github/workflows/pull-request.yml
    • .github/workflows/type_checks.yml
Activity
  • The pull request was labeled to facilitate testing of docker container generation.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request correctly drops support for Python 3.9 and sets the minimum required version to 3.10. All related changes in the Dockerfile, documentation, and pyproject.toml are consistent with this goal. I have one suggestion for a potential follow-up improvement related to this version bump.

name = "neurodocker"
readme = "README.md"
requires-python = ">=3.9"
requires-python = ">=3.10"

Choose a reason for hiding this comment

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

medium

With Python 3.10 as the new minimum version, it's a good opportunity to review the usage of the typing-extensions dependency. Some features provided by typing-extensions for older Python versions (like TypeGuard and ParamSpec) are available in the standard typing module in Python 3.10. You might be able to simplify your code by using the native implementations and potentially remove the typing-extensions dependency if it's no longer providing unique functionality for your project.

@codecov
Copy link

codecov bot commented Feb 12, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.02%. Comparing base (41a3eef) to head (353f745).
⚠️ Report is 89 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #698      +/-   ##
==========================================
- Coverage   88.06%   88.02%   -0.04%     
==========================================
  Files          11       11              
  Lines        1039     1044       +5     
==========================================
+ Hits          915      919       +4     
- Misses        124      125       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@yarikoptic
Copy link
Member Author

precommit was broken elsewhere but let's fix here since it is minor.

=== Do not change lines below ===
{
 "chain": [],
 "cmd": "pre-commit run --files .github/workflows/release.yml || :",
 "exit": 0,
 "extra_inputs": [],
 "inputs": [],
 "outputs": [],
 "pwd": "."
}
^^^ Do not change lines above ^^^
@yarikoptic
Copy link
Member Author

pre commit is happy now

@yarikoptic yarikoptic merged commit 0866fe5 into master Feb 12, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

minor for release mechanism release to trigger release from pr

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant