From 72eb950292b255943d1fcf9a09fbbc9e96922d39 Mon Sep 17 00:00:00 2001 From: Olivier Michel Date: Mon, 21 Nov 2022 11:42:46 +0100 Subject: [PATCH] Clean-up python API (#5521) * Simplified imports * If the python command is missing, provide a default value * Update WbLanguageTools.cpp * Update WbLanguageTools.cpp --- .../python/controller/accelerometer.py | 4 +- lib/controller/python/controller/altimeter.py | 4 +- .../python/controller/ansi_codes.py | 2 +- lib/controller/python/controller/brake.py | 10 +-- lib/controller/python/controller/camera.py | 4 +- lib/controller/python/controller/compass.py | 4 +- lib/controller/python/controller/connector.py | 4 +- lib/controller/python/controller/constants.py | 2 +- lib/controller/python/controller/device.py | 2 +- lib/controller/python/controller/display.py | 6 +- .../python/controller/distance_sensor.py | 4 +- lib/controller/python/controller/emitter.py | 4 +- lib/controller/python/controller/field.py | 4 +- lib/controller/python/controller/gps.py | 4 +- lib/controller/python/controller/gyro.py | 4 +- .../python/controller/inertial_unit.py | 4 +- lib/controller/python/controller/joystick.py | 2 +- lib/controller/python/controller/keyboard.py | 4 +- lib/controller/python/controller/led.py | 4 +- lib/controller/python/controller/lidar.py | 6 +- .../python/controller/light_sensor.py | 4 +- lib/controller/python/controller/motion.py | 2 +- lib/controller/python/controller/motor.py | 10 +-- lib/controller/python/controller/mouse.py | 2 +- lib/controller/python/controller/node.py | 6 +- lib/controller/python/controller/pen.py | 4 +- .../python/controller/position_sensor.py | 10 +-- lib/controller/python/controller/radar.py | 6 +- .../python/controller/range_finder.py | 4 +- lib/controller/python/controller/receiver.py | 4 +- lib/controller/python/controller/robot.py | 62 +++++++++---------- lib/controller/python/controller/sensor.py | 4 +- lib/controller/python/controller/skin.py | 4 +- lib/controller/python/controller/speaker.py | 4 +- .../python/controller/supervisor.py | 6 +- .../python/controller/touch_sensor.py | 4 +- src/webots/control/WbLanguageTools.cpp | 8 ++- 37 files changed, 116 insertions(+), 110 deletions(-) diff --git a/lib/controller/python/controller/accelerometer.py b/lib/controller/python/controller/accelerometer.py index 1850a69ee7b..7c47818f7a7 100644 --- a/lib/controller/python/controller/accelerometer.py +++ b/lib/controller/python/controller/accelerometer.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.sensor import Sensor -from controller.wb import wb +from .sensor import Sensor +from .wb import wb import ctypes import typing diff --git a/lib/controller/python/controller/altimeter.py b/lib/controller/python/controller/altimeter.py index cdea3b8ecb1..1dffe7556e1 100644 --- a/lib/controller/python/controller/altimeter.py +++ b/lib/controller/python/controller/altimeter.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.sensor import Sensor -from controller.wb import wb +from .sensor import Sensor +from .wb import wb import ctypes import typing diff --git a/lib/controller/python/controller/ansi_codes.py b/lib/controller/python/controller/ansi_codes.py index e17f0ef03ac..2c4d6f9baee 100644 --- a/lib/controller/python/controller/ansi_codes.py +++ b/lib/controller/python/controller/ansi_codes.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.constants import constant +from .constants import constant class AnsiCodes: diff --git a/lib/controller/python/controller/brake.py b/lib/controller/python/controller/brake.py index 1f9f4d81b1a..12b10ec09a0 100644 --- a/lib/controller/python/controller/brake.py +++ b/lib/controller/python/controller/brake.py @@ -13,9 +13,9 @@ # limitations under the License. import ctypes -from controller.constants import constant -from controller.device import Device -from controller.wb import wb +from .constants import constant +from .device import Device +from .wb import wb from typing import Union @@ -42,13 +42,13 @@ def getPositionSensor(self): @property def motor(self): - from controller.motor import Motor + from .motor import Motor tag = wb.wb_brake_get_motor(self._tag) return None if tag == 0 else Motor(tag) @property def position_sensor(self): - from controller.position_sensor import PositionSensor + from .position_sensor import PositionSensor tag = wb.wb_brake_get_position_sensor(self._tag) return None if tag == 0 else PositionSensor(tag) diff --git a/lib/controller/python/controller/camera.py b/lib/controller/python/controller/camera.py index b903af73e9e..56bddc63d04 100644 --- a/lib/controller/python/controller/camera.py +++ b/lib/controller/python/controller/camera.py @@ -13,8 +13,8 @@ # limitations under the License. import ctypes -from controller.sensor import Sensor -from controller.wb import wb +from .sensor import Sensor +from .wb import wb from typing import List, Union diff --git a/lib/controller/python/controller/compass.py b/lib/controller/python/controller/compass.py index be452749662..68567f22066 100644 --- a/lib/controller/python/controller/compass.py +++ b/lib/controller/python/controller/compass.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.sensor import Sensor -from controller.wb import wb +from .sensor import Sensor +from .wb import wb import ctypes import typing diff --git a/lib/controller/python/controller/connector.py b/lib/controller/python/controller/connector.py index 4e0be5b501b..ea5e4f200f1 100644 --- a/lib/controller/python/controller/connector.py +++ b/lib/controller/python/controller/connector.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.wb import wb -from controller.device import Device +from .wb import wb +from .device import Device from typing import Union diff --git a/lib/controller/python/controller/constants.py b/lib/controller/python/controller/constants.py index 362ffee032e..c95432bc75a 100644 --- a/lib/controller/python/controller/constants.py +++ b/lib/controller/python/controller/constants.py @@ -13,7 +13,7 @@ # limitations under the License. import ctypes -from controller.wb import wb +from .wb import wb def constant(name, type=int): diff --git a/lib/controller/python/controller/device.py b/lib/controller/python/controller/device.py index 290e96fe567..0da832b78a8 100644 --- a/lib/controller/python/controller/device.py +++ b/lib/controller/python/controller/device.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.wb import wb +from .wb import wb import ctypes from typing import Union diff --git a/lib/controller/python/controller/display.py b/lib/controller/python/controller/display.py index 997f141a15d..71ff0579c96 100644 --- a/lib/controller/python/controller/display.py +++ b/lib/controller/python/controller/display.py @@ -13,9 +13,9 @@ # limitations under the License. import ctypes -from controller.wb import wb -from controller.camera import Camera -from controller.device import Device +from .wb import wb +from .camera import Camera +from .device import Device from typing import Union, List diff --git a/lib/controller/python/controller/distance_sensor.py b/lib/controller/python/controller/distance_sensor.py index 62fdcf234d1..a0583f40dea 100644 --- a/lib/controller/python/controller/distance_sensor.py +++ b/lib/controller/python/controller/distance_sensor.py @@ -13,8 +13,8 @@ # limitations under the License. import ctypes -from controller.wb import wb -from controller.sensor import Sensor +from .wb import wb +from .sensor import Sensor from typing import Union, List diff --git a/lib/controller/python/controller/emitter.py b/lib/controller/python/controller/emitter.py index 50ed4cc784c..fb1879ff316 100644 --- a/lib/controller/python/controller/emitter.py +++ b/lib/controller/python/controller/emitter.py @@ -14,8 +14,8 @@ import struct import sys -from controller.wb import wb -from controller.device import Device +from .wb import wb +from .device import Device import ctypes from typing import Union, List diff --git a/lib/controller/python/controller/field.py b/lib/controller/python/controller/field.py index 3b0038fece3..9b4d3664a37 100644 --- a/lib/controller/python/controller/field.py +++ b/lib/controller/python/controller/field.py @@ -13,8 +13,8 @@ # limitations under the License. import ctypes -from controller.wb import wb -from controller.constants import constant +from .wb import wb +from .constants import constant import struct import typing diff --git a/lib/controller/python/controller/gps.py b/lib/controller/python/controller/gps.py index 0b8901820e8..ebc1f298423 100644 --- a/lib/controller/python/controller/gps.py +++ b/lib/controller/python/controller/gps.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.sensor import Sensor -from controller.wb import wb +from .sensor import Sensor +from .wb import wb import ctypes import typing diff --git a/lib/controller/python/controller/gyro.py b/lib/controller/python/controller/gyro.py index 2735090ed56..265ed36a5d6 100644 --- a/lib/controller/python/controller/gyro.py +++ b/lib/controller/python/controller/gyro.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.sensor import Sensor -from controller.wb import wb +from .sensor import Sensor +from .wb import wb import ctypes import typing diff --git a/lib/controller/python/controller/inertial_unit.py b/lib/controller/python/controller/inertial_unit.py index 872bccf7ea0..6dd5cb1dcb8 100644 --- a/lib/controller/python/controller/inertial_unit.py +++ b/lib/controller/python/controller/inertial_unit.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.sensor import Sensor -from controller.wb import wb +from .sensor import Sensor +from .wb import wb import ctypes import typing diff --git a/lib/controller/python/controller/joystick.py b/lib/controller/python/controller/joystick.py index 851ce13bc6c..16611e11aa0 100644 --- a/lib/controller/python/controller/joystick.py +++ b/lib/controller/python/controller/joystick.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.wb import wb +from .wb import wb import ctypes from typing import Union diff --git a/lib/controller/python/controller/keyboard.py b/lib/controller/python/controller/keyboard.py index d607afd3f66..f908f60626a 100644 --- a/lib/controller/python/controller/keyboard.py +++ b/lib/controller/python/controller/keyboard.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.wb import wb -from controller.constants import constant +from .wb import wb +from .constants import constant from typing import Union diff --git a/lib/controller/python/controller/led.py b/lib/controller/python/controller/led.py index 7380fe5d3f2..6a79ea1d356 100644 --- a/lib/controller/python/controller/led.py +++ b/lib/controller/python/controller/led.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.wb import wb -from controller.device import Device +from .wb import wb +from .device import Device from typing import Union diff --git a/lib/controller/python/controller/lidar.py b/lib/controller/python/controller/lidar.py index 76f39f2ae8e..b3e6b18d45c 100644 --- a/lib/controller/python/controller/lidar.py +++ b/lib/controller/python/controller/lidar.py @@ -13,9 +13,9 @@ # limitations under the License. import ctypes -from controller.sensor import Sensor -from controller.lidar_point import LidarPoint -from controller.wb import wb +from .sensor import Sensor +from .lidar_point import LidarPoint +from .wb import wb from typing import List, Union diff --git a/lib/controller/python/controller/light_sensor.py b/lib/controller/python/controller/light_sensor.py index f1fb7e4133c..3d66786ad10 100644 --- a/lib/controller/python/controller/light_sensor.py +++ b/lib/controller/python/controller/light_sensor.py @@ -13,8 +13,8 @@ # limitations under the License. import ctypes -from controller.wb import wb -from controller.sensor import Sensor +from .wb import wb +from .sensor import Sensor from typing import Union, List diff --git a/lib/controller/python/controller/motion.py b/lib/controller/python/controller/motion.py index 3824c5591fb..21afb20942a 100644 --- a/lib/controller/python/controller/motion.py +++ b/lib/controller/python/controller/motion.py @@ -13,7 +13,7 @@ # limitations under the License. import ctypes -from controller.wb import wb +from .wb import wb class Motion: diff --git a/lib/controller/python/controller/motor.py b/lib/controller/python/controller/motor.py index f5b0b19ae00..3a6ab4b9229 100644 --- a/lib/controller/python/controller/motor.py +++ b/lib/controller/python/controller/motor.py @@ -13,9 +13,9 @@ # limitations under the License. import ctypes -from controller.constants import constant -from controller.device import Device -from controller.wb import wb +from .constants import constant +from .device import Device +from .wb import wb from typing import Union @@ -132,13 +132,13 @@ def getPositionSensor(self): @property def brake(self): - from controller.brake import Brake + from .brake import Brake tag = wb.wb_motor_get_brake(self._tag) return None if tag == 0 else Brake(tag) @property def position_sensor(self): - from controller.position_sensor import PositionSensor + from .position_sensor import PositionSensor tag = wb.wb_motor_get_position_sensor(self._tag) return None if tag == 0 else PositionSensor(tag) diff --git a/lib/controller/python/controller/mouse.py b/lib/controller/python/controller/mouse.py index c9e92ddd441..79c2276bffa 100644 --- a/lib/controller/python/controller/mouse.py +++ b/lib/controller/python/controller/mouse.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.wb import wb +from .wb import wb import ctypes import struct from typing import Union diff --git a/lib/controller/python/controller/node.py b/lib/controller/python/controller/node.py index a6f416ef1f4..f8adffe4e32 100644 --- a/lib/controller/python/controller/node.py +++ b/lib/controller/python/controller/node.py @@ -13,9 +13,9 @@ # limitations under the License. import ctypes -from controller.wb import wb -from controller.constants import constant -from controller import Field +from .wb import wb +from .constants import constant +from .field import Field import struct import typing diff --git a/lib/controller/python/controller/pen.py b/lib/controller/python/controller/pen.py index 2ecd2bbe485..cbc3686042e 100644 --- a/lib/controller/python/controller/pen.py +++ b/lib/controller/python/controller/pen.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.wb import wb -from controller.device import Device +from .wb import wb +from .device import Device import ctypes from typing import Union diff --git a/lib/controller/python/controller/position_sensor.py b/lib/controller/python/controller/position_sensor.py index 8fd133d8e87..b8b668f2b60 100644 --- a/lib/controller/python/controller/position_sensor.py +++ b/lib/controller/python/controller/position_sensor.py @@ -13,9 +13,9 @@ # limitations under the License. import ctypes -from controller.constants import constant -from controller.wb import wb -from controller.sensor import Sensor +from .constants import constant +from .wb import wb +from .sensor import Sensor from typing import Union @@ -44,13 +44,13 @@ def getType(self) -> int: @property def brake(self): - from controller.brake import Brake + from .brake import Brake tag = wb.wb_position_sensor_get_brake(self._tag) return None if tag == 0 else Brake(tag) @property def motor(self): - from controller.motor import Motor + from .motor import Motor tag = wb.wb_brake_get_motor(self._tag) return None if tag == 0 else Motor(tag) diff --git a/lib/controller/python/controller/radar.py b/lib/controller/python/controller/radar.py index df64a45de3c..fe4d3440c7c 100644 --- a/lib/controller/python/controller/radar.py +++ b/lib/controller/python/controller/radar.py @@ -13,9 +13,9 @@ # limitations under the License. import ctypes -from controller.sensor import Sensor -from controller.radar_target import RadarTarget -from controller.wb import wb +from .sensor import Sensor +from .radar_target import RadarTarget +from .wb import wb from typing import List, Union diff --git a/lib/controller/python/controller/range_finder.py b/lib/controller/python/controller/range_finder.py index f6648c65f61..e65653c25bc 100644 --- a/lib/controller/python/controller/range_finder.py +++ b/lib/controller/python/controller/range_finder.py @@ -13,8 +13,8 @@ # limitations under the License. import ctypes -from controller.sensor import Sensor -from controller.wb import wb +from .sensor import Sensor +from .wb import wb from typing import List, Union diff --git a/lib/controller/python/controller/receiver.py b/lib/controller/python/controller/receiver.py index 8e68f42af73..3229926119c 100644 --- a/lib/controller/python/controller/receiver.py +++ b/lib/controller/python/controller/receiver.py @@ -15,8 +15,8 @@ import ctypes import struct import sys -from controller.wb import wb -from controller.sensor import Sensor +from .wb import wb +from .sensor import Sensor from typing import Union, Tuple, List diff --git a/lib/controller/python/controller/robot.py b/lib/controller/python/controller/robot.py index 83968e91002..98ec55eff9d 100644 --- a/lib/controller/python/controller/robot.py +++ b/lib/controller/python/controller/robot.py @@ -15,37 +15,37 @@ import ctypes import sys import typing -from controller.wb import wb -from controller.node import Node -from controller.device import Device -from controller.accelerometer import Accelerometer -from controller.altimeter import Altimeter -from controller.brake import Brake -from controller.camera import Camera -from controller.compass import Compass -from controller.connector import Connector -from controller.display import Display -from controller.distance_sensor import DistanceSensor -from controller.emitter import Emitter -from controller.gps import GPS -from controller.gyro import Gyro -from controller.inertial_unit import InertialUnit -from controller.led import LED -from controller.lidar import Lidar -from controller.light_sensor import LightSensor -from controller.motor import Motor -from controller.pen import Pen -from controller.position_sensor import PositionSensor -from controller.radar import Radar -from controller.range_finder import RangeFinder -from controller.receiver import Receiver -from controller.skin import Skin -from controller.speaker import Speaker -from controller.touch_sensor import TouchSensor - -from controller.joystick import Joystick -from controller.keyboard import Keyboard -from controller.mouse import Mouse +from .wb import wb +from .node import Node +from .device import Device +from .accelerometer import Accelerometer +from .altimeter import Altimeter +from .brake import Brake +from .camera import Camera +from .compass import Compass +from .connector import Connector +from .display import Display +from .distance_sensor import DistanceSensor +from .emitter import Emitter +from .gps import GPS +from .gyro import Gyro +from .inertial_unit import InertialUnit +from .led import LED +from .lidar import Lidar +from .light_sensor import LightSensor +from .motor import Motor +from .pen import Pen +from .position_sensor import PositionSensor +from .radar import Radar +from .range_finder import RangeFinder +from .receiver import Receiver +from .skin import Skin +from .speaker import Speaker +from .touch_sensor import TouchSensor + +from .joystick import Joystick +from .keyboard import Keyboard +from .mouse import Mouse class Robot: diff --git a/lib/controller/python/controller/sensor.py b/lib/controller/python/controller/sensor.py index bd765b511f8..b66e80384f2 100644 --- a/lib/controller/python/controller/sensor.py +++ b/lib/controller/python/controller/sensor.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.wb import wb -from controller.device import Device +from .wb import wb +from .device import Device from typing import Union diff --git a/lib/controller/python/controller/skin.py b/lib/controller/python/controller/skin.py index bf232608832..d36089b5ed9 100644 --- a/lib/controller/python/controller/skin.py +++ b/lib/controller/python/controller/skin.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.device import Device -from controller.wb import wb +from .device import Device +from .wb import wb import ctypes from typing import List, Union diff --git a/lib/controller/python/controller/speaker.py b/lib/controller/python/controller/speaker.py index f2f75a6ed52..5cab609be74 100644 --- a/lib/controller/python/controller/speaker.py +++ b/lib/controller/python/controller/speaker.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.wb import wb -from controller.device import Device +from .wb import wb +from .device import Device import ctypes from typing import Union diff --git a/lib/controller/python/controller/supervisor.py b/lib/controller/python/controller/supervisor.py index 929ad0a533e..6298cc9fb5e 100644 --- a/lib/controller/python/controller/supervisor.py +++ b/lib/controller/python/controller/supervisor.py @@ -12,9 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.wb import wb -from controller.node import Node -from controller.robot import Robot +from .wb import wb +from .node import Node +from .robot import Robot import ctypes diff --git a/lib/controller/python/controller/touch_sensor.py b/lib/controller/python/controller/touch_sensor.py index b0bedb74786..dce3435bcc8 100644 --- a/lib/controller/python/controller/touch_sensor.py +++ b/lib/controller/python/controller/touch_sensor.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from controller.sensor import Sensor -from controller.wb import wb +from .sensor import Sensor +from .wb import wb import ctypes import typing diff --git a/src/webots/control/WbLanguageTools.cpp b/src/webots/control/WbLanguageTools.cpp index 31df0510d15..a5391dc43a6 100644 --- a/src/webots/control/WbLanguageTools.cpp +++ b/src/webots/control/WbLanguageTools.cpp @@ -64,6 +64,12 @@ const QStringList WbLanguageTools::javaArguments() { QString WbLanguageTools::pythonCommand(QString &shortVersion, const QString &command, QProcessEnvironment &env) { QString pythonCommand = command; + if (pythonCommand.isEmpty()) +#ifdef _WIN32 + pythonCommand = "python"; +#else + pythonCommand = "python3"; +#endif const QString advice = #ifdef __APPLE__ "To fix the problem, you should set the full path of your python command in " @@ -124,7 +130,7 @@ QString WbLanguageTools::pythonCommand(QString &shortVersion, const QString &com if (pythonCommand == "!") WbLog::warning(QObject::tr("Python was not found.\n") + advice); #else // __linux__ - shortVersion = checkIfPythonCommandExist(pythonCommand, env, true); + shortVersion = checkIfPythonCommandExist(pythonCommand, env, true); if (shortVersion.isEmpty()) { pythonCommand = "!"; WbLog::warning(QObject::tr("Python was not found.\n") + advice);