src/eric7/eric7_mpy.py

Sun, 21 Jan 2024 15:38:51 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 21 Jan 2024 15:38:51 +0100
branch
eric7
changeset 10518
1682f3203ae5
child 10683
779cda568acb
permissions
-rw-r--r--

MicroPython
- Added a standalone application of the built-in MicroPython interface (`eric7_mpy`).

10518
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2024 Detlev Offenbach <detlev@die-offenbachs.de>
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 eric MicroPython devices.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 This is the main Python script to interact with MicroPython or CircuitPython devices
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from outside of the IDE.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import argparse
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 import os
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 import sys
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from PyQt6.QtGui import QGuiApplication
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 def createArgparseNamespace():
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 Function to create an argument parser.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 @return created argument parser object
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 @rtype argparse.ArgumentParser
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 from eric7.UI.Info import Version
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 # 1. create the argument parser
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 parser = argparse.ArgumentParser(
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 description="Graphical tool of the eric tool suite to interact with µPy/CPy"
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 " devices",
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 epilog="Copyright (c) 2024 Detlev Offenbach <detlev@die-offenbachs.de>.",
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 )
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 # 2. add the arguments
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 parser.add_argument(
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 "-V",
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 "--version",
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 action="version",
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 version="%(prog)s {0}".format(Version),
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 help="show version information and exit",
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 )
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 parser.add_argument(
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 "--config",
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 metavar="config_dir",
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 help="use the given directory as the one containing the config files",
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 )
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 parser.add_argument(
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 "--settings",
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 metavar="settings_dir",
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 help="use the given directory to store the settings files",
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 )
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 # 3. create the Namespace object by parsing the command line
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 args = parser.parse_args()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 return args
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 args = createArgparseNamespace()
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 if args.config:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 from eric7 import Globals
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 Globals.setConfigDir(args.config)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 if args.settings:
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 from PyQt6.QtCore import QSettings
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 SettingsDir = os.path.expanduser(args.settings)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 if not os.path.isdir(SettingsDir):
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 os.makedirs(SettingsDir)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 QSettings.setPath(
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 QSettings.Format.IniFormat, QSettings.Scope.UserScope, SettingsDir
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 )
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 from eric7.Toolbox import Startup
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 def createMainWidget(args): # noqa: U100
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 Function to create the main widget.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 @param args namespace object containing the parsed command line parameters
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 @type argparse.Namespace
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 @return reference to the main widget
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 @rtype QWidget
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 from eric7.MicroPython.MicroPythonWindow import MicroPythonWindow
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 return MicroPythonWindow(None)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 def main():
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 Main entry point into the application.
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 """
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 QGuiApplication.setDesktopFileName("eric7_mpy")
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 res = Startup.appStartup(args, createMainWidget)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 sys.exit(res)
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 if __name__ == "__main__":
1682f3203ae5 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 main()

eric ide

mercurial