Bootcamp Reviewers
Overview
This guide is for reviewers of bootcamp submissions.
If you are a bootcamper, please close this page and go to the bootcamp.
Members who wish to become bootcamp reviewers, please complete the bootcamp in full (with PR accepted) before continuing.
PR review
Comments
If the bootcamper omitted something required or has done something that is not allowed in this guide, they must fix their code.
Normal PR review comment.
Unideal: The bootcamper does not need to change anything.
Add
(You do not need to change anything here, just something to think about).
after your PR review comment.
If you see something particularly good, add a comment!
Add
(You do not need to change anything here).
as well to prevent confusion.
Completion
Once the bootcamper’s submission is accepted, add your review:
Under the title on the right, click Files changed.
On the right, click the green Review changes dropdown.
Write
LGTM.
.Ensure the Comment option is selected, DO NOT SELECT APPROVE.
Click the green Submit review.
Under the title, click Conversation.
Scroll to the bottom and close the PR.
Send this message in the bootcamper’s Discord thread:
You've completed the bootcamp! Please follow the new member onboarding procedure: https://uwarg-docs.atlassian.net/wiki/spaces/AD/pages/1697349760 . Please join Autonomy meetings which are every week on [day] at [time]!
Replace
[day]
and[time]
with the appropriate day of the week and time respectively.
Remove the New Bootcamper role from the new member (if you are not a lead, ping the Autonomy leads to do this).
Coding style
The bootcamper must follow the Python style guide: Python Style Convention . At the very least, naming and spacing convention needs to be followed.
Type hints are not explicitly required but are good to see!
Floating point comparisons
The bootcamper must not use ==
or !=
operators with floating point values. An alternative is to use a tolerance: abs(a - b) < tolerance
.
__eq__()
inDroneReport
andLocation
is a trap. This is to teach that not all APIs should be used.
Using the operators >=
, >
, <
, and <=
are fine.
No raised exceptions
The bootcamper must not raise any exceptions at runtime. Any assertions must only be for quieting the linter and must be impossible to encounter at runtime. For example:
if not result:
# return/continue/break
# This will never be False because of the above
assert result
Commented out and unreachable code
The bootcamper must not leave any commented out code nor unreachable code. It must be deleted.
This occurs because the bootcamper has a habit of information hoarding: What if the code is needed again? But since Git and GitHub are used for version control, it is discouraged.
Pythonic expressions
The bootcamper must use Pythonic expressions wherever possible.
Iterating
Prefer:
for thing in things: # Where `things` is iterable (e.g. list, tuple, dictionary)
do_something(thing)
Instead of:
for i in range(0, len(things)):
do_something(things[i])
Tuple assignment
Prefer:
Instead of:
Private members and methods
The bootcamper must not access private members and/or methods outside of the scope it is declared.
Bootcamp specific
The bootcamper must keep code changes within the designated markers:
Changing or adding code outside of the designated markers is not allowed, except for adding new helper methods within the class in task 3 and task 4.
The bootcamper must not import any additional libraries.
Task 1
ChatGPT will get most of the way there, but does not actually provide a working solution with the loop.
Relevant Ultralytics documentation: https://docs.ultralytics.com/modes/predict/
Relevant verbosity documentation: https://stackoverflow.com/questions/76213454/hide-ultralytics-yolov8-model-predict-output-from-terminal
Task 2
If there is a bug in the bootcamper’s task 1 that was not caught by the unit tests, it may appear in the simulator.
The console output may have: WORKER ERROR: DetectLandingPad.run() exception
As a start for debugging, ask the bootcamper to put print statements at the beginning of method and in the check failure case.
Task 3
ChatGPT outputs code that looks somewhat correct, but fails to account for the specificities of the system.
There are several solutions.
Task 4
There are several solutions.
Â