[x] The implementation follows the project style conventions
[x] All project unit tests are passing
[x] If necessary, documentation has been provided or updated to discuss the changes
[x] System integration tests are performed successfully
[x] Any new dependencies have been added to the requirements list
[x] Any changes that will not be completed or bugs that have been introduced have been added as issues
Changes Made
This PR re-implements the way in which users interact with pymavswarm. More specifically, this introduces changes that enable users to interact with a drone swarm through the mavswarm object. This ultimately increases usability and provides a cleaner interface for development. Additional changes include project-level changes that better document the contribution guidelines, create a cleaner development environment, and also integrates PEP standards.
.github/ISSUE_TEMPLATE/bug_report.md: Cleaned up bug report template and made template more clear for project
.github/ISSUE_TEMPLATE/config.yml: Configuration file for issue templates; requests users to ask issues in discussion board
.github/ISSUE_TEMPLATE/feature_request.md: Cleaned up template to be more relatable to the project
.github/PULL_REQUEST_TEMPLATE.md: Resolved issue in checkbox rendering
.pre-commit-config.yaml: Added support for pre-commit
Pipfile*: Create pipenv environment specification
README: Updated to follow markdown lint specifications
examples/*: Added collection of examples demonstrating how to use the pymavswarm library
agent.py: Updated object to support observers and cleaned up implementation to support code style standards
connection.py: Refactored methods violating separation of concerns
mavswarm.py: Refactored implementation to improve the usability of the system. This also integrates a thread pool for message senders
_types.py: Integrated project specific type aliases
event.py: Implemented support for events and the observer pattern
tests/*: Cleaned up tests to support test discovery
message_receivers.py: Refactored message receivers to separate class to ensure separation of concerns
receivers.py: Created a parent class for the message receivers
codes.py: Integrated response codes to provide more information regarding message results
response.py: Response to a message after completing execution. This provides information regarding the result of the message, its code, the target agent, and the command type
mission.py: Cleaned up formatting and docstrings
waypoint.py: Cleaned up formatting and docstrings
state/*: Cleaned up formatting and docstrings
logging.py: Integrated support for file logging and a utility method for parsing the log files
notifier_dict.py: Implemented a dictionary wrapper that enables notifying users when the swarm list has changed
pyproject.toml: Integrated build configurations
setup.cfg: Added project-level configurations
tox.ini: Integrated support for tox
setup.py: Removed project build specifications to support PEP standards
Testing
Unit tests and hardware deployment tests were conducted with this PR. The deployment tests were executed using three agents in a field setting.
Checklist
Changes Made
This PR re-implements the way in which users interact with
pymavswarm
. More specifically, this introduces changes that enable users to interact with a drone swarm through themavswarm
object. This ultimately increases usability and provides a cleaner interface for development. Additional changes include project-level changes that better document the contribution guidelines, create a cleaner development environment, and also integrates PEP standards.Associated Issues
Closes #71 Closes #68 Closes #65 Closes #62 Closes #61 Closes #60 Closes #30 Closes #28 Closes #26 Closes #3
Files Changes
.devcontainer/*
: Introduces a development container that can be used for making contributions toward thepymavswarm
project.github/CONTRIBUTING.md
: Documents contribution guidelines.github/ISSUE_TEMPLATE/bug_report.md
: Cleaned up bug report template and made template more clear for project.github/ISSUE_TEMPLATE/config.yml
: Configuration file for issue templates; requests users to ask issues in discussion board.github/ISSUE_TEMPLATE/feature_request.md
: Cleaned up template to be more relatable to the project.github/PULL_REQUEST_TEMPLATE.md
: Resolved issue in checkbox rendering.pre-commit-config.yaml
: Added support forpre-commit
Pipfile*
: Createpipenv
environment specificationREADME
: Updated to follow markdown lint specificationsexamples/*
: Added collection of examples demonstrating how to use thepymavswarm
libraryagent.py
: Updated object to support observers and cleaned up implementation to support code style standardsconnection.py
: Refactored methods violating separation of concernsmavswarm.py
: Refactored implementation to improve the usability of the system. This also integrates a thread pool for message senders_types.py
: Integrated project specific type aliasesevent.py
: Implemented support for events and the observer patterntests/*
: Cleaned up tests to support test discoverymessage_receivers.py
: Refactored message receivers to separate class to ensure separation of concernsreceivers.py
: Created a parent class for the message receiverscodes.py
: Integrated response codes to provide more information regarding message resultsresponse.py
: Response to a message after completing execution. This provides information regarding the result of the message, its code, the target agent, and the command typemission.py
: Cleaned up formatting and docstringswaypoint.py
: Cleaned up formatting and docstringsstate/*
: Cleaned up formatting and docstringslogging.py
: Integrated support for file logging and a utility method for parsing the log filesnotifier_dict.py
: Implemented a dictionary wrapper that enables notifying users when the swarm list has changedpyproject.toml
: Integrated build configurationssetup.cfg
: Added project-level configurationstox.ini
: Integrated support fortox
setup.py
: Removed project build specifications to support PEP standardsTesting
Unit tests and hardware deployment tests were conducted with this PR. The deployment tests were executed using three agents in a field setting.
Issues Introduced
N/A