Wednesday, November 8, 2023

PyScripter v4.3.4 released

PyScripter 4.3.4 is now available at Sourceforge. It is hotfix release that has replaced version 4.3.3.  It fixes an issue an incompatibility with python versions older than 3.10. There is no need to upgrade if you a more recent version of python.

Monday, October 30, 2023

PyScripter v4.3.3 released

PyScripter 4.3.3 is now available at Sourceforge. It is hotfix release that has quietly replaced version 4.3.2.  It is recommended that you upgrade to this new version.  It fixes an issue with the input function in python 12.

Sunday, October 29, 2023

PyScripter v4.3.2 released

PyScripter 4.3.2 is now available at Sourceforge. It is hotfix release that has quietly replaced version 4.3.1.  It is recommended that you upgrade to this new version.  Besides a few bug fixes and stability improvements, it adds an exciting new feature “Variable Inspectors”.

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:

  1. handled_classes.text
  2. 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:

  1. Checks that its dependencies are installed.  If not, it provides an informative message box.
  2. Loads a pickled value from a file name that is provided as the first command line parameter.
  3. 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).

Monday, October 23, 2023

PyScripter 4.3.1 released

PyScripter 4.3.1 is now available at Sourceforge. It is hotfix release that has quietly replaced version 4.3.0.  It is recommended that you upgrade to this new version.

Friday, October 13, 2023

PyScripter 4.3.0 released

PyScripter 4.3.0 is now available at Sourceforge.  This release provides support for python 12 as well as other new features, enhancements and bug fixes:

New features:

  • Python 3.12 support
  • Improved multi-monitor support (per monitor DPI awareness)
  • Customizable user interface content font size (#1209)
  • Screen reader support in the editor

Issues addressed:

Friday, July 21, 2023

Preview of the upcoming PyScripter version

I have been busy preparing the next version of PyScripter. Apart from bug fixes, this version improves the support of multiple monitors (per monitor DPI awareness) and  accessibility, (support for screen readers in the editor), but also brings compatibility with python 3.12 which is still in beta.

If you are using multi-monitor setups, it would be helpful to test the preview version 4.2.9.  This zip file contains just the PyScripter executable.   You just replace the executable in a 4.2 distribution with the one in the zip file.   Please report any issues to the PyScripter issue tracker.

Monday, June 5, 2023

Using PyScripter with QGIS

This is a solution contributed by Andreas (github user name amr).  For a complete integration of PyScripter with QGIS you need two things:

  1. Batch-File: The following is for the LTR-version of QGIS. It is a modified version of the existing python-qgis-ltr.bat in the folder "OSGeo4W\bin". Some changes were made to it, essentially using absolute paths to both the OSGeo4W and PyScripter installation folders. Please change the paths, if yours differ!
  2.  

    @echo off
    :: path for OSGeo4W/QGIS
    set O4W=C:\OSGeo4W
    :: path for PyScripter
    set PYSC=C:\Program Files\PyScripter
    
    :: changed start procedure
    call "%O4W%\bin\o4w_env.bat"
    @echo off
    :: add python dir to path
    path %OSGEO4W_ROOT%\apps\qgis-ltr\bin;%OSGEO4W_ROOT%\apps\Python39;%PATH%
    set QGIS_PREFIX_PATH=%OSGEO4W_ROOT:\=/%/apps/qgis-ltr
    set GDAL_FILENAME_IS_UTF8=YES
    rem Set VSI cache to be used as buffer, see #6448
    set VSI_CACHE=TRUE
    set VSI_CACHE_SIZE=1000000
    set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\qgis-ltr\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins
    set PYTHONPATH=%OSGEO4W_ROOT%\apps\qgis-ltr\python;%PYTHONPATH%
    
    :: start PyScripter
    start "PyScripter" /B "%PYSC%\PyScripter.exe" --PYTHON39 --pythondllpath=%OSGEO4W_ROOT%\apps\python39 %*
    
    
  3. Start-Script for the Python-Interpreter: It uses the path variable and adds each path to the DLL-search path. Store this as "sitecustomize.py" into the folder OSGeo4W\apps\Python39
#sitecustomize.py
import os
for p in os.getenv("PATH").split(";"):
    if os.path.exists(p):
        os.add_dll_directory(p)