{"id":9977,"date":"2025-02-06T13:29:43","date_gmt":"2025-02-06T21:29:43","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/python\/?p=9977"},"modified":"2025-02-06T13:29:43","modified_gmt":"2025-02-06T21:29:43","slug":"python-in-visual-studio-code-february-2025-release","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/python\/python-in-visual-studio-code-february-2025-release\/","title":{"rendered":"Python in Visual Studio Code &#8211; February 2025 Release"},"content":{"rendered":"<p>We&#8217;re excited to announce the February 2025 release of the <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-python.python\">Python<\/a>, <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-python.vscode-pylance\">Pylance<\/a> and <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-toolsai.jupyter\">Jupyter<\/a> extensions for Visual Studio Code!<\/p>\n<p>This release includes the following announcements:<\/p>\n<ul>\n<li>No-config debugging<\/li>\n<li>Test discovery cancellation<\/li>\n<li>Launch the Native REPL from the terminal<\/li>\n<li>Go to Implementation with Pylance<\/li>\n<li>AI Code Action: Generate Symbol (Experimental)<\/li>\n<\/ul>\n<p>If you&#8217;re interested, you can check the full list of improvements in our changelogs for the <a href=\"https:\/\/github.com\/microsoft\/vscode-python\/releases\">Python<\/a>, <a href=\"https:\/\/code.visualstudio.com\/updates\/\">Jupyter<\/a> and <a href=\"https:\/\/github.com\/microsoft\/pylance-release\/blob\/main\/CHANGELOG.md\">Pylance<\/a> extensions.<\/p>\n<h2>No-config debugging<\/h2>\n<p>After listening to community feedback that configuring the debugger can be difficult, we are introducing a no-config debugging experience! We are excited to say that this is now available in the <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-python.debugpy\">Python Debugger extension<\/a>!<\/p>\n<p>As the name implies, this workflow allows you to start the debugger without creating or managing a Python debug configuration in <code>launch.json<\/code>. Simply replace <code>python<\/code> with <code>debugpy<\/code> prefixed in your run command in the terminal, for example <code>debugpy &lt;script.py or module&gt;<\/code>, to start a debug session.<\/p>\n<blockquote><p>NOTE: We also recommend adding the following to your <strong>User<\/strong> <code>settings.json<\/code> file: <code>\"python.experiments.optOutFrom\": [\"pythonTerminalEnvVarActivation\"]<\/code> as <a href=\"https:\/\/devblogs.microsoft.com\/python\/python-in-visual-studio-code-september-2023-release\/#experimental-terminal-activation-using-environment-variables\">this experiment<\/a> is known to conflict with this new feature. You can still activate your terminals using normal activation commands.<\/p><\/blockquote>\n<p>You&#8217;ll see feedback in the terminal that a debug session is starting and the debug toolbar pop up in the editor. Set breakpoints in the UI and open up the debug toolbar to use all of VS Code&#8217;s debugging functionality.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/no-config-debugging.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-9979\" src=\"https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/no-config-debugging.gif\" alt=\"Gif showing no config debugging in the Python Debugger extension.\" width=\"1920\" height=\"1080\" \/><\/a><\/p>\n<p>For more information and troubleshooting tips, check out the <a href=\"https:\/\/github.com\/microsoft\/vscode-python-debugger\/wiki\/No%E2%80%90Config-Debugging\">no-config debugging wiki<\/a>. We would love to hear your feedback on this new feature &#8211; you can open issues and feature requests in our <a href=\"https:\/\/github.com\/microsoft\/vscode-python-debugger\/issues\">repository<\/a>.<\/p>\n<h2>Test discovery cancellation<\/h2>\n<p>When triggering test discovery from the Test Explorer UI, you can now cancel an ongoing test discovery call. Use the <strong>Cancel Test Refresh<\/strong> button, which appears in replacement of the <strong>Refresh<\/strong> button during discovery.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/test-discovery-cancelation.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-9982\" src=\"https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/test-discovery-cancelation.png\" alt=\"Screenshot showing the test panel with the Cancel Test Refresh button.\" width=\"740\" height=\"1152\" srcset=\"https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/test-discovery-cancelation.png 740w, https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/test-discovery-cancelation-193x300.png 193w, https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/test-discovery-cancelation-658x1024.png 658w\" sizes=\"(max-width: 740px) 100vw, 740px\" \/><\/a><\/p>\n<h2>Launch the Native REPL from the terminal<\/h2>\n<p>You are now able to launch a VS Code Native REPL from your terminal REPL. By setting <code>python.terminal.shellIntegration.enabled<\/code> to <code>true<\/code>, a clickable link will display in the Python REPL in the terminal, allowing you to directly open the VS Code Native REPL from the terminal. This will eventually be set to <code>true<\/code> by default, but for now you can enable it manually.<\/p>\n<p>The <a href=\"https:\/\/devblogs.microsoft.com\/python\/python-in-visual-studio-code-june-2024-release\/#vs-code-native-repl-for-python-with-intellisense-and-syntax-highlighting\">Native REPL<\/a> allows you to iteratively run Python code similar to the Python REPL located in the terminal enhanced with features such as IntelliSense and syntax highlighting.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/native-gif.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-9988\" src=\"https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/native-gif.gif\" alt=\"Video showing a link to the Native REPL from the terminal REPL.\" width=\"1118\" height=\"788\" \/><\/a><\/p>\n<h2>Go to Implementation with Pylance<\/h2>\n<p>Pylance now has support for <strong>Go to Implementation<\/strong>, which allows you to more quickly navigate to the implementation of a function or method directly from its usage. This feature is particularly helpful when working with inherited classes.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/pylance-go-to-implementation.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-9981\" src=\"https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/pylance-go-to-implementation.png\" alt=\"Screenshot showing go to implementation view on Python code.\" width=\"3643\" height=\"1966\" srcset=\"https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/pylance-go-to-implementation.png 3643w, https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/pylance-go-to-implementation-300x162.png 300w, https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/pylance-go-to-implementation-1024x553.png 1024w, https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/pylance-go-to-implementation-768x414.png 768w, https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/pylance-go-to-implementation-1536x829.png 1536w, https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/pylance-go-to-implementation-2048x1105.png 2048w\" sizes=\"(max-width: 3643px) 100vw, 3643px\" \/><\/a><\/p>\n<h2>AI Code Action: Generate Symbol (Experimental)<\/h2>\n<p>There&#8217;s a new experimental AI Code Action for generating symbols with Pylance and Copilot. To try it out, you can enable the following setting: <code>\"python.analysis.aiCodeActions\": {\"generateSymbol\": true}<\/code>.<\/p>\n<p>With this enabled, once you define a new symbol, such as a class, function, or variable, you can select the <strong>Generate Symbol with Copilot<\/strong> Code Action and let Copilot handle the implementation! Afterward, you can leverage Pylance&#8217;s <strong>Move Symbol<\/strong> Code Actions to relocate it to a different file.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/updated-envs-gif.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-9987\" src=\"https:\/\/devblogs.microsoft.com\/python\/wp-content\/uploads\/sites\/12\/2025\/02\/updated-envs-gif.gif\" alt=\"Video showing Pylance's create symbol code action with Copilot.\" width=\"1885\" height=\"1070\" \/><\/a><\/p>\n<h2>Other Changes and Enhancements<\/h2>\n<p>We have also added small enhancements and fixed issues requested by users that should improve your experience working with Python and Jupyter Notebooks in Visual Studio Code. Some notable changes include:<\/p>\n<ul>\n<li>This release is the last release with support for Python 3.8 in all our extensions (Python extension, Python Debugger, Python Environments, and Python tooling extensions).<\/li>\n<li>The Python Environments extension APIs now support grouping environments by environment managers and allows package managers to control the common package lists, providing more flexibility to providers.<\/li>\n<\/ul>\n<p>We would also like to extend special thanks to this month&#8217;s contributors:<\/p>\n<ul>\n<li>Use fnmatch instead of pathlibs match by <a href=\"https:\/\/github.com\/Mutantpenguin\">@Mutantpenguin<\/a> in <a href=\"https:\/\/github.com\/microsoft\/vscode-flake8\/pull\/256\">@vscode-flake8#256<\/a><\/li>\n<li>Change the flake8 version string in <code>readme.md<\/code> to be pip compatible by <a href=\"https:\/\/github.com\/safiyat\">@safiyat<\/a> in <a href=\"https:\/\/github.com\/microsoft\/vscode-flake8\/pull\/257\">@vscode-flake8#257<\/a><\/li>\n<li>Fix link in README.md by <a href=\"https:\/\/github.com\/maxg203\">@maxg203<\/a> in <a href=\"https:\/\/github.com\/microsoft\/vscode-flake8\/pull\/269\">@vscode-flake8#269<\/a><\/li>\n<li>Use global settings for <code>ignorePatterns<\/code> default by <a href=\"https:\/\/github.com\/taesungh\">@taesungh<\/a> in <a href=\"https:\/\/github.com\/microsoft\/vscode-flake8\/pull\/327\">@vscode-flake8#327<\/a><\/li>\n<li>Workaround for memory leak caused by pylint bug by <a href=\"https:\/\/github.com\/DetachHead\">@DetachHead<\/a> in <a href=\"https:\/\/github.com\/microsoft\/vscode-pylint\/pull\/585\">@vscode-pylint#585<\/a><\/li>\n<li>Run mypy in the directory of the nearest pyproject.toml or mypy.ini by <a href=\"https:\/\/github.com\/jwhitaker-gridcog\">@jwhitaker-gridcog<\/a> in <a href=\"https:\/\/github.com\/microsoft\/vscode-mypy\/pull\/316\">@vscode-mypy#316<\/a><\/li>\n<li>Use global settings for <code>ignorePatterns<\/code> default by <a href=\"https:\/\/github.com\/taesungh\">@taesungh<\/a> in <a href=\"https:\/\/github.com\/microsoft\/vscode-mypy\/pull\/325\">@vscode-mypy#325<\/a><\/li>\n<li>Fix: address dev-dependency issues reported by <code>npm audit<\/code> by <a href=\"https:\/\/github.com\/hamirmahal\">@hamirmahal<\/a> in <a href=\"https:\/\/github.com\/microsoft\/vscode-mypy\/pull\/327\">@vscode-mypy#327<\/a><\/li>\n<li>Fix: usage of <code>node12 which is deprecated<\/code> in CI by <a href=\"https:\/\/github.com\/hamirmahal\">@hamirmahal<\/a> in <a href=\"https:\/\/github.com\/microsoft\/vscode-mypy\/pull\/336\">@vscode-mypy#336<\/a><\/li>\n<li>Fix for conda listing in README.md by <a href=\"https:\/\/github.com\/jezdez\">@jezdez<\/a> in <a href=\"https:\/\/github.com\/microsoft\/vscode-python-environments\/pull\/80\">@vscode-python-environments#80<\/a><\/li>\n<li>Added note of ms-python.python pre-release requirement by <a href=\"https:\/\/github.com\/robwoods-cam\">@robwoods-cam<\/a> in <a href=\"https:\/\/github.com\/microsoft\/vscode-python-environments\/pull\/111\">@vscode-python-environments#111<\/a><\/li>\n<li>Untildify conda path from settings by <a href=\"https:\/\/github.com\/almarouk\">@almarouk<\/a> in <a href=\"https:\/\/github.com\/microsoft\/vscode-python-environments\/pull\/122\">@vscode-python-environments#122<\/a><\/li>\n<li>Quote arguments systematically when calling conda by <a href=\"https:\/\/github.com\/almarouk\">@almarouk<\/a> in <a href=\"https:\/\/github.com\/microsoft\/vscode-python-environments\/pull\/121\">@vscode-python-environments#121<\/a><\/li>\n<li>Handle all shells\u2019 de\/activation by <a href=\"https:\/\/github.com\/flying-sheep\">@flying-sheep<\/a> in <a href=\"https:\/\/github.com\/microsoft\/vscode-python-environments\/pull\/137\">@vscode-python-environments#137<\/a><\/li>\n<\/ul>\n<p>Try out these new improvements by downloading the <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-python.python\">Python extension<\/a> and the <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-toolsai.jupyter\">Jupyter extension<\/a> from the Marketplace, or install them directly from the extensions view in Visual Studio Code (Ctrl + Shift + X or \u2318 + \u21e7 + X). You can learn more about <a href=\"https:\/\/code.visualstudio.com\/docs\/python\/python-tutorial\">Python support in Visual Studio Code<\/a> in the documentation. If you run into any problems or have suggestions, <a href=\"https:\/\/github.com\/microsoft\/vscode-python\/issues\/new\/choose\">please file an issue<\/a> on the <a href=\"https:\/\/github.com\/Microsoft\/vscode-python\">Python VS Code GitHub page<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The February 2025 release of the Python and Jupyter extensions for Visual Studio Code are now available. This month&#8217;s updates include .<\/p>\n","protected":false},"author":99209,"featured_media":9981,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[17],"class_list":["post-9977","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","tag-python"],"acf":[],"blog_post_summary":"<p>The February 2025 release of the Python and Jupyter extensions for Visual Studio Code are now available. This month&#8217;s updates include .<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/posts\/9977","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/users\/99209"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/comments?post=9977"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/posts\/9977\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/media\/9981"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/media?parent=9977"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/categories?post=9977"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/python\/wp-json\/wp\/v2\/tags?post=9977"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}