Navx and robotpy

Hi,

I’m trying this robotpy.toml

#
# Use this configuration file to control what RobotPy packages are installed
# on your RoboRIO
#

[tool.robotpy]

# Version of robotpy this project depends on
robotpy_version = "2024.1.1.1"

# Which extra RobotPy components should be installed
# -> equivalent to `pip install robotpy[extra1, ...]
robotpy_extras = [
    # "all"
    "apriltag",
    # "commands2"
    # "cscore"
    "navx",
    # "pathplannerlib"
    # "phoenix5"
    # "phoenix6"
    # "playingwithfusion"
    "rev",
    # "romi"
    "sim",
    # "xrp"
]

# Other pip packages to install
requires = [
    "photonlibpy",
    "debugpy==1.6.7"
]

python -m robotpy sync

results in:

ERROR: No matching distribution found for error-robotpy-navx-not-available-yet; extra == "navx"

Will there be support for navx and robotpy in 2024?

-Thanks!
-Mike

We tagged a robotpy-navx release yesterday but forgot to update meta. For now, you can add

requires = [
    "robotpy-navx~=2024.1.0"
]

Will push an updated meta release soon/

Thanks!

It’s in 2024.1.1.2

I did something along these lines to get up and running:

pyproject.toml is:

#
# Use this configuration file to control what RobotPy packages are installed
# on your RoboRIO
#

[tool.robotpy]

# Version of robotpy this project depends on
robotpy_version = "2024.1.1.2"

# Which extra RobotPy components should be installed
# -> equivalent to `pip install robotpy[extra1, ...]
robotpy_extras = [
    # "all"
    "apriltag",
    # "commands2"
    # "cscore"
    "navx",
    # "pathplannerlib"
    # "phoenix5"
    # "phoenix6"
    # "playingwithfusion"
    "rev",
    # "romi"
    "sim",
    # "xrp"
]

# Other pip packages to install
requires = [
    "photonlibpy",
    "debugpy==1.6.7",
]
python -m pip install robotpy[apriltag,rev,sim,navx]==2024.1.1.2
python -m robotpy test
python -m robotpy sim
python -m robotpy sync
python -m robotpy deploy --skip-tests

results in:

10:39:42:297 INFO    : deploy              : Robot project requirements:
10:39:42:297 INFO    : deploy              : - robotpy[apriltag,navx,rev,sim]==2024.1.1.2
10:39:42:297 INFO    : deploy              : - photonlibpy
10:39:42:298 INFO    : deploy              : - debugpy==1.6.7
ERROR: Locally installed packages do not match requirements in pyproject.toml
- If pyproject.toml has older versions, update it to newer versions
- If you have older versions installed locally, use 'python -m robotpy sync' to update your local install
- You can also specify --no-verify to ignore this error
python -m pip list

results in:

Package                  Version
------------------------ -----------
bcrypt                   4.1.2
cffi                     1.16.0
colorama                 0.4.6
cryptography             41.0.7
debugpy                  1.6.7
iniconfig                2.0.0
packaging                23.2
paramiko                 3.4.0
photonlibpy              2024.1.1b42
Pint                     0.23
pip                      23.3.2
pluggy                   1.3.0
pycparser                2.21
pyfrc                    2024.0.1
PyNaCl                   1.5.0
pynetconsole             2.0.4
pyntcore                 2024.1.1.1
pytest                   7.4.4
pytest-reraise           2.1.2
robotpy                  2024.1.1.2
robotpy-apriltag         2024.1.1.1
robotpy-cli              2024.0.0
robotpy-cscore           2024.1.1.1
robotpy-hal              2024.1.1.1
robotpy-halsim-ds-socket 2024.1.1.1
robotpy-halsim-gui       2024.1.1.1
robotpy-halsim-ws        2024.1.1.1
robotpy-installer        2024.0.2
robotpy-navx             2024.1.0
robotpy-rev              2024.2.0
robotpy-romi             2024.1.1.1
robotpy-wpilib-utilities 2024.0.0
robotpy-wpimath          2024.1.1.1
robotpy-wpinet           2024.1.1.1
robotpy-wpiutil          2024.1.1.1
robotpy-xrp              2024.1.1.1
tomli                    2.0.1
typing_extensions        4.9.0
wpilib                   2024.1.1.1

Looking at what is in the roborio:

ssh [email protected]
The authenticity of host '172.22.11.2 (172.22.11.2)' can't be established.
ED25519 key fingerprint is SHA256:0xl7e7FN6cwx8joay4/KL/IWJl9xGCb9xcmklde7qL0.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.22.11.2' (ED25519) to the list of known hosts.
NI Linux Real-Time (run mode)

Log in with your NI-Auth credentials.

lvuser@roborio-9106-FRC:~$ python3 -m pip list
Package                  Version
------------------------ -----------
debugpy                  1.6.7
numpy                    1.25.2
photonlibpy              2024.1.1b42
pip                      23.2.1
pyntcore                 2024.1.1.1
robotpy                  2024.1.1.2
robotpy-apriltag         2024.1.1.1
robotpy-cli              2024.0.0
robotpy-hal              2024.1.1.1
robotpy-libgfortran5     12.1.0+r5
robotpy-navx             2024.1.0
robotpy-openblas         0.3.24+r1
robotpy-opencv           4.8.0+r1
robotpy-opencv-core      4.8.0+r1
robotpy-rev              2024.2.0
robotpy-wpilib-utilities 2024.0.0
robotpy-wpimath          2024.1.1.1
robotpy-wpinet           2024.1.1.1
robotpy-wpiutil          2024.1.1.1
wpilib                   2024.1.1.1
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
lvuser@roborio-9106-FRC:~$ exit
python -m robotpy deploy --skip-tests --no-verify

Does work:

