# Mu - A Simple Python Code Editor

Mu is a simple code editor for beginner programmers based on extensive feedback from teachers and learners. Having said that, Mu is for anyone who wants to use a simple "no frills" editor.

Mu is a modal editor with modes for many different ways to use Python to create cool and interesting things.

Mu is written in Python and works on Windows, macOS, Linux and Raspberry Pi. The project's public facing website is https://codewith.mu/. We celebrate the work done by users of mu at https://madewith.mu/.

We have extensive developer documentation including a guide for setting up a development environment, contributor guidelines and some suggested first steps.

We want our community to be a friendly place. Therefore, we expect contributors and collaborators to follow our Code of Conduct.

• #### Create a new .deb package so the editor is easy to install on Debian based systems.

We should package the "Mu" editor for Debian based systems. This will include Debian itself, Ubuntu and, of course, Raspbian.

The package should have three dependencies: python3-pyqt5, python3-pyqt5.qsci and python3-pyqt5.qtserialport.

We should only package the appropriate parts of this repository. The process for packaging and installing from such a package should be documented in the README here:

https://github.com/ntoll/mu/tree/master/package

opened by ntoll 95
• #### One venv to rule them all

Separate out the packages needed to support core Mu functionality (PyQt, black, pyflakes etc.) from packages needed to support different modes. A venv will be created on startup and pre-shipped wheels installed into it to support modes. 3rd-party packages will be installed into the same venv

opened by tjguk 86
• #### Simple support for third party packages.

This PR fixes #675.

It has been tested on Linux (Ubuntu 18.04) but not Windows, OSX or Raspberry Pi. Please give feedback from testing in these environments.

# What does it do?

This is the simplest possible third party package manager for a beginners' editor. Until now we have bundled a bunch of "third party" modules with Mu in the official installers, thus bloating Mu's size. Furthermore, our bundled modules go out of date and/or miss some important packages for folks. This new functionality allows users to simply specify packages to be installed from PyPI. It also allows users to remove packages.

It is accessed via the "admin" dialog (accessed via the cog on the bottom right of the UI) and is one of the tabs found therein. The following GIF demonstrates it in action:

The user simply ensures the list of module names (one per line) reflects their requirements. To remove a module from the list, just remove its line. Python's pip command (which does the heavy lifting under the hood) will, of course, install dependencies as required. To keep things simple (this is a beginners' editor!) the notion of version number is ignored, and the latest version will be installed by default. Ergo, if a user needs to update a package, they should remove and re-install it.

Currently, there is no attempt to handle conflicts between pre-packaged (in the installer) modules or the same module installed via this method. My hunch is to remove these pre-installed modules in favour of this mechanism. I would love to hear thoughts on this from folks!

Packages installed in this way are available in both scripts run or debugged in Python 3 mode, or from within the Python 3 REPL (iPython shell).

# How Does it Work?

There were several ways to skin this cat, and I've gone for the simplest I can think of.

• The new tab for third party packages is added to the admin dialog. If, when the dialog is closed via "OK", there is a change in package state, then a new modal dialog launches to provide visibility of the package syncing process.
• This new package related dialog simply contains a text area into which is piped information from pip and other functionality.
• The recommended way to use pip is by launching it in a subprocess. The pip developers will not guarantee the internal API of the pip module. This is why things work the way they do: new packages are added to a list. The first new package is popped from the list and installed via pip in a subprocess. When the subprocess completes, if there are any more candidate packages to install, the process is repeated.
• The --target flag is used to specify an OS specific writeable directory into which these packages will be installed. This directory is added to the Python path when running or debugging Python 3 scripts or using the Python 3 REPL.
• Sadly, the pip command doesn't allow for targetting a "package directory" from which to remove packages. Ergo, Mu uses the list of packages that have been removed in the admin dialog to discover the metadata for them in the directory Mu uses for such packages. Happily, the metadata contains a list of all files related to each package. Mu simply iterates over these, deletes them and deletes any parent directories related to the module to be removed.

That's it! All feedback most welcome!

cc/@asweigart

opened by ntoll 59
• #### mu-editor hangs on macOS Big Sur

I have been using mu-editor successfully for a while under Catolina on my Mac. Today I upgraded the OS to Big Sur. Now the mu-editor does not open. When I launch it by clicking on the icon, the app just hangs. There are no error messages.

I have to close the application through the "Force Quit Applications". In this window it shows that mu-editor is running but not responding.

I re-installed the editor with the latest version from the website, but this did not work either.

If you are reporting a bug, we would like to know:

• What you were trying to do: Launch the mu-editor
• What steps you took to make this happen: click on its icon
• What you expected to happen: Editor to open
• What actually happened: editor just hung - no error messages
• Why this difference is problematic (it may not be a bug!): The pp no longer works and I cannot run Python!!
• Technical details like the version of Mu you're using, your OS version and other aspects of the context in which Mu was running. macOS Big Sur V 11.0.1 mu_editor - the latest version (1.0.3? - hard to tell!)

Can't provide a log file as the editor does not open.

Please remember to attach a copy of the full log files for Mu. You can get the logs by clicking on the cog icon in the bottom right of the editor window. Click on the logs and use CTRL-A to select all, then CTRL-C to copy and CTRL-V to paste the contents into the issue.

Thank you for contributing to Mu! :-)

bug 3rd party OS: macOS
opened by ged99 55
• #### Issue installing microbit mu on pitop

Hi, I have been installing the python mu on the raspberry pi on a set of pitops (running pitop OS based on raspbian I believe). There seems to be a clash on installing this with installing the pitop speaker. For example, on one pitop I installed the pitop speaker first (sudo apt-get install -y pt-speaker) then when i tried t install mu (sudo apt-get install mu) I got this error

