Metadata-Version: 2.4
Name: lib_6107
Version: 2026.0.0.0
Summary: Python helper library focused on the CyberJagzz FRC Team 6107 robot requirements
Author-email: Chip Boling <chip@bcsw.net>
License-Expression: BSD-3-Clause
Project-URL: Homepage, https://cyberjagzz.org
Project-URL: Source, https://github.com/CyberJagzz/frclib-6107
Project-URL: Documentation, https://github.com/CyberJagzz/frclib-6107/docs
Keywords: FRC,robot,robotpy,FIRST,Jemison,CyberJagzz,6107
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.14
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: wpilib>=2026.2.2
Requires-Dist: robotpy>=2026.2.2
Requires-Dist: robotpy-apriltag>=2026.2.2
Requires-Dist: robotpy-commands-v2>=2026.2.2
Requires-Dist: robotpy-pathplannerlib>=2026.1.2
Requires-Dist: robotpy-cli>=2026.0.1
Requires-Dist: phoenix6>=26.1.3
Requires-Dist: robotpy-rev>=2026.0.4
Requires-Dist: robotpy-cscore>=2026.2.2
Requires-Dist: pyntcore>=2026.2.2
Requires-Dist: photonlibpy>=2026.3.2
Requires-Dist: limelightlib-python>=0.9.6
Dynamic: license-file

# frclib-6107

Python helper library focused on the CyberJagzz FRC Team 6107 robot requirements

