From be5346b0aadf3e9d9a3e9ae24494d80d6172b3dc Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Fri, 19 Jan 2024 23:11:25 -0500 Subject: [PATCH 1/8] Add python vendor libraries (#2542) --- .../vscode-overview/3rd-party-libraries.rst | 225 ++++++++++++++---- 1 file changed, 185 insertions(+), 40 deletions(-) diff --git a/source/docs/software/vscode-overview/3rd-party-libraries.rst b/source/docs/software/vscode-overview/3rd-party-libraries.rst index ac24cfafd9..ce69384991 100644 --- a/source/docs/software/vscode-overview/3rd-party-libraries.rst +++ b/source/docs/software/vscode-overview/3rd-party-libraries.rst @@ -37,51 +37,58 @@ In order to install third party libraries for LabVIEW, download the VIs from the How Does It Work? - Python ~~~~~~~~~~~~~~~~~~~~~~~~~~ -Third party libraries are packaged into Python wheels and uploaded either to PyPI (if pure python) or WPILib's artifactory. Users can enable them as dependencies either by adding the component name to ``robotpy_extras`` (recommended) or by adding an explicit dependency in ``requires``. The dependencies are downloaded when ``robotpy sync`` is executed, and installed on the roboRIO when ``robotpy deploy`` is executed. - -.. seealso:: :doc:`/docs/software/python/pyproject_toml` - +Third party libraries are packaged into Python wheels and uploaded to PyPI (if pure python) and/or WPILib's artifactory. Users can enable them as dependencies either by adding the component name to ``robotpy_extras`` (recommended) or by adding an explicit dependency for the PyPI package in ``requires``. The dependencies are downloaded when ``robotpy sync`` is executed, and installed on the roboRIO when ``robotpy deploy`` is executed. Installing Libraries ^^^^^^^^^^^^^^^^^^^^^^^^ -VS Code -~~~~~~~ +.. tab-set:: -.. image:: images/3rd-party-libraries/adding-offline-library.png - :alt: Using the Manage Vendor Libraries option of the WPILib Command Palette. + .. tab-item:: Java/C++ + :sync: javacpp -To add a vendor library that has been installed by an offline installer, press :kbd:`Ctrl+Shift+P` and type WPILib or click on the WPILib icon in the top right to open the WPILib Command Palette and begin typing :guilabel:`Manage Vendor Libraries`, then select it from the menu. Select the option to :guilabel:`Install new libraries (offline)`. + **VS Code** -.. image:: images/3rd-party-libraries/library-installer-steptwo.png - :alt: Select the libraries to add. + .. image:: images/3rd-party-libraries/adding-offline-library.png + :alt: Using the Manage Vendor Libraries option of the WPILib Command Palette. -Select the desired libraries to add to the project by checking the box next to each, then click :guilabel:`OK`. The JSON file will be copied to the ``vendordeps`` folder in the project, adding the library as a dependency to the project. + To add a vendor library that has been installed by an offline installer, press :kbd:`Ctrl+Shift+P` and type WPILib or click on the WPILib icon in the top right to open the WPILib Command Palette and begin typing :guilabel:`Manage Vendor Libraries`, then select it from the menu. Select the option to :guilabel:`Install new libraries (offline)`. -In order to install a vendor library in online mode, press :kbd:`Ctrl+Shift+P` and type WPILib or click on the WPILib icon in the top right to open the WPILib Command Palette and begin typing :guilabel:`Manage Vendor Libraries` and select it in the menu, and then click on :guilabel:`Install new libraries (online)` instead and copy + paste the vendor JSON URL. + .. image:: images/3rd-party-libraries/library-installer-steptwo.png + :alt: Select the libraries to add. + Select the desired libraries to add to the project by checking the box next to each, then click :guilabel:`OK`. The JSON file will be copied to the ``vendordeps`` folder in the project, adding the library as a dependency to the project. -Checking for Updates (Offline) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + In order to install a vendor library in online mode, press :kbd:`Ctrl+Shift+P` and type WPILib or click on the WPILib icon in the top right to open the WPILib Command Palette and begin typing :guilabel:`Manage Vendor Libraries` and select it in the menu, and then click on :guilabel:`Install new libraries (online)` instead and copy + paste the vendor JSON URL. -Since dependencies are version managed on a per-project basis, even when installed offline, you will need to :guilabel:`Manage Vendor Libraries` and select :guilabel:`Check for updates (offline)` for each project you wish to update. -Checking for Updates (Online) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + **Checking for Updates (Offline)** -Part of the JSON file that vendors may optionally populate is an online update location. If a library has an appropriate location specified, running :guilabel:`Check for updates (online)` will check if a newer version of the library is available from the remote location. + Since dependencies are version managed on a per-project basis, even when installed offline, you will need to :guilabel:`Manage Vendor Libraries` and select :guilabel:`Check for updates (offline)` for each project you wish to update. -Removing a Library Dependency -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + **Checking for Updates (Online)** -To remove a library dependency from a project, select :guilabel:`Manage Current Libraries` from the :guilabel:`Manage Vendor Libraries` menu, check the box for any libraries to uninstall and click :guilabel:`OK`. These libraries will be removed as dependencies from the project. + Part of the JSON file that vendors may optionally populate is an online update location. If a library has an appropriate location specified, running :guilabel:`Check for updates (online)` will check if a newer version of the library is available from the remote location. -Command-Line -~~~~~~~~~~~~ + **Removing a Library Dependency** + + To remove a library dependency from a project, select :guilabel:`Manage Current Libraries` from the :guilabel:`Manage Vendor Libraries` menu, check the box for any libraries to uninstall and click :guilabel:`OK`. These libraries will be removed as dependencies from the project. + + **Command-Line** + + Adding a vendor library dependency from the vendor URL can also be done through the command-line via a gradle task. Open a command-line instance at the project root, and enter ``gradlew vendordep --url=`` where ```` is the vendor JSON URL. This will add the vendor library dependency JSON file to the ``vendordeps`` folder of the project. Vendor libraries can be updated the same way. + + The ``vendordep`` gradle task can also fetch vendordep JSONs from the user ``wpilib`` folder. To do so, pass ``FRCLOCAL/Filename.json`` as the file URL. For example, ``gradlew vendordep --url=FRCLOCAL/WPILibNewCommands.json`` will fetch the JSON for the command-based framework. + + .. tab-item:: Python + :sync: python + + All RobotPy project dependencies are specified in ``pyproject.toml``. You can add additional vendor-specific dependencies either by: -Adding a vendor library dependency from the vendor URL can also be done through the command-line via a gradle task. Open a command-line instance at the project root, and enter ``gradlew vendordep --url=`` where ```` is the vendor JSON URL. This will add the vendor library dependency JSON file to the ``vendordeps`` folder of the project. Vendor libraries can be updated the same way. + * Adding the component name to ``robotpy_extras`` + * Adding the PyPI package name to ``requires`` -The ``vendordep`` gradle task can also fetch vendordep JSONs from the user ``wpilib`` folder. To do so, pass ``FRCLOCAL/Filename.json`` as the file URL. For example, ``gradlew vendordep --url=FRCLOCAL/WPILibNewCommands.json`` will fetch the JSON for the command-based framework. + .. seealso:: :doc:`/docs/software/python/pyproject_toml` Libraries --------- @@ -92,23 +99,56 @@ WPILib Libraries Command Library ~~~~~~~~~~~~~~~ -The WPILib :doc:`command library ` has been split into a vendor library. It is installed by the WPILib installer for offline installation. It may also be installed with the following online link: +The WPILib :doc:`command library ` has been split into a vendor library. It is installed by the WPILib installer for offline installation. -`New Command Library `__ +.. tab-set:: + + .. tab-item:: Java/C++ + :sync: javacpp + + `New Command Library `__ + + .. tab-item:: Python + :sync: python + + * PyPI package: ``robotpy[commands2]`` or ``robotpy-commands-v2`` + * In ``pyproject.toml``: ``robotpy_extras = ["commands2"]`` Romi Library ~~~~~~~~~~~~ A Romi Library has been created to contain several helper classes that are used in the ``RomiReference`` example. -`Romi Vendordep `__. +.. tab-set:: + + .. tab-item:: Java/C++ + :sync: javacpp + + `Romi Vendordep `__. + + .. tab-item:: Python + :sync: python + + * PyPI package: ``robotpy[romi]`` or ``robotpy-romi`` + * In ``pyproject.toml``: ``robotpy_extras = ["romi"]`` XRP Library ~~~~~~~~~~~ An XRP Library has been created to contain several helper classes that are used in the ``XRPReference`` example. -`XRP Vendordep `__. +.. tab-set:: + + .. tab-item:: Java/C++ + :sync: javacpp + + `XRP Vendordep `__. + + .. tab-item:: Python + :sync: python + + * PyPI package: ``robotpy[xrp]`` or ``robotpy-xrp`` + * In ``pyproject.toml``: ``robotpy_extras = ["xrp"]`` Vendor Libraries ^^^^^^^^^^^^^^^^ @@ -116,33 +156,138 @@ Vendor Libraries Click these links to visit the vendor site to see whether they offer online installers, offline installers, or both. URLs below are to plug in to the :guilabel:`VS Code` -> :guilabel:`Install New Libraries (online)` feature. `CTRE Phoenix Framework `__ - Contains CANcoder, CANifier, CANdle, Pigeon IMU, Pigeon 2.0, Talon FX, Talon SRX, and Victor SPX Libraries and Phoenix Tuner program for configuring CTRE CAN devices - Phoenix (v6): ``https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2024-latest.json`` - Phoenix (v5): ``https://maven.ctr-electronics.com/release/com/ctre/phoenix/Phoenix5-frc2024-latest.json`` +.. tab-set:: + .. tab-item:: Java/C++ + :sync: javacpp + + Phoenix (v6): ``https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2024-latest.json`` + + Phoenix (v5): ``https://maven.ctr-electronics.com/release/com/ctre/phoenix/Phoenix5-frc2024-latest.json`` + + .. note:: All users should use the Phoenix (v6) library. If you also need Phoenix v5 support, additionally install the v5 vendor library. + + .. tab-item:: Python + :sync: python - .. note:: All users should use the Phoenix (v6) library. If you also need Phoenix v5 support, additionally install the v5 vendor library. + Vendor's package: + + * PyPI package: ``robotpy[phoenix6]`` or ``phoenix6`` + * In ``pyproject.toml``: ``robotpy_extras = ["phoenix6"]`` + + Community packages: + + * PyPI package: ``robotpy[phoenix5]`` or ``robotpy-ctre`` + * In ``pyproject.toml``: ``robotpy_extras = ["phoenix5"]`` `Redux Robotics ReduxLib `__ - Library for all Redux devices including the Canandcoder and Canandcolor - ``https://frcsdk.reduxrobotics.com/ReduxLib_2024.json`` + +.. tab-set:: + + .. tab-item:: Java/C++ + :sync: javacpp + + ``https://frcsdk.reduxrobotics.com/ReduxLib_2024.json`` + + .. tab-item:: Python + :sync: python + + Not yet available `Playing With Fusion Driver `__ - Library for all PWF devices including the Venom motor/controller - ``https://www.playingwithfusion.com/frc/playingwithfusion2024.json`` + +.. tab-set:: + + .. tab-item:: Java/C++ + :sync: javacpp + + ``https://www.playingwithfusion.com/frc/playingwithfusion2024.json`` + + .. tab-item:: Python + :sync: python + + Community-supported packages: + + * PyPI package: ``robotpy[playingwithfusion]`` or ``robotpy-playingwithfusion`` + * In ``pyproject.toml``: ``robotpy_extras = ["playingwithfusion"]`` `Kauai Labs `__ - Libraries for NavX-MXP, NavX-Micro, and Sensor Fusion - ``https://dev.studica.com/releases/2024/NavX.json`` + +.. tab-set:: + + .. tab-item:: Java/C++ + :sync: javacpp + + ``https://dev.studica.com/releases/2024/NavX.json`` + + .. tab-item:: Python + :sync: python + + Community-supported packages: + + * PyPI package: ``robotpy[navx]`` or ``robotpy-navx`` + * In ``pyproject.toml``: ``robotpy_extras = ["navx"]`` `REV Robotics REVLib `__ - Library for all REV devices including SPARK Flex, SPARK MAX, and Color Sensor V3 - ``https://software-metadata.revrobotics.com/REVLib-2024.json`` + +.. tab-set:: + + .. tab-item:: Java/C++ + :sync: javacpp + + ``https://software-metadata.revrobotics.com/REVLib-2024.json`` + + .. tab-item:: Python + :sync: python + + Community-supported packages: + + * PyPI package: ``robotpy[rev]`` or ``robotpy-rev`` + * In ``pyproject.toml``: ``robotpy_extras = ["rev"]`` Community Libraries ^^^^^^^^^^^^^^^^^^^ `PhotonVision `_ - Library for PhotonVision CV software - ``https://maven.photonvision.org/repository/internal/org/photonvision/photonlib-json/1.0/photonlib-json-1.0.json`` + +.. tab-set:: + + .. tab-item:: Java/C++ + :sync: javacpp + + ``https://maven.photonvision.org/repository/internal/org/photonvision/photonlib-json/1.0/photonlib-json-1.0.json`` + + .. tab-item:: Python + :sync: python + + * PyPI package: ``photonlibpy`` + * In ``pyproject.toml``: ``requires = ["photonlibpy"]`` `PathPlanner `_ - Library for PathPlanner - ``https://3015rangerrobotics.github.io/pathplannerlib/PathplannerLib.json`` + +.. tab-set:: + + .. tab-item:: Java/C++ + :sync: javacpp + + ``https://3015rangerrobotics.github.io/pathplannerlib/PathplannerLib.json`` + + .. tab-item:: Python + :sync: python + + * PyPI package: ``pathplannerlib`` + * In ``pyproject.toml``: ``requires = ["pathplannerlib"]`` `ChoreoLib `_ - Library for reading and following trajectories generated by `Choreo `_ - ``https://sleipnirgroup.github.io/ChoreoLib/dep/ChoreoLib.json`` +.. tab-set:: + + .. tab-item:: Java/C++ + :sync: javacpp + + ``https://sleipnirgroup.github.io/ChoreoLib/dep/ChoreoLib.json`` + + .. tab-item:: Python + :sync: python + + Not available From 0839da9c0c8a6b75eb2b4491c4de1bfa68f2edfe Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Sat, 20 Jan 2024 11:58:22 -0800 Subject: [PATCH 2/8] Add more ways the unresolved dep show in known issues (#2546) --- source/docs/yearly-overview/known-issues.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/docs/yearly-overview/known-issues.rst b/source/docs/yearly-overview/known-issues.rst index 561d8d9faa..412f0e36b7 100644 --- a/source/docs/yearly-overview/known-issues.rst +++ b/source/docs/yearly-overview/known-issues.rst @@ -11,7 +11,7 @@ Open Issues Visual Studio Code Reports Unresolved Dependency ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -**Issue:** Java programs will report ``Unresolved dependency: org.junit.platform junit-platform-launcherJava(0)`` on build.gradle. Programs that use unit tests will fail to build. +**Issue:** Java programs will report ``Unresolved dependency: org.junit.platform junit-platform-launcherJava(0)`` on build.gradle. Programs that use unit tests will fail to build. This causes build.gradle to be highlighted red in the Visual Studio Code explorer, and the ``plugins`` line in build.gradle to have a red squiggle. **Workaround:** This can be safetly ignored if you aren't running unit tests. To fix it, do the following: From a348c9f81458b8bec815c5e1b17923c1b9e0524e Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Sat, 20 Jan 2024 21:33:23 -0800 Subject: [PATCH 3/8] Improve notes and instructions for imaging (#2545) Uninstall beta game tools Don't need to update firmware, and discuss different versioning schemes Clarify difference between firmware and image images don't show up until you click format target use guilabel for gui items Add troubleshooting steps for wrong image version --- .../recovering-a-roborio-using-safe-mode.rst | 2 +- .../zero-to-robot/step-2/frc-game-tools.rst | 2 +- .../step-3/imaging-your-roborio.rst | 30 ++++++++++++++----- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/source/docs/software/roborio-info/recovering-a-roborio-using-safe-mode.rst b/source/docs/software/roborio-info/recovering-a-roborio-using-safe-mode.rst index 743fc7a874..0fe79a2b24 100644 --- a/source/docs/software/roborio-info/recovering-a-roborio-using-safe-mode.rst +++ b/source/docs/software/roborio-info/recovering-a-roborio-using-safe-mode.rst @@ -25,4 +25,4 @@ The roboRIO can now be imaged by using the roboRIO Imaging Tool as described in About Safe Mode --------------- -In Safe Mode, the roboRIO boots a separate copy of the operating system into a RAM Disk. This allows you to recover the roboRIO even if the normal copy of the OS is corrupted. While in Safe Mode, any changes made to the OS (such as changes made by accessing the device via SSH or Serial) will not persist to the normal copy of the OS stored on disk. +In Safe Mode, the roboRIO boots a separate copy of the operating system into a RAM Disk (the firmware). This allows you to recover the roboRIO even if the normal copy of the OS is corrupted. While in Safe Mode, any changes made to the OS (such as changes made by accessing the device via SSH or Serial) will not persist to the normal copy of the OS stored on disk. diff --git a/source/docs/zero-to-robot/step-2/frc-game-tools.rst b/source/docs/zero-to-robot/step-2/frc-game-tools.rst index 1dd1976aff..8925e84f6e 100644 --- a/source/docs/zero-to-robot/step-2/frc-game-tools.rst +++ b/source/docs/zero-to-robot/step-2/frc-game-tools.rst @@ -32,7 +32,7 @@ Uninstall Old Versions (Recommended) Before installing the new version of the FRC Game Tools it is recommended to remove any old versions. The new version will likely co-exist with the old version (note that the DS will overwrite old versions), but all testing has been done with FRC 2022 only. Then click Start >> Add or Remove Programs. Locate the entry labeled "NI Software", and select :guilabel:`Uninstall`. -.. note:: It is only necessary to uninstall previous versions when installing a new year's tools. For example, uninstall the 2021 tools before installing the 2022 tools. It is not necessary to uninstall before upgrading to a new update of the 2022 game tools. +.. note:: It is only necessary to uninstall previous versions when installing a new year's tools (or when a beta is installed). For example, uninstall the 2021 tools before installing the 2022 tools. It is not necessary to uninstall before upgrading to a new update of the 2022 game tools. .. image:: images/labview/uninstall_control_panel.png :alt: Add or Remove -> NI Software diff --git a/source/docs/zero-to-robot/step-3/imaging-your-roborio.rst b/source/docs/zero-to-robot/step-3/imaging-your-roborio.rst index 30dffdeb7e..014da770eb 100644 --- a/source/docs/zero-to-robot/step-3/imaging-your-roborio.rst +++ b/source/docs/zero-to-robot/step-3/imaging-your-roborio.rst @@ -5,7 +5,7 @@ Imaging your roboRIO 1 .. warning:: Before imaging your roboRIO, you must have completed installation of the :doc:`FRC Game Tools`. You also must have the roboRIO power properly wired to the Power Distribution Panel. Make sure the power wires to the roboRIO are secure and that the connector is secure firmly to the roboRIO (4 total screws to check). -.. note:: The imaging instructions for the NI roboRIO 2.0 are :doc:`here`. +.. note:: The roboRIO 2 uses different imaging instructions. The imaging instructions for the NI roboRIO 2.0 are :doc:`here`. Configuring the roboRIO ^^^^^^^^^^^^^^^^^^^^^^^ @@ -52,30 +52,38 @@ After launching, the roboRIO Imaging Tool will scan for available roboRIOs and i Updating Firmware ~~~~~~~~~~~~~~~~~ +.. warning:: It is only necessary to update the firmware on a brand new roboRIO. It is not recommended to update the firmware unless it doesn't meet the conditions below. + .. image:: images/imaging-your-roborio/updating-firmware.png :alt: Numbers identifying the different parts of the Imaging Tool main screen for changing firmware. roboRIO firmware must be at least v5.0 to work with the 2019 or later image. If your roboRIO is at least version 5.0 (as shown in the bottom left of the imaging tool) you do not need to update. +.. note:: roboRIO firmware has had different version numbering schemes over the years. It isn't necessary to update the firmware if it has version 5, 6, 8, 22.5, 23.5 or variations of those version numbers (e.g. 8.8.0f0 is a variation of 8). The firmware is only utilized in :doc:`safe mode `, it is not used in normal operations. + To update roboRIO firmware: 1. Make sure your roboRIO is selected in the top left pane. -2. Select Update Firmware in the top right pane -3. Enter a team number in the Team Number box +2. Select :guilabel:`Update Firmware` in the top right pane +3. Enter a team number in the :guilabel:`Team Number` box 4. Select the latest firmware file in the bottom right -5. Click the **Update** button +5. Click the :guilabel:`Update` button Imaging the roboRIO ^^^^^^^^^^^^^^^^^^^ +.. warning:: The roboRIO image is different then the firmware, and must be updated yearly. + .. image:: images/imaging-your-roborio/imaging-the-roborio.png :alt: Numbers identifying the different parts of the Imaging Tool main screen for formatting the target. +.. note:: The available image versions will not show until you select :guilabel:`Format Target` per step 2 below. + 1. Make sure the roboRIO is selected in the top left pane -2. Select Format Target in the right pane -3. Enter your team number in the box +2. Select :guilabel:`Format Target` in the right pane +3. Enter a team number in the :guilabel:`Team Number` box 4. Select the latest image version in the box. -5. Click Reformat to begin the imaging process. +5. Click :guilabel:`Reformat` to begin the imaging process. Imaging Progress ^^^^^^^^^^^^^^^^ @@ -91,7 +99,7 @@ Imaging Complete .. image:: images/imaging-your-roborio/imaging-complete.png :alt: Dialog that pops up when imaging is complete listing IP address and DNS name. -When the imaging completes you should see the dialog above. Click Ok, then click the Close button at the bottom right to close the imaging tool. Reboot the roboRIO using the Reset button to have the new team number take effect. +When the imaging completes you should see the dialog above. Click :guilabel:`Ok`, then click the :guilabel`Close` button at the bottom right to close the imaging tool. Reboot the roboRIO using the Reset button to have the new team number take effect. Troubleshooting ^^^^^^^^^^^^^^^ @@ -107,3 +115,9 @@ If you are unable to image your roboRIO, troubleshooting steps include: - Try a different USB Cable - Try a different PC - If the status LED is constantly flashing, and imaging in safe mode failed, follow the `roboRIO recovery instructions `__ + +If the correct roboRIO image version isn't available: + +- Ensure you've selected :guilabel:`Format Target` +- If an older version is shown, ensure you've installed the latest :doc:`FRC Game Tools` +- If the wrong version still shown after installing Game Tools, :ref:`Uninstall Game Tools ` and then re-install. From bd58c7c3f8980656496c644f11546e60d7fa0704 Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Sun, 21 Jan 2024 11:32:17 -0800 Subject: [PATCH 4/8] Document Driver Station Timing Viewer (#2544) Add known issues for DS print and error tags and DS disabling --- .../driver-station-timing-viewer.rst | 25 +++++++++++++++ .../images/view-timing/bad-view-timing.png | Bin 0 -> 13305 bytes .../images/view-timing/normal-view-timing.png | Bin 0 -> 9348 bytes .../images/view-timing/view-timing-menu.png | Bin 0 -> 33264 bytes source/docs/software/driverstation/index.rst | 2 ++ source/docs/yearly-overview/known-issues.rst | 29 ++++++++++++++++++ 6 files changed, 56 insertions(+) create mode 100644 source/docs/software/driverstation/driver-station-timing-viewer.rst create mode 100644 source/docs/software/driverstation/images/view-timing/bad-view-timing.png create mode 100644 source/docs/software/driverstation/images/view-timing/normal-view-timing.png create mode 100644 source/docs/software/driverstation/images/view-timing/view-timing-menu.png diff --git a/source/docs/software/driverstation/driver-station-timing-viewer.rst b/source/docs/software/driverstation/driver-station-timing-viewer.rst new file mode 100644 index 0000000000..b7c2d4037e --- /dev/null +++ b/source/docs/software/driverstation/driver-station-timing-viewer.rst @@ -0,0 +1,25 @@ +Driver Station Timing Viewer +============================ + +The 2024 Driver Station has a a new window to help diagnose robot control issues. + +Opening the Timing Viewer +------------------------- + +To start the Driver Station Timing Viewer, select the gear icon and then select :guilabel:`View Timing`. + +.. image:: images/view-timing/view-timing-menu.png + :alt: Driver Station gear menu with View Timing selected + +Viewing Timing +-------------- + +The Timing viewer shows the timing of the driver station loops measuring the joysick, keyboard, and control and status network packets. When timing is good, all values should be close to 0 ms. This can help diagnose what is causing robot control issues. + +.. image:: images/view-timing/normal-view-timing.png + :alt: Driver Station timing viewer with all timing measurements near 0 ms + +The next image shows what it looks like when network congestion causes network packets to be delayed and combined. In this example, the communication was so bad that the robot wouldn't stay enabled or connected for more then a second. + +.. image:: images/view-timing/bad-view-timing.png + :alt: Driver Station timing viewer with network congestion and many packets above 100 ms diff --git a/source/docs/software/driverstation/images/view-timing/bad-view-timing.png b/source/docs/software/driverstation/images/view-timing/bad-view-timing.png new file mode 100644 index 0000000000000000000000000000000000000000..29cb90e2b85d74aa43095304868d262c8f4c5f42 GIT binary patch literal 13305 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 Sb!5^$!+JVK+NF@&5C0Dno0(t$ literal 0 HcmV?d00001 diff --git a/source/docs/software/driverstation/images/view-timing/normal-view-timing.png b/source/docs/software/driverstation/images/view-timing/normal-view-timing.png new file mode 100644 index 0000000000000000000000000000000000000000..c8872e38d971d492ed2658cbf330fb867831238a GIT binary patch literal 9348 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 to ``__ + +Some teams have seen this happen only when the robot is operated wirelessly, but not when operated via USB or ethernet tether. Some potential mitigations: + +1. Try relocating the robot radio to a better location (high in the robot and away from motors or large amounts of metal). +2. :doc:`Measure your robot's bandwidth ` and ensure you have margin to the 4 Mbps bandwidth limit +3. See if the wifi environment is congested using a tool like `WiFi Analyzer `__. As the 5 ghz WiFi spectrum has more channels and is less crowded, switching the robot radio to operate at 5 ghz will likely improve WiFi communication. +4. If you operate multiple robots in close proximity in access point mode, setting up a router and operating the radios in bridge mode will reduce the number of wireless access points and may improve communications + +Some teams have seen this happen due to software that is running on the driver station (such as Autodesk updater or Discord). Some potential mitigations: + +1. Reboot the driver station computer +2. Close software that is running in the background +3. Follow the :doc:`Driver Station Best Practices ` + +If you identify software that interferes with driver station, please post it to ``__ + +Driver Station internal issue with print error and tags +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +**Issue:** The Driver Station will occasionally print ``internal issue with print error and tags``. The message is caused when the DS reports a message on its side intermixed with messages from the robot; it is not caused by and does not affect robot code. + +**Workaround:** Thie will be fixed in the next Game Tools release. There is no known workaround. + Visual Studio Code Reports Unresolved Dependency ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From 7828c19d34895b676236abd865cb094f1dea0567 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sun, 21 Jan 2024 20:30:44 -0500 Subject: [PATCH 5/8] Bump robotpy version for those who copy/paste (#2550) --- source/docs/software/python/pyproject_toml.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/docs/software/python/pyproject_toml.rst b/source/docs/software/python/pyproject_toml.rst index cb76339719..7009329799 100644 --- a/source/docs/software/python/pyproject_toml.rst +++ b/source/docs/software/python/pyproject_toml.rst @@ -19,7 +19,7 @@ The ``pyproject.toml`` file looks something like this: [tool.robotpy] # Version of robotpy this project depends on - robotpy_version = "2024.1.1" + robotpy_version = "2024.2.1.0" # Which extra RobotPy components should be installed # -> equivalent to `pip install robotpy[extra1, ...] From f8c8d591180fcb4d556577dc125c5e01e794dd36 Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Mon, 22 Jan 2024 06:52:19 -0800 Subject: [PATCH 6/8] Update RLIs to 2024.2.1 (#2551) --- .github/workflows/inspector.json | 6 +-- .../contributing/frc-docs/style-guide.rst | 6 +-- source/docs/romi-robot/programming-romi.rst | 6 +-- .../controllers/profiled-pidcontroller.rst | 4 +- .../controllers/trapezoidal-profiles.rst | 4 +- .../state-space-flywheel-walkthrough.rst | 36 ++++++++--------- .../state-space/state-space-observers.rst | 6 +-- .../trajectories/troubleshooting.rst | 4 +- .../basic-programming/robot-preferences.rst | 20 +++++----- .../can-devices/power-distribution-module.rst | 16 ++++---- .../binding-commands-to-triggers.rst | 8 ++-- .../commandbased/command-compositions.rst | 10 ++--- .../docs/software/commandbased/commands.rst | 30 +++++++------- .../commandbased/cpp-command-discussion.rst | 2 +- .../profile-subsystems-commands.rst | 14 +++---- .../structuring-command-based-project.rst | 30 +++++++------- .../convenience-features/event-based.rst | 28 ++++++------- .../dashboards/glass/field2d-widget.rst | 4 +- .../dashboards/glass/mech2d-widget.rst | 16 ++++---- ...autonomous-program-from-smartdashboard.rst | 40 +++++++++---------- .../hardware-apis/misc/addressable-leds.rst | 14 +++---- .../sensors/ultrasonics-software.rst | 18 ++++----- .../creating-following-trajectory.rst | 24 +++++------ .../entering-constants.rst | 16 ++++---- .../using-the-cameraserver-on-the-roborio.rst | 8 ++-- .../creating-robot-program.rst | 4 +- .../robot-simulation/physics-sim.rst | 16 ++++---- .../robot-simulation/unit-testing.rst | 16 ++++---- source/docs/xrp-robot/programming-xrp.rst | 6 +-- ...est-drivetrain-program-cpp-java-python.rst | 34 ++++++++-------- 30 files changed, 223 insertions(+), 223 deletions(-) diff --git a/.github/workflows/inspector.json b/.github/workflows/inspector.json index ce2d056bac..25d8b07a7e 100644 --- a/.github/workflows/inspector.json +++ b/.github/workflows/inspector.json @@ -3,12 +3,12 @@ { "baseUrl": "https://raw.githubusercontent.com/wpilibsuite/allwpilib/", "versionScheme": "v\\d{4}\\.\\d\\.\\d(?:-(?:alpha|beta)-\\d)?|[0-9a-f]{40}", - "latestVersion": "v2024.1.1" + "latestVersion": "v2024.2.1" }, { "baseUrl": "https://github.com/wpilibsuite/allwpilib/raw/", "versionScheme": "v\\d{4}\\.\\d\\.\\d(?:-(?:alpha|beta)-\\d)?|[0-9a-f]{40}", - "latestVersion": "v2024.1.1" + "latestVersion": "v2024.2.1" }, { "baseUrl": "https://raw.githubusercontent.com/robotpy/examples/", @@ -18,7 +18,7 @@ { "baseUrl": "https://raw.githubusercontent.com/wpilibsuite/vscode-wpilib/", "versionScheme": "v\\d{4}\\.\\d\\.\\d(?:-(?:alpha|beta)-\\d)?|[0-9a-f]{40}", - "latestVersion":"v2024.1.1-beta-4" + "latestVersion":"v2024.2.1" }, { "baseUrl": "https://raw.githubusercontent.com/wpilibsuite/StandaloneAppSamples/", diff --git a/source/docs/contributing/frc-docs/style-guide.rst b/source/docs/contributing/frc-docs/style-guide.rst index 18a6e4bfa4..5a8740795c 100644 --- a/source/docs/contributing/frc-docs/style-guide.rst +++ b/source/docs/contributing/frc-docs/style-guide.rst @@ -107,13 +107,13 @@ When possible, instead of using code blocks, an RLI should be used. This pulls .. code-block:: ReST - .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/ramsetecontroller/Robot.java + .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/ramsetecontroller/Robot.java :language: java :lines: 44-61 :linenos: :lineno-start: 44 - .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/RamseteController/cpp/Robot.cpp + .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/RamseteController/cpp/Robot.cpp :language: c++ :lines: 18-30 :linenos: @@ -129,7 +129,7 @@ To create code tabs in an article, you can use the ``.. tab-set-code::`` directi .. tab-set-code:: - .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/ramsetecontroller/Robot.java + .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/ramsetecontroller/Robot.java :language: java :lines: 44-61 :linenos: diff --git a/source/docs/romi-robot/programming-romi.rst b/source/docs/romi-robot/programming-romi.rst index 7029a2f9bf..eba06bd906 100644 --- a/source/docs/romi-robot/programming-romi.rst +++ b/source/docs/romi-robot/programming-romi.rst @@ -38,11 +38,11 @@ One aspect where a Romi project differs from a regular FRC robot project is that To run a Romi program, first, ensure that your Romi is powered on. Next, connect to the ``WPILibPi-`` WiFi network broadcast by the Romi. If you changed the Romi network settings (for example, to connect it to your own WiFi network) you may change the IP address that your program uses to connect to the Romi. To do this, open the ``build.gradle`` file and update the ``wpi.sim.envVar`` line to the appropriate IP address. -.. rli:: https://raw.githubusercontent.com/wpilibsuite/vscode-wpilib/v2024.1.1-beta-4/vscode-wpilib/resources/gradle/javaromi/build.gradle +.. rli:: https://raw.githubusercontent.com/wpilibsuite/vscode-wpilib/v2024.2.1/vscode-wpilib/resources/gradle/javaromi/build.gradle :language: groovy - :lines: 44-47 + :lines: 43-46 :linenos: - :lineno-start: 44 + :lineno-start: 43 :emphasize-lines: 2 Now to start your Romi robot code, open the WPILib Command Palette (type :kbd:`Ctrl+Shift+P`) and select "Simulate Robot Code", or press :kbd:`F5`. diff --git a/source/docs/software/advanced-controls/controllers/profiled-pidcontroller.rst b/source/docs/software/advanced-controls/controllers/profiled-pidcontroller.rst index 2d838f7c34..1c48942070 100644 --- a/source/docs/software/advanced-controls/controllers/profiled-pidcontroller.rst +++ b/source/docs/software/advanced-controls/controllers/profiled-pidcontroller.rst @@ -114,13 +114,13 @@ A more complete example of ``ProfiledPIDController`` usage is provided in the El .. tab-set-code:: - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/elevatorprofiledpid/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/elevatorprofiledpid/Robot.java :language: java :lines: 5- :linenos: :lineno-start: 5 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/ElevatorProfiledPID/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/ElevatorProfiledPID/cpp/Robot.cpp :language: c++ :lines: 5- :linenos: diff --git a/source/docs/software/advanced-controls/controllers/trapezoidal-profiles.rst b/source/docs/software/advanced-controls/controllers/trapezoidal-profiles.rst index a10a3304de..6947e6c480 100644 --- a/source/docs/software/advanced-controls/controllers/trapezoidal-profiles.rst +++ b/source/docs/software/advanced-controls/controllers/trapezoidal-profiles.rst @@ -136,13 +136,13 @@ A more complete example of ``TrapezoidProfile`` usage is provided in the Elevato .. tab-set-code:: - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/elevatortrapezoidprofile/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/elevatortrapezoidprofile/Robot.java :language: java :lines: 5- :linenos: :lineno-start: 5 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/ElevatorTrapezoidProfile/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/ElevatorTrapezoidProfile/cpp/Robot.cpp :language: c++ :lines: 5- :linenos: diff --git a/source/docs/software/advanced-controls/state-space/state-space-flywheel-walkthrough.rst b/source/docs/software/advanced-controls/state-space/state-space-flywheel-walkthrough.rst index 7bd444fbc1..7306abd840 100644 --- a/source/docs/software/advanced-controls/state-space/state-space-flywheel-walkthrough.rst +++ b/source/docs/software/advanced-controls/state-space/state-space-flywheel-walkthrough.rst @@ -69,7 +69,7 @@ The ``LinearSystem`` class contains methods for easily creating state-space syst .. tab-item:: Java :sync: java - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/statespaceflywheelsysid/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/statespaceflywheelsysid/Robot.java :language: java :lines: 32-46 :linenos: @@ -79,13 +79,13 @@ The ``LinearSystem`` class contains methods for easily creating state-space syst .. tab-item:: C++ :sync: c++ - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheelSysId/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheelSysId/cpp/Robot.cpp :language: c++ :lines: 17 :linenos: :lineno-start: 17 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheelSysId/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheelSysId/cpp/Robot.cpp :language: c++ :lines: 30-46 :linenos: @@ -108,7 +108,7 @@ The ``LinearSystem`` class contains methods to easily create a model of a flywhe .. tab-item:: Java :sync: java - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/statespaceflywheel/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/statespaceflywheel/Robot.java :language: java :lines: 33-46 :linenos: @@ -117,13 +117,13 @@ The ``LinearSystem`` class contains methods to easily create a model of a flywhe .. tab-item:: C++ :sync: c++ - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp :language: c++ :lines: 17-17 :linenos: :lineno-start: 17 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp :language: c++ :lines: 17,31-46 :linenos: @@ -148,7 +148,7 @@ Because the feedback controller computes error using the :term:`x-hat` estimated .. tab-item:: Java :sync: java - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/statespaceflywheel/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/statespaceflywheel/Robot.java :language: java :lines: 48-58 :linenos: @@ -157,13 +157,13 @@ Because the feedback controller computes error using the :term:`x-hat` estimated .. tab-item:: C++ :sync: c++ - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheelSysId/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheelSysId/cpp/Robot.cpp :language: c++ :lines: 13-13 :linenos: :lineno-start: 13 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp :language: c++ :lines: 48-53 :linenos: @@ -185,7 +185,7 @@ Much like ``SimpleMotorFeedforward`` can be used to generate feedforward voltage .. tab-item:: Java :sync: java - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/statespaceflywheel/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/statespaceflywheel/Robot.java :language: java :lines: 59-70 :linenos: @@ -194,13 +194,13 @@ Much like ``SimpleMotorFeedforward`` can be used to generate feedforward voltage .. tab-item:: C++ :sync: c++ - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheelSysId/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheelSysId/cpp/Robot.cpp :language: c++ :lines: 11 :linenos: :lineno-start: 11 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp :language: c++ :lines: 55-75 :linenos: @@ -216,7 +216,7 @@ LinearSystemLoop combines our system, controller, and observer that we created e .. tab-item:: Java :sync: java - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/statespaceflywheel/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/statespaceflywheel/Robot.java :language: java :lines: 72-74 :linenos: @@ -225,13 +225,13 @@ LinearSystemLoop combines our system, controller, and observer that we created e .. tab-item:: C++ :sync: c++ - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheelSysId/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheelSysId/cpp/Robot.cpp :language: c++ :lines: 15-15 :linenos: :lineno-start: 15 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp :language: c++ :lines: 71-74 :linenos: @@ -244,7 +244,7 @@ Once we have our ``LinearSystemLoop``, the only thing left to do is actually run .. tab-item:: Java :sync: java - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/statespaceflywheel/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/statespaceflywheel/Robot.java :language: java :lines: 95-120 :linenos: @@ -253,13 +253,13 @@ Once we have our ``LinearSystemLoop``, the only thing left to do is actually run .. tab-item:: C++ :sync: c++ - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheelSysId/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheelSysId/cpp/Robot.cpp :language: c++ :lines: 5-17 :linenos: :lineno-start: 5 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp :language: c++ :lines: 92-114 :linenos: diff --git a/source/docs/software/advanced-controls/state-space/state-space-observers.rst b/source/docs/software/advanced-controls/state-space/state-space-observers.rst index 312afa7d9b..1877361da4 100644 --- a/source/docs/software/advanced-controls/state-space/state-space-observers.rst +++ b/source/docs/software/advanced-controls/state-space/state-space-observers.rst @@ -99,7 +99,7 @@ WPILib's Kalman Filter classes' constructors take a linear system, a vector of p .. tab-set:: .. tab-item:: Java - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/statespaceflywheel/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/statespaceflywheel/Robot.java :language: java :lines: 48-57 :linenos: @@ -107,13 +107,13 @@ WPILib's Kalman Filter classes' constructors take a linear system, a vector of p .. tab-item:: C++ - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp :language: c++ :lines: 5-18 :linenos: :lineno-start: 5 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/StateSpaceFlywheel/cpp/Robot.cpp :language: c++ :lines: 48-53 :linenos: diff --git a/source/docs/software/advanced-controls/trajectories/troubleshooting.rst b/source/docs/software/advanced-controls/trajectories/troubleshooting.rst index 2cf0df0d4b..3a299cb662 100644 --- a/source/docs/software/advanced-controls/trajectories/troubleshooting.rst +++ b/source/docs/software/advanced-controls/trajectories/troubleshooting.rst @@ -105,13 +105,13 @@ If your feedforwards are bad then the P controllers for each side of the robot w .. tab-set-code:: - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/ramsetecommand/RobotContainer.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/ramsetecommand/RobotContainer.java :language: java :lines: 123-124 :linenos: :lineno-start: 123 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/RamseteCommand/cpp/RobotContainer.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/RamseteCommand/cpp/RobotContainer.cpp :language: c++ :lines: 79-80 :linenos: diff --git a/source/docs/software/basic-programming/robot-preferences.rst b/source/docs/software/basic-programming/robot-preferences.rst index 9f396f2152..d61e26348b 100644 --- a/source/docs/software/basic-programming/robot-preferences.rst +++ b/source/docs/software/basic-programming/robot-preferences.rst @@ -14,22 +14,22 @@ Initializing Preferences .. tab-item:: Java :sync: Java - .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armsimulation/Constants.java + .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armsimulation/Constants.java :language: java :lines: 15-20 - .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armsimulation/subsystems/Arm.java + .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armsimulation/subsystems/Arm.java :language: java :lines: 28-30, 73-74, 80-83 .. tab-item:: C++ :sync: C++ - .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/ArmSimulation/include/Constants.h + .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/ArmSimulation/include/Constants.h :language: c++ :lines: 30-34 - .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/ArmSimulation/cpp/subsystems/Arm.cpp + .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/ArmSimulation/cpp/subsystems/Arm.cpp :language: c++ :lines: 12, 18-22 @@ -58,14 +58,14 @@ Reading Preferences .. tab-item:: Java :sync: Java - .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armsimulation/subsystems/Arm.java + .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armsimulation/subsystems/Arm.java :language: java :lines: 105-112 .. tab-item:: C++ :sync: C++ - .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/ArmSimulation/cpp/subsystems/Arm.cpp + .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/ArmSimulation/cpp/subsystems/Arm.cpp :language: c++ :lines: 44-52 @@ -85,20 +85,20 @@ Depending on the data that is stored in preferences, you can use it when you rea .. tab-item:: Java :sync: Java - .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armsimulation/Robot.java + .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armsimulation/Robot.java :language: java :lines: 29-38 - .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armsimulation/subsystems/Arm.java + .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armsimulation/subsystems/Arm.java :language: java :lines: 114-120 .. tab-item:: C++ :sync: C++ - .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/ArmSimulation/cpp/Robot.cpp + .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/ArmSimulation/cpp/Robot.cpp :language: c++ :lines: 15-24 - .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/ArmSimulation/cpp/subsystems/Arm.cpp + .. rli:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/ArmSimulation/cpp/subsystems/Arm.cpp :language: c++ :lines: 54-60 diff --git a/source/docs/software/can-devices/power-distribution-module.rst b/source/docs/software/can-devices/power-distribution-module.rst index 19dcff8f3d..00c7064d97 100644 --- a/source/docs/software/can-devices/power-distribution-module.rst +++ b/source/docs/software/can-devices/power-distribution-module.rst @@ -32,14 +32,14 @@ Reading the Bus Voltage .. tab-set-code:: - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/canpdp/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/canpdp/Robot.java :language: java :lines: 32-35 :linenos: :lineno-start: 32 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/CANPDP/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/CANPDP/cpp/Robot.cpp :language: c++ :lines: 28-31 :linenos: @@ -52,13 +52,13 @@ Reading the Temperature .. tab-set-code:: - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/canpdp/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/canpdp/Robot.java :language: java :lines: 37-39 :linenos: :lineno-start: 37 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/CANPDP/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/CANPDP/cpp/Robot.cpp :language: c++ :lines: 33-35 :linenos: @@ -71,13 +71,13 @@ Reading the Total Current, Power, and Energy .. tab-set-code:: - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/canpdp/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/canpdp/Robot.java :language: java :lines: 41-53 :linenos: :lineno-start: 41 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/CANPDP/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/CANPDP/cpp/Robot.cpp :language: c++ :lines: 37-49 :linenos: @@ -92,13 +92,13 @@ The PDP/PDH also allows users to monitor the current drawn by the individual dev .. tab-set-code:: - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/canpdp/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/canpdp/Robot.java :language: java :lines: 26-30 :linenos: :lineno-start: 26 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/CANPDP/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/CANPDP/cpp/Robot.cpp :language: c++ :lines: 22-26 :linenos: diff --git a/source/docs/software/commandbased/binding-commands-to-triggers.rst b/source/docs/software/commandbased/binding-commands-to-triggers.rst index b5962bb668..8aaee8cf52 100644 --- a/source/docs/software/commandbased/binding-commands-to-triggers.rst +++ b/source/docs/software/commandbased/binding-commands-to-triggers.rst @@ -84,14 +84,14 @@ This binding schedules a command when a trigger changes from ``false`` to ``true .. tab-set-code:: - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armbotoffboard/RobotContainer.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armbotoffboard/RobotContainer.java :language: java :lines: 52-53 :linenos: :lineno-start: 52 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/ArmBotOffboard/cpp/RobotContainer.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/ArmBotOffboard/cpp/RobotContainer.cpp :language: c++ :lines: 25-26 :linenos: @@ -106,13 +106,13 @@ This binding schedules a command when a trigger changes from ``false`` to ``true .. tab-set-code:: - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/hatchbottraditional/RobotContainer.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/hatchbottraditional/RobotContainer.java :language: java :lines: 114-116 :linenos: :lineno-start: 114 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/HatchbotTraditional/cpp/RobotContainer.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/HatchbotTraditional/cpp/RobotContainer.cpp :language: c++ :lines: 75-78 :linenos: diff --git a/source/docs/software/commandbased/command-compositions.rst b/source/docs/software/commandbased/command-compositions.rst index e2250084da..b2ac277397 100644 --- a/source/docs/software/commandbased/command-compositions.rst +++ b/source/docs/software/commandbased/command-compositions.rst @@ -152,7 +152,7 @@ The ``Select`` factory (`Java `: -.. rli:: https://github.com/wpilibsuite/allwpilib/raw/v2024.1.1/wpilibcExamples/src/main/cpp/examples/HatchbotInlined/cpp/commands/Autos.cpp +.. rli:: https://github.com/wpilibsuite/allwpilib/raw/v2024.2.1/wpilibcExamples/src/main/cpp/examples/HatchbotInlined/cpp/commands/Autos.cpp :language: c++ :lines: 33-73 :linenos: diff --git a/source/docs/software/commandbased/profile-subsystems-commands.rst b/source/docs/software/commandbased/profile-subsystems-commands.rst index 3cf18e43bc..c72213f884 100644 --- a/source/docs/software/commandbased/profile-subsystems-commands.rst +++ b/source/docs/software/commandbased/profile-subsystems-commands.rst @@ -31,14 +31,14 @@ useState() .. tab-item:: Java :sync: Java - .. rli:: https://github.com/wpilibsuite/allwpilib/raw/v2024.1.1/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/TrapezoidProfileSubsystem.java + .. rli:: https://github.com/wpilibsuite/allwpilib/raw/v2024.2.1/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/TrapezoidProfileSubsystem.java :language: java :lines: 105-105 .. tab-item:: C++ :sync: C++ - .. rli:: https://github.com/wpilibsuite/allwpilib/raw/v2024.1.1/wpilibNewCommands/src/main/native/include/frc2/command/TrapezoidProfileSubsystem.h + .. rli:: https://github.com/wpilibsuite/allwpilib/raw/v2024.2.1/wpilibNewCommands/src/main/native/include/frc2/command/TrapezoidProfileSubsystem.h :language: c++ :lines: 75-75 @@ -94,7 +94,7 @@ What does a ``TrapezoidProfileSubsystem`` look like when used in practice? The .. tab-item:: Java :sync: Java - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armbotoffboard/subsystems/ArmSubsystem.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armbotoffboard/subsystems/ArmSubsystem.java :language: java :lines: 5- :linenos: @@ -103,7 +103,7 @@ What does a ``TrapezoidProfileSubsystem`` look like when used in practice? The .. tab-item:: C++ (Header) :sync: C++ (Header) - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/ArmBotOffboard/include/subsystems/ArmSubsystem.h + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/ArmBotOffboard/include/subsystems/ArmSubsystem.h :language: c++ :lines: 5- :linenos: @@ -112,7 +112,7 @@ What does a ``TrapezoidProfileSubsystem`` look like when used in practice? The .. tab-item:: C++ (Source) :sync: C++ (Source) - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/ArmBotOffboard/cpp/subsystems/ArmSubsystem.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/ArmBotOffboard/cpp/subsystems/ArmSubsystem.cpp :language: c++ :lines: 5- :linenos: @@ -125,7 +125,7 @@ Using a ``TrapezoidProfileSubsystem`` with commands can be quite simple: .. tab-item:: Java :sync: Java - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armbotoffboard/RobotContainer.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/armbotoffboard/RobotContainer.java :language: java :lines: 52-58 :linenos: @@ -134,7 +134,7 @@ Using a ``TrapezoidProfileSubsystem`` with commands can be quite simple: .. tab-item:: C++ :sync: C++ - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/ArmBotOffboard/cpp/RobotContainer.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/ArmBotOffboard/cpp/RobotContainer.cpp :language: c++ :lines: 25-30 :linenos: diff --git a/source/docs/software/commandbased/structuring-command-based-project.rst b/source/docs/software/commandbased/structuring-command-based-project.rst index 9d977891a0..79c515b495 100644 --- a/source/docs/software/commandbased/structuring-command-based-project.rst +++ b/source/docs/software/commandbased/structuring-command-based-project.rst @@ -21,7 +21,7 @@ As ``Robot`` (`Java `` WiFi network broadcast by the XRP. If you changed the XRP network settings (for example, to connect it to your own network), you may change the IP address that your program uses to connect to the XRP. To do this, open the ``build.gradle`` file and update the ``wpi.sim.envVar`` line to the appropriate IP address. -.. rli:: https://raw.githubusercontent.com/wpilibsuite/vscode-wpilib/main/vscode-wpilib/resources/gradle/javaxrp/build.gradle +.. rli:: https://raw.githubusercontent.com/wpilibsuite/vscode-wpilib/v2024.2.1/vscode-wpilib/resources/gradle/javaxrp/build.gradle :language: groovy - :lines: 44-47 + :lines: 43-46 :linenos: - :lineno-start: 44 + :lineno-start: 43 :emphasize-lines: 2 Now to start your XRP robot code, open the WPILib Command Palette (type :kbd:`Ctrl+Shift+P`) and select "Simulate Robot Code", or press :kbd:`F5`. diff --git a/source/docs/zero-to-robot/step-4/creating-test-drivetrain-program-cpp-java-python.rst b/source/docs/zero-to-robot/step-4/creating-test-drivetrain-program-cpp-java-python.rst index b5b675987a..9a0b755011 100644 --- a/source/docs/zero-to-robot/step-4/creating-test-drivetrain-program-cpp-java-python.rst +++ b/source/docs/zero-to-robot/step-4/creating-test-drivetrain-program-cpp-java-python.rst @@ -140,7 +140,7 @@ Imports/Includes .. tab-item:: Java :sync: java - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gettingstarted/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gettingstarted/Robot.java :language: java :lines: 7-12 :linenos: @@ -148,7 +148,7 @@ Imports/Includes .. tab-item:: C++ :sync: c++ - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp :language: c++ :lines: 5-9 :linenos: @@ -240,7 +240,7 @@ Defining the variables for our sample robot .. tab-item:: Java :sync: java - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gettingstarted/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gettingstarted/Robot.java :language: java :lines: 20-26 :linenos: @@ -249,19 +249,19 @@ Defining the variables for our sample robot .. tab-item:: C++ :sync: c++ - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp :language: c++ :lines: 12-13 :linenos: :lineno-start: 12 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp :language: c++ :lines: 17-23 :linenos: :lineno-start: 17 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp :language: c++ :lines: 50-60 :linenos: @@ -296,13 +296,13 @@ Defining the variables for our sample robot .. tab-item:: C++ :sync: c++ - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp :language: c++ :lines: 12-13 :linenos: :lineno-start: 12 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp :language: c++ :lines: 17-23 :linenos: @@ -348,13 +348,13 @@ Defining the variables for our sample robot .. tab-item:: C++ :sync: c++ - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp :language: c++ :lines: 12-13 :linenos: :lineno-start: 12 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp :language: c++ :lines: 17-23 :linenos: @@ -395,7 +395,7 @@ Robot Initialization .. tab-item:: Java :sync: java - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gettingstarted/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gettingstarted/Robot.java :language: java :lines: 37-43 :linenos: @@ -424,13 +424,13 @@ Simple Autonomous Example .. tab-set-code:: - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gettingstarted/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gettingstarted/Robot.java :language: java :lines: 45-61 :linenos: :lineno-start: 45 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp :language: c++ :lines: 25-36 :linenos: @@ -451,13 +451,13 @@ Joystick Control for Teleoperation .. tab-set-code:: - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gettingstarted/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gettingstarted/Robot.java :language: java :lines: 63-71 :linenos: :lineno-start: 63 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp :language: c++ :lines: 38-45 :linenos: @@ -476,13 +476,13 @@ Test Mode .. tab-set-code:: - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gettingstarted/Robot.java + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/gettingstarted/Robot.java :language: java :lines: 73-79 :linenos: :lineno-start: 73 - .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.1.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp + .. remoteliteralinclude:: https://raw.githubusercontent.com/wpilibsuite/allwpilib/v2024.2.1/wpilibcExamples/src/main/cpp/examples/GettingStarted/cpp/Robot.cpp :language: c++ :lines: 45-48 :linenos: From f4d4573f1277381034689b33129e97433d7cd221 Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Mon, 22 Jan 2024 06:52:58 -0800 Subject: [PATCH 7/8] Update known issues for WPILib 2024.2.1 (#2549) Add AdvantageScope overwrite issue to known issues and install instructions. Move unresolved dependency to fixed in 2024.2.1 Fix typo Update wpilibrelease --- source/docs/yearly-overview/known-issues.rst | 57 +++++++++++-------- .../zero-to-robot/step-2/wpilib-setup.rst | 4 +- 2 files changed, 36 insertions(+), 25 deletions(-) diff --git a/source/docs/yearly-overview/known-issues.rst b/source/docs/yearly-overview/known-issues.rst index c3f7c29ba3..128cfeeda4 100644 --- a/source/docs/yearly-overview/known-issues.rst +++ b/source/docs/yearly-overview/known-issues.rst @@ -8,6 +8,13 @@ This article details known issues (and workarounds) for FRC\ |reg| Control Syste Open Issues ----------- +AdvantageScope isn't updated by WPILib Installer on macOS +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +**Issue:** When running the WPILib Installer, a pop-up saying ``"WPILibInstaller" was prevented from modifying apps on your Mac.`` and AdvantageScope remains version 3.0.1. This issue occurs when upgrading WPILib, when a beta version of WPIlib or WPILib 2024.1.1 was installed on macOS. + +**Workaround:** Delete AdvantageScope from ``~/wpilib/tools`` and re-run the WPILib Installer. + Driver Station randomly disabled ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -35,30 +42,7 @@ Driver Station internal issue with print error and tags **Issue:** The Driver Station will occasionally print ``internal issue with print error and tags``. The message is caused when the DS reports a message on its side intermixed with messages from the robot; it is not caused by and does not affect robot code. -**Workaround:** Thie will be fixed in the next Game Tools release. There is no known workaround. - -Visual Studio Code Reports Unresolved Dependency -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -**Issue:** Java programs will report ``Unresolved dependency: org.junit.platform junit-platform-launcherJava(0)`` on build.gradle. Programs that use unit tests will fail to build. This causes build.gradle to be highlighted red in the Visual Studio Code explorer, and the ``plugins`` line in build.gradle to have a red squiggle. - -**Workaround:** This can be safetly ignored if you aren't running unit tests. To fix it, do the following: - -On Windows execute the following in powershell: - -.. code-block:: powershell - - Invoke-WebRequest -Uri https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter/5.10.1/junit-jupiter-5.10.1.module -OutFile C:\Users\Public\wpilib\2024\maven\org\junit\jupiter\junit-jupiter\5.10.1\junit-jupiter-5.10.1.module - Invoke-WebRequest -Uri https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.10.1/junit-bom-5.10.1.module -OutFile C:\Users\Public\wpilib\2024\maven\org\junit\junit-bom\5.10.1\junit-bom-5.10.1.module - -On Linux/macOS execute the following: - -.. code-block:: sh - - curl https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter/5.10.1/junit-jupiter-5.10.1.module -o ~/wpilib/2024/maven/org/junit/jupiter/junit-jupiter/5.10.1/junit-jupiter-5.10.1.module - curl https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.10.1/junit-bom-5.10.1.module -o ~/wpilib/2024/maven/org/junit/junit-bom/5.10.1/junit-bom-5.10.1.module - -After running those, you’ll need to refresh Java intellisense in VS Code for it to pick up the new files. You can do so by running the ``Clean Java Language Server Workspace`` command in VS Code. +**Workaround:** This will be fixed in the next Game Tools release. There is no known workaround. Driver Station Reports Less Free RAM then is Available ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -169,3 +153,28 @@ Issues with WPILib Dashboards and Simulation on Windows N Editions **Solution:** Install the `Media Feature Pack `__ +Fixed in WPILib 2024.2.1 +------------------------ + +Visual Studio Code Reports Unresolved Dependency +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +**Issue:** Java programs will report ``Unresolved dependency: org.junit.platform junit-platform-launcherJava(0)`` on build.gradle. Programs that use unit tests will fail to build. This causes build.gradle to be highlighted red in the Visual Studio Code explorer, and the ``plugins`` line in build.gradle to have a red squiggle. + +**Workaround:** This can be safetly ignored if you aren't running unit tests. To fix it, do the following: + +On Windows execute the following in powershell: + +.. code-block:: powershell + + Invoke-WebRequest -Uri https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter/5.10.1/junit-jupiter-5.10.1.module -OutFile C:\Users\Public\wpilib\2024\maven\org\junit\jupiter\junit-jupiter\5.10.1\junit-jupiter-5.10.1.module + Invoke-WebRequest -Uri https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.10.1/junit-bom-5.10.1.module -OutFile C:\Users\Public\wpilib\2024\maven\org\junit\junit-bom\5.10.1\junit-bom-5.10.1.module + +On Linux/macOS execute the following: + +.. code-block:: sh + + curl https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter/5.10.1/junit-jupiter-5.10.1.module -o ~/wpilib/2024/maven/org/junit/jupiter/junit-jupiter/5.10.1/junit-jupiter-5.10.1.module + curl https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.10.1/junit-bom-5.10.1.module -o ~/wpilib/2024/maven/org/junit/junit-bom/5.10.1/junit-bom-5.10.1.module + +After running those, you’ll need to refresh Java intellisense in VS Code for it to pick up the new files. You can do so by running the ``Clean Java Language Server Workspace`` command in VS Code. diff --git a/source/docs/zero-to-robot/step-2/wpilib-setup.rst b/source/docs/zero-to-robot/step-2/wpilib-setup.rst index 6577a5185e..97e0416f82 100644 --- a/source/docs/zero-to-robot/step-2/wpilib-setup.rst +++ b/source/docs/zero-to-robot/step-2/wpilib-setup.rst @@ -18,7 +18,7 @@ WPILib is designed to install to different folders for different years, so that Downloading ----------- -.. wpilibrelease:: v2024.1.1 +.. wpilibrelease:: v2024.2.1 `You can download the latest release of the installer from GitHub `__. @@ -60,6 +60,8 @@ When you download the WPILib installer, it is distributed as a disk image file ` For this release, macOS users will need to have the Xcode Command Line Tools installed before running the installer; we are working on removing this requirement in a future release. This can be done by running ``xcode-select --install`` in the Terminal. + .. important:: When upgrading from a 2024 beta release or 2024.1.1, it's necessary to manually delete AdvantageScope before running the installer. Navigate to ``~/wpilib/2024/tools`` and delete AdvantageScope. + macOS users can double click on the downloaded ``DMG`` and then select ``WPILibInstaller`` to launch the application. .. image:: images/wpilib-setup/macos-launch.png From 3268ce84f0551e2ee10f889b20f1823d140fa80b Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Tue, 23 Jan 2024 09:32:41 -0800 Subject: [PATCH 8/8] Update Pillow to 10.2.0 (#2554) --- poetry.lock | 128 +++++++++++++++++++++++----------------- source/requirements.txt | 2 +- 2 files changed, 74 insertions(+), 56 deletions(-) diff --git a/poetry.lock b/poetry.lock index a72b83d12d..65460eb56b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1382,70 +1382,88 @@ files = [ [[package]] name = "pillow" -version = "10.1.0" +version = "10.2.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {file = "Pillow-10.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106"}, - {file = "Pillow-10.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db"}, - {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f"}, - {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818"}, - {file = "Pillow-10.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57"}, - {file = "Pillow-10.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7"}, - {file = "Pillow-10.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061"}, - {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262"}, - {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992"}, - {file = "Pillow-10.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a"}, - {file = "Pillow-10.1.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b"}, - {file = "Pillow-10.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651"}, - {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b"}, - {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f"}, - {file = "Pillow-10.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996"}, - {file = "Pillow-10.1.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793"}, - {file = "Pillow-10.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d"}, - {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80"}, - {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212"}, - {file = "Pillow-10.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14"}, - {file = "Pillow-10.1.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099"}, - {file = "Pillow-10.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd"}, - {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28"}, - {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2"}, - {file = "Pillow-10.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f"}, - {file = "Pillow-10.1.0.tar.gz", hash = "sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, + {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, + {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, + {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, + {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, + {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, + {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, + {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, + {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, + {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, + {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, + {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, + {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, + {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, + {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, + {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, + {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, ] [package.extras] docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] [[package]] name = "platformdirs" diff --git a/source/requirements.txt b/source/requirements.txt index 53a2b2c17b..7981446213 100644 --- a/source/requirements.txt +++ b/source/requirements.txt @@ -50,7 +50,7 @@ numpy==1.26.2 ; python_version >= "3.9" and python_version < "3.12" packaging==22.0 ; python_version >= "3.9" and python_version < "3.12" pathspec==0.11.2 ; python_version >= "3.9" and python_version < "3.12" pbr==6.0.0 ; python_version >= "3.9" and python_version < "3.12" -pillow==10.1.0 ; python_version >= "3.9" and python_version < "3.12" +pillow==10.2.0 ; python_version >= "3.9" and python_version < "3.12" platformdirs==4.0.0 ; python_version >= "3.9" and python_version < "3.12" pycparser==2.21 ; python_version >= "3.9" and platform_python_implementation != "CPython" and python_version < "3.12" pygments==2.16.1 ; python_version >= "3.9" and python_version < "3.12"