On another machine I got the same error when trying to install the pitop speaker after installing mu successfully. I have done sudo apt-get install each time. Wondered if there is some kind of clash between the two Thanks Gemma

opened by GemmaMayLatham 52
• #### How can I find out what version of Mu is installing on Raspberry PI?

I have a user who is trying to get speech working on the Raspberry Pi version of Mu, and it is failing with an error saying 'no module named speech'.

I got them to do an update/install of mu from the command line, but it still does not work.

a) How could they tell me what version of Mu is actually installed at the moment? b) what version of Mu on the Pi does the speech module get introduced? c) If the RPF have not updated the repo's, how can a user get the latest greatest version of Mu installed on the Raspberry Pi, without having to wait for this repo update to happen?

Many thanks!

opened by whaleygeek 49
• #### Pyinstaller builds for Windows, Linux and OS X

Been playing with pyinstaller and CI services AppVeyor and Travis to automatically generate an self-contained executable build of Mu.

As it currently stands, it uploads the builds to my AWS S3 bucket, which I don't mind maintaining for a little while, as I am in the free tier and the load expected during development will be quite minimal, but this is something we also need to discuss if it's worth at all to have, to move to a different service/account, or to discard.

For now only the Windows (32 bit build, so 64 bit OS compatible) and Linux x64 versions are currently working, OS X is still under work.

Therefore, this pull request is a work-in-progress, submitted here for visibility and to get the review process started.

• [x] Windows (32 bit build, 64 bit compatible) https://github.com/ntoll/mu/issues/25
• [ ] OS X (version 10.8 or higher, or the 64 bit version of 10.6/10.7) https://github.com/ntoll/mu/issues/26
• [ ] Linux 32 bit https://github.com/ntoll/mu/issues/27
• [x] Linux 64 bit https://github.com/ntoll/mu/issues/27
• [ ] Raspberry Pi 1 (ARMv6) https://github.com/ntoll/mu/issues/28
• [ ] Raspberry Pi 2 (ARMv7) https://github.com/ntoll/mu/issues/28
opened by carlosperate 40
• #### Crash Report

REMEMBER TO ATTACH YOUR LOG FILE

Version: 1.1.0.beta.4 Locale: en_US Platform: Windows 10 10.0.19041 AMD64

