Contributing ------------- Thank you for the checking out ``graynet``, and for your interest in contributing. Please check the following guidelines for contributing: https://opensource.guide/how-to-contribute/ Developer Guidelines --------------------- The preferred way to contribute to ``graynet`` is to fork the `main repository `__ on GitHub, then submit a "pull request" (PR): 1. `Create an account `_ on GitHub if you do not already have one. 2. Fork the `project repository `__: click on the 'Fork' button near the top of the page. This creates a copy of the code under your account on the GitHub server. For more details on how to fork a repository see `this guide `_. 3. Clone this copy to your local disk:: $ git clone git@github.com:YourLogin/graynet.git 4. Create a branch to hold your changes:: $ git checkout -b my-feature and start making changes. Never work in the ``master`` branch! 5. Work on this copy, on your computer, using Git to do the version control. When you're done editing, do:: $ git add modified_files $ git commit to record your changes in Git, then push them to GitHub with:: $ git push -u origin my-feature Finally, follow `these `_ instructions to create a pull request from your fork. .. note:: In the above setup, your ``origin`` remote repository points to the repository under your github account ``YourLoginName/graynet.git`` . If you wish to fetch/merge from the main repository instead of your forked one, you will need to add another remote to use instead of ``origin``. If we choose the name ``upstream`` for it, the command will be:: $ git remote add upstream https://github.com/raamana/graynet.git If any of the above seems like magic to you, then look up the `Git documentation `_ and the `Git development workflow `_ on the web. If some conflicts arise between your branch and the ``master`` branch, you need to merge ``master``. The command will be:: $ git merge master with ``master`` being synchronized with the ``upstream``. Subsequently, you need to solve the conflicts. You can refer to the `Git documentation related to resolving merge conflict using the command line `_. .. note:: These guidelines are adapted from ``scikit-learn`` docs, credit to the original contributors. Testing -------- To test locally whether the latest codebase, or the changes you have just made, passes all the tests, do the following: .. code-block:: python cd <> cd graynet/tests pytest that will run all tests in `test_graynet.py` and it should report no errors (like ``12 passed`` below): .. code-block:: bash $ 08:38:39 SQuark-3 tests >> pwd /Users/Reddy/dev/graynet/graynet/tests $ 08:38:48 SQuark-3 tests >> pytest ===================================================================================== test session starts ====================================================================================== platform darwin -- Python 3.6.2, pytest-3.4.2, py-1.5.2, pluggy-0.6.0 rootdir: /Users/Reddy/dev/graynet, inifile: plugins: hypothesis-3.30.1 collected 12 items test_graynet.py ............ [100%] ======================================================================================= warnings summary ======================================================================================= graynet/tests/test_graynet.py::test_run_roi_stats_via_API /Users/Reddy/anaconda/envs/py36/lib/python3.6/site-packages/scipy/stats/stats.py:2831: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result. -- Docs: http://doc.pytest.org/en/latest/warnings.html =========================================================================== 12 passed, 1 warnings in 106.92 seconds ============================================================================ If you would like to add more tests, add a new function in ``test_graynet.py``, or add a new file to ``graynet/tests`` folder with a filename starting with ``test_``. Additional info on Testing -------------------------- For more info, check the following links - on testing python packages : https://www.python-course.eu/python3_tests.php - ``pytest`` framework : https://docs.pytest.org/en/latest/contents.html - pytest tutorial : https://semaphoreci.com/community/tutorials/testing-python-applications-with-pytest - Good Integration Practices from pytest devs : https://docs.pytest.org/en/latest/goodpractices.html - comprehensive coverage: https://wiki.python.org/moin/PythonTestingToolsTaxonomy