Skip to content

Latest commit

 

History

History
196 lines (146 loc) · 6.22 KB

CONTRIBUTING.md

File metadata and controls

196 lines (146 loc) · 6.22 KB

How to contribute to unityparser

(this is pretty much a copy of the Sheetfu contribution documentation).

Thank you for considering contributing to unityparser! This is a very young module, easy to understand, where lots can be added.

Support questions

For questions about your own code ask on Stack Overflow. Search with Google first using: site:stackoverflow.com unityparser {search term, exception message, etc.}

Reporting issues

Use the issue tracker for this:

  • Describe what you expected to happen.
  • If possible, include a minimal, complete, and verifiable example to help us identify the issue. This also helps check that the issue is not with your own code.
  • Describe what actually happened. Include the full traceback if there was an exception.
  • List your Python and unityparser version.

Submitting patches

  • Include tests if your patch is supposed to solve a bug, and explain clearly under which circumstances the bug happens. Make sure the test fails without your patch.
  • Try to follow PEP8.
  • Use the utils at your disposition in test folders to mock api requests.
  • Every mock request should be put in the fixture folder.
  • Tests are run with pytest.

First time setup

  • Download and install the latest version of git.

  • Configure git with your username and email::

    git config --global user.name 'your name'
    git config --global user.email 'your email'
    
  • Make sure you have a GitHub account[GitHub account].

  • Fork unityparser to your GitHub account by clicking the Fork button.

  • Clone your GitHub fork locally::

    git clone https://github.com/{username}/unity-yaml-parser
    cd unity-yaml-parser
    
  • Add the main repository as a remote to update later::

    git remote add socialpoint-labs https://github.com/socialpoint-labs/unity-yaml-parser
    git fetch socialpoint-labs
    
  • Create a virtualenv::

    python3 -m venv env
    . env/bin/activate
    # or "env\Scripts\activate" on Windows
    
  • Install unityparser requirements with development dependencies::

    pip install -r requirements/development.txt
    npm install .
    

Start coding

  • Create a branch to identify the issue you would like to work on (e.g. 2287-dry-test-suite)
  • Using your favorite editor, make your changes, committing as you go.
  • Try to follow PEP8.
  • Include tests that cover any code changes you make. Make sure the test fails without your patch.
  • Push your commits to GitHub and create a pull request.
  • Celebrate 🎉

Running the tests

Run the basic test suite with::

pytest

This only runs the tests for the current environment. Github Actions will run the full suite when you submit your pull request.

Running test coverage

Generating a report of lines that do not have test coverage can indicate where to start contributing. Run pytest using coverage and generate a report on the terminal and as an interactive HTML document::

coverage run -m pytest
coverage report
coverage html
# then open htmlcov/index.html

Read more about coverage.

Checking commit correctness

The Makefile provides an utility to check that your commits adhere to the below commit specification before opening a PR::

make lint

Semantic versioning

Unityparser follows the 2.0.0 specification of Semantic Versioning. All version number should follow the following format::

v<major>.<minor>.<patch>
example: v3.5.1

Read more about semantic versioning.

AngularJS commit convention

Unityparser follows the AngularJS commit specifications. Commit messages should be structured with the following format::

<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

Allowed values are the following::

build (build related)
chore (maintain)
ci (continuous integration related)
docs (documentation)
feat (feature)
fix (bug fix)
perf (prefromance related improvements)
refactor (code refactoring)
revert (reverted code)
style (formatting)
test (when adding missing tests)

The exact rules are extracted from this liter rules file. It's important to follow this commit specification, as the version numbers will be generated accordingly to the commit messages since the previous version. It's also important to specify which commits include breaking changes in the commit footer.

Read more about AngularJS commit convention.

Manually releasing a new version to Pypi

Only Admins of the repository have the ability to manually release a new version and publish it to Pypi. To do so follow the below steps in addition to the environment setup for development described above::

pip install -r requirements/publish.txt
GH_TOKEN=<Personal API Token for Github with repo permission> \
  REPOSITORY_PASSWORD=<unity-yaml-parser Pypi API Token> \
  make release

make targets

Unityparser provides a Makefile with various shortcuts.

  • make test runs the basic test suite with pytest
  • make cov runs the basic test suite with coverage