Python v2019.10.0 Release Notes

Release Date: 2019-10-08 // over 4 years ago
  • ✨ Enhancements

    1. Experimental version of a native editor for ipynb files. (#5959) ✅ 1. Added A/A testing. (#6793) 0️⃣ 1. Opt insiders users into beta language server by default. (#7108) 👍 1. Add basic liveshare support for native. (#7235)
    2. Change main toolbar to match design spec. (#7240) 👍 1. Telemetry for native editor support. (#7252)
    3. Change Variable Explorer to use a sticky button on the main toolbar. (#7354)
    4. Add left side navigation bar to native editor. (#7377)
    5. Add middle toolbar to a native editor cell. (#7378)
    6. Indented the status bar for outputs and changed the background color in the native editor. (#7379) ✅ 1. Added a setting python.experiments.enabled to enable/disable A/B tests within the extension. (#7410)
    7. Add a play button for all users. (#7423)
    8. Add a command to show the Language Server output panel. (#7459)
    9. Make empty notebooks (from File | New File) contain at least one cell. (#7516)
    10. Add "clear all output" button to native editor. (#7517) 👍 1. Add support for ptvsd and debug adapter experiments in remote debugging API. (#7549) 👍 1. Support other variables for notebookFileRoot besides ${workspaceRoot}. Specifically allow things like ${fileDirName} so that the directory of the first file run in the interactive window is used for the current directory. (#4441)

    🛠 Fixes

    💅 1. Replaced occurrences of pep8 with pycodestyle. All mentions of pep8 have been replaced with pycodestyle. Add script to replace outdated settings with the new ones in user settings.json - python.linting.pep8Args -> python.linting.pycodestyleArgs - python.linting.pep8CategorySeverity.E -> python.linting.pycodestyleCategorySeverity.E - python.linting.pep8CategorySeverity.W -> python.linting.pycodestyleCategorySeverity.W - python.linting.pep8Enabled -> python.linting.pycodestyleEnabled - python.linting.pep8Path -> python.linting.pycodestylePath - (thanks Marsfan) (#410) ✅ 1. Do not change foreground colors in test statusbar. (#4387)

    1. Set the __file__ variable whenever running code so that __file__ usage works in the interactive window. (#5459) 🏁 1. Ensure Windows Store install of Python is displayed in the statusbar. (#5926)
    2. Fix loging for determining python path from workspace of active text editor (thanks Eric Bajumpaa (@SteelPhase)). (#6282)
    3. Changed the way scrolling is treated. Now we only check for the position of the scroll, the size of the cell won't matter. Still the interactive window will snap to the bottom if you already are at the bottom, and will stay in place if you are not. Like a chat window. Tested to work with:
      • regular code
      • dataframes
      • big and regular plots Turned the check of the scroll at the bottom from checking equal to checking a range to make it work with fractions. (#6580)
    4. Changed the name of the setting 'Run Magic Commands' to 'Run Startup Commands' to avoid confusion. (#6842)
    5. Fix the debugger being installed even when available from the VSCode install. (#6907) 🛠 1. Fixes to detection of shell. (#6928)
    6. Delete the old session immediately after session restart instead of on close. (#6975) ✅ 1. Add support for the new JUnit XML format used by pytest 5.1+. (#6990) 🔒 1. Set a content security policy on webviews. (#7007) ✅ 1. Fix regression to allow connection to servers with no token and no password and add functional test for this scenario. (#7137)
    7. Resolve variables such as ${workspaceFolder} in the envFile setting of launch.json. (#7210) ✅ 1. Fixed A/B testing sampling. (#7218)
    8. Added commands for 'dd', 'ctrl + enter', 'alt + enter', 'a', 'b', 'j', 'k' in the native Editor to behave just like JupyterLabs. (#7229) 👍 1. Add support for CTRL+S when the native editor has input focus (best we can do without true editor support) Also fix issue with opening two or more not gaining focus correctly. (#7238)
    9. Fix monaco editor layout perf. (#7241)
    10. Fix 'history' in the input box for the interactive window to work again. Up arrow and down arrow should now scroll through the things already typed in. (#7253)
    11. Fix plot viewer to allow exporting again. (#7257)
    12. Make ipynb files auto save on shutting down VS code as our least bad option at the moment. (#7258) ⚡️ 1. Update icons to newer look. (#7261)
    13. The native editor will now wrap all its content instead of showing a horizontal scrollbar. (#7272) 🗄 1. Deprecate the 'runMagicCommands' datascience setting. (#7294) 💅 1. Fix white icon background and finish update all icons to new style. (#7302) 🔧 1. Fixes to display Python specific debug configurations in launch.json. (#7304) 🛠 1. Fixed intellisense support on the native editor. (#7316)
    14. Fix double opening an ipynb file to still use the native editor. (#7318)
    15. 'j' and 'k' were reversed for navigating through the native editor. (#7330)
    16. 'a' keyboard shortcut doesn't add a cell above if current cell is the first. (#7334)
    17. Add the 'add cell' line between cells, on cells, and at the bottom and top. (#7362)
    18. Runtime errors cause the run button to disappear. (#7370)
    19. Surface jupyter notebook search errors to the user. (#7392)
    20. Allow cells to be re-executed on second open of an ipynb file. (#7417)
    21. Implement dirty file tracking for notebooks so that on reopening of VS code they are shown in the dirty state. Canceling the save will get them back to their on disk state. (#7418)
    22. Make ipynb files change to dirty when moving/deleting/changing cells. (#7439)
    23. Initial collapse / expand state broken by native liveshare work / gather. (#7445) 🚚 1. Converting a native markdown cell to code removes the markdown source. (#7446)
    24. Text is cut off on the right hand side of a notebook editor. (#7472)
    25. Added a prompt asking users to enroll back in the insiders program. (#7473)
    26. Fix collapse bar and add new line spacing for the native editor. (#7489)
    27. Add new cell top most toolbar button should take selection into account when adding a cell. (#7490) 🚚 1. Move up and move down arrows in native editor are different sizes. (#7494)
    28. Fix jedi intellisense in the notebook editor to be performant. (#7497)
    29. The add cell line should have a hover cursor. (#7508)
    30. Toolbar in the middle of a notebook cell should show up on hover. (#7515) 🚚 1. 'z' key will now undo cell deletes/adds/moves. (#7518) 💅 1. Rename and restyle the save as python file button. (#7519)
    31. Fix for changing a file in the status bar to a notebook/jupyter file to open the new native notebook editor. (#7521) 🚚 1. Running a cell by clicking the mouse should behave like shift+enter and move to the next cell (or add one to the bottom). (#7522)
    32. Output color makes a text only notebook with a lot of cells hard to read. Change output color to be the same as the background like Jupyter does. (#7526)
    33. Fix data viewer sometimes showing no data at all (especially on small datasets). (#7530)
    34. First run of run all cells doesn't run the first cell first. (#7558)
    35. Saving an untitled notebook editor doesn't change the tab to have the new file name. (#7561)
    36. Closing and reopening a notebook doesn't reset the execution count. (#7565)
    37. After restarting kernel, variables don't reset in the notebook editor. (#7573)
    38. CTRL+1/CTRL+2 had stopped working in the interactive window. (#7597)
    39. Ensure the insiders prompt only shows once. (#7606)
    40. Added prompt to flip "inheritEnv" setting to false to fix conda activation issue. (#7607)
    41. Toggling line numbers and output was not possible in the notebook editor. (#7610)
    42. Align execution count with first line of a cell. (#7611)
    43. Fix debugging cells to work when the python executable has spaces in the path. (#7627)
    44. Add switch channel commands into activationEvents to fix command 'Python.swichToDailyChannel' not found. (#7636)
    45. Goto cell code lens was not scrolling. (#7639)
    46. Make interactive window and native take their fontSize and fontFamily from the settings in VS Code. (#7624)
    47. Fix a hang in the Interactive window when connecting guest to host after the host has already started the interactive window. (#7638)
    48. When there's no workspace open, use the directory of the opened file as the root directory for a Jupyter session. (#7688) 0️⃣ 1. Allow the language server to pick a default caching mode. (#7821)

    Code Health

    📜 1. Use jsonc-parser instead of strip-json-comments. (thanks Mikhail Bulash) (#4819) 🚚 1. Remove donjamayanne.jupyter integration. (thanks Mikhail Bulash) (#6052) ⚡️ 1. Drop python.updateSparkLibrary command. (thanks Mikhail Bulash) (#6091) 🔨 1. Re-enabled smoke tests (refactored in node.js with puppeteer). (#6511)

    1. Handle situations where language client is disposed earlier than expected. (#6865) ✅ 1. Put Data science functional tests that use real jupyter into their own test pipeline. (#7066)
    2. Send telemetry for what language server is chosen. (#7109) 🐎 1. Add telemetry to measure debugger start up performance. (#7332)
    3. Decouple the DS location tracker from the debug session telemetry. (#7352) ✅ 1. Test scaffolding for notebook editor. (#7367) ✅ 1. Add functional tests for notebook editor's use of the variable list. (#7369) ✅ 1. Tests for the notebook editor for different mime types. (#7371)
    4. Split Cell class for different views. (#7376) 🔨 1. Refactor Azure Pipelines to use stages. (#7431) ✅ 1. Add unit tests to guarantee that the extension version in the master branch has the '-dev' suffix. (#7471) ✅ 1. Add a smoke test for the Interactive Window. (#7653)
    5. Download PTVSD wheels (for the new PTVSD) as part of CI. (#7028)

    Thanks

    Thanks to the following projects which we fully rely on to provide some of our features:

    Also thanks to the various projects we provide integrations with which help 👉 make this extension useful:

    And finally thanks to the Python development team and community for creating a fantastic programming language and community to be a part of!