## Table of Contents

 * [Background and Intended Direction](#background-and-intended-direction)
 * [Key Interfaces](#key-interfaces)
 * [Commands](#commands)
   * [Drivetrain](#drivetrain)
   * [Vision](#vision)
   * [Pykit](#pykit)
 * [Subsystems](#subsystems)
   * [Gyro](#gyro)
   * [Pykit](#pykit-1)
   * [RPM](#rpm)
   * [Vision](#vision-1)
 * [Utilities](#util)

# Background and Intended Direction

During the initial FRC python effort for the 2026 Rebuilt build-season, several useful
utilities were identified along with much common functionality between some subsystems. On
top of this, the pykit module had a few bugs identified and were brought into the Team's
product.

All of this work was performed under the _**lib_6107**_ subdirectory of our
[2026 Rebuilt](https://github.com/6107/2026-Rebuilt) project, and now that build season
is over, it sure would be nice to pull this into a loadable module, clean up and document
the interfaces, and get under some sort of unit tests.

If this is successful, the hope is that the main robot-loadable source for 2026 and our 
future robots is greatly reduced.

Another key focus is to speed the periodic code by at least 25%. The current loop is taking
about 23 mS, and we need this under 20. While the new controller for 2027 will probably be
significantly faster, saving time to run new functionality (vision w/ dynamic collision
avoidance) will most likely take this time up.

# Key Interfaces

Below are the main areas (often subdirectories) contained in this project.

# commands

## drivetrain

## vision

# pykit

# subsystems

## gyro

## pykit

## rpm

## vision

# util

# Planned Releases and Improvements

The first 'beta' release will be 2026.0.1 and will primarily be a move of the
current [2026-Rebuilt](https://github.com/6107/2026-Rebuilt) project into an
installable module. Following that _release_, the start of several improvements
based on the prioritized list below. Note that priorities may change without
notice.

|           Impovement            |      Task       | Description                                                                                                                                                                       |
|:-------------------------------:|:---------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|     <input type="checkbox">     |  lib_2026 move  | 2026.0.1 - Successful move into an installable module. Little or no added functionality.                                                                                          
|     <input type="checkbox">     |   lint-part-1   | [automation] Support lint via Makefile                                                                                                                                            |
|     <input type="checkbox">     |  bandit-part-1  | [automation] Support bandit via Makefile                                                                                                                                          |
|     <input type="checkbox">     |  build-part-1   | [automation] Support automated release via Makefile                                                                                                                               |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |     period      | Support an easy way to set/manipulate the period with the default being the 20 mS standard value                                                                                  |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |   robot base    | Base class for the robot that is responsible for at least the initial logging setup and determining if this is a replay                                                           |
|     <input type="checkbox">     | subsystem base  | Base subsystem class that supports pykit, simulation, and sysId overridable methods                                                                                               |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |   lint-part-2   | [automation] Support lint via GitHub actions                                                                                                                                      |
|     <input type="checkbox">     |  bandit-part-2  | [automation] Support bandit via GitHub actions                                                                                                                                    |
|     <input type="checkbox">     |  build-part-2   | [automation] Support automated release via GitHub actions                                                                                                                         |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |   performance   | [performance] Review existing code so far and address and areas for increasing code efficiency. Create items for the improvement                                                  |
|     <input type="checkbox">     | fault handling  | [fault handling]Review existing code so far and address and areas for increasing code stability and recovery.C reate items for the improvement                                    |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     | pykit unit-test | [fault handling] Get to >70% unit test coverage of pykit logging functionality<br/>Focus on performance measurements. Keep track of results                                       |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |    ut-part-1    | [automation] Support unit-tests via makefile                                                                                                                                      |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |    CTRE/REV     | Provide customized/customizable subsystem support for CTRE and Rev Robotics based subsystems                                                                                      |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |   pykit slots   | [performance] Support @DataClass(slots=True) for pykit logging if it can help with performance                                                                                    |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |   pykit meta    | Support subsystem metadata. Auto-save firmware versions, model numbers, vendor info, and other status we can scrap from devices and their APIs.                                   |
|     <input type="checkbox">     |  pykit asyncio  | [performance] Support asyncio in pykit to improve performance                                                                                                                     |
|     <input type="checkbox">     | canbus logging  | [performance] Support Canbus logging to pykit (option to disable via logged chooser)                                                                                              |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     | github copilot  | Investigate what github copilot may help us with                                                                                                                                  |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |    ut-part-2    | [automation] Support unit-tests via GitHub actions                                                                                                                                |
|     <input type="checkbox">     |  unit-test-10%  | Reach at least 10% or better unit-test coverage                                                                                                                                   |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |  vision sim 1   | Support vision simulation (PhotonVision)                                                                                                                                          |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |     example     | Create an example project that can be used by other to examine how to use this module.<br/>Also may be able to use it in some automated unit-tests.                               |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |  vision sim 2   | Support vision simulation (Limelight)                                                                                                                                             |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |  unit-test-30%  | Reach at least 30% or better unit-test coverage. Supports github action/workflow.                                                                                                 |
|     <input type="checkbox">     |  unit-test-50%  | Reach at least 50% or better unit-test coverage.                                                                                                                                  |
|     <input type="checkbox">     |  unit-test-70%  | Reach at least 70% or better unit-test coverage                                                                                                                                   |
|     <input type="checkbox">     |  unit-test-80%  | Reach at least 80% or better unit-test coverage                                                                                                                                   |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |      tools      | Generate a list of possible tools to improve or automate some of the steps we go through                                                                                          |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |  log exporter   | [tools] Auto-log export into a database (mongodb?)<br/>Include additional match/circumstance type metadata and have settable via UI.                                              |
|     <input type="checkbox">     |      otel       | [tools] [performance] OpenTelemetry support investigation                                                                                                                         |
|     <input type="checkbox">     |     elastic     | [example] In the 'example' robot project.<br/>Include an _elastic_ JSON layout file that shows how some of the module NT4 data can be displayed/manipulated.                      |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|     <input type="checkbox">     |        -        |                                                                                                                                                                                   |
|            **DONE**             |  -------------  | ---------------------------------------------                                                                                                                                     |
| <input type="checkbox" checked> |   Placeholder   | As items are completed, the will be moved below this lineDo we want to support pitch and roll in our logged gyro outputs<br/>with the version that they first became available in |


# NOTICE
As with many frc projects, the code in this module draws from many other repositories
belonging to different teams. As I begin to extract code and move it into this repo,
I hope to provide credit below. If I miss anyone, my apologies, it is not intentional.

Also, we use:
    - both Rev and CTRE motors
    - pathplanner
    - pykit
    - PhotonVision (and maybe Limelight soon)

So those modules will be downloaded if you install this module as well. Maybe a little
code bloat, but it should not be much of an impact in 2027 where this is being targeted.

## Westwood Robotics - 1757
    TODO

## Team 714 (Eugene)
    TODO
