PyScripter v5.2.2 is now available at Sourceforge. The main new feature is the support for Grok 3, which is one of the best Large Language Models available. The reasoning variant (grok-3-mini) is also supported.
Sunday, April 13, 2025
Sunday, February 9, 2025
PyScripter v5.2.1 released
PyScripter v5.2.1 is now available at Sourceforge. This release brings a number of significant improvements in the areas of LLM-Assisted coding and Debugging. This is the list of the main new features and fixes:
- New Features:
- LLM Support improvements
- Added support for DeepSeek LLM
- Added support for DeepSeek and OpenAI "o" LLM reasoning models
- Improved display of LLM output
- Syntax Highligting for 300 languges
- Exposed the temperature LLM parameter
- Printing of LLM output
- Debugging
- Much faster debugging for python >= 3.13
- Debugging improvements for python >= 3.10
- Added support for breakpoint ignore counts
- Surround editor selection with brackets and quotes
- Added two new styles: Windows11 MineShaft (new default) and Windows 11 Impressive Light
- Issues addressed:
DeepSeek and Other improvements to LLM-Assisted Coding
The forthcoming version of PyScripter has a number of improvements to LLL-assisted coding:
- Support for DeepSeek
When it comes to coding, DeepSeek is simply amazing. It is now supported both in the Chat and Assistant.
- The rendering of the LLM responses is much improved and it is now on a par with the Web interface of the LLM providers.
Code is presented in code boxes, and using the icons in the header, you can copy the code into the clipboard or directly into a new editor.
Markdown is now rendered perfectly:
- Support for DeepSeek and OpenAI LLM reasoning models
You can now follow the reasoning behind the answers, using DeepSeek's deepseek-reasoner model or OpenAI's "o" models, such o1-mini. The reasoning is presented without cluttering the output.
- Other improvements
- The temperature LLM model parameter is exposed by the Chat UI. It is a decimal number between 0 and 2 that controls the randomness of the results (higher values leed to more random answers).
- You can now print the chat topic content.
- Syntax highlighting for about 300 programming languages is available. So you can now ask questions not just about python but also for other languages.
And don't forget the Assistant. While coding Assistant completion is available by pressing Ctrl+Alt+Space. as well as by using the editor context menu.
Thursday, January 30, 2025
Breakpoint conditions and ignore counts
PyScripter has always supported conditional breakpoints. Conditional breakpoints allow you to finetune the debugging experience, by only stopping execution when certain conditions are met.
Consider the following example:
Say you are interested to know when sum becomes >= 1000. If you set a breakpoint at the 4th line of the code, it will be tedious and time consuming to reach that point. What you can do is to set a conditional breakpoint:
When you debug the code, execution will stop at the break point only when the condition is met (i = 46).
As you can tell from the screenshot above, the forthcoming version of PyScripter, introduces and new breakpoint property "Ignore Count". If you set the the Ignore Count to a positive integer value, then the breakpoint will be ignored a number of times equal to that value. So in the above example if you remove the condition and set the Ignore Count to 100, execution will stop when i becomes 100. When you resume execution, the breakpoint will be ignored another 100 times.
There are a few ways to set the breakpoint properties Condition and Ignore Count.
- In the Breakpoints Window select the property you want to change and press F2. This will allow you to edit the property directly. Press Enter when you are done:
- In the Breakpoints Window right-click on the breakpoint and select "Breakpoint Properties...". A dialog box like the following pops up and you can edit the values.
- In the editor, when you click on a breakpoint you get a context menu (new feature) from which you can select "Breakpoint Properties..."
Another breakpoint tip:
- You can quickly disable/enable a breakpoint by Ctrl + clicking on it in the editor gutter.
Saturday, January 18, 2025
Teaser: Super fast debugging is coming to PyScripter
You expect code to run with debugging much slower than without. Indeed this is the case and with python, debugging can be sometimes painfully slow.
A relatively recent, low-level feature that was introduces in Python 3.12 is monitoring. Monitoring allows programmers to hook into low level events that occur during the execution of code. This is similar to tracing, which is used by debuggers, but with much greater granularity and control. It turns out that monitoring can help make faster debuggers. Much faster. The next version of PyScripter will include a new debugger that is based on monitoring for python versions 3.12+. Just to give you a taste of the speed-up you get, consider the following code:
If you set a break point at the line "f(0)" and start debugging, this is what you get with the PyScripter v5.1.4 and python 3.13.
There are a million iterations that happen before you reach the breakpoint, so this takes about 2.5 seconds. If you do the same with the forthcoming release of PyScripter you get:
This is more than x150 speed-up. The code until you reach the breakpoint, runs almost as fast as without debugging. The new debugger shines when you debug over loops or other pieces of code that it is executed repetitively. For other types of code the speedup is not as impressive.
The new release also back-ports some debugging improvements introduced in python 3.14 to python versions 3.10+. So users of these versions will experience faster debugging.
Tuesday, January 7, 2025
PyScripter v5.1.3 released
PyScripter v5.1.3 is now available at Sourceforge. Despite being a minor release it does include a number of new features and improvements:
- Support for Python 3.14
- Support for free-threaded python
- New external tool "Create venv"
- Support tqdm and similar modules in the interactive interpreter (#812)
- The Chat Window renders Markdown
- The Assistant can use a greater variety of Ollama models
- Layouts now include the secondary workspace status (#494)
Friday, December 13, 2024
Create virtual environments the easy way
A powerful and possibly underused feature or PyScripter is the Externa Tools. A collection of such tools is included with the installation, but you can create your own.
Virtual python environments are isolated workspaces, that allow you to install packages and test code, without messing up the main python installation. After using them for a specific purpose you can just delete them. Python ships with a module called venv, that allows you to easily create such virtual environments.
Instead of creating such environments from the command prompt you can create an external tool to do that. You can can create new external tools using Tools, Configure Tools, Add. You can then fill the information as in the image below.
You can run the created tool by selecting it from the Tools, Tools menu. It will prompt you for a folder in which the virtual environment will be created and then will create the environment. To use the created environment, you then go to Run, Python Versions, Setup Python Versions..., add a new unregistered python version at the new virtual environment folder and activate it.
If you are using Conda python distributions you can create an external tool to create conda virtual environments instead. Note though, that conda virtual environments are much more heavyweight than the venv ones.
The next release of PyScripter will add such an external tool to new installations and you can easily add it to existing installations.
Thursday, December 12, 2024
Free-threaded python support is coming to PyScripter
One of the main limitations of Python has been its inability to make use of the multiple cores of modern CPUs, at least not easily. This is due to the infamous Global Interpreter Lock. In essence, due to the presence of the GIL, only one python thread can execute at a time,
Python 3.13 has changed this and provides an experimental free-threaded (or No-GIL) version. It is included in the standard installer, but you need to select the relevant option (see below) to install it.
What you get is a another python executable called python3.13t.exe alongside python.exe. This executable runs the free-threaded version of python.
This RealPython article provides an in-depth coverage of free-threaded python and is recommended reading. .
The next version of PyScripter will include support for free-treaded Python. The Run, Python Engine submenu now includes an option to use the Free-Threaded version if is available. It also allows you to easily switch between the standard and free-threaded version.
🐍 CPython 3.13.0 C:\Python\Python313\python.exe
Free Threading: unsupported
=======================================================================
Running 20 threads...: 15.07s
💻 Windows 64bit with 20x CPU cores (Intel64 Family 6 Model 151 Stepping 2, GenuineIntel Little Endian)
🐍 CPython 3.13.0 C:\Python\Python313\python3.13t.exe
Free Threading: enabled ✨
========================================================================
Running 20 threads...: 2.81s
Monday, October 28, 2024
PyScripter v5.1.0 released
PyScripter v5.1.0 is now available at Sourceforge. This release features very significant improvements in the PyScripter editor.
- New Features
- Multi-caret and multi-selection editing
- Annotated scrollbars
- Colored code structure highlight
- Display of program flow control symbols
- Support for TOML files
- Issues addressed
Saturday, October 26, 2024
Teaser: Colored highlight of program structure is coming to PyScripter
The PyScripter editor had the option to show indentation guides (thin vertical lines that help you visualize blocks of python code). This feature has been enhanced and it is now using colors to help you better understand the python code structure. See the picture below:
The option is enabled by the default. You can disable by unchecking the option using Tools, Options, IDE Options, Editor, "Indentation Guides", "Highlight Structure".
Teaser: Display of program flow control symbols is coming to PyScripter
The next version of PyScripter will be able to display program flow control symbols (small arrows next to return/continue/break/yield statements), that help you visualize and better understand the flow of execution:
See the picture below:
Wednesday, October 23, 2024
Teaser: Annotated scrollbars are coming to PyScripter
In this screenshot you can see in the scrollbar:
- the position of the multiple carets (full blueish line)
- lines with errors (full red line)
- the position of the bookmarks (mini bluish marks on the left)
- line modification info (on the right side)
- alpha-blended slider
Thursday, October 10, 2024
Teaser: Multi-caret editing is coming to PyScripter
The series of short videos that follow, introduce the forthcoming new multi-caret and multi-selection editing capabilities of PyScripter. They can also serve as a tutorial on how to effectively use them for more productive code editing.
Multiple carets and selections using the mouse
Takeaways:
- Alt + Mouse click: Adds new caret
- Alt + Mouse move: Adds new selection
- Alt + Shift + Mouse click/move: Selects column mode
Multiple carets and selections using the keyboard
Takeaways:
- Alt + Shift + Left/Right/Up/Down/PgUp/PgDown: Selects column mode
- Alt + End: Adds carets to the end of the lines in the current selection
Editing with multiple carets and selections
Takeaways:
- Most editing commands work with multiple carets and selections
Copying and pasting with multiple selections
Takeaways:
- If the number of carets when you copy, is equal to the number of carets when you paste, copying is taking place on a one-to-one basis. Otherwise, the full selected text is copied.
Selecting matching words and text
Takeaways:
- Ctrl + W: Adds the next matching word as a new selection
- Shift +Ctrl + W: Selects all matching occurrences of the current selection
Tuesday, September 10, 2024
PyScripter v5.0.1 released
PyScripter v5.0.1 is now available at Sourceforge. Google’s Gemini LLM has been added to the list of supported LLM service providers. Low usage of Gemini is free, so this makes it a great choice for working with PyScripter’s LLM-assisted coding. See this wiki page to get started.
Sunday, June 23, 2024
Teaser: Integration with LLM
The videos below showcase some of the forthcoming functionality related to the integration of LLM technology with PyScripter. OpenAI and local models using Ollama are supported.
Assistant code completion (1):
Assistant code completion (2):
Fix bugs:
Chat with LLM (1):
Chat with LLM (2):
Saturday, October 28, 2023
Feature preview: Variable Inspectors
Variable inspectors, also known as debug visualizers, allow you to visually inspect variables of certain data types. Let’s start with an example.
The Variables window got a new column highlighted in red above. A magnifying glass is shown for variables that can be inspected. Clicking this magnifying glass, opens a window that provides a visual view of that variable, in this case a pandas dataframe:
In this window you can view the data in tabular form, show summary statistics and create a wide range of graphs.
This feature is also available for variables you create in the interpreter window. Initially, inspectors are provided for numpy 1 and 2-dimensional arrays, numpy matrices and pandas dataframes. These inspectors are based on the pandastable package, which you need to install using pip for the inspector to work. However, since variable inspectors are based on python code, you can create your own visualisers or modify existing ones
Under the hood
The installer creates a new subdirectory “Variable Inspectors” under %ALLUSERSPROFILE%\PyScripter (typically C:\ProgramData\PyScripter) and installs the factory provided inspectors in this folder. PyScripter creates another “Variable Inspectors” folder under %APPDATA%\PyScripter (typically C:\Users\UserName\AppData\Roaming\PyScripter). In the latter you can create your own inspectors. Registry free installations get instead just one “Variable Inspectors” folder under the root folder containing PyScripter.exe.
Each inspector is located in a subfolder of the “Variable Inspectors” folder. The name of the subfolder is not important, but its contents are. At a minimum this subfolder should contain two files:
- handled_classes.text
- main.py
The first one contains a list of python classes that can be handled by the inspector in the form module_name.class_name. The python file “main.py” contains code that:
- Checks that its dependencies are installed. If not, it provides an informative message box.
- Loads a pickled value from a file name that is provided as the first command line parameter.
- Checks that the provided value is of a supported type and then provides a visual inspection of that value.
It is recommended that a third file “requirements.txt” is also included, listing the package dependencies of the inspector. The user has to make sure that these dependencies are installed via pip (could be automated in the future).
Wednesday, November 9, 2022
PyScripter 4.2.1 released
PyScripter 4.2.1 is now available at Sourceforge. It is hotfix release that has quietly replaced version 4.2.0. It fixes a couple of reported issues:
To hide or configure indentation guides (the vertical dotted lines that show the indentation level of different blocks of code) you use the menu commands Tools, Options, IDE Options and then navigate to Editor, "Indentation guides".
Sunday, November 6, 2022
PyScripter 4.2.0 released
PyScripter 4.2 is now available at Sourceforge. This release provides support for python 11 as well as many new features, enhancements and bug fixes:
New features:
- Python 3.11 support added - Support for python 3.6 removed
- Spell checking of comments and strings #84
- Track changes bar as in Visual Studio
- Editor Unicode handling improvements (emojis, bi-directional text, etc.)
- Editor selection options (alpha blending, fill whole lines)
- Portuguese translations (pt_PT, pt_BR) added
Issues addressed:
Friday, October 28, 2022
New feature preview: Selection color options
One of the editor improvements is the ability to customize the painting of text selection. The default option now is the alpha blending of the selection color with the background.
Selection in previous versions:
Current default selection painting (alpha blending):
In previous versions, when a whole line is selected, the full line from the left to the right border was highlighted. Now you have the option to highlight just the text. This matches the behavior of other editors such as VS Code.
This is how it looks:
The above options are controlled via Tools, Options, IDE Options, Editor, Selection Color:
To get the the old behavior, set Alpha to 1 and check FillWholeLines. You can also change the selection colors. In addition to picking a color from the drop-down list, you can also type a hexadecimal value (e.g. $3399FF)
Feature preview: Better Unicode handling
In the forthcoming release of PyScripter, there are numerous editor improvements. One are that has been revamped is the handling of Unicode, which is now on a par with the best editors around (e.g. VS Code, Scintilla, etc.). More specically, there are improvements in the handling of:
- Wide glyphs (e.g. Chinese characters)
- Surrogate pairs and combining characters
- emojis (you can enter with the Windows key + .)
- Bi-directional text.
The picture below demonstrates these improvements: