diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..12e8cf6 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# cvxcli Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting any member of the project team. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 1.4, available at + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..83a3408 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,100 @@ +# Contributing to cvxcli + +This document is a guide to contributing to cvxcli + +We welcome all contributions. You don't need to be an expert (in optimization) +to help out. + +## Checklist + +Contributions are made through +[pull requests](https://help.github.com/articles/using-pull-requests/). +Before sending a pull request, make sure you do the following: + +- Run 'make fmt' to make sure your code adheres to our [coding style](#code-style). + This step also includes our license on top of your new files. +- [Write unit tests](#writing-unit-tests) +- Run the [unit tests](#running-unit-tests) and check that they're passing + +## Building cvxcli from source + +You'll need to build cvxcli locally in order to start editing code. +To install cvxcli from source, clone the Github repository, navigate to the +repository root, and run the following command: + +```bash +make install +``` + +We assume you have [poetry](https://python-poetry.org) installed. + +## Contributing code + +To contribute to cvxcli, send us pull requests. For those new to contributing, +check out Github's +[guide](https://help.github.com/articles/using-pull-requests/). + +Once you've made your pull request, a member of the cvxcli development team +will assign themselves to review it. You might have a few back-and-forths +with your reviewer before it is accepted, which is completely normal. Your +pull request will trigger continuous integration tests for many different +Python versions and different platforms. If these tests start failing, please +fix your code and send another commit, which will re-trigger the tests. + +If you'd like to add a new feature to cvxcli, please do propose your +change on a Github issue, to make sure that your priorities align with ours. + +If you'd like to contribute code but don't know where to start, try one of the +following: + +- Read the cvxcli source and enhance the documentation, or address TODOs +- Browse the [issue tracker](https://github.com/cvxgrp/cvxcli/issues), and + look for the issues tagged "help wanted". + +## License + +A license is added to new files automatically as a pre-commit hook. + +## Code style + +We use black and ruff to enforce our Python coding style. +Before sending us a pull request, navigate to the project root +and run + +```bash +make fmt +``` + +to make sure that your changes abide by our style conventions. Please fix any +errors that are reported before sending the pull request. + +## Writing unit tests + +Most code changes will require new unit tests. Even bug fixes require unit tests, +since the presence of bugs usually indicates insufficient tests. cvxcli tests +live in the directory `tests`, which contains many files, each of which +contains many unit tests. When adding tests, try to find a file in which your +tests should belong; if you're testing a new feature, you might want to create +a new test file. + +We use the popular Python [pytest](https://docs.pytest.org/en/) framework for our +tests. + +## Running unit tests + +We use `pytest` to run our unit tests. +To run all unit tests run the following command: + +```bash +make test +``` + +We keep a close eye on our coverage via + +```bash +make coverage +``` + +Please make sure that your change doesn't cause any of the unit tests to fail. + +the above command (with and without your change) in your pull request.