Traceback (most recent call last):
File "C:\Users\rumen\AppData\Local\Programs\Mu Editor\Python\lib\site-packages\mu\app.py", line 161, in run
raise ex
File "C:\Users\rumen\AppData\Local\Programs\Mu Editor\Python\lib\site-packages\mu\app.py", line 148, in run
venv.ensure_and_create(self.display_text)
File "C:\Users\rumen\AppData\Local\Programs\Mu Editor\Python\lib\site-packages\mu\virtual_environment.py", line 494, in ensure_and_create
self.create()
File "C:\Users\rumen\AppData\Local\Programs\Mu Editor\Python\lib\site-packages\mu\virtual_environment.py", line 623, in create
self.create_venv()
File "C:\Users\rumen\AppData\Local\Programs\Mu Editor\Python\lib\site-packages\mu\virtual_environment.py", line 654, in create_venv
raise VirtualEnvironmentCreateError(
mu.virtual_environment.VirtualEnvironmentCreateError: Unable to create a virtual environment using C:\Users\rumen\AppData\Local\Programs\Mu Editor\Python\pythonw.exe at C:\Users\rumen\AppData\Local\python\mu\mu_venv-38-20210531-234955


has-logs
opened by efremovru 39
• #### MicroPython mode for ESP32/ESP8266 (and others)

A mode allowing easy programming of ESP32/ESP8266 based boards as previously described in the comments of Issue #123. It has been tested in classrooms, and seems pretty stable at this point.

The mode is based on Pyboard module from the MicroPython project as well as File-transfer operations from the AMPY tool. As AMPY supports most MicroPython devices, this mode should as well.

The list of supported PIDs/VIDs of MicroPython devices should probably be extended considerably, I have added PID/VID for the hardware I have available.

opened by dybber 39
• #### Adding python module packages to deb dependencies

Changes made to the deb control file to add the python module packages.

We shouldn't use a post script to "pip install" the modules required, as that would go against the general philosophy of using the OS packaging system. So the modules have to be installed as packages, just as we've been doing with PyQt5.

In this case these are the modules we needed:

pyserial -> python3-serial pyflakes -> python3-flake8 pycodestyle -> python3-pep8

As you can see we are installing the old pep8 named packaged instead of pycodestyle. As this was quite recent rename there is currently no new packages available, so I had to add a try/except ImportError to import with one name or the other. Hopefully it will not be that long before it is added and we can revert that to a single line import: https://osdir.com/ml/debian-python/2016-06/msg00041.html

We still need to test this in a Raspberry Pi to see if the packages are also available there.

opened by carlosperate 39
• #### Tests flakiness and some test seems to be locking up in CI

The GitHub Actions jobs have been queuing since yesterday. The grey icons are test runs I had to cancel as they were stuck there for 4h+:

• https://github.com/mu-editor/mu/runs/1802206901?check_suite_focus=true
• https://github.com/mu-editor/mu/runs/1802207019?check_suite_focus=true
• https://github.com/mu-editor/mu/runs/1802207054?check_suite_focus=true

Other CI runs with a similar lock up:

• https://github.com/mu-editor/mu/runs/1802309139?check_suite_focus=true
• https://github.com/mu-editor/mu/runs/1802424340?check_suite_focus=true
• https://github.com/mu-editor/mu/runs/1802424319?check_suite_focus=true
• https://github.com/mu-editor/mu/runs/1802285428?check_suite_focus=true

## Update

There was originally 2 issues, one to do with dependencies in Python 3.8 (already fixed) and another problem not yet identified where some runs get stuck: https://github.com/mu-editor/mu/issues/1266#issuecomment-772083787

bug
opened by carlosperate 37
• #### Crash Report

REMEMBER TO ATTACH YOUR LOG FILE

Version: 1.1.1 Locale: en_GB Platform: Darwin 17.7.0 Darwin Kernel Version 17.7.0: Fri Oct 30 13:34:27 PDT 2020; root:xnu-4570.71.82.8~1/RELEASE_X86_64 x86_64

ate
self.install_baseline_packages()
File "/Applications/Mu Editor.app/Contents/Resources/Python/lib/python3.8/site-packages/mu/virtual_environment.py", line 885, in install_baseline_packages
self.install_from_zipped_wheels(zipped_wheels_filepath)
File "/Applications/Mu Editor.app/Contents/Resources/Python/lib/python3.8/site-packages/mu/virtual_environment.py", line 860, in install_from_zipped_wheels
self.pip.install(wheel, deps=False, index=False)
File "/Applications/Mu Editor.app/Contents/Resources/Python
[mu.log](https://github.com/mu-editor/mu/files/8429631/mu.log)
/lib/python3.8/site-packages/mu/virtual_environment.py", line 270, in install
return self.run(
File "/Applications/Mu Editor.app/Contents/Resources/Python/lib/python3.8/site-packages/mu/virtual_environment.py", line 246, in run
result = self.process.run_blocking(
File "/Applications/Mu Editor.app/Contents/Resources/Python/lib/python3.8/site-packages/mu/virtual_environment.py", line 122
[mu.log](https://github.com/mu-editor/mu/files/8429600/mu.log)
, in run_blocking
return self.wait(wait_for_s=wait_for_s)
File "/Applications/Mu Editor.app/Contents/Resources/Python/lib/python3.8/site-packages/mu/virtual_environment.py", line 186, in wait
raise VirtualEnvironmentError(
mu.virtual_environment.VirtualEnvironmentError: Process finished but with error code 1:
ERROR: numpy-1.22.2-cp38-cp38-macosx_10_14_x86_64.whl is not a supported wheel on this platform.


opened by fmalina 1
• #### Crash Report

REMEMBER TO ATTACH YOUR LOG FILE

Version: 1.1.1 Locale: pl_PL Platform: Darwin 16.7.0 Darwin Kernel Version 16.7.0: Sun Jun 2 20:26:31 PDT 2019; root:xnu-3789.73.50~1/RELEASE_X86_64 x86_64

_from_zipped_wheels
self.pip.install(wheel, deps=False, index=False)
File "/private/var/folders/1m/hh_y8tvx7nggx3gsrlqm8xpr0000gn/T/AppTranslocation/FAA6417E-1592-4921-AF87-7AC4A148D9E8/d/Mu Editor.app/Contents/Resources/Python/lib/python3.8/site-packages/mu/virtual_environment.py", line 270, in install
return self.run(
File "/private/var/folders/1m/hh_y8tvx7nggx3gsrlqm8xpr0000gn/T/AppTranslocation/FAA6417E-1592-4921-AF87-7AC4A148D9E8/d/Mu Editor.app/Contents/Resources/Python/lib/python3.8/site-packages/mu/virtual_environment.py", line 246, in run
result = self.process.run_blocking(
File "/private/var/folders/1m/hh_y8tvx7nggx3gsrlqm8xpr0000gn/T/AppTranslocation/FAA6417E-1592-4921-AF87-7AC4A148D9E8/d/Mu Editor.app/Contents/Resources/Python/lib/python3.8/site-packages/mu/virtual_environment.py", line 122, in run_blocking
return self.wait(wait_for_s=wait_for_s)
File "/private/var/folders/1m/hh_y8tvx7nggx3gsrlqm8xpr0000gn/T/AppTranslocation/FAA6417E-1592-4921-AF87-7AC4A148D9E8/d/Mu Editor.app/Contents/Resources/Python/lib/python3.8/site-packages/mu/virtual_environment.py", line 186, in wait
raise VirtualEnvironmentError(
mu.virtual_environment.VirtualEnvironmentError: Process finished but with error code 1:
ERROR: numpy-1.22.2-cp38-cp38-macosx_10_14_x86_64.whl is not a supported wheel on this platform.


opened by Brania98 0
• #### Fix typo in the Russian locale

On my linux system, trying to rebuild the locales results in a fatal error for the Russian one due to unescaped quote. More specifically:

msgfmt mu.po -o mu.mo mu.po:262:55: syntax error mu.po:263: end-of-line within string msgfmt: found 2 fatal errors

The PR fixes the typo and allows the locale to be built.

opened by stratakis 0
• #### Crash Report

mu.log REMEMBER TO ATTACH YOUR LOG FILE

Version: 1.1.0b7 Locale: en_CA Platform: Windows 10 10.0.19043 AMD64

Traceback (most recent call last):
File "C:\Users\AfterNoonPM\AppData\Local\Programs\Mu Editor\Python\lib\site-packages\mu\modes\base.py", line 165, in <lambda>
File "C:\Users\AfterNoonPM\AppData\Local\Programs\Mu Editor\Python\lib\site-packages\mu\modes\base.py", line 163, in execute
self.write(command)
File "C:\Users\AfterNoonPM\AppData\Local\Programs\Mu Editor\Python\lib\site-packages\mu\modes\base.py", line 149, in write
self.serial.write(data)
AttributeError: 'NoneType' object has no attribute 'write'



BTW this is the 2nd time :(

opened by Tinkering-Townsperson 0
• #### Crash Report

REMEMBER TO ATTACH YOUR LOG FILE

Version: 1.1.1 Locale: en_GB Platform: Linux 5.10.103-v7l+ #1529 SMP Tue Mar 8 12:24:00 GMT 2022 armv7l

Traceback (most recent call last):
File "/home/pi/.local/lib/python3.7/site-packages/mu/app.py", line 159, in run
raise ex
File "/home/pi/.local/lib/python3.7/site-packages/mu/app.py", line 146, in run
venv.ensure_and_create(self.display_text)
File "/home/pi/.local/lib/python3.7/site-packages/mu/virtual_environment.py", line 603, in ensure_and_create
self.create()
File "/home/pi/.local/lib/python3.7/site-packages/mu/virtual_environment.py", line 771, in create
self.create_venv()
File "/home/pi/.local/lib/python3.7/site-packages/mu/virtual_environment.py", line 805, in create_venv
% (sys.executable, self.path, compact(output))
mu.virtual_environment.VirtualEnvironmentCreateError: Unable to create a virtual environment using /usr/bin/python3 at /home/pi/.local/share/mu/mu_venv-37-20220405-180130
STDERR: /usr/bin/python3: No module named virtualenv


opened by calump25 0
• #### i'm trying to delete mu editor

REMEMBER TO ATTACH YOUR LOG FILE

Version: 1.1.1 Locale: en_US Platform: Windows 10 10.0.19044 AMD64

site-packages\mu\app.py", line 159, in run
raise ex
File "C:\Users\Samantha Ossuetta\AppData\Local\Programs\Mu Editor\Python\lib\site-packages\mu\app.py", line 146, in run
venv.ensure_and_create(self.display_text)
File "C:\Users\Samantha Ossuetta\AppData\Local\Programs\Mu Editor\Python\lib\site-packages\mu\virtual_environment.py", line 603, in ensure_and_create
self.create()
File "C:\Users\Samantha Ossuetta\AppData\Local\Programs\Mu Editor\Python\lib\site-packages\mu\virtual_environment.py", line 771, in create
self.create_venv()
File "C:\Users\Samantha Ossuetta\AppData\Local\Programs\Mu Editor\Python\lib\site-packages\mu\virtual_environment.py", line 785, in create_venv
ok, output = self.run_subprocess(
File "C:\Users\Samantha Ossuetta\AppData\Local\Programs\Mu Editor\Python\lib\site-packages\mu\virtual_environment.py", line 430, in run_subprocess
process = subprocess.run(
File "C:\Users\Samantha Ossuetta\AppData\Local\Programs\Mu Editor\Python\lib\subprocess.py", line 493, in run
File "C:\Users\Samantha Ossuetta\AppData\Local\Programs\Mu Editor\Python\lib\subprocess.py", line 858, in __init__
File "C:\Users\Samantha Ossuetta\AppData\Local\Programs\Mu Editor\Python\lib\subprocess.py", line 1311, in _execute_child
FileNotFoundError: [WinError 2] The system cannot find the file specified


opened by userisme123 0
• #### v1.1.1(Feb 22, 2022)

This is the first stable release of the 1.1.* version of Mu. The following changes have been made since the last beta:

• Minor clean ups in the Makefile.
• Thank you to @microbit-mark for updating the board IDs to support version 2.2 of the device.
• Updates to the Chinese translation by @CSharperMantle. 謝謝。
• The foundations of a brand new Russian translation of Mu by @grovz with contributions from @iamdbychkov. спасибо!
• Thanks to @MinoruInachi (with feedback from @odaki) for a revised Japanese translation for Mu. ありがとうございます
• Due to complicated dependency problems, we've updated the bundled version of Flask to 2.0.3. Thanks to @carlosperate for quickly resolving this problem.
• Due to limitations in the way Windows MSI installers work, we're releasing this version as 1.1.1 (rather than 1.1.0).

Many thanks to everyone who has worked so diligently getting to this stable release.

Source code(tar.gz)
Source code(zip)
MuEditor-osx-1.1.1.dmg(117.05 MB)
MuEditor-win64-1.1.1.msi(155.74 MB)
• #### 1.1.0-beta.7(Dec 22, 2021)

• We expect this release to be the last beta before the final 1.1 release in the new year of 2022. Season's greetings to everyone using or contributing to Mu, and here's wishing you all a flourishing and fulfilling 2022.
• As always there have been the usual minor bug fixes and clean ups from the core team of maintainers. Thank you so much for all that you do to support the continued development of Mu.
• Thanks to the ever-green @keith-packard for his contribution to ensure icons on the button bar continuously scale based on the window width. This looks really smooth and slick.
• Tinsel laden @tmontes has made a number of contributions around tooling for internationalization (i18n) of Mu. These include using the Babel package for generating the required translation files from our source code, and updating the Makefile (and make.py) so the process can be automated.
• Xmassy @xbecas is a new joiner to the core team and we're very please to have him with us since he has done a huge amount of work on updating and curating the translation files needed for i18n. Thanks to his work, translators for all the other existing locales need not have to go through the string generation/update steps (he's done that for you already!).
• Both @xbecas and @tmontes have made extensive updates to our pt-PT (Portuguese) translation. Feliz Natal e Próspero Ano Novo.
• This was swiftly followed by a welcome contribution by @rffontenelle the red-nosed translator, who made extensive updates to the pt-BR (Brazilian Portuguese) translation. Many thanks Rafael, you continue to demonstrate why the Brazilian FLOSS community is such a vibrant place, and we hope your work will help beginner coders in Brazil take their first steps to join your community. Boas Festas!
• Now that the upstream PyGame / PyGameZero packages have been updated and repackaged, @tmontes has ensured we use these (rather than our own custom builds) in our installers for Windows and OSX. Many thanks to our friends and collaborators in those projects (cc/ @illume and @lordmauve).
• Once in royal @devdanzin's repos, stood some lowly bugs to fix. These include ensuring empty path handling is properly handled by get_save_path, correct highlighting of both f-strings and triple quoted strings in the editor widget, fixing a comment-toggling bug that deleted the first character of the next line under certain circumstances and more robust handling of environment variables. Wow, @devdanzin was on fire..! (...and has further work in development, thank you so much for your continued contributions.)
• Carolling @carlosperate has put a huge effort in. He has triaged various crash reports, administered our continuous integration pipeline, and reviewed and merged much of the work described above. He also ensured our version numbering for Mu is no longer odd, and meets the guidelines set out in PEP440.
• Good Tim Golden (@tjguk) fast typed out, a venv that's crisp and even. His outstanding work on making Python virtual environments work in some of the most inhospitable computing environments ever found is miraculous. Tim's genius is to know exactly the right intervention to make, and in this case his epic addition of -I to the Mu codebase will help ensure the user's virtual environments are properly isolated.
• @tmonter has updated the pup packager we use to create our installer. This should fix a problem found on the new ARM based Macs. He has also made significant progress on a cross-distro Linux package which we hope will make an appearance in the not-too-distant future.
• Finally, Nicholas (@ntoll) promises never to do another Christmas themed changelog. :christmas_tree: :santa: :tada:
Source code(tar.gz)
Source code(zip)
Mu-Editor-Win64-1.1.0b7.msi(145.66 MB)
Mu.Editor.1.1.0b7.dmg(108.22 MB)
Signed-Mu-Editor-1.1.0b7.msi(152.77 MB)
• #### 1.1.0-beta.6(Oct 6, 2021)

• There have been the usual minor bug fixes and clean ups from various regular contributors and some new ones too. Thank you for your careful and well targetted changes.
• Carlos (@carlosperate) fixed some packaging problems relating to the iPython kernel bundled with Mu.
• Martin (@dybber) fixed a couple of problems relating to the stopping of child processes (Flask and scripts stopped via KeyboardInterrupt in Linux).
• The web mode checks for the availability of templates in the local directory tree before starting up. If a template directory isn't found in the expected location, then the user sees a helpful message describing the problem and what they need to do to fix it.
• Mu's splash screen no longer always appears on top of everything else on the user's desktop. The splash screen now also logs the progress of installing the various packages needed on first install. Thanks to Carlos for these changes.
• A new admin/settings option has been added to allow users to manually change the translation Mu uses for its interface. Updating this setting requires a restart of Mu. Zander (@ZanderBrown) contributed the icon/glyph to indicate the relevant tab is for translation related settings (not entirely obvious if Mu's UI is using a language you don't understand and you're looking for the setting that relates to translations). The icon makes this clear.
• On some desktop windowing systems there is a bug that means windows re-open at a position higher up the screen, and so may appear off the top of the screen. We've ensured this never happens with Mu. If Mu starts with any part of the window off the screen, the window is moved to be within the dimensions of the screen. This was a weird one to track down and fix.
• Many thanks to Ethan Spoelstra (@espoelstra) who contributed a change so Crostini on ChromeOS is used to return the correct CIRCUITPY path if it exists.
• Huge thanks to Keith Packard (@keith-packard) for several contributions to this release of Mu. Keith refactored the way in which Mu handles pasting in the REPL window so it works correctly and more broadly across operating systems.
• Keith also fixed some font related issues in the REPL.
• Keith was on fire with a couple more contributions relating to SVG icons in the buttons in Mu. We're very grateful to Ben Williams (@Rybec) for putting in the work to make our button icons SVG files. Keith made the code changes to implement this.
• Thanks to Miro Hrončok (@hroncok) for pointing out a change in Python 10 which would break some of our UI calls into PyQt, and who provided a patch to fix things.
• Some minor clarifications in our developer documentation (https://mu.rtfd.io).
Source code(tar.gz)
Source code(zip)
Mu-Editor-Win64-1.1.0b6.msi(145.43 MB)
Mu.Editor.1.1.0b6.dmg(109.25 MB)
• #### 1.1.0-beta.5(Jul 5, 2021)

• Several of us made minor updates and fixes (such as ensuring various packages had explicit dependency versions listed, updating versions for Mu's own dependencies and so on).
• Right clicking on highlighted text in the editor, with the REPL active, now has an additional option added to the context menu: to correctly paste the text from the editor into the REPL. Thanks to Professor Chris Rogers of Tufts University for suggesting this feature.
• The multi-talented Dan Halbert (@dhalbert) of Adafruit very kindly fixed a bug in the Adafruit board handling when on run on new Apple M1 hardware. Thank you Dan for your valuable contribution.
• A huge amount of work by Tim (@tjguk) and Carlos (@carlosperate) has gone into analysing the crash reports from recent beta releases of Mu. This has resulted in significant effort to address many of the bugs encountered, many of which related to edge cases encountered by the new virtual environment feature. Tim and Carlos have created many fixes and checks to ensure these bugs are either completely fixed or are, at least, mitigated in more helpful ways. This has been a challenging and "fiddly" bit of work, so kudos and thanks, as always, to both Tim and Carlos for their continued efforts.
• Carlos has also updated the version of MicroPython used in the BBC micro:bit mode to the latest 2.0.0-beta.5 version.
• In addition, Carlos has ensured that the micro:bit mode flashes files onto the micro:bit using the correctly memory aligned hex string.
• Github user @ajs256 has ensured the crash reporter doesn't kick in when a KeyboardInterrupt is triggered in Mu (CTRL-C).
• Sometimes in Mu for Linux, the expected .py file extension wasn't added to new files. This depended on the user's graphical shell. Mu now checks the output from the shell and, if requires, will add .py itself.
• Various fixes to Mu's logging make it more robust, clear and useful.
• Tiago (@tmontes) fixed a late breaking bug in packaging Mu for OSX. All fixed in a matter of hours. Amazing work!
Source code(tar.gz)
Source code(zip)
Mu-Editor-Win64-1.1.0b5.msi(152.41 MB)
MuEditor-1.1.0b5.dmg(117.40 MB)
• #### 1.1.0-beta.4(Apr 18, 2021)

• Carlos made many changes to clean up the specification for required modules used by the installer. This will make supporting and tracking Mu's dependencies MUCH easier. Thank you Carlos!
• Huge thanks to Dan Halbert of Adafruit who contributed a significant amount of refactoring to the CircuitPython mode. As a result Mu now uses the adafruit-board-toolkit module for device identification, among many other helpful changes described in Dan's pull request. Thank you Dan..!
• Carlos was on fire... he also fixed a bug in the file-copy dialog when the context menu was opened with an empty list of files.
• Carlos (again), fixed some outstanding documentation issues for supporting Raspbian Buster (and newer). These are now at https://mu.rtfd.io/.
• Carlos (again, again) tidied up various aspects of the Makefile so there is only a single source of truth for running various utilities and commands.
• Logging was another focus for this release. Now that we have a few weeks worth of crash reports we've been able to look at the parts of the application that cause most grief and add extra-logging in various locations. Tim put in a great effort to make sure the "first run" and other virtual environment based aspects of Mu now have clearer and more useful logging and throw more useful exceptions, closer to the source of the problem, for the resulting crash report. Carlos ensured the IPython kernel installation was properly logged.
• We ensured various key packages were pinned to particular versions to maximise compatibility with older versions of Python still found in schools.
Source code(tar.gz)
Source code(zip)
Mu-Editor-Win64-1.1.0b4.msi(145.15 MB)
Mu.Editor.1.1.0b4.dmg(110.61 MB)
• #### 1.1.0-beta.3(Mar 29, 2021)

This is a beta release and may contain bugs or unfinished features. Please provide bug reports or feedback via: https://github.com/mu-editor/mu/issues/new

• During beta phase, we're moving to a fortnightly release cadence. Expect beta 4 on around the 12th April.
• The final version of the Mu splash screen was delivered. Huge thanks to the extraordinarily talented Steve Hawkes (@hawkz) of The Developer Society for his generous artistic support, patience and humorous approach.
• Thanks to a recent update in PyGame Zero, we're back to using the official package from PyPI, rather than our patched fork, in the installer.
• Both Tim and Carlos have contributed updates, fixes and tests to address a bug affecting Windows users who may have a space in the file path upon which Mu is found. This was a difficult bug to reproduce but Tim did a lot of digging to isolate the cause with as much confidence as is possible when it comes to such things. Carlos did a bunch of thankless and fiddly test related work so testing with spaces in the path is part of our test suite. Work on this is ongoing so expect further improvements in upcoming releases. As always, many thanks for these efforts.
• Tim addressed a wheel/sdist related problem that was causing odd side effects with regard to dependancies.
• A strange bug, where it was not possible to install third-party packages on first run of Mu, opened up a deep rabbit hole of investigation. In the end Tim was able to fix this AND address the source of a warning message from Qt when Mu was starting for the first time.
• The splash screen code was rewritten in such a way that objects relating to the splash screen will always be garbage-collected by Python and destroyed by Qt5. Previously, they existed for the full duration of the application, not really causing any problems, but "in limbo" nonetheless.
• The crash reporting tool has had a minor update so the user is reminded to attach their log file to the bug report, along with an indication of where to find the log file.
Source code(tar.gz)
Source code(zip)
Mu-Editor-Win64-1.1.0b3.msi(145.18 MB)
Mu.Editor.1.1.0b3.dmg(110.69 MB)
• #### 1.1.0-beta.2(Mar 15, 2021)

From the release notes:

• This is the first public beta release (beta 1 was created for testing by the core development team).
• Many minor bug fixes to the existing new features found in beta 1 (see below).
• Many thanks to Martin Dybdal for his work on improving the admin panel.
• Carlos made significant changes so Mu can be packaged with very recent versions of Python. Carlos also made various changes relating to the status of Python packages contained within the official installer.
• Many thanks to Dan Pope for assistance with an upgraded version of PyGameZero (which uses the latest version of PyGame - kudos to René and the other developers of PyGame for the recent improvements).
• Various fixes to the UI so that panes are easier to resize and the themes are correctly applied to the REPL (thanks again to Martin for these fixes).
• Carlos also contributed fixes relating to the micro:bit mode (compatibility with versions 1 and 2).
• Tim has made herculean efforts to ensure the creation and checking of Mu's virtual environment is robust and easy to maintain.
• A new crash reporting feature has been added. If Mu breaks the user will be redirected to the endpoint codewith.mu/crash with details of the crash and an option to create a bug report. This ensures Mu crashes are handled more gracefully, and the user is able to see the error that caused the crash.
• A new animated splash screen has been added so the initial creation of Mu's virtual environment happens in such a way that the user can see progress is being made, and updates are logged on the splash screen for the user. If Mu encounters a problem at this early stage, the splash screen recovers and the new crash reporting feature kicks in. The current animation was created by Steve Hawkes (thank you) with a much more polished version promised very soon..!
• Behind the scenes, Tiago has continued to make outstanding work on the pup tool we use to create the installers for Windows 64/32 bit and MacOS X. This beta release will be the first to use installers created with pup.
• Known bug - on first ever start of Mu, if in Python3 mode the package manager will not work. Re-starting Mu fixes this (i.e. from second and subsequent starts). We're tracking this problem via this issue.
Source code(tar.gz)
Source code(zip)
Mu-Editor-Win64-1.1.0b2.msi(145.18 MB)
Mu.Editor.1.1.0b2.dmg(110.74 MB)
• #### 1.1.0-beta.1(Jan 31, 2021)

From the CHANGELOG:

• A new mode for ESP8266/ESP32 devices running MicroPython. This work and a significant amount of related refactoring was contributed with Viking like energy and efficiency by Martin Dybdal. This work has meant it was relatively easy to create two further new modes...
• New mode for Lego Spike devices (thanks to Chris and Ethan at Tufts University for the help and support).
• New mode for Raspberry Pi Pico (thanks to Zander, Martin and Carlos for the extensive testing).
• Updates to the Microbit mode made by Spanish source-code wrangler extraordinaire (and resident Microbit expert) Carlos Pereira Atencio. The Microbit mode now supports versions 1 and 2 of the board.
• Various bits of artwork used in the application have been updated (including a new [temporary] animated splash screen). Thanks to devdanzin for choreographing the initial work on the splash screen at short notice.
• A complete re-write of the virtualenv and third party package handlers by the hugely talented Tim Golden. This was a long term and difficult refactoring project which Tim has delivered with great aplomb. This should make package handling much smoother and simpler.
• Various smallish UI fixes, enhancements and smoothing by devdanzin. Thank you for these contributions - they really make a difference to the ease of use and friendly feel of Mu.
• This version of Mu is packaged with stand-alone installers for Windows and OSX by the wonder that is PUP - a new packaging tool by our very own Tiago Montes ~ Portugal's Premier Python Packager Par-excellence. We have big plans for PUP... watch this space. :-)
• Many many many minor bug fixes contributed by many many many people to whom we are eternally grateful.
Source code(tar.gz)
Source code(zip)
• #### 1.0.3(Jan 26, 2020)

This is a bugfix release to address OSX Catalina changes which caused Mu to render incorrectly.

Full list of the (minor) changes can be found in the changelog here: https://mu.readthedocs.io/en/latest/changes.html#id1

Source code(tar.gz)
Source code(zip)
mu-editor.dmg(104.04 MB)
mu-editor_1.0.3_win32.exe(70.39 MB)
mu-editor_1.0.3_win64.exe(77.00 MB)
• #### 1.1.0-alpha.2(Jul 5, 2019)

This is the second alpha release of the next 1.1 version of Mu. It includes several new features or improvements:

• A new Web mode.
• A Slovak translation.
• The Adafruit mode has been renamed to CircuitPython mode.
• Lots of tidy-ups, fixes and squashed bugs.

The full list of the changes can be found here: https://mu.readthedocs.io/en/latest/changes.html#alpha-2

Please see the website here: https://codewith.mu/ Developer documentation is here: https://mu.readthedocs.io/en/latest/index.html The project's blog can be found here: https://madewith.mu/

Source code(tar.gz)
Source code(zip)
mu-editor_1.1.0-alpha.2_osx.dmg(81.44 MB)
mu-editor_1.1.0-alpha.2_win32.exe(59.40 MB)
mu-editor_1.1.0-alpha.2_win64.exe(65.52 MB)
• #### 1.1.0-alpha.1(Mar 25, 2019)

This is the first alpha release of the next 1.1 version of Mu. This includes three new features:

• Third party package management.
• Code tidying with Black
• A new ESP8266/ESP32 mode.

There are also many bug fixes. The full list of changes can be found in the change-log: https://mu.readthedocs.io/en/latest/changes.html#alpha-1

Source code(tar.gz)
Source code(zip)
mu-editor_1.1.0-alpha.1_osx.dmg(143.35 MB)
mu-editor_1.1.0-alpha.1_win32.exe(86.44 MB)
mu-editor_1.1.0-alpha.1_win64.exe(95.57 MB)
• #### 1.0.2(Jan 15, 2019)

This is Mu 1.0.2. This is a bug-fix release. The only other enhancements to Mu have been updates to MicroPython on the micro:bit and more translations.

Details of the full list of changes can be found in the change-log: https://mu.readthedocs.io/en/latest/changes.html#id1

Source code(tar.gz)
Source code(zip)
mu-editor_1.0.2_osx.dmg(143.82 MB)
mu-editor_1.0.2_win32.exe(85.47 MB)
mu-editor_1.0.2_win64.exe(94.60 MB)
portamu_1.0.2_osx.zip(170.63 MB)
• #### 1.0.1(Oct 1, 2018)

This is Mu 1.0.1. This is a bug-fix release. The only other enhancements to Mu have been updates to MicroPython on the micro:bit and more translations.

Details of the full list of changes can be found in the change-log: https://mu.readthedocs.io/en/latest/changes.html#id1

Source code(tar.gz)
Source code(zip)
mu-editor_1.0.1_osx.dmg(151.33 MB)
mu-editor_1.0.1_win32.exe(85.03 MB)
mu-editor_1.0.1_win64.exe(94.17 MB)
portamu_1.0.1_win32.zip(118.99 MB)
portamu_1.0.1_win64.zip(136.76 MB)

• #### v1.0.0.beta.17(Jul 9, 2018)

This is another significant release with many changes and bug-fixes, the full details of which can be found here: https://mu.readthedocs.io/en/latest/changes.html#beta-17

This version of Mu is feature complete for 1.0. We expect a release candidate containing bug fixes to follow this release (in a matter of days). The final 1.0 release will follow soon after.

Source code(tar.gz)
Source code(zip)
mu-editor_beta17_osx.dmg(132.71 MB)
mu-editor_beta17_win32.exe(84.73 MB)
mu-editor_beta17_win64.exe(93.86 MB)
• #### v1.0.0.beta.16(Jun 20, 2018)

This is a significant update. The full change log can be found here: https://mu.readthedocs.io/en/latest/changes.html#beta-16

We expect a beta.17 to quickly follow this release, then a release candidate and then a final 1.0 release.

Source code(tar.gz)
Source code(zip)
mu-editor_beta16_osx.dmg(127.75 MB)
mu-editor_beta16_win32.exe(84.72 MB)
mu-editor_beta16_win64.exe(93.85 MB)

• #### v0.9.12(Oct 23, 2016)

• Change the default Python directory from ~/python to ~/mu_code.
• Add instructions for installing PyQt5 and QScintilla on Mac OS.
• Add highlighting of search matches.
• Check if the script produced is > 8k.
• Use a settings file local to the Mu executable if available.
• Fix bug with highlighting code errors in Windows.
• Check to overwrite an existing file on the micro:bit FS.
• Start changelog
Source code(tar.gz)
Source code(zip)
mu-0.9.12.linux.bin(34.95 MB)
mu-0.9.12.osx.zip(18.29 MB)
mu-0.9.12.win.exe(27.70 MB)
###### Mu
A beginner's code editor.
###### A simple Notepad-like editor written in Python

monkepad A simple Notepad-like editor written in Python Since MonkePad is written in one file, all your customization can be done without much trouble

5 Dec 28, 2021
###### A very simple Editor.js parser written in pure Python

pyEditor.js A very simple Editor.js parser written in pure Python. Soon-to-be published on PyPI. Features: Automatically convert Editor.js's JSON outp

5 Feb 13, 2022
###### Komodo Edit is a fast and free multi-language code editor. Written in JS, Python, C++ and based on the Mozilla platform.

Komodo Edit This readme explains how to get started building, using and developing with the Komodo Edit source base. Whilst the main Komodo Edit sourc

2k Mar 30, 2022
###### Leo is an Outliner, Editor, IDE and PIM written in 100% Python.

Leo 6.3, http://leoeditor.com, is now available on GitHub. Leo is an IDE, outliner and PIM. The highlights of Leo 6.3 leoAst.py: The unification of Py

1.3k Apr 5, 2022
###### ReText: Simple but powerful editor for Markdown and reStructuredText

Welcome to ReText! ReText is a simple but powerful editor for Markdown and reStructuredText markup languages. One can also add support for custom mark

1.5k Mar 31, 2022
###### A free Python source code editor and Notepad replacement for Windows

Website Download Features Toolbar Wide array of view options Syntax highlighting support for Python Usable accelerator keys for each function (Ctrl+N,

7 Feb 16, 2022
###### Cameray is a lens editor and simulator for fun.

Cameray is a lens editor and simulator for fun. It's could be used for studying an optics system of DSLR in an interactive way. But the project is in a very early version. The program is still crash-prone and also lack of many realistic camera features now.

35 Nov 14, 2021
###### An experimental code editor for writing algorithms

Algojammer Algojammer is an experimental, proof-of-concept code editor for writing algorithms in Python. It was mainly written to assist with solving

2.9k Mar 26, 2022
###### A powerful text editor for MATE

Pluma - The MATE text editor General Information Pluma (pluma) is a small and lightweight UTF-8 text editor for the MATE environment. It started as a

127 Apr 9, 2022
###### Write maintainable, production-ready pipelines using Jupyter or your favorite text editor. Develop locally, deploy to the cloud. ☁️

Write maintainable, production-ready pipelines using Jupyter or your favorite text editor. Develop locally, deploy to the cloud. ☁️

2.3k Apr 8, 2022
###### Encriptificator is a text editor app developed by me as a personal project.

Encriptificator is a text editor app developed by me as a personal project. It provides all basic features of a text editor with the additional feature of encrypting your files. To know more about how to use the encryption features , please read the readme file.

2 Jan 24, 2022
###### A gui-script-editor(Based on pyqt5, pyautogui) to writing your gui script.

gui-script-editor A gui-script-editor(Based on pyqt5, pyautogui) to writing your gui script. ##更新说明 版本号：1.0.0 版本说明：实现了脚本编辑器雏形，未实现执行报告，自动化脚本管理（只支持单个脚本运

2 Dec 22, 2021
###### cross-editor syntax highlighter for Lua, showing some merit of Typed BNF

Cross-editor contextual syntax highlighter via Typed BNF Do you like "one grammar, syntax highlighters everywhere?" 喜欢我一个文法，到处高亮吗？ PS: NOTE that paren

14 Feb 9, 2022
###### Frappe tinymce - Frappe app to replace default text editor with tinymce

Frappe tinyMCE tinyMCE Text Editor for frappe apps Replace frappe's Quill Text E

16 Mar 16, 2022
###### PlugNik is a simple implementation of plugin repository for JetBrains Application.

PlugNik is a simple implementation of plugin repository for JetBrains Application.

12 Jan 15, 2022
2.1k Apr 2, 2022
###### Emacs Python Development Environment

Elpy, the Emacs Python IDE Elpy is an Emacs package to bring powerful Python editing to Emacs. It combines and configures a number of other packages,

1.8k Apr 3, 2022
###### awesome Python autocompletion with SublimeText

SublimeJEDI SublimeJEDI is a Sublime Text 3 and Sublime Text 2 and plugin to the awesome autocomplete library Jedi Python Version Support Sublime Jedi

921 Mar 29, 2022
###### Vim python-mode. PyLint, Rope, Pydoc, breakpoints from box.

Python-mode, a Python IDE for Vim This project needs contributors. Documentation: :help pymode https://github.com/python-mode/python-mode/wiki Importa

5.3k Apr 7, 2022