blob: 1da0dead8530445a73b64f9cffdf5e7c653e0df7 [file] [view] [edit]
### If you commit changes:
1. Make sure all tests pass.
2. Run `mardown-it-bench`, make sure that performance not degraded.
### Other things:
1. Prefer [gitter](https://gitter.im/markdown-it/markdown-it) for short "questions".
Keep issues for bug reports, suggestions and so on.
2. Make sure to read [dev info](https://github.com/markdown-it/markdown-it/tree/master/docs)
prior to ask about plugins development.
3. __Provide examples with [demo](https://markdown-it.github.io/) when possible.__
## Code Style
Code style is tested using [flake8](http://flake8.pycqa.org),
with the configuration set in `.flake8`,
and code formatted with [black](https://github.com/ambv/black).
Installing with `markdown-it-py[code_style]` makes the [pre-commit](https://pre-commit.com/)
package available, which will ensure this style is met before commits are submitted, by reformatting the code
and testing for lint errors.
It can be setup by:
```shell
>> cd markdown-it-py
>> pre-commit install
```
Optionally you can run `black` and `flake8` separately:
```shell
>> black .
>> flake8 .
```
Editors like VS Code also have automatic code reformat utilities, which can adhere to this standard.
All functions and class methods should be annotated with types and include a docstring. The prefered docstring format is outlined in `markdown-it-py/docstring.fmt.mustache` and can be used automatically with the
[autodocstring](https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring) VS Code extension.
## Testing
For code tests:
```shell
>> cd markdown-it-py
>> pytest
```
For documentation build tests:
```shell
>> cd markdown-it-py/docs
>> make clean
>> make html-strict
```
```{seealso}
{ref}`develop/testing`
```
## Pull Requests
To contribute, make Pull Requests to the `master` branch (this is the default branch). A PR can consist of one or multiple commits. Before you open a PR, make sure to clean up your commit history and create the commits that you think best divide up the total work as outlined above (use `git rebase` and `git commit --amend`). Ensure all commit messages clearly summarise the changes in the header and the problem that this commit is solving in the body.
Merging pull requests: There are three ways of 'merging' pull requests on GitHub:
- Squash and merge: take all commits, squash them into a single one and put it on top of the base branch.
Choose this for pull requests that address a single issue and are well represented by a single commit.
Make sure to clean the commit message (title & body)
- Rebase and merge: take all commits and 'recreate' them on top of the base branch. All commits will be recreated with new hashes.
Choose this for pull requests that require more than a single commit.
Examples: PRs that contain multiple commits with individually significant changes; PRs that have commits from different authors (squashing commits would remove attribution)
- Merge with merge commit: put all commits as they are on the base branch, with a merge commit on top
Choose for collaborative PRs with many commits. Here, the merge commit provides actual benefits.