10:53:09:263 INFO    : robotpy.installer   : Settings loaded from C:\Users\MikeStitt\Documents\first\sw\spiresFrc9106\firstRoboPy\.wpilib\wpilib_preferences.json
10:53:09:264 INFO    : robotpy.installer   : Finding robot for team 9106
10:53:09:271 INFO    : robotpy.installer   : -> Robot is at 172.22.11.2
10:53:09:271 INFO    : robotpy.installer   : Connecting to robot via SSH at 172.22.11.2
10:53:09:553 INFO    : paramiko.transport  : Connected (version 2.0, client OpenSSH_8.3)
10:53:09:690 INFO    : paramiko.transport  : Auth banner: b'NI Linux Real-Time (run mode)\n\nLog in with your NI-Auth credentials.\n\n'
10:53:09:690 INFO    : paramiko.transport  : Authentication (password) successful!
10:53:11:292 WARNING : deploy              : Project requirements not installed on RoboRIO
10:53:11:292 INFO    : robotpy.installer   : RobotPy Installer 2024.0.2
10:53:11:292 INFO    : robotpy.installer   : -> caching files at C:\Users\MikeStitt\wpilib\2024\robotpy
10:53:11:427 INFO    : paramiko.transport  : Connected (version 2.0, client OpenSSH_8.3)
10:53:11:619 INFO    : paramiko.transport  : Auth banner: b'NI Linux Real-Time (run mode)\n\nLog in with your NI-Auth credentials.\n\n'
10:53:11:619 INFO    : paramiko.transport  : Authentication (password) successful!
10:53:11:718 INFO    : robotpy.installer   : -> RoboRIO 2 image version: 2024_v2.1
10:53:11:837 INFO    : robotpy.installer   : -> RoboRIO disk usage 527.1M/3.4G (16% full)
10:53:11:837 INFO    : deploy              : Installing project requirements on RoboRIO:
10:53:11:837 INFO    : deploy              : - robotpy[apriltag,navx,rev,sim]==2024.1.1.2
10:53:11:838 INFO    : deploy              : - photonlibpy
10:53:11:838 INFO    : deploy              : - debugpy==1.6.7
10:53:12:056 INFO    : paramiko.transport.sftp: [chan 3] Opened sftp connection (server version 3)
10:53:12:063 INFO    : paramiko.transport.sftp: [chan 3] sftp session closed.
Looking in links: http://localhost:45809/pip_cache/
Requirement already satisfied: robotpy[apriltag,navx,rev,sim]==2024.1.1.2 in /usr/local/lib/python3.12/site-packages (2024.1.1.2)
Requirement already satisfied: photonlibpy in /usr/local/lib/python3.12/site-packages (2024.1.1b42)
Requirement already satisfied: debugpy==1.6.7 in /usr/local/lib/python3.12/site-packages (1.6.7)
Requirement already satisfied: robotpy-wpiutil==2024.1.1.1 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-wpinet==2024.1.1.1 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-wpimath==2024.1.1.1 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: pyntcore==2024.1.1.1 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-hal==2024.1.1.1 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: wpilib==2024.1.1.1 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-wpilib-utilities<2025,>=2024.0.0 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.0.0)
Requirement already satisfied: robotpy-cli<2025,>=2024.0.0 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.0.0)
Requirement already satisfied: robotpy-apriltag==2024.1.1.1 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: numpy==1.25.2 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (1.25.2)
Requirement already satisfied: robotpy-opencv in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (4.8.0+r1)
Requirement already satisfied: robotpy-navx<2025.0.0,>=2024.1.0 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.0)
Requirement already satisfied: robotpy-rev<2025.0.0,>=2024.2.0 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.2.0)
Requirement already satisfied: robotpy-openblas in /usr/local/lib/python3.12/site-packages (from numpy==1.25.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (0.3.24+r1)
Requirement already satisfied: robotpy-opencv-core==4.8.0+r1 in /usr/local/lib/python3.12/site-packages (from robotpy-opencv->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (4.8.0+r1)
Requirement already satisfied: robotpy-libgfortran5 in /usr/local/lib/python3.12/site-packages (from robotpy-openblas->numpy==1.25.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (12.1.0+r5)
10:53:26:276 INFO    : robotpy.installer   : -> RoboRIO disk usage 527.1M/3.4G (16% full)
10:53:26:826 INFO    : paramiko.transport.sftp: [chan 4] Opened sftp connection (server version 3)
make /home/lvuser/py_new
1736autoModesConfig.py -> /home/lvuser/py_new/1736autoModesConfig.py
1736robotConfig.py -> /home/lvuser/py_new/1736robotConfig.py
autoModesConfig.py -> /home/lvuser/py_new/autoModesConfig.py
conftest.py -> /home/lvuser/py_new/conftest.py
dashboard.py -> /home/lvuser/py_new/dashboard.py
deploy.json -> /home/lvuser/py_new/deploy.json
license.md -> /home/lvuser/py_new/license.md
networktables.json -> /home/lvuser/py_new/networktables.json
paths.chor -> /home/lvuser/py_new/paths.chor
pyproject.toml -> /home/lvuser/py_new/pyproject.toml
README.md -> /home/lvuser/py_new/README.md
requirements.txt -> /home/lvuser/py_new/requirements.txt
requirements_dev.txt -> /home/lvuser/py_new/requirements_dev.txt
requirements_run.txt -> /home/lvuser/py_new/requirements_run.txt
roborio_requirements.txt -> /home/lvuser/py_new/roborio_requirements.txt
robot.py -> /home/lvuser/py_new/robot.py
robotConfig.py -> /home/lvuser/py_new/robotConfig.py
scratch_5.txt -> /home/lvuser/py_new/scratch_5.txt
simgui-ds.json -> /home/lvuser/py_new/simgui-ds.json
simgui-window.json -> /home/lvuser/py_new/simgui-window.json
simgui.json -> /home/lvuser/py_new/simgui.json
spires9106autoModesConfig.py -> /home/lvuser/py_new/spires9106autoModesConfig.py
spires9106robotConfig.py -> /home/lvuser/py_new/spires9106robotConfig.py
make /home/lvuser/py_new/Autonomous
make /home/lvuser/py_new/Autonomous/commands
Autonomous\commands\drivePathCommand.py -> /home/lvuser/py_new/Autonomous/commands/drivePathCommand.py
make /home/lvuser/py_new/Autonomous/modes
Autonomous\modes\drivePathCircle.py -> /home/lvuser/py_new/Autonomous/modes/drivePathCircle.py
Autonomous\modes\drivePathCircleNoRotate.py -> /home/lvuser/py_new/Autonomous/modes/drivePathCircleNoRotate.py
Autonomous\modes\drivePathTest1.py -> /home/lvuser/py_new/Autonomous/modes/drivePathTest1.py
make /home/lvuser/py_new/AutoSequencerV2
AutoSequencerV2\autoSequencer.py -> /home/lvuser/py_new/AutoSequencerV2/autoSequencer.py
AutoSequencerV2\command.py -> /home/lvuser/py_new/AutoSequencerV2/command.py
AutoSequencerV2\composer.py -> /home/lvuser/py_new/AutoSequencerV2/composer.py
AutoSequencerV2\mode.py -> /home/lvuser/py_new/AutoSequencerV2/mode.py
AutoSequencerV2\modeList.py -> /home/lvuser/py_new/AutoSequencerV2/modeList.py
AutoSequencerV2\parallelCommandGroup.py -> /home/lvuser/py_new/AutoSequencerV2/parallelCommandGroup.py
AutoSequencerV2\raceCommandGroup.py -> /home/lvuser/py_new/AutoSequencerV2/raceCommandGroup.py
AutoSequencerV2\runnable.py -> /home/lvuser/py_new/AutoSequencerV2/runnable.py
AutoSequencerV2\sequentialCommandGroup.py -> /home/lvuser/py_new/AutoSequencerV2/sequentialCommandGroup.py
AutoSequencerV2\smartDashboardModeList.py -> /home/lvuser/py_new/AutoSequencerV2/smartDashboardModeList.py
AutoSequencerV2\__init__.py -> /home/lvuser/py_new/AutoSequencerV2/__init__.py
make /home/lvuser/py_new/AutoSequencerV2/builtInCommands
AutoSequencerV2\builtInCommands\doNothingCommand.py -> /home/lvuser/py_new/AutoSequencerV2/builtInCommands/doNothingCommand.py
AutoSequencerV2\builtInCommands\waitCommand.py -> /home/lvuser/py_new/AutoSequencerV2/builtInCommands/waitCommand.py
make /home/lvuser/py_new/AutoSequencerV2/builtInModes
AutoSequencerV2\builtInModes\doNothingMode.py -> /home/lvuser/py_new/AutoSequencerV2/builtInModes/doNothingMode.py
AutoSequencerV2\builtInModes\waitMode.py -> /home/lvuser/py_new/AutoSequencerV2/builtInModes/waitMode.py
make /home/lvuser/py_new/codeStructureReportGen
codeStructureReportGen\reportGen.py -> /home/lvuser/py_new/codeStructureReportGen/reportGen.py
make /home/lvuser/py_new/dashboardWidgets
dashboardWidgets\autoChooser.py -> /home/lvuser/py_new/dashboardWidgets/autoChooser.py
dashboardWidgets\camera.py -> /home/lvuser/py_new/dashboardWidgets/camera.py
dashboardWidgets\circularGauge.py -> /home/lvuser/py_new/dashboardWidgets/circularGauge.py
dashboardWidgets\icon.py -> /home/lvuser/py_new/dashboardWidgets/icon.py
dashboardWidgets\lineGauge.py -> /home/lvuser/py_new/dashboardWidgets/lineGauge.py
dashboardWidgets\swerveState.py -> /home/lvuser/py_new/dashboardWidgets/swerveState.py
dashboardWidgets\text.py -> /home/lvuser/py_new/dashboardWidgets/text.py
dashboardWidgets\widgetConfig.py -> /home/lvuser/py_new/dashboardWidgets/widgetConfig.py
dashboardWidgets\__init__.py -> /home/lvuser/py_new/dashboardWidgets/__init__.py
make /home/lvuser/py_new/deploy
make /home/lvuser/py_new/deploy/apriltagLayouts
deploy\apriltagLayouts\2023-chargedup.json -> /home/lvuser/py_new/deploy/apriltagLayouts/2023-chargedup.json
make /home/lvuser/py_new/deploy/choreo
deploy\choreo\circular.traj -> /home/lvuser/py_new/deploy/choreo/circular.traj
deploy\choreo\nospin.traj -> /home/lvuser/py_new/deploy/choreo/nospin.traj
deploy\choreo\TestPath1.traj -> /home/lvuser/py_new/deploy/choreo/TestPath1.traj
make /home/lvuser/py_new/drivetrain
drivetrain\1736drivetrainPhysical.py -> /home/lvuser/py_new/drivetrain/1736drivetrainPhysical.py
drivetrain\drivetrainControl.py -> /home/lvuser/py_new/drivetrain/drivetrainControl.py
drivetrain\drivetrainPhysical.py -> /home/lvuser/py_new/drivetrain/drivetrainPhysical.py
drivetrain\drivetrainTrajectoryControl.py -> /home/lvuser/py_new/drivetrain/drivetrainTrajectoryControl.py
drivetrain\spires9106drivetrainPhysical.py -> /home/lvuser/py_new/drivetrain/spires9106drivetrainPhysical.py
drivetrain\swerveModuleControl.py -> /home/lvuser/py_new/drivetrain/swerveModuleControl.py
drivetrain\swerveModuleGainSet.py -> /home/lvuser/py_new/drivetrain/swerveModuleGainSet.py
drivetrain\__init__.py -> /home/lvuser/py_new/drivetrain/__init__.py
make /home/lvuser/py_new/drivetrain/poseEstimation
drivetrain\poseEstimation\drivetrainPoseEstimator.py -> /home/lvuser/py_new/drivetrain/poseEstimation/drivetrainPoseEstimator.py
drivetrain\poseEstimation\drivetrainPoseTelemetry.py -> /home/lvuser/py_new/drivetrain/poseEstimation/drivetrainPoseTelemetry.py
make /home/lvuser/py_new/humanInterface
humanInterface\driverInterface.py -> /home/lvuser/py_new/humanInterface/driverInterface.py
humanInterface\__init__.py -> /home/lvuser/py_new/humanInterface/__init__.py
make /home/lvuser/py_new/jormungandr
jormungandr\choreo.py -> /home/lvuser/py_new/jormungandr/choreo.py
jormungandr\choreoTrajectory.py -> /home/lvuser/py_new/jormungandr/choreoTrajectory.py
jormungandr\__init__.py -> /home/lvuser/py_new/jormungandr/__init__.py
make /home/lvuser/py_new/simulationLogs
make /home/lvuser/py_new/tests
tests\autoSequencer_test.py -> /home/lvuser/py_new/tests/autoSequencer_test.py
tests\conftest.py -> /home/lvuser/py_new/tests/conftest.py
tests\maplookup2d_test.py -> /home/lvuser/py_new/tests/maplookup2d_test.py
tests\pyfrc_test.py -> /home/lvuser/py_new/tests/pyfrc_test.py
tests\timingHist_test.py -> /home/lvuser/py_new/tests/timingHist_test.py
tests\__init__.py -> /home/lvuser/py_new/tests/__init__.py
make /home/lvuser/py_new/tests/simulationLogs
make /home/lvuser/py_new/utils
utils\calibration.py -> /home/lvuser/py_new/utils/calibration.py
utils\crashLogger.py -> /home/lvuser/py_new/utils/crashLogger.py
utils\extDriveManager.py -> /home/lvuser/py_new/utils/extDriveManager.py
utils\faults.py -> /home/lvuser/py_new/utils/faults.py
utils\fieldTagLayout.py -> /home/lvuser/py_new/utils/fieldTagLayout.py
utils\functionGenerator.py -> /home/lvuser/py_new/utils/functionGenerator.py
utils\mapLookup2d.py -> /home/lvuser/py_new/utils/mapLookup2d.py
utils\mathUtils.py -> /home/lvuser/py_new/utils/mathUtils.py
utils\rioMonitor.py -> /home/lvuser/py_new/utils/rioMonitor.py
utils\segmentTimeTracker.py -> /home/lvuser/py_new/utils/segmentTimeTracker.py
utils\signalLogging.py -> /home/lvuser/py_new/utils/signalLogging.py
utils\singleton.py -> /home/lvuser/py_new/utils/singleton.py
utils\timingHist.py -> /home/lvuser/py_new/utils/timingHist.py
utils\units.py -> /home/lvuser/py_new/utils/units.py
utils\__init__.py -> /home/lvuser/py_new/utils/__init__.py
make /home/lvuser/py_new/vendordeps
vendordeps\NavX.json -> /home/lvuser/py_new/vendordeps/NavX.json
make /home/lvuser/py_new/webserver
webserver\casseroleWebServerImpl.py -> /home/lvuser/py_new/webserver/casseroleWebServerImpl.py
webserver\webserver.py -> /home/lvuser/py_new/webserver/webserver.py
webserver\__init__.py -> /home/lvuser/py_new/webserver/__init__.py
make /home/lvuser/py_new/webserver/www
webserver\www\buildinfo.css -> /home/lvuser/py_new/webserver/www/buildinfo.css
webserver\www\common.css -> /home/lvuser/py_new/webserver/www/common.css
webserver\www\debug_serve.bat -> /home/lvuser/py_new/webserver/www/debug_serve.bat
webserver\www\favicon.ico -> /home/lvuser/py_new/webserver/www/favicon.ico
webserver\www\index.css -> /home/lvuser/py_new/webserver/www/index.css
webserver\www\index.html_tmplt -> /home/lvuser/py_new/webserver/www/index.html_tmplt
make /home/lvuser/py_new/webserver/www/calibration
webserver\www\calibration\calibration.css -> /home/lvuser/py_new/webserver/www/calibration/calibration.css
webserver\www\calibration\calibration.html -> /home/lvuser/py_new/webserver/www/calibration/calibration.html
webserver\www\calibration\calibration.js -> /home/lvuser/py_new/webserver/www/calibration/calibration.js
webserver\www\calibration\calTile.js -> /home/lvuser/py_new/webserver/www/calibration/calTile.js
make /home/lvuser/py_new/webserver/www/calibration/spinbox
webserver\www\calibration\spinbox\arrow-down.png -> /home/lvuser/py_new/webserver/www/calibration/spinbox/arrow-down.png
webserver\www\calibration\spinbox\arrow-up.png -> /home/lvuser/py_new/webserver/www/calibration/spinbox/arrow-up.png
webserver\www\calibration\spinbox\SpinBox.js -> /home/lvuser/py_new/webserver/www/calibration/spinbox/SpinBox.js
webserver\www\calibration\spinbox\spinboxStylesheet.css -> /home/lvuser/py_new/webserver/www/calibration/spinbox/spinboxStylesheet.css
make /home/lvuser/py_new/webserver/www/cameras
webserver\www\cameras\cameras.html -> /home/lvuser/py_new/webserver/www/cameras/cameras.html
make /home/lvuser/py_new/webserver/www/dashboard
webserver\www\dashboard\autoChooser.js -> /home/lvuser/py_new/webserver/www/dashboard/autoChooser.js
webserver\www\dashboard\camera.js -> /home/lvuser/py_new/webserver/www/dashboard/camera.js
webserver\www\dashboard\circularGauge.js -> /home/lvuser/py_new/webserver/www/dashboard/circularGauge.js
webserver\www\dashboard\dashboard.css -> /home/lvuser/py_new/webserver/www/dashboard/dashboard.css
webserver\www\dashboard\dashboard.html_tmplt -> /home/lvuser/py_new/webserver/www/dashboard/dashboard.html_tmplt
webserver\www\dashboard\dashboard.js_tmplt -> /home/lvuser/py_new/webserver/www/dashboard/dashboard.js_tmplt
webserver\www\dashboard\dropdown.css -> /home/lvuser/py_new/webserver/www/dashboard/dropdown.css
webserver\www\dashboard\fieldPose.js -> /home/lvuser/py_new/webserver/www/dashboard/fieldPose.js
webserver\www\dashboard\icon.js -> /home/lvuser/py_new/webserver/www/dashboard/icon.js
webserver\www\dashboard\lineGauge.js -> /home/lvuser/py_new/webserver/www/dashboard/lineGauge.js
webserver\www\dashboard\sound.js -> /home/lvuser/py_new/webserver/www/dashboard/sound.js
webserver\www\dashboard\swerveState.js -> /home/lvuser/py_new/webserver/www/dashboard/swerveState.js
webserver\www\dashboard\text.js -> /home/lvuser/py_new/webserver/www/dashboard/text.js
webserver\www\dashboard\tooltip.css -> /home/lvuser/py_new/webserver/www/dashboard/tooltip.css
make /home/lvuser/py_new/webserver/www/dashboard/fields
webserver\www\dashboard\fields\2020.png -> /home/lvuser/py_new/webserver/www/dashboard/fields/2020.png
make /home/lvuser/py_new/webserver/www/dashboard/icons
webserver\www\dashboard\icons\alert.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/alert.svg
webserver\www\dashboard\icons\allianceBlue.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/allianceBlue.svg
webserver\www\dashboard\icons\allianceRed.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/allianceRed.svg
webserver\www\dashboard\icons\autoAlign.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/autoAlign.svg
webserver\www\dashboard\icons\battery.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/battery.svg
webserver\www\dashboard\icons\camera.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/camera.svg
webserver\www\dashboard\icons\cameraFault.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/cameraFault.svg
webserver\www\dashboard\icons\climb.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/climb.svg
webserver\www\dashboard\icons\cube.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/cube.svg
webserver\www\dashboard\icons\cycle.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/cycle.svg
webserver\www\dashboard\icons\doubleGear.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/doubleGear.svg
webserver\www\dashboard\icons\eject.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/eject.svg
webserver\www\dashboard\icons\fast.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/fast.svg
webserver\www\dashboard\icons\gear.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/gear.svg
webserver\www\dashboard\icons\intake.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/intake.svg
webserver\www\dashboard\icons\locked.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/locked.svg
webserver\www\dashboard\icons\lowerLimit.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/lowerLimit.svg
webserver\www\dashboard\icons\power.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/power.svg
webserver\www\dashboard\icons\slow.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/slow.svg
webserver\www\dashboard\icons\softLimit.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/softLimit.svg
webserver\www\dashboard\icons\speed.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/speed.svg
webserver\www\dashboard\icons\triangle.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/triangle.svg
webserver\www\dashboard\icons\unlocked.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/unlocked.svg
webserver\www\dashboard\icons\upperLimit.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/upperLimit.svg
webserver\www\dashboard\icons\vision.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/vision.svg
webserver\www\dashboard\icons\warning.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/warning.svg
make /home/lvuser/py_new/webserver/www/dashboard/sfx
webserver\www\dashboard\sfx\alarm2.mp3 -> /home/lvuser/py_new/webserver/www/dashboard/sfx/alarm2.mp3
webserver\www\dashboard\sfx\credits.txt -> /home/lvuser/py_new/webserver/www/dashboard/sfx/credits.txt
webserver\www\dashboard\sfx\highground.mp3 -> /home/lvuser/py_new/webserver/www/dashboard/sfx/highground.mp3
webserver\www\dashboard\sfx\YEET.mp3 -> /home/lvuser/py_new/webserver/www/dashboard/sfx/YEET.mp3
make /home/lvuser/py_new/webserver/www/fonts
webserver\www\fonts\michroma-regular-webfont.woff -> /home/lvuser/py_new/webserver/www/fonts/michroma-regular-webfont.woff
webserver\www\fonts\michroma-regular-webfont.woff2 -> /home/lvuser/py_new/webserver/www/fonts/michroma-regular-webfont.woff2
webserver\www\fonts\Michroma-Regular.ttf -> /home/lvuser/py_new/webserver/www/fonts/Michroma-Regular.ttf
webserver\www\fonts\OFL.txt -> /home/lvuser/py_new/webserver/www/fonts/OFL.txt
make /home/lvuser/py_new/webserver/www/interfaces
webserver\www\interfaces\calobj.js -> /home/lvuser/py_new/webserver/www/interfaces/calobj.js
webserver\www\interfaces\dummy_NT4.js -> /home/lvuser/py_new/webserver/www/interfaces/dummy_NT4.js
webserver\www\interfaces\nt4.js -> /home/lvuser/py_new/webserver/www/interfaces/nt4.js
webserver\www\interfaces\NT4_CalInf.js -> /home/lvuser/py_new/webserver/www/interfaces/NT4_CalInf.js
webserver\www\interfaces\signalDAQ_NT4.js -> /home/lvuser/py_new/webserver/www/interfaces/signalDAQ_NT4.js
make /home/lvuser/py_new/webserver/www/interfaces/msgpack
webserver\www\interfaces\msgpack\msgpack.js -> /home/lvuser/py_new/webserver/www/interfaces/msgpack/msgpack.js
make /home/lvuser/py_new/webserver/www/logs
webserver\www\logs\logs.css -> /home/lvuser/py_new/webserver/www/logs/logs.css
webserver\www\logs\logs.html -> /home/lvuser/py_new/webserver/www/logs/logs.html
make /home/lvuser/py_new/webserver/www/outlineViewer
webserver\www\outlineViewer\outlineViewer.css -> /home/lvuser/py_new/webserver/www/outlineViewer/outlineViewer.css
webserver\www\outlineViewer\outlineViewer.html -> /home/lvuser/py_new/webserver/www/outlineViewer/outlineViewer.html
webserver\www\outlineViewer\outlineViewer.js -> /home/lvuser/py_new/webserver/www/outlineViewer/outlineViewer.js
make /home/lvuser/py_new/webserver/www/stripchart
webserver\www\stripchart\colorChooser.js -> /home/lvuser/py_new/webserver/www/stripchart/colorChooser.js
webserver\www\stripchart\fastChart.js -> /home/lvuser/py_new/webserver/www/stripchart/fastChart.js
webserver\www\stripchart\plot.js -> /home/lvuser/py_new/webserver/www/stripchart/plot.js
webserver\www\stripchart\plottedSignal.js -> /home/lvuser/py_new/webserver/www/stripchart/plottedSignal.js
webserver\www\stripchart\sample.js -> /home/lvuser/py_new/webserver/www/stripchart/sample.js
webserver\www\stripchart\selectableSignal.js -> /home/lvuser/py_new/webserver/www/stripchart/selectableSignal.js
webserver\www\stripchart\signal.js -> /home/lvuser/py_new/webserver/www/stripchart/signal.js
webserver\www\stripchart\signalSelector.js -> /home/lvuser/py_new/webserver/www/stripchart/signalSelector.js
webserver\www\stripchart\stripchart.css -> /home/lvuser/py_new/webserver/www/stripchart/stripchart.css
webserver\www\stripchart\stripchart.html -> /home/lvuser/py_new/webserver/www/stripchart/stripchart.html
webserver\www\stripchart\stripchart.js -> /home/lvuser/py_new/webserver/www/stripchart/stripchart.js
webserver\www\stripchart\valueAxis.js -> /home/lvuser/py_new/webserver/www/stripchart/valueAxis.js
make /home/lvuser/py_new/webserver/www/stripchart/toggleSw
webserver\www\stripchart\toggleSw\toggleSw.css -> /home/lvuser/py_new/webserver/www/stripchart/toggleSw/toggleSw.css
make /home/lvuser/py_new/webserver/www/util
make /home/lvuser/py_new/webserver/www/util/jslists
webserver\www\util\jslists\jsLists.css -> /home/lvuser/py_new/webserver/www/util/jslists/jsLists.css
webserver\www\util\jslists\jsLists.js -> /home/lvuser/py_new/webserver/www/util/jslists/jsLists.js
webserver\www\util\jslists\LICENSE -> /home/lvuser/py_new/webserver/www/util/jslists/LICENSE
make /home/lvuser/py_new/wrappers
wrappers\wrapperedPhotonCamera.py -> /home/lvuser/py_new/wrappers/wrapperedPhotonCamera.py
wrappers\wrapperedPulseWidthEncoder.py -> /home/lvuser/py_new/wrappers/wrapperedPulseWidthEncoder.py
wrappers\wrapperedRevThroughBoreEncoder.py -> /home/lvuser/py_new/wrappers/wrapperedRevThroughBoreEncoder.py
wrappers\wrapperedSparkMax.py -> /home/lvuser/py_new/wrappers/wrapperedSparkMax.py
wrappers\wrapperedSRXMagEncoder.py -> /home/lvuser/py_new/wrappers/wrapperedSRXMagEncoder.py
wrappers\__init__.py -> /home/lvuser/py_new/wrappers/__init__.py
10:53:29:512 INFO    : paramiko.transport.sftp: [chan 4] sftp session closed.
Wed Jan 10 10:53:38 EST 2024 - Killing robot code in frcKillRobot.sh

SUCCESS: Deploy was successful!

In the end, I can’t quite tell which PC package python -m deploy is saying doesn’t match the roborio package.

I’m up and running, just using the --no-verify option.

-Thanks

-Mike

There are quite a few issues with the deploy process it seems, thanks for the detailed feedback. Will try to reproduce/address soon.

Thanks. It could be operator error on my part too. In my day job, I haven’t migrated to pyproject.toml python methodologies yet.

An extra question: Is it envisioned that developers install packages on their local pc via both:

python -m pip install robotpy[apriltag,rev,sim,navx]==2024.1.1.2

and

python -m robotpy sync

or just one method?

or even some form of:

python -m  pip install -e . 

-Thanks

-Mike

Well, we’re not using pyproject.toml in any kind of standard way, it’s just a convenient configuration file to use. :slight_smile: My intent is for the workflow to be:

Initially:

  • pip install robotpy
  • robotpy sync installs packages locally and downloads for roborio

Then anytime in the future when the user wants to change/update things:

  • Update pyproject.toml
  • robotpy sync installs packages locally and downloads for roborio

In theory, if the user follows that workflow, then in theory anytime they do robotpy deploy they will have the same packages installed locally and on the rio.

I think sync isn’t a very good name, but I didn’t have a good alternative. There probably needs to be a robotpy update-pyproject command or similar.

At least in the simulator, my workflow today was:

pip install robotpy
(edit the toml file)
python -m robotpy sync
pip install robotpy-commands-v2==2024... (had to install the beta version explicitly rather than the toml file)

So far that is all successful. I will be heading to the shop in about an hour to test that on a newly imaged rio and real hardware. I’ll post back if there’s an issue with it. I’m guessing that getting commands on the robot will be an issue but we shall see.

If you add this to your toml:

requires = [
    "robotpy-commands-v2==2024.0.0b4"
]

and run robotpy sync, then it should install on the robot without any problems.

No joy yet:

pyproject.toml:

#
# Use this configuration file to control what RobotPy packages are installed
# on your RoboRIO
#

[tool.robotpy]

# Version of robotpy this project depends on
robotpy_version = "2024.1.1.2"


# Which extra RobotPy components should be installed
# -> equivalent to `pip install robotpy[extra1, ...]
robotpy_extras = [
    # "all"
    "apriltag",
    # "commands2"
    # "cscore"
    "navx",
    # "pathplannerlib"
    # "phoenix5"
    # "phoenix6"
    # "playingwithfusion"
    "rev",
    # "romi"
    "sim",
    # "xrp"
]

# Other pip packages to install
requires = [
    "photonlibpy",
    "debugpy==1.6.7",
    "robotpy-commands-v2==2024.0.0b4"
]

python -m robotpy sync

results in:

17:25:38:221 INFO    : robotpy.installer   : RobotPy Installer 2024.0.2
17:25:38:222 INFO    : robotpy.installer   : -> caching files at C:\Users\MikeStitt\wpilib\2024\robotpy
17:25:38:225 INFO    : sync                : Robot project requirements:
17:25:38:225 INFO    : sync                : - robotpy[apriltag,navx,rev,sim]==2024.1.1.2
17:25:38:225 INFO    : sync                : - photonlibpy
17:25:38:226 INFO    : sync                : - debugpy==1.6.7
17:25:38:226 INFO    : sync                : - robotpy-commands-v2==2024.0.0b4
17:25:38:226 INFO    : sync                : Downloading Python for RoboRIO
Downloading https://github.com/robotpy/roborio-python/releases/download/2024-3.12.1-r1/python312_3.12.1-r1_cortexa9-vfpv3.ipk
Not modified
17:25:38:775 INFO    : sync                : Downloading RoboRIO python packages
Looking in indexes: https://pypi.org/simple, https://wpilib.jfrog.io/artifactory/api/pypi/wpilib-python-release-2024/simple
Collecting robotpy==2024.1.1.2 (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy-2024.1.1.2-py3-none-any.whl
Collecting photonlibpy
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\photonlibpy-2024.1.1b42-py3-none-any.whl
Collecting debugpy==1.6.7
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\debugpy-1.6.7-py2.py3-none-any.whl
Collecting robotpy-commands-v2==2024.0.0b4
  Downloading robotpy_commands_v2-2024.0.0b4-py3-none-any.whl.metadata (388 bytes)
Collecting robotpy-wpiutil==2024.1.1.1 (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy_wpiutil-2024.1.1.1-cp312-cp312-linux_roborio.whl
Collecting robotpy-wpinet==2024.1.1.1 (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy_wpinet-2024.1.1.1-cp312-cp312-linux_roborio.whl
Collecting robotpy-wpimath==2024.1.1.1 (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy_wpimath-2024.1.1.1-cp312-cp312-linux_roborio.whl
Collecting pyntcore==2024.1.1.1 (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\pyntcore-2024.1.1.1-cp312-cp312-linux_roborio.whl
Collecting robotpy-hal==2024.1.1.1 (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy_hal-2024.1.1.1-cp312-cp312-linux_roborio.whl
Collecting wpilib==2024.1.1.1 (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\wpilib-2024.1.1.1-cp312-cp312-linux_roborio.whl
Collecting robotpy-wpilib-utilities<2025,>=2024.0.0 (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy_wpilib_utilities-2024.0.0-py3-none-any.whl
Collecting robotpy-cli<2025,>=2024.0.0 (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy_cli-2024.0.0-py3-none-any.whl
Collecting typing-extensions<5,>=4.1.0 (from robotpy-commands-v2==2024.0.0b4)
  Downloading typing_extensions-4.9.0-py3-none-any.whl.metadata (3.0 kB)
Collecting robotpy-apriltag==2024.1.1.1 (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy_apriltag-2024.1.1.1-cp312-cp312-linux_roborio.whl
Collecting numpy==1.25.2 (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\numpy-1.25.2-cp312-cp312-linux_roborio.whl
Collecting robotpy-opencv (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy_opencv-4.8.0+r1-py3-none-linux_roborio.whl
Collecting robotpy-navx<2025.0.0,>=2024.1.0 (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy_navx-2024.1.0-cp312-cp312-linux_roborio.whl
Collecting robotpy-rev<2025.0.0,>=2024.2.0 (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy_rev-2024.2.0-cp312-cp312-linux_roborio.whl
Collecting robotpy-openblas (from numpy==1.25.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy_openblas-0.3.24+r1-py3-none-linux_roborio.whl
Collecting robotpy-opencv-core==4.8.0+r1 (from robotpy-opencv->robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy_opencv_core-4.8.0+r1-py3-none-linux_roborio.whl
Collecting robotpy-libgfortran5 (from robotpy-openblas->numpy==1.25.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2)
  File was already downloaded c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy_libgfortran5-12.1.0+r5-py3-none-linux_roborio.whl
Downloading robotpy_commands_v2-2024.0.0b4-py3-none-any.whl (46 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 46.6/46.6 kB 773.1 kB/s eta 0:00:00
Downloading typing_extensions-4.9.0-py3-none-any.whl (32 kB)
Saved c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\robotpy_commands_v2-2024.0.0b4-py3-none-any.whl
Saved c:\users\mikestitt\wpilib\2024\robotpy\pip_cache\typing_extensions-4.9.0-py3-none-any.whl
Successfully downloaded robotpy debugpy robotpy-commands-v2 numpy pyntcore robotpy-apriltag robotpy-hal robotpy-wpimath robotpy-wpinet robotpy-wpiutil wpilib photonlibpy robotpy-cli robotpy-navx robotpy-rev robotpy-wpilib-utilities typing-extensions robotpy-opencv robotpy-opencv-core robotpy-openblas robotpy-libgfortran5
17:25:45:582 INFO    : sync                : Installing requirements in local python interpreter
PS C:\Users\MikeStitt\Documents\first\sw\spiresFrc9106\firstRoboPy> Requirement already satisfied: robotpy==2024.1.1.2 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.2)
Requirement already satisfied: photonlibpy in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (2024.1.1b42)
Requirement already satisfied: debugpy==1.6.7 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (1.6.7)
Collecting robotpy-commands-v2==2024.0.0b4
  Downloading robotpy_commands_v2-2024.0.0b4-py3-none-any.whl.metadata (388 bytes)
Requirement already satisfied: robotpy-wpiutil==2024.1.1.1 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-wpinet==2024.1.1.1 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-wpimath==2024.1.1.1 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: pyntcore==2024.1.1.1 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-hal==2024.1.1.1 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: wpilib==2024.1.1.1 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-wpilib-utilities<2025,>=2024.0.0 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.0.0)
Requirement already satisfied: robotpy-cli<2025,>=2024.0.0 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.0.0)
Requirement already satisfied: robotpy-halsim-gui==2024.1.1.1 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-installer<2025,>=2024.0.2 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.0.2)
Requirement already satisfied: pyfrc<2025,>=2024.0.0 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.0.1)
Requirement already satisfied: typing-extensions<5,>=4.1.0 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy-commands-v2==2024.0.0b4) (4.9.0)
Requirement already satisfied: robotpy-apriltag==2024.1.1.1 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-navx<2025.0.0,>=2024.1.0 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.0)
Requirement already satisfied: robotpy-rev<2025.0.0,>=2024.2.0 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.2.0)
Requirement already satisfied: robotpy-halsim-ds-socket==2024.1.1.1 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-halsim-ws==2024.1.1.1 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: pytest>=3.9 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from pyfrc<2025,>=2024.0.0->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (7.4.4)
Requirement already satisfied: pytest-reraise in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from pyfrc<2025,>=2024.0.0->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2.1.2)
Requirement already satisfied: pint>=0.11.0 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from pyfrc<2025,>=2024.0.0->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (0.23)
Requirement already satisfied: packaging in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy-installer<2025,>=2024.0.2->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (23.2)
Requirement already satisfied: paramiko in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy-installer<2025,>=2024.0.2->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (3.4.0)
Requirement already satisfied: pynetconsole~=2.0.2 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy-installer<2025,>=2024.0.2->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2.0.4)
Requirement already satisfied: tomli in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from robotpy-installer<2025,>=2024.0.2->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2.0.1)
Requirement already satisfied: iniconfig in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from pytest>=3.9->pyfrc<2025,>=2024.0.0->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2.0.0)
Requirement already satisfied: pluggy<2.0,>=0.12 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from pytest>=3.9->pyfrc<2025,>=2024.0.0->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (1.3.0)
Requirement already satisfied: colorama in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from pytest>=3.9->pyfrc<2025,>=2024.0.0->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (0.4.6)
Requirement already satisfied: bcrypt>=3.2 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from paramiko->robotpy-installer<2025,>=2024.0.2->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (4.1.2)
Requirement already satisfied: cryptography>=3.3 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from paramiko->robotpy-installer<2025,>=2024.0.2->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (41.0.7)
Requirement already satisfied: pynacl>=1.5 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from paramiko->robotpy-installer<2025,>=2024.0.2->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (1.5.0)
Requirement already satisfied: cffi>=1.12 in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from cryptography>=3.3->paramiko->robotpy-installer<2025,>=2024.0.2->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (1.16.0)
Requirement already satisfied: pycparser in c:\users\mikestitt\appdata\local\programs\python\python312\lib\site-packages (from cffi>=1.12->cryptography>=3.3->paramiko->robotpy-installer<2025,>=2024.0.2->robotpy==2024.1.1.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2.21)
Downloading robotpy_commands_v2-2024.0.0b4-py3-none-any.whl (46 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 46.6/46.6 kB 386.6 kB/s eta 0:00:00
Installing collected packages: robotpy-commands-v2
Successfully installed robotpy-commands-v2-2024.0.0b4

python -m robotpy deploy --skip-test

results in:

17:27:09:827 INFO    : deploy              : Robot project requirements:
17:27:09:827 INFO    : deploy              : - robotpy[apriltag,navx,rev,sim]==2024.1.1.2
17:27:09:827 INFO    : deploy              : - photonlibpy
17:27:09:827 INFO    : deploy              : - debugpy==1.6.7
17:27:09:828 INFO    : deploy              : - robotpy-commands-v2==2024.0.0b4
ERROR: Locally installed packages do not match requirements in pyproject.toml
- If pyproject.toml has older versions, update it to newer versions
- If you have older versions installed locally, use 'python -m robotpy sync' to update your local install
- You can also specify --no-verify to ignore this error

Checking the roborio for commands-v2 is strange:

The authenticity of host '172.22.11.2 (172.22.11.2)' can't be established.
ED25519 key fingerprint is SHA256:0xl7e7FN6cwx8joay4/KL/IWJl9xGCb9xcmklde7qL0.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.22.11.2' (ED25519) to the list of known hosts.
NI Linux Real-Time (run mode)

Log in with your NI-Auth credentials.

lvuser@roborio-9106-FRC:~$ python3 -m pip list
Package                  Version
------------------------ -----------
debugpy                  1.6.7
numpy                    1.25.2
photonlibpy              2024.1.1b42
pip                      23.2.1
pyntcore                 2024.1.1.1
robotpy                  2024.1.1.2
robotpy-apriltag         2024.1.1.1
robotpy-cli              2024.0.0
robotpy-hal              2024.1.1.1
robotpy-libgfortran5     12.1.0+r5
robotpy-navx             2024.1.0
robotpy-openblas         0.3.24+r1
robotpy-opencv           4.8.0+r1
robotpy-opencv-core      4.8.0+r1
robotpy-rev              2024.2.0
robotpy-wpilib-utilities 2024.0.0
robotpy-wpimath          2024.1.1.1
robotpy-wpinet           2024.1.1.1
robotpy-wpiutil          2024.1.1.1
wpilib                   2024.1.1.1
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
lvuser@roborio-9106-FRC:~$

Looking at the above. Strange. Where is robotpy-commands-v2 ?

Then a:

python -m robotpy deploy --skip-test --no-verify

which results in:

17:42:16:124 INFO    : robotpy.installer   : Settings loaded from C:\Users\MikeStitt\Documents\first\sw\spiresFrc9106\firstRoboPy\.wpilib\wpilib_preferences.json
17:42:16:124 INFO    : robotpy.installer   : Finding robot for team 9106
17:42:16:143 INFO    : robotpy.installer   : -> Robot is at 172.22.11.2
17:42:16:143 INFO    : robotpy.installer   : Connecting to robot via SSH at 172.22.11.2
17:42:16:267 INFO    : paramiko.transport  : Connected (version 2.0, client OpenSSH_8.3)
17:42:16:413 INFO    : paramiko.transport  : Auth banner: b'NI Linux Real-Time (run mode)\n\nLog in with your NI-Auth credentials.\n\n'
17:42:16:413 INFO    : paramiko.transport  : Authentication (password) successful!
17:42:18:583 WARNING : deploy              : Project requirements not installed on RoboRIO
17:42:18:583 INFO    : robotpy.installer   : RobotPy Installer 2024.0.2
17:42:18:584 INFO    : robotpy.installer   : -> caching files at C:\Users\MikeStitt\wpilib\2024\robotpy
17:42:18:716 INFO    : paramiko.transport  : Connected (version 2.0, client OpenSSH_8.3)
17:42:18:977 INFO    : paramiko.transport  : Auth banner: b'NI Linux Real-Time (run mode)\n\nLog in with your NI-Auth credentials.\n\n'
17:42:18:977 INFO    : paramiko.transport  : Authentication (password) successful!
17:42:19:084 INFO    : robotpy.installer   : -> RoboRIO 2 image version: 2024_v2.1
17:42:19:191 INFO    : robotpy.installer   : -> RoboRIO disk usage 527.1M/3.4G (16% full)
17:42:19:192 INFO    : deploy              : Installing project requirements on RoboRIO:
17:42:19:193 INFO    : deploy              : - robotpy[apriltag,navx,rev,sim]==2024.1.1.2
17:42:19:193 INFO    : deploy              : - photonlibpy
17:42:19:194 INFO    : deploy              : - debugpy==1.6.7
17:42:19:194 INFO    : deploy              : - robotpy-commands-v2==2024.0.0b4
17:42:19:404 INFO    : paramiko.transport.sftp: [chan 3] Opened sftp connection (server version 3)
17:42:19:413 INFO    : paramiko.transport.sftp: [chan 3] sftp session closed.
Looking in links: http://localhost:41161/pip_cache/
Requirement already satisfied: robotpy[apriltag,navx,rev,sim]==2024.1.1.2 in /usr/local/lib/python3.12/site-packages (2024.1.1.2)
Requirement already satisfied: photonlibpy in /usr/local/lib/python3.12/site-packages (2024.1.1b42)
Requirement already satisfied: debugpy==1.6.7 in /usr/local/lib/python3.12/site-packages (1.6.7)
Collecting robotpy-commands-v2==2024.0.0b4
  Downloading http://localhost:41161/pip_cache/robotpy_commands_v2-2024.0.0b4-py3-none-any.whl (46 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 46.6/46.6 kB 7.2 MB/s eta 0:00:00
Requirement already satisfied: robotpy-wpiutil==2024.1.1.1 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-wpinet==2024.1.1.1 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-wpimath==2024.1.1.1 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: pyntcore==2024.1.1.1 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-hal==2024.1.1.1 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: wpilib==2024.1.1.1 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: robotpy-wpilib-utilities<2025,>=2024.0.0 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.0.0)
Requirement already satisfied: robotpy-cli<2025,>=2024.0.0 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.0.0)
Requirement already satisfied: robotpy-apriltag==2024.1.1.1 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.1.1)
Requirement already satisfied: numpy==1.25.2 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (1.25.2)
Requirement already satisfied: robotpy-opencv in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (4.8.0+r1)
Requirement already satisfied: robotpy-navx<2025.0.0,>=2024.1.0 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.1.0)
Requirement already satisfied: robotpy-rev<2025.0.0,>=2024.2.0 in /usr/local/lib/python3.12/site-packages (from robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (2024.2.0)
Collecting typing-extensions<5,>=4.1.0 (from robotpy-commands-v2==2024.0.0b4)
  Downloading http://localhost:41161/pip_cache/typing_extensions-4.9.0-py3-none-any.whl (32 kB)
Requirement already satisfied: robotpy-openblas in /usr/local/lib/python3.12/site-packages (from numpy==1.25.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (0.3.24+r1)
Requirement already satisfied: robotpy-opencv-core==4.8.0+r1 in /usr/local/lib/python3.12/site-packages (from robotpy-opencv->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (4.8.0+r1)
Requirement already satisfied: robotpy-libgfortran5 in /usr/local/lib/python3.12/site-packages (from robotpy-openblas->numpy==1.25.2->robotpy[apriltag,navx,rev,sim]==2024.1.1.2) (12.1.0+r5)
Installing collected packages: typing-extensions, robotpy-commands-v2
Successfully installed robotpy-commands-v2-2024.0.0b4 typing-extensions-4.9.0
17:42:37:278 INFO    : robotpy.installer   : -> RoboRIO disk usage 528.0M/3.4G (16% full)
17:42:37:993 INFO    : paramiko.transport.sftp: [chan 4] Opened sftp connection (server version 3)
make /home/lvuser/py_new
1736autoModesConfig.py -> /home/lvuser/py_new/1736autoModesConfig.py
1736robotConfig.py -> /home/lvuser/py_new/1736robotConfig.py
autoModesConfig.py -> /home/lvuser/py_new/autoModesConfig.py
conftest.py -> /home/lvuser/py_new/conftest.py
dashboard.py -> /home/lvuser/py_new/dashboard.py
deploy.json -> /home/lvuser/py_new/deploy.json
license.md -> /home/lvuser/py_new/license.md
networktables.json -> /home/lvuser/py_new/networktables.json
paths.chor -> /home/lvuser/py_new/paths.chor
pyproject.toml -> /home/lvuser/py_new/pyproject.toml
README.md -> /home/lvuser/py_new/README.md
requirements.txt -> /home/lvuser/py_new/requirements.txt
requirements_dev.txt -> /home/lvuser/py_new/requirements_dev.txt
requirements_run.txt -> /home/lvuser/py_new/requirements_run.txt
roborio_requirements.txt -> /home/lvuser/py_new/roborio_requirements.txt
robot.py -> /home/lvuser/py_new/robot.py
robotConfig.py -> /home/lvuser/py_new/robotConfig.py
scratch_5.txt -> /home/lvuser/py_new/scratch_5.txt
simgui-ds.json -> /home/lvuser/py_new/simgui-ds.json
simgui-window.json -> /home/lvuser/py_new/simgui-window.json
simgui.json -> /home/lvuser/py_new/simgui.json
spires9106autoModesConfig.py -> /home/lvuser/py_new/spires9106autoModesConfig.py
spires9106robotConfig.py -> /home/lvuser/py_new/spires9106robotConfig.py
make /home/lvuser/py_new/Autonomous
make /home/lvuser/py_new/Autonomous/commands
Autonomous\commands\drivePathCommand.py -> /home/lvuser/py_new/Autonomous/commands/drivePathCommand.py
make /home/lvuser/py_new/Autonomous/modes
Autonomous\modes\drivePathCircle.py -> /home/lvuser/py_new/Autonomous/modes/drivePathCircle.py
Autonomous\modes\drivePathCircleNoRotate.py -> /home/lvuser/py_new/Autonomous/modes/drivePathCircleNoRotate.py
Autonomous\modes\drivePathTest1.py -> /home/lvuser/py_new/Autonomous/modes/drivePathTest1.py
make /home/lvuser/py_new/AutoSequencerV2
AutoSequencerV2\autoSequencer.py -> /home/lvuser/py_new/AutoSequencerV2/autoSequencer.py
AutoSequencerV2\command.py -> /home/lvuser/py_new/AutoSequencerV2/command.py
AutoSequencerV2\composer.py -> /home/lvuser/py_new/AutoSequencerV2/composer.py
AutoSequencerV2\mode.py -> /home/lvuser/py_new/AutoSequencerV2/mode.py
AutoSequencerV2\modeList.py -> /home/lvuser/py_new/AutoSequencerV2/modeList.py
AutoSequencerV2\parallelCommandGroup.py -> /home/lvuser/py_new/AutoSequencerV2/parallelCommandGroup.py
AutoSequencerV2\raceCommandGroup.py -> /home/lvuser/py_new/AutoSequencerV2/raceCommandGroup.py
AutoSequencerV2\runnable.py -> /home/lvuser/py_new/AutoSequencerV2/runnable.py
AutoSequencerV2\sequentialCommandGroup.py -> /home/lvuser/py_new/AutoSequencerV2/sequentialCommandGroup.py
AutoSequencerV2\smartDashboardModeList.py -> /home/lvuser/py_new/AutoSequencerV2/smartDashboardModeList.py
AutoSequencerV2\__init__.py -> /home/lvuser/py_new/AutoSequencerV2/__init__.py
make /home/lvuser/py_new/AutoSequencerV2/builtInCommands
AutoSequencerV2\builtInCommands\doNothingCommand.py -> /home/lvuser/py_new/AutoSequencerV2/builtInCommands/doNothingCommand.py
AutoSequencerV2\builtInCommands\waitCommand.py -> /home/lvuser/py_new/AutoSequencerV2/builtInCommands/waitCommand.py
make /home/lvuser/py_new/AutoSequencerV2/builtInModes
AutoSequencerV2\builtInModes\doNothingMode.py -> /home/lvuser/py_new/AutoSequencerV2/builtInModes/doNothingMode.py
AutoSequencerV2\builtInModes\waitMode.py -> /home/lvuser/py_new/AutoSequencerV2/builtInModes/waitMode.py
make /home/lvuser/py_new/codeStructureReportGen
codeStructureReportGen\reportGen.py -> /home/lvuser/py_new/codeStructureReportGen/reportGen.py
make /home/lvuser/py_new/dashboardWidgets
dashboardWidgets\autoChooser.py -> /home/lvuser/py_new/dashboardWidgets/autoChooser.py
dashboardWidgets\camera.py -> /home/lvuser/py_new/dashboardWidgets/camera.py
dashboardWidgets\circularGauge.py -> /home/lvuser/py_new/dashboardWidgets/circularGauge.py
dashboardWidgets\icon.py -> /home/lvuser/py_new/dashboardWidgets/icon.py
dashboardWidgets\lineGauge.py -> /home/lvuser/py_new/dashboardWidgets/lineGauge.py
dashboardWidgets\swerveState.py -> /home/lvuser/py_new/dashboardWidgets/swerveState.py
dashboardWidgets\text.py -> /home/lvuser/py_new/dashboardWidgets/text.py
dashboardWidgets\widgetConfig.py -> /home/lvuser/py_new/dashboardWidgets/widgetConfig.py
dashboardWidgets\__init__.py -> /home/lvuser/py_new/dashboardWidgets/__init__.py
make /home/lvuser/py_new/deploy
make /home/lvuser/py_new/deploy/apriltagLayouts
deploy\apriltagLayouts\2023-chargedup.json -> /home/lvuser/py_new/deploy/apriltagLayouts/2023-chargedup.json
make /home/lvuser/py_new/deploy/choreo
deploy\choreo\circular.traj -> /home/lvuser/py_new/deploy/choreo/circular.traj
deploy\choreo\nospin.traj -> /home/lvuser/py_new/deploy/choreo/nospin.traj
deploy\choreo\TestPath1.traj -> /home/lvuser/py_new/deploy/choreo/TestPath1.traj
make /home/lvuser/py_new/drivetrain
drivetrain\1736drivetrainPhysical.py -> /home/lvuser/py_new/drivetrain/1736drivetrainPhysical.py
drivetrain\drivetrainControl.py -> /home/lvuser/py_new/drivetrain/drivetrainControl.py
drivetrain\drivetrainPhysical.py -> /home/lvuser/py_new/drivetrain/drivetrainPhysical.py
drivetrain\drivetrainTrajectoryControl.py -> /home/lvuser/py_new/drivetrain/drivetrainTrajectoryControl.py
drivetrain\spires9106drivetrainPhysical.py -> /home/lvuser/py_new/drivetrain/spires9106drivetrainPhysical.py
drivetrain\swerveModuleControl.py -> /home/lvuser/py_new/drivetrain/swerveModuleControl.py
drivetrain\swerveModuleGainSet.py -> /home/lvuser/py_new/drivetrain/swerveModuleGainSet.py
drivetrain\__init__.py -> /home/lvuser/py_new/drivetrain/__init__.py
make /home/lvuser/py_new/drivetrain/poseEstimation
drivetrain\poseEstimation\drivetrainPoseEstimator.py -> /home/lvuser/py_new/drivetrain/poseEstimation/drivetrainPoseEstimator.py
drivetrain\poseEstimation\drivetrainPoseTelemetry.py -> /home/lvuser/py_new/drivetrain/poseEstimation/drivetrainPoseTelemetry.py
make /home/lvuser/py_new/frcrobot.egg-info
frcrobot.egg-info\dependency_links.txt -> /home/lvuser/py_new/frcrobot.egg-info/dependency_links.txt
frcrobot.egg-info\PKG-INFO -> /home/lvuser/py_new/frcrobot.egg-info/PKG-INFO
frcrobot.egg-info\SOURCES.txt -> /home/lvuser/py_new/frcrobot.egg-info/SOURCES.txt
frcrobot.egg-info\top_level.txt -> /home/lvuser/py_new/frcrobot.egg-info/top_level.txt
make /home/lvuser/py_new/humanInterface
humanInterface\driverInterface.py -> /home/lvuser/py_new/humanInterface/driverInterface.py
humanInterface\__init__.py -> /home/lvuser/py_new/humanInterface/__init__.py
make /home/lvuser/py_new/jormungandr
jormungandr\choreo.py -> /home/lvuser/py_new/jormungandr/choreo.py
jormungandr\choreoTrajectory.py -> /home/lvuser/py_new/jormungandr/choreoTrajectory.py
jormungandr\__init__.py -> /home/lvuser/py_new/jormungandr/__init__.py
make /home/lvuser/py_new/simulationLogs
make /home/lvuser/py_new/tests
tests\autoSequencer_test.py -> /home/lvuser/py_new/tests/autoSequencer_test.py
tests\conftest.py -> /home/lvuser/py_new/tests/conftest.py
tests\maplookup2d_test.py -> /home/lvuser/py_new/tests/maplookup2d_test.py
tests\pyfrc_test.py -> /home/lvuser/py_new/tests/pyfrc_test.py
tests\timingHist_test.py -> /home/lvuser/py_new/tests/timingHist_test.py
tests\__init__.py -> /home/lvuser/py_new/tests/__init__.py
make /home/lvuser/py_new/tests/simulationLogs
make /home/lvuser/py_new/utils
utils\calibration.py -> /home/lvuser/py_new/utils/calibration.py
utils\crashLogger.py -> /home/lvuser/py_new/utils/crashLogger.py
utils\extDriveManager.py -> /home/lvuser/py_new/utils/extDriveManager.py
utils\faults.py -> /home/lvuser/py_new/utils/faults.py
utils\fieldTagLayout.py -> /home/lvuser/py_new/utils/fieldTagLayout.py
utils\functionGenerator.py -> /home/lvuser/py_new/utils/functionGenerator.py
utils\mapLookup2d.py -> /home/lvuser/py_new/utils/mapLookup2d.py
utils\mathUtils.py -> /home/lvuser/py_new/utils/mathUtils.py
utils\rioMonitor.py -> /home/lvuser/py_new/utils/rioMonitor.py
utils\segmentTimeTracker.py -> /home/lvuser/py_new/utils/segmentTimeTracker.py
utils\signalLogging.py -> /home/lvuser/py_new/utils/signalLogging.py
utils\singleton.py -> /home/lvuser/py_new/utils/singleton.py
utils\timingHist.py -> /home/lvuser/py_new/utils/timingHist.py
utils\units.py -> /home/lvuser/py_new/utils/units.py
utils\__init__.py -> /home/lvuser/py_new/utils/__init__.py
make /home/lvuser/py_new/vendordeps
vendordeps\NavX.json -> /home/lvuser/py_new/vendordeps/NavX.json
make /home/lvuser/py_new/webserver
webserver\casseroleWebServerImpl.py -> /home/lvuser/py_new/webserver/casseroleWebServerImpl.py
webserver\webserver.py -> /home/lvuser/py_new/webserver/webserver.py
webserver\__init__.py -> /home/lvuser/py_new/webserver/__init__.py
make /home/lvuser/py_new/webserver/www
webserver\www\buildinfo.css -> /home/lvuser/py_new/webserver/www/buildinfo.css
webserver\www\common.css -> /home/lvuser/py_new/webserver/www/common.css
webserver\www\debug_serve.bat -> /home/lvuser/py_new/webserver/www/debug_serve.bat
webserver\www\favicon.ico -> /home/lvuser/py_new/webserver/www/favicon.ico
webserver\www\index.css -> /home/lvuser/py_new/webserver/www/index.css
webserver\www\index.html_tmplt -> /home/lvuser/py_new/webserver/www/index.html_tmplt
make /home/lvuser/py_new/webserver/www/calibration
webserver\www\calibration\calibration.css -> /home/lvuser/py_new/webserver/www/calibration/calibration.css
webserver\www\calibration\calibration.html -> /home/lvuser/py_new/webserver/www/calibration/calibration.html
webserver\www\calibration\calibration.js -> /home/lvuser/py_new/webserver/www/calibration/calibration.js
webserver\www\calibration\calTile.js -> /home/lvuser/py_new/webserver/www/calibration/calTile.js
make /home/lvuser/py_new/webserver/www/calibration/spinbox
webserver\www\calibration\spinbox\arrow-down.png -> /home/lvuser/py_new/webserver/www/calibration/spinbox/arrow-down.png
webserver\www\calibration\spinbox\arrow-up.png -> /home/lvuser/py_new/webserver/www/calibration/spinbox/arrow-up.png
webserver\www\calibration\spinbox\SpinBox.js -> /home/lvuser/py_new/webserver/www/calibration/spinbox/SpinBox.js
webserver\www\calibration\spinbox\spinboxStylesheet.css -> /home/lvuser/py_new/webserver/www/calibration/spinbox/spinboxStylesheet.css
make /home/lvuser/py_new/webserver/www/cameras
webserver\www\cameras\cameras.html -> /home/lvuser/py_new/webserver/www/cameras/cameras.html
make /home/lvuser/py_new/webserver/www/dashboard
webserver\www\dashboard\autoChooser.js -> /home/lvuser/py_new/webserver/www/dashboard/autoChooser.js
webserver\www\dashboard\camera.js -> /home/lvuser/py_new/webserver/www/dashboard/camera.js
webserver\www\dashboard\circularGauge.js -> /home/lvuser/py_new/webserver/www/dashboard/circularGauge.js
webserver\www\dashboard\dashboard.css -> /home/lvuser/py_new/webserver/www/dashboard/dashboard.css
webserver\www\dashboard\dashboard.html_tmplt -> /home/lvuser/py_new/webserver/www/dashboard/dashboard.html_tmplt
webserver\www\dashboard\dashboard.js_tmplt -> /home/lvuser/py_new/webserver/www/dashboard/dashboard.js_tmplt
webserver\www\dashboard\dropdown.css -> /home/lvuser/py_new/webserver/www/dashboard/dropdown.css
webserver\www\dashboard\fieldPose.js -> /home/lvuser/py_new/webserver/www/dashboard/fieldPose.js
webserver\www\dashboard\icon.js -> /home/lvuser/py_new/webserver/www/dashboard/icon.js
webserver\www\dashboard\lineGauge.js -> /home/lvuser/py_new/webserver/www/dashboard/lineGauge.js
webserver\www\dashboard\sound.js -> /home/lvuser/py_new/webserver/www/dashboard/sound.js
webserver\www\dashboard\swerveState.js -> /home/lvuser/py_new/webserver/www/dashboard/swerveState.js
webserver\www\dashboard\text.js -> /home/lvuser/py_new/webserver/www/dashboard/text.js
webserver\www\dashboard\tooltip.css -> /home/lvuser/py_new/webserver/www/dashboard/tooltip.css
make /home/lvuser/py_new/webserver/www/dashboard/fields
webserver\www\dashboard\fields\2020.png -> /home/lvuser/py_new/webserver/www/dashboard/fields/2020.png
make /home/lvuser/py_new/webserver/www/dashboard/icons
webserver\www\dashboard\icons\alert.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/alert.svg
webserver\www\dashboard\icons\allianceBlue.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/allianceBlue.svg
webserver\www\dashboard\icons\allianceRed.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/allianceRed.svg
webserver\www\dashboard\icons\autoAlign.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/autoAlign.svg
webserver\www\dashboard\icons\battery.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/battery.svg
webserver\www\dashboard\icons\camera.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/camera.svg
webserver\www\dashboard\icons\cameraFault.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/cameraFault.svg
webserver\www\dashboard\icons\climb.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/climb.svg
webserver\www\dashboard\icons\cube.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/cube.svg
webserver\www\dashboard\icons\cycle.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/cycle.svg
webserver\www\dashboard\icons\doubleGear.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/doubleGear.svg
webserver\www\dashboard\icons\eject.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/eject.svg
webserver\www\dashboard\icons\fast.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/fast.svg
webserver\www\dashboard\icons\gear.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/gear.svg
webserver\www\dashboard\icons\intake.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/intake.svg
webserver\www\dashboard\icons\locked.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/locked.svg
webserver\www\dashboard\icons\lowerLimit.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/lowerLimit.svg
webserver\www\dashboard\icons\power.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/power.svg
webserver\www\dashboard\icons\slow.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/slow.svg
webserver\www\dashboard\icons\softLimit.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/softLimit.svg
webserver\www\dashboard\icons\speed.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/speed.svg
webserver\www\dashboard\icons\triangle.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/triangle.svg
webserver\www\dashboard\icons\unlocked.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/unlocked.svg
webserver\www\dashboard\icons\upperLimit.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/upperLimit.svg
webserver\www\dashboard\icons\vision.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/vision.svg
webserver\www\dashboard\icons\warning.svg -> /home/lvuser/py_new/webserver/www/dashboard/icons/warning.svg
make /home/lvuser/py_new/webserver/www/dashboard/sfx
webserver\www\dashboard\sfx\alarm2.mp3 -> /home/lvuser/py_new/webserver/www/dashboard/sfx/alarm2.mp3
webserver\www\dashboard\sfx\credits.txt -> /home/lvuser/py_new/webserver/www/dashboard/sfx/credits.txt
webserver\www\dashboard\sfx\highground.mp3 -> /home/lvuser/py_new/webserver/www/dashboard/sfx/highground.mp3
webserver\www\dashboard\sfx\YEET.mp3 -> /home/lvuser/py_new/webserver/www/dashboard/sfx/YEET.mp3
make /home/lvuser/py_new/webserver/www/fonts
webserver\www\fonts\michroma-regular-webfont.woff -> /home/lvuser/py_new/webserver/www/fonts/michroma-regular-webfont.woff
webserver\www\fonts\michroma-regular-webfont.woff2 -> /home/lvuser/py_new/webserver/www/fonts/michroma-regular-webfont.woff2
webserver\www\fonts\Michroma-Regular.ttf -> /home/lvuser/py_new/webserver/www/fonts/Michroma-Regular.ttf
webserver\www\fonts\OFL.txt -> /home/lvuser/py_new/webserver/www/fonts/OFL.txt
make /home/lvuser/py_new/webserver/www/interfaces
webserver\www\interfaces\calobj.js -> /home/lvuser/py_new/webserver/www/interfaces/calobj.js
webserver\www\interfaces\dummy_NT4.js -> /home/lvuser/py_new/webserver/www/interfaces/dummy_NT4.js
webserver\www\interfaces\nt4.js -> /home/lvuser/py_new/webserver/www/interfaces/nt4.js
webserver\www\interfaces\NT4_CalInf.js -> /home/lvuser/py_new/webserver/www/interfaces/NT4_CalInf.js
webserver\www\interfaces\signalDAQ_NT4.js -> /home/lvuser/py_new/webserver/www/interfaces/signalDAQ_NT4.js
make /home/lvuser/py_new/webserver/www/interfaces/msgpack
webserver\www\interfaces\msgpack\msgpack.js -> /home/lvuser/py_new/webserver/www/interfaces/msgpack/msgpack.js
make /home/lvuser/py_new/webserver/www/logs
webserver\www\logs\logs.css -> /home/lvuser/py_new/webserver/www/logs/logs.css
webserver\www\logs\logs.html -> /home/lvuser/py_new/webserver/www/logs/logs.html
make /home/lvuser/py_new/webserver/www/outlineViewer
webserver\www\outlineViewer\outlineViewer.css -> /home/lvuser/py_new/webserver/www/outlineViewer/outlineViewer.css
webserver\www\outlineViewer\outlineViewer.html -> /home/lvuser/py_new/webserver/www/outlineViewer/outlineViewer.html
webserver\www\outlineViewer\outlineViewer.js -> /home/lvuser/py_new/webserver/www/outlineViewer/outlineViewer.js
make /home/lvuser/py_new/webserver/www/stripchart
webserver\www\stripchart\colorChooser.js -> /home/lvuser/py_new/webserver/www/stripchart/colorChooser.js
webserver\www\stripchart\fastChart.js -> /home/lvuser/py_new/webserver/www/stripchart/fastChart.js
webserver\www\stripchart\plot.js -> /home/lvuser/py_new/webserver/www/stripchart/plot.js
webserver\www\stripchart\plottedSignal.js -> /home/lvuser/py_new/webserver/www/stripchart/plottedSignal.js
webserver\www\stripchart\sample.js -> /home/lvuser/py_new/webserver/www/stripchart/sample.js
webserver\www\stripchart\selectableSignal.js -> /home/lvuser/py_new/webserver/www/stripchart/selectableSignal.js
webserver\www\stripchart\signal.js -> /home/lvuser/py_new/webserver/www/stripchart/signal.js
webserver\www\stripchart\signalSelector.js -> /home/lvuser/py_new/webserver/www/stripchart/signalSelector.js
webserver\www\stripchart\stripchart.css -> /home/lvuser/py_new/webserver/www/stripchart/stripchart.css
webserver\www\stripchart\stripchart.html -> /home/lvuser/py_new/webserver/www/stripchart/stripchart.html
webserver\www\stripchart\stripchart.js -> /home/lvuser/py_new/webserver/www/stripchart/stripchart.js
webserver\www\stripchart\valueAxis.js -> /home/lvuser/py_new/webserver/www/stripchart/valueAxis.js
make /home/lvuser/py_new/webserver/www/stripchart/toggleSw
webserver\www\stripchart\toggleSw\toggleSw.css -> /home/lvuser/py_new/webserver/www/stripchart/toggleSw/toggleSw.css
make /home/lvuser/py_new/webserver/www/util
make /home/lvuser/py_new/webserver/www/util/jslists
webserver\www\util\jslists\jsLists.css -> /home/lvuser/py_new/webserver/www/util/jslists/jsLists.css
webserver\www\util\jslists\jsLists.js -> /home/lvuser/py_new/webserver/www/util/jslists/jsLists.js
webserver\www\util\jslists\LICENSE -> /home/lvuser/py_new/webserver/www/util/jslists/LICENSE
make /home/lvuser/py_new/wrappers
wrappers\wrapperedPhotonCamera.py -> /home/lvuser/py_new/wrappers/wrapperedPhotonCamera.py
wrappers\wrapperedPulseWidthEncoder.py -> /home/lvuser/py_new/wrappers/wrapperedPulseWidthEncoder.py
wrappers\wrapperedRevThroughBoreEncoder.py -> /home/lvuser/py_new/wrappers/wrapperedRevThroughBoreEncoder.py
wrappers\wrapperedSparkMax.py -> /home/lvuser/py_new/wrappers/wrapperedSparkMax.py
wrappers\wrapperedSRXMagEncoder.py -> /home/lvuser/py_new/wrappers/wrapperedSRXMagEncoder.py
wrappers\__init__.py -> /home/lvuser/py_new/wrappers/__init__.py
17:42:42:467 INFO    : paramiko.transport.sftp: [chan 4] sftp session closed.
Wed Jan 10 17:42:56 EST 2024 - Killing robot code in frcKillRobot.sh

SUCCESS: Deploy was successful!

Check the above. The deploy --skip-tests --noverify does the install of the commands-v2.

Look for the line:

Installing collected packages: typing-extensions, robotpy-commands-v2
Successfully installed robotpy-commands-v2-2024.0.0b4 typing-extensions-4.9.0

in the above.

Now checking the roborio, just to be certain that everything is consistent:

ssh [email protected]
NI Linux Real-Time (run mode)

Log in with your NI-Auth credentials.

lvuser@roborio-9106-FRC:~$ python3 -m pip list
Package                  Version
------------------------ -----------
debugpy                  1.6.7
numpy                    1.25.2
photonlibpy              2024.1.1b42
pip                      23.2.1
pyntcore                 2024.1.1.1
robotpy                  2024.1.1.2
robotpy-apriltag         2024.1.1.1
robotpy-cli              2024.0.0
robotpy-commands-v2      2024.0.0b4
robotpy-hal              2024.1.1.1
robotpy-libgfortran5     12.1.0+r5
robotpy-navx             2024.1.0
robotpy-openblas         0.3.24+r1
robotpy-opencv           4.8.0+r1
robotpy-opencv-core      4.8.0+r1
robotpy-rev              2024.2.0
robotpy-wpilib-utilities 2024.0.0
robotpy-wpimath          2024.1.1.1
robotpy-wpinet           2024.1.1.1
robotpy-wpiutil          2024.1.1.1
typing_extensions        4.9.0
wpilib                   2024.1.1.1
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
lvuser@roborio-9106-FRC:~$

The commands-v2 is in the above.

Conclusion: deploy --skip-tests --no-verify does what sync was supposed to do.

But then:

python -m robotpy deploy --skip-test

sill fails:

17:49:48:370 INFO    : deploy              : - robotpy[apriltag,navx,rev,sim]==2024.1.1.2
17:49:48:371 INFO    : deploy              : - photonlibpy
17:49:48:371 INFO    : deploy              : - debugpy==1.6.7
17:49:48:371 INFO    : deploy              : - robotpy-commands-v2==2024.0.0b4
ERROR: Locally installed packages do not match requirements in pyproject.toml
- If pyproject.toml has older versions, update it to newer versions
- If you have older versions installed locally, use 'python -m robotpy sync' to update your local install
- You can also specify --no-verify to ignore this error

Strange.

@virtuald - I’m starting to think that because in a standard python packaging pip workflow,

python -m pip install -e .

will use pyproject.toml on a local PC, perhaps it’s not a good thing[tm] for robotpy to use the standard host python packaging process “name space” pyproject.toml for roborio packaging.

If we could at sometime in the future move the roborio python configuration off of the filename, pyproject.toml, then host simulation code has full access to use pyproject.toml.

What would be the right forum to start this discussion?

-Thanks for your support!

-Mike

Issues · robotpy/robotpy-installer · GitHub is the place to discuss issues, I opened pip install -e . in robot directory leads to weirdness · Issue #92 · robotpy/robotpy-installer · GitHub to discuss that topic.

I made a bunch of updates at Lots of improvements to deploy by virtuald · Pull Request #91 · robotpy/robotpy-installer · GitHub if you want to try it out (though I don’t believe it will address any of the resolving issues that you’ve mentioned here – but it might fix some of the MemoryError that some people have encountered).

Edit: I tested it on windows, so robotpy-installer updates are now in robotpy-installer==2024.0.3 or robotpy==2024.1.1.3.

Thanks! I updated to:

As you suggested, no change.

Should be able to look into it tonight.

In the meantime, the robotpy command has a variety of manual installation related commands under robotpy installer if you can’t get the right packages on your rio.

Someone on my team also had a similar problem, but we couldn’t replicate it in a new virtualenv. I’m still confused as to how.

The problem is photonlibpy. There is only a beta version available for it, and for some reason, the specifier logic won’t match against a prerelease even if no explicit version is specified.

If you change it to photonlibpy==2024.1.1b42 then the current installer works. Will push an updated installer that handles this later today.