From c745d3eeb331686575b7b62ba8794f63e22ca916 Mon Sep 17 00:00:00 2001 From: Moul <moul@moul.re> Date: Tue, 17 Dec 2024 16:24:09 +0100 Subject: [PATCH] Proofread CONTRIBUTING.md (#433) Introduce logos --- CONTRIBUTING.md | 81 ++++++++++++++++++++++---------- docs/images/GitLab_icon.svg | 55 ++++++++++++++++++++++ docs/images/duniterpy_logo.png | Bin 0 -> 36930 bytes docs/images/pre-commit_logo.svg | 1 + docs/images/pypi_logo.svg | 1 + docs/images/pytest_logo.svg | 29 ++++++++++++ 6 files changed, 141 insertions(+), 26 deletions(-) create mode 100644 docs/images/GitLab_icon.svg create mode 100644 docs/images/duniterpy_logo.png create mode 100644 docs/images/pre-commit_logo.svg create mode 100644 docs/images/pypi_logo.svg create mode 100644 docs/images/pytest_logo.svg diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7f560692..44c0d5fc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,23 +6,27 @@ Part of the Duniter project running the Ğ1 currency, Silkaj project is aiming a ## Install the development environment -We are using [Poetry](https://python-poetry.org/) as a development environment solution. Start [installing Poetry](/install_poetry/). +We are using [Poetry](https://python-poetry.org/) as a development environment solution. Start by [installing Poetry](/install_poetry/). This will install a sandboxed Python environment. Dependencies will be installed in it in order to have Silkaj running and to have pre-installed developement tools. ## Workflow - We use branches for merge requests -- We prefer fast-forward and rebase method than having a merge commit. This in order to have a clean history. +- We prefer fast-forward and rebase method than having merge commits created. This in order to have a clean history. ## Branches - `main`: development and stable branch -- maintainance branches, to maintain a stable version while developing future version with breaking changes. For instance: `0.10` +- maintainance branches, to maintain a stable version while developing future version with breaking changes. For instance: `release/0.12` ## Developing with DuniterPy -[DuniterPy](https://git.duniter.org/clients/python/duniterpy) is a Python library for Duniter clients. +<center> +[{: style="height:150px;width:150px"}](https://git.duniter.org/clients/python/duniterpy) +</center> + +[DuniterPy](https://git.duniter.org/clients/python/duniterpy) is a Python library for Duniter v1 clients. It implements a client with multiple APIs, the handling for document signing. As it is coupled with Silkaj, it is oftenly needed to develop in both repositories. @@ -49,40 +53,51 @@ Please read their documentations on how to use them the best possible. - [DuniterPy](https://clients.pages.duniter.org/python/duniterpy/index.html): Autogenerated documentation. - Feel free to contribute upstream to share the code with other Python programs - [Click](https://click.palletsprojects.com/#documentation) + - [Rich-Click](https://github.com/ewels/rich-click) - [Arrow](https://arrow.readthedocs.io/) - [texttable](https://github.com/foutaise/texttable/#documentation) ## Pre-commit hooks +<center> +[{: style="height:150px;width:150px"}](https://pre-commit.com/) +</center> + We are using [`pre-commit`](https://pre-commit.com/) tool to perform checks on staged changes before committing. We are using it for `black` formatting, `mypy` static typing, `gitlab-ci` linting. We are also using `ruff` which replaces `isort` imports sorting, `pylint` code linting, `autoflake`, and `pyupgrade` -Install `pre-commit` from your distribution. In case it is an outdated version, install it from `pip`: +Install `pre-commit` from your distribution. In case it is an outdated version, install it with `pipx`: ```bash sudo apt install pre-commit -pip install --user pre-commit +pipx install pre-commit ``` -To install the `git-hooks`, run: +To install the `git-hooks`, from within Silkaj repository, run: ```bash -> pre-commit install +pre-commit install ``` -Then each time you commit changes, the hooks will perform checks. +Then each time you commit changes, the hooks will perform verifications. + +In case you want to commit while the hooks are failing, run the following to [skip the hooks](https://stackoverflow.com/a/7230886): + +```bash +git commit -m "msg" --no-verify/-n +``` To manually run one of the tool above, run (eg for `black`): ```bash -> pre-commit run --all-files black +pre-commit run --all-files black ``` To run all checks on all files: ```bash -> pre-commit run -a +pre-commit run -a ``` ### Authorization for GitLab CI linter hook @@ -90,7 +105,7 @@ To run all checks on all files: `pre-commit run -a (gitlab-ci-linter)` is failing due to authorization required for CI lint API accesses. When running this command, just ignore this failed hook. In case you want to commit a `.gitlab-ci.yml` edition, this hook will prevent the commit creation. -You can [skip the hooks](https://stackoverflow.com/a/7230886) with `git commit -m "msg" --no-verify`. +You can skip the hooks as mentionned above. This is fine for occasional `.gitlab-ci.yml` editions. In case you would like to edit this file more often and have it checked, ask a maintainer to provide you with `GITLAB_PRIVATE_TOKEN` environment variable that can be set into a shell configuration. With Bash, in `$HOME/.bashrc` add the following: @@ -104,15 +119,19 @@ With Fish, in `$HOME/.config/fish/config.fish` add the following: set -xg GITLAB_PRIVATE_TOKEN "" ``` -Check out duniterpy#169 for more details. +Check out [duniterpy#169](https://git.duniter.org/clients/python/duniterpy/-/issues/169) for more details. ## Tests -We are using [Pytest](https://pytest.org) as a tests framework. To know more about how Silkaj implement it read the [project test documentation](/test_and_coverage/). +<center> +[{: style="height:150px;width:150px"}](https://pytest.org) +</center> + +We are using [Pytest](https://pytest.org) as a tests framework. For more information on how Silkaj implements them check the [project test documentation](/test_and_coverage/). -Tests are stored into `unit` and `integration` folders depending on their types, then using the same tree as the source code. +Tests are stored into `unit` and `integration` folders depending on their types, then using a similar tree as the source code. -To run tests, within `silkaj` repository: +To run the tests, from within `silkaj` repository, run: ```bash poetry run pytest @@ -136,7 +155,7 @@ To create a release, we use following script which will bump the version in diff ./release.sh 0.20.0 ``` -Then, a `git push --tags` is necessary to publish the tag. Git could be configured to publish tags with a simple `push`. +Then, a `git push --tags` is necessary to publish the tag. ### How to release a pre-release on PyPI @@ -154,18 +173,22 @@ pip install silkaj --user --upgrade --pre pip install silkaj --user --upgrade -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ ``` -### Update copyright year +## Update copyright year Follow [this documentation](https://github.com/Lucas-C/pre-commit-hooks#removing-old-license-and-replacing-it-with-a-new-one) Only difference is to update the year in `license_header.txt` rather than `LICENSE.txt`. ## PyPI and PyPI test distributions +<center> +[{: style="height:150px;width:150px"}](https://pypi.org/project/silkaj) +</center> + Silkaj is distributed to PyPI, the Python Package Index, for further `pip` installation. Silkaj can be published to [PyPI](https://pypi.org/project/silkaj) or to [PyPI test](https://test.pypi.org/project/silkaj/) for testing purposes. Publishing to PyPI or PyPI test can be directly done from the continuous delivery or from Poetry it-self. -The CD jobs does appear on a tag and have to be triggered manually. -Only the project maintainers have the rights to publish tags. +The CD jobs appear on a tag and have to be triggered manually. +Only the project maintainers have the rights to push tags. ### PyPI @@ -194,13 +217,16 @@ The `--extra-index-url` is used to retrieve dependencies packages from the offic ## Continuous integration and delivery +<center> +{: style="height:100px;width:100px"} +</center> ### Own built Docker images -- https://git.duniter.org/docker/python3/poetry -- Python images based on latest Debian -- Poetry installed on top +Silkaj pipeline is running images built on top of official Python images based on latest Debian with Poetry installed on top them. -### Jobs +They can be found in [this repository](https://git.duniter.org/docker/python3/poetry). + +### Pipeline and its jobs - Checks: - pre-commit hooks @@ -213,15 +239,18 @@ The `--extra-index-url` is used to retrieve dependencies packages from the offic - PyPI test - Docker pip - Docker poetry -- Coverage website deployment on GitLab Pages +- Website/project documentation commited to be deployed via GitLab Pages ### Ğ1 monetary license update To modify the Ğ1 monetary license files, please change them on [its repository](https://git.duniter.org/documents/g1_monetary_license), since it’s integrated in silkaj repository as a `git subtree`. -To pull changes from upstream with `git subtree`, add the repository as a remote then pull: +Ğ1 monetary license is included in Silkaj repository as a `git subtree`. +To update the licence files, add the license repository as a remote then pull: ```bash git remote add g1_monetary_license https://git.duniter.org/documents/g1_monetary_license.git git subtree pull --prefix g1_monetary_license g1_monetary_license master ``` + +Depending on your distribution, you might need to install `git-subtree`. diff --git a/docs/images/GitLab_icon.svg b/docs/images/GitLab_icon.svg new file mode 100644 index 00000000..d97c2be8 --- /dev/null +++ b/docs/images/GitLab_icon.svg @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="1000" + height="963.197" + viewBox="0 0 1000 963.197" + version="1.1" + id="svg85"> + <sodipodi:namedview + id="namedview87" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + showgrid="false" + inkscape:zoom="1" + inkscape:cx="991.5" + inkscape:cy="964.5" + inkscape:window-width="1126" + inkscape:window-height="895" + inkscape:window-x="774" + inkscape:window-y="12" + inkscape:window-maximized="0" + inkscape:current-layer="svg85" /> + <defs + id="defs74"> + <style + id="style72">.cls-1{fill:#e24329;}.cls-2{fill:#fc6d26;}.cls-3{fill:#fca326;}</style> + </defs> + <g + id="LOGO" + transform="matrix(5.2068817,0,0,5.2068817,-489.30756,-507.76085)"> + <path + class="cls-1" + d="m 282.83,170.73 -0.27,-0.69 -26.14,-68.22 a 6.81,6.81 0 0 0 -2.69,-3.24 7,7 0 0 0 -8,0.43 7,7 0 0 0 -2.32,3.52 l -17.65,54 h -71.47 l -17.65,-54 a 6.86,6.86 0 0 0 -2.32,-3.53 7,7 0 0 0 -8,-0.43 6.87,6.87 0 0 0 -2.69,3.24 L 97.44,170 l -0.26,0.69 a 48.54,48.54 0 0 0 16.1,56.1 l 0.09,0.07 0.24,0.17 39.82,29.82 19.7,14.91 12,9.06 a 8.07,8.07 0 0 0 9.76,0 l 12,-9.06 19.7,-14.91 40.06,-30 0.1,-0.08 a 48.56,48.56 0 0 0 16.08,-56.04 z" + id="path76" /> + <path + class="cls-2" + d="m 282.83,170.73 -0.27,-0.69 a 88.3,88.3 0 0 0 -35.15,15.8 L 190,229.25 c 19.55,14.79 36.57,27.64 36.57,27.64 l 40.06,-30 0.1,-0.08 a 48.56,48.56 0 0 0 16.1,-56.08 z" + id="path78" /> + <path + class="cls-3" + d="m 153.43,256.89 19.7,14.91 12,9.06 a 8.07,8.07 0 0 0 9.76,0 l 12,-9.06 19.7,-14.91 c 0,0 -17.04,-12.89 -36.59,-27.64 -19.55,14.75 -36.57,27.64 -36.57,27.64 z" + id="path80" /> + <path + class="cls-2" + d="M 132.58,185.84 A 88.19,88.19 0 0 0 97.44,170 l -0.26,0.69 a 48.54,48.54 0 0 0 16.1,56.1 l 0.09,0.07 0.24,0.17 39.82,29.82 c 0,0 17,-12.85 36.57,-27.64 z" + id="path82" /> + </g> +</svg> diff --git a/docs/images/duniterpy_logo.png b/docs/images/duniterpy_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8c29aa603a8c71a242291437e099bd59592040d1 GIT binary patch literal 36930 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%0D)N|A_vT3t+*2MmfKtqnXK{Z1@XoVg4sk{+TM` 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 literal 0 HcmV?d00001 diff --git a/docs/images/pre-commit_logo.svg b/docs/images/pre-commit_logo.svg new file mode 100644 index 00000000..acd985b2 --- /dev/null +++ b/docs/images/pre-commit_logo.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="2000" width="2000"><defs><clipPath id="a" clipPathUnits="userSpaceOnUse"><path d="M0 1500h1500V0H0z"/></clipPath></defs><g clip-path="url(#a)" transform="matrix(1.33333 0 0 -1.33333 0 2000)"><path d="M665.147 130.852L130.853 665.147c-46.863 46.862-46.863 122.842 0 169.705l534.294 534.295c46.863 46.864 122.843 46.864 169.706 0l534.294-534.294c46.863-46.863 46.863-122.843 0-169.706L834.853 130.852c-46.863-46.862-122.843-46.862-169.706 0" fill="#fab040"/><path d="M687.774 233.226L233.225 687.775c-34.366 34.366-34.366 90.085 0 124.45l454.55 454.55c34.365 34.366 90.084 34.366 124.45 0l454.55-454.55c34.365-34.365 34.365-90.084 0-124.45l-454.55-454.55c-34.366-34.365-90.085-34.365-124.45 0z" fill="none" stroke="#040521" stroke-width="34" stroke-miterlimit="10"/><path d="M784.672 763.286c12.096 0 23.74.893 34.943 2.688 11.194 1.785 21.053 5.26 29.569 10.416 8.504 5.145 15.34 12.432 20.496 21.84 5.144 9.408 7.726 21.724 7.726 36.96 0 15.225-2.582 27.552-7.726 36.96-5.156 9.408-11.992 16.684-20.496 21.84-8.516 5.145-18.375 8.62-29.57 10.416-11.202 1.785-22.846 2.688-34.942 2.688h-81.985V763.286zm28.895 225.792c30.009 0 55.544-4.368 76.609-13.104 21.05-8.736 38.187-20.275 51.406-34.608 13.209-14.343 22.85-30.692 28.897-49.056 6.048-18.375 9.072-37.412 9.072-57.12 0-19.268-3.024-38.2-9.072-56.784-6.047-18.596-15.688-35.06-28.897-49.392-13.22-14.343-30.355-25.872-51.406-34.608-21.065-8.736-46.6-13.104-76.61-13.104h-110.88V509.27H597.184v479.808z"/></g></svg> diff --git a/docs/images/pypi_logo.svg b/docs/images/pypi_logo.svg new file mode 100644 index 00000000..39cb413e --- /dev/null +++ b/docs/images/pypi_logo.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="247.808" height="185.85" viewBox="0 0 232.32 174.235"><path d="m276.515 367.463 15.556 5.662 15.785-5.745-15.555-5.662zm15.624-12.783 15.555 5.662 15.786-5.745-15.556-5.662z" style="fill:#f7f7f4;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="m292.139 354.68 15.555 5.662v18.283l-15.555-5.662z" style="fill:#efeeea;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="m260.892 391.608 15.555 5.662 15.786-5.745-15.555-5.662z" style="fill:#f7f7f4;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="m260.892 391.608 15.555 5.662v18.283l-15.555-5.662z" style="fill:#efeeea;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="m260.892 365.608 15.555 5.662 15.786-5.745-15.555-5.662z" style="fill:#f7f7f4;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="M276.447 371.27v18.283l15.786-5.746v-18.282z" style="fill:#fff;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="m260.892 365.608 15.555 5.662v18.283l-15.555-5.662z" style="fill:#efeeea;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="m276.7 350.057-.025.03a2.783 2.783 0 0 0-2.758 2.782 2.783 2.783 0 0 0 .053.531l-11.746 14.385 7.646 9.363-3.869-9.363 9.984-12.228a2.783 2.783 0 0 0 .715.095 2.783 2.783 0 0 0 .715-.093l5.315 6.507 5.373 1.955-8.672-10.62a2.783 2.783 0 0 0 .05-.532 2.783 2.783 0 0 0-2.755-2.781l-.025-.031zm2.135-7.289a2.136 2.136 0 1 0-4.271 0v3.265a2.136 2.136 0 0 0 4.271 0v-3.265zm-.98-.002v3.265a1.155 1.155 0 0 1-2.31 0v-3.265a1.154 1.154 0 1 1 2.31 0zm.98-11.211a2.136 2.136 0 1 0-4.271 0v3.265a2.136 2.136 0 0 0 4.271 0v-3.265zm-.98-.002v3.265a1.155 1.155 0 0 1-2.31 0v-3.265a1.154 1.154 0 1 1 2.31 0z" style="fill:#646464;fill-opacity:1" transform="translate(-260.714 -252.848)"/><path d="M277.22 335.545v6.498a.518.518 0 1 1-1.04 0v-6.498a.518.518 0 1 1 1.04 0zm0 11.213v6.497a.518.518 0 1 1-1.04 0v-6.497a.518.518 0 1 1 1.04 0zm0-22.463v6.498a.518.518 0 1 1-1.04 0v-6.498a.518.518 0 1 1 1.04 0z" style="fill:#646464;fill-opacity:1" transform="translate(-260.714 -252.848)"/><path d="m276.515 397.29 15.556 5.661v18.283l-15.556-5.662z" style="fill:#efeeea;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="m276.515 378.826 15.556 5.661 15.785-5.745-15.555-5.662z" style="fill:#f7f7f4;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="m276.515 378.826 15.556 5.661v18.283l-15.556-5.661z" style="fill:#efeeea;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="M354.564 391.589v18.283l15.786-5.746v-18.282z" style="fill:#fff;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="M338.94 397.27v18.283l15.787-5.746v-18.282z" style="fill:#ffd242;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="M351.866 401.728a2.617 3.737 35 0 1-3.032 4.33 2.617 3.737 35 0 1-3.032-2.123 2.617 3.737 35 0 1 3.032-4.33 2.617 3.737 35 0 1 3.032 2.123z" style="fill:#fff;fill-opacity:1" transform="translate(-260.714 -252.848)"/><path d="M323.318 402.952v18.282l15.785-5.745v-18.283z" style="fill:#ffd242;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="M307.694 408.633v18.282l15.786-5.745v-18.283z" style="fill:#fff;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="m292.139 402.971 15.555 5.662v18.282l-15.555-5.661z" style="fill:#efeeea;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="M354.564 373.125v18.283l15.786-5.746V367.38z" style="fill:#ffd242;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="m339.009 349 15.555 5.661 15.786-5.745-15.556-5.662z" style="fill:#ffc91d;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="M354.564 354.661v18.283l15.786-5.746v-18.282zm-15.624 24.145v18.283l15.787-5.745V373.06z" style="fill:#ffd242;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="M338.94 360.342v18.283l15.787-5.745v-18.283z" style="fill:#3775a9;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="m323.385 336.217 15.556 5.661 15.785-5.745-15.555-5.662z" style="fill:#2f6491;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="M338.94 341.878v18.283l15.787-5.745v-18.283z" style="fill:#3775a9;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="M323.318 384.488v18.282l15.785-5.745v-18.283z" style="fill:#ffd242;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="M323.318 366.024v18.282l15.785-5.745v-18.283zm-15.624 24.145v18.282l15.786-5.745v-18.283z" style="fill:#3775a9;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="m292.139 384.507 15.555 5.662v18.282l-15.555-5.661zm0-18.464 15.555 5.662 15.786-5.746-15.556-5.661z" style="fill:#2f6491;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="M307.694 371.705v18.282l15.786-5.745v-18.283z" style="fill:#3775a9;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="m292.139 366.043 15.555 5.662v18.282l-15.555-5.661zm15.623-24.145 15.556 5.662 15.785-5.746-15.555-5.662z" style="fill:#2f6491;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="M323.318 347.56v18.282l15.785-5.745v-18.283z" style="fill:#3775a9;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="m307.762 341.898 15.556 5.662v18.282l-15.556-5.661z" style="fill:#2f6491;fill-opacity:1;stroke:#ccc;stroke-width:.35507631;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none" transform="translate(-260.714 -252.848)"/><path d="M332.242 353.432a2.617 3.737 35 0 1-3.032 4.33 2.617 3.737 35 0 1-3.031-2.123 2.617 3.737 35 0 1 3.031-4.33 2.617 3.737 35 0 1 3.032 2.123z" style="fill:#fff;fill-opacity:1" transform="translate(-260.714 -252.848)"/><path d="M297.375 291.705c0-9.645-2.75-14.596-8.25-14.868a15.497 15.497 0 0 0-6.404 1.053c-1.66.594-2.776 1.181-3.364 1.775v23.022c3.519 2.208 6.643 3.234 9.368 3.073 5.765-.381 8.65-5.062 8.65-14.055zm6.785.4c0 4.9-1.149 8.968-3.46 12.202-2.576 3.66-6.146 5.546-10.71 5.649-3.441.11-6.985-.968-10.633-3.228v20.923l-5.9-2.104v-46.444c.968-1.187 2.214-2.207 3.725-3.073 3.512-2.046 7.779-3.098 12.801-3.15l.084.084c4.59-.058 8.128 1.827 10.614 5.649 2.317 3.505 3.48 7.998 3.48 13.492zm36.063 13.732c0 6.572-.659 11.123-1.976 13.654-1.323 2.53-3.84 4.552-7.56 6.056-3.014 1.188-6.275 1.833-9.774 1.943l-.974-3.719c3.557-.484 6.062-.968 7.514-1.452 2.86-.969 4.823-2.453 5.9-4.442.866-1.62 1.292-4.713 1.292-9.29v-1.536a30.317 30.317 0 0 1-12.686 2.744c-2.905 0-5.468-.91-7.676-2.744-2.479-1.995-3.718-4.526-3.718-7.592V274.9l5.9-2.021v24.72c0 2.64.852 4.673 2.557 6.1 1.704 1.427 3.912 2.111 6.617 2.06 2.705-.059 5.604-1.104 8.683-3.15v-28.84h5.9v32.067zm23.034 3.796c-.704.058-1.35.084-1.943.084-3.338 0-5.94-.794-7.799-2.389-1.853-1.594-2.782-3.796-2.782-6.604v-23.241h-4.042v-3.712h4.042v-9.858l5.894-2.098v11.956h6.63v3.712h-6.63v23.08c0 2.214.594 3.783 1.782 4.7 1.02.755 2.64 1.187 4.848 1.297v3.073zm35.727-.484h-5.9v-22.776c0-2.318-.543-4.313-1.621-5.978-1.246-1.885-2.976-2.828-5.197-2.828-2.705 0-6.088 1.427-10.149 4.28v27.302h-5.9v-54.442l5.9-1.86v24.797c3.77-2.743 7.89-4.118 12.363-4.118 3.125 0 5.655 1.052 7.592 3.15 1.943 2.098 2.912 4.713 2.912 7.837v24.636zm31.362-18.373c0-3.706-.703-6.766-2.104-9.187-1.666-2.95-4.255-4.506-7.754-4.668-6.469.375-9.697 5.01-9.697 13.893 0 4.074.672 7.476 2.028 10.207 1.73 3.48 4.325 5.197 7.785 5.139 6.495-.052 9.742-5.178 9.742-15.384zm6.463.038c0 5.275-1.35 9.665-4.042 13.17-2.963 3.925-7.056 5.894-12.279 5.894-5.177 0-9.212-1.969-12.124-5.894-2.64-3.505-3.957-7.895-3.957-13.17 0-4.958 1.426-9.128 4.28-12.524 3.015-3.602 6.979-5.41 11.879-5.41 4.9 0 8.89 1.808 11.962 5.41 2.854 3.396 4.28 7.566 4.28 12.524zm33.828 18.335h-5.9v-24.067c0-2.64-.795-4.7-2.383-6.185-1.588-1.479-3.705-2.195-6.346-2.137-2.802.052-5.468.968-7.999 2.744v29.645h-5.9v-30.375c3.396-2.472 6.52-4.086 9.374-4.842 2.692-.703 5.067-1.052 7.114-1.052 1.4 0 2.718.136 3.957.407 2.318.536 4.203 1.53 5.656 2.989 1.62 1.614 2.427 3.55 2.427 5.816v27.057z" style="fill:#646464;fill-opacity:1" transform="translate(-260.714 -252.848)"/><path d="M482.106 267.276h1.014v-6.358h2.401v-.758h-5.817v.758h2.402v6.358m4.314 0h.866v-5.807l1.88 5.806h.964l1.96-5.786v5.787h.944v-7.116h-1.25l-2.14 6.096-1.826-6.096h-1.398v7.116" style="font-style:normal;font-weight:400;font-size:15.16445827px;line-height:125%;font-family:"Bitstream Vera Sans";fill:#646464;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" transform="translate(-260.714 -252.848)"/><path d="M381.321 335.579h2.988v-6.183h2.68c3.632 0 6.414-1.726 6.414-5.461 0-3.916-2.73-5.204-6.415-5.204h-5.667v16.848zm2.988-8.579v-5.873h2.448c2.447 0 3.71.695 3.71 2.808 0 2.06-1.212 3.065-3.71 3.065h-2.448zm10.503 5.178c0 2.216 1.546 3.71 3.761 3.71 1.494 0 2.782-.747 3.916-1.7h.077l.232 1.39h2.421v-7.496c0-3.53-1.545-5.461-4.714-5.461-2.01 0-3.787.773-5.178 1.648l1.082 1.984c1.108-.67 2.293-1.236 3.555-1.236 1.7 0 2.267 1.133 2.293 2.473-5.178.566-7.445 1.983-7.445 4.688zm2.885-.232c0-1.262 1.134-2.164 4.56-2.602v2.834c-.928.876-1.726 1.391-2.757 1.391-1.056 0-1.803-.49-1.803-1.623zm10.316-2.679c0 4.2 2.653 6.62 6.105 6.62 1.443 0 2.963-.566 4.148-1.622l-1.237-1.88c-.695.566-1.571 1.081-2.602 1.081-1.983 0-3.374-1.674-3.374-4.199 0-2.55 1.416-4.225 3.452-4.225.798 0 1.468.335 2.138.928l1.417-1.88c-.85-.825-2.087-1.47-3.71-1.47-3.375 0-6.337 2.422-6.337 6.647zm12.749 6.312h2.91v-3.22l1.984-2.268 3.246 5.488h3.22l-4.765-7.497 4.328-5.152h-3.246l-4.689 5.822h-.077v-11.36h-2.911v18.187zm12.641-3.401c0 2.216 1.546 3.71 3.761 3.71 1.495 0 2.783-.747 3.916-1.7h.077l.232 1.39h2.422v-7.496c0-3.53-1.546-5.461-4.715-5.461-2.009 0-3.786.773-5.178 1.648l1.082 1.984c1.108-.67 2.293-1.236 3.555-1.236 1.7 0 2.267 1.133 2.293 2.473-5.178.566-7.445 1.983-7.445 4.688zm2.886-.232c0-1.262 1.133-2.164 4.56-2.602v2.834c-.928.876-1.727 1.391-2.757 1.391-1.056 0-1.803-.49-1.803-1.623zm12.763 5.487c0-.592.309-1.159.979-1.674.489.129 1.03.18 1.725.18h1.726c1.443 0 2.242.284 2.242 1.263 0 1.082-1.391 2.035-3.427 2.035-2.009 0-3.245-.67-3.245-1.804zm-2.474.438c0 2.216 2.242 3.298 5.256 3.298 4.122 0 6.75-1.958 6.75-4.457 0-2.19-1.598-3.117-4.638-3.117h-2.241c-1.546 0-2.06-.438-2.06-1.16 0-.566.231-.875.617-1.21a4.665 4.665 0 0 0 1.726.335c2.68 0 4.792-1.494 4.792-4.302 0-.876-.31-1.649-.721-2.138h2.318v-2.19h-4.534a5.7 5.7 0 0 0-1.855-.31c-2.653 0-4.997 1.624-4.997 4.535 0 1.494.798 2.705 1.648 3.349v.103c-.72.515-1.39 1.365-1.39 2.344 0 1.03.489 1.7 1.133 2.112v.103c-1.16.722-1.804 1.65-1.804 2.705zm5.41-8.166c-1.236 0-2.215-.927-2.215-2.55 0-1.597.979-2.5 2.215-2.5 1.237 0 2.19.928 2.19 2.5 0 1.623-.979 2.55-2.19 2.55zm7.597-.438c0 4.173 2.731 6.62 6.235 6.62 1.597 0 3.117-.566 4.328-1.365l-1.005-1.854c-.927.592-1.855.927-2.937.927-2.035 0-3.478-1.288-3.735-3.58h8.037c.077-.31.13-.825.13-1.392 0-3.53-1.804-6.002-5.23-6.002-2.963 0-5.823 2.524-5.823 6.646zm2.86-1.133c.258-2.113 1.546-3.22 3.04-3.22 1.726 0 2.576 1.21 2.576 3.22h-5.616zm-81.124 33.721h2.988v-16.848h-2.988v16.848zm6.988 0h2.962v-8.836c1.056-1.03 1.778-1.572 2.885-1.572 1.392 0 1.984.773 1.984 2.86v7.548h2.963v-7.935c0-3.194-1.185-5.023-3.89-5.023-1.726 0-3.014.901-4.148 2.01h-.103l-.206-1.701h-2.447v12.649zm13.667-6.312c0 4.173 2.035 6.62 5.204 6.62 1.365 0 2.653-.746 3.58-1.674h.104l.206 1.366h2.447v-18.188h-2.962v4.586l.103 2.035c-.98-.85-1.88-1.391-3.323-1.391-2.757 0-5.359 2.524-5.359 6.646zm3.066-.026c0-2.653 1.314-4.173 2.937-4.173.85 0 1.7.283 2.576 1.056v5.9c-.85.979-1.675 1.416-2.654 1.416-1.829 0-2.86-1.468-2.86-4.199zm11.424.026c0 4.173 2.73 6.62 6.234 6.62 1.597 0 3.117-.566 4.328-1.365l-1.005-1.854c-.927.592-1.855.927-2.937.927-2.035 0-3.477-1.288-3.735-3.58h8.037c.078-.31.13-.825.13-1.392 0-3.53-1.804-6.002-5.23-6.002-2.963 0-5.822 2.524-5.822 6.646zm2.86-1.133c.257-2.113 1.545-3.22 3.039-3.22 1.726 0 2.576 1.21 2.576 3.22h-5.616zm9.224 7.445h3.091l1.34-2.5c.36-.772.747-1.52 1.108-2.24h.103c.438.72.876 1.494 1.288 2.24l1.546 2.5h3.194l-4.019-6.26 3.736-6.39h-3.066l-1.21 2.397c-.31.695-.67 1.442-.98 2.138h-.103a87.248 87.248 0 0 1-1.16-2.138l-1.416-2.396h-3.194l3.76 6.054-4.018 6.595z" style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:medium;line-height:125%;font-family:"Source Sans Pro";-inkscape-font-specification:"Source Sans Pro Semi-Bold";letter-spacing:0;word-spacing:0;fill:#646464;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" transform="translate(-260.714 -252.848)"/></svg> diff --git a/docs/images/pytest_logo.svg b/docs/images/pytest_logo.svg new file mode 100644 index 00000000..6fbf0e5a --- /dev/null +++ b/docs/images/pytest_logo.svg @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="1500" height="1500" viewBox="0, 0, 1500, 1500"> + <g id="pytest_logo"> + <g id="graphics"> + <path d="M521.576,213.75 L952.616,213.75 C964.283,213.75 973.741,223.208 973.741,234.875 L973.741,234.875 C973.741,246.542 964.283,256 952.616,256 L521.576,256 C509.909,256 500.451,246.542 500.451,234.875 L500.451,234.875 C500.451,223.208 509.909,213.75 521.576,213.75 z" fill="#696969" id="horizontal_bar"/> + <g id="top_bars"> + <path d="M525.333,171 L612,171 L612,191 L525.333,191 L525.333,171 z" fill="#009FE3"/> + <path d="M638.667,171 L725.333,171 L725.333,191 L638.667,191 L638.667,171 z" fill="#C7D302"/> + <path d="M750.5,171 L837.167,171 L837.167,191 L750.5,191 L750.5,171 z" fill="#F07E16"/> + <path d="M861.861,171 L948.528,171 L948.528,191 L861.861,191 L861.861,171 z" fill="#DF2815"/> + </g> + <g id="bottom_bars"> + <path d="M861.861,278 L948.528,278 L948.528,424.5 L861.861,424.5 L861.861,278 z" fill="#DF2815"/> + <path d="M750.5,278 L837.328,278 L837.328,516 L750.5,516 L750.5,278 z" fill="#F07E16"/> + <path d="M638.667,278 L725.328,278 L725.328,634.5 L638.667,634.5 L638.667,278 z" fill="#C7D302"/> + <path d="M525.333,278 L612,278 L612,712.5 L525.333,712.5 L525.333,278 z" fill="#009FE3"/> + </g> + </g> + <g id="pytest"> + <path d="M252.959,1173.846 Q240.139,1173.846 229.71,1171.021 Q219.28,1168.196 210.914,1163.525 Q202.549,1158.853 196.139,1152.552 Q189.729,1146.25 184.732,1139.297 L182.124,1139.297 Q182.776,1146.685 183.428,1153.421 Q183.862,1159.07 184.297,1165.046 Q184.732,1171.021 184.732,1174.498 L184.732,1276.404 L145.186,1276.404 L145.186,930.921 L177.344,930.921 L182.993,963.079 L184.732,963.079 Q189.729,955.474 196.03,948.847 Q202.332,942.22 210.697,937.331 Q219.063,932.442 229.492,929.509 Q239.922,926.575 252.959,926.575 Q273.384,926.575 290.115,934.397 Q306.846,942.22 318.688,957.756 Q330.53,973.292 337.048,996.324 Q343.567,1019.356 343.567,1049.776 Q343.567,1080.413 337.048,1103.554 Q330.53,1126.695 318.688,1142.339 Q306.846,1157.984 290.115,1165.915 Q273.384,1173.846 252.959,1173.846 z M245.354,959.385 Q228.84,959.385 217.433,964.383 Q206.025,969.38 198.964,979.593 Q191.902,989.805 188.534,1005.015 Q185.166,1020.225 184.732,1040.867 L184.732,1049.776 Q184.732,1071.722 187.665,1088.779 Q190.598,1105.835 197.66,1117.46 Q204.722,1129.085 216.455,1135.06 Q228.189,1141.036 245.789,1141.036 Q275.122,1141.036 288.92,1117.352 Q302.717,1093.667 302.717,1049.341 Q302.717,1004.146 288.92,981.766 Q275.122,959.385 245.354,959.385 z" fill="#696969"/> + <path d="M370.293,930.921 L411.36,930.921 L458.076,1064.117 Q461.118,1072.808 464.269,1082.369 Q467.42,1091.929 470.136,1101.49 Q472.852,1111.05 474.807,1119.959 Q476.763,1128.868 477.632,1136.473 L478.936,1136.473 Q480.022,1131.041 482.412,1121.697 Q484.802,1112.354 487.736,1101.816 Q490.669,1091.277 493.82,1081.065 Q496.97,1070.853 499.36,1063.682 L542.6,930.921 L583.45,930.921 L489.148,1200.572 Q483.064,1218.172 476.002,1232.187 Q468.941,1246.202 459.597,1255.979 Q450.254,1265.757 437.651,1271.081 Q425.049,1276.404 407.666,1276.404 Q396.367,1276.404 388.11,1275.209 Q379.854,1274.014 373.987,1272.71 L373.987,1241.204 Q378.55,1242.291 385.503,1243.051 Q392.456,1243.812 400.061,1243.812 Q410.491,1243.812 418.096,1241.313 Q425.701,1238.814 431.35,1234.034 Q437,1229.253 441.019,1222.3 Q445.039,1215.347 448.298,1206.438 L460.684,1171.673 z" fill="#696969"/> + <path d="M695.568,1141.47 Q699.479,1141.47 704.368,1141.036 Q709.257,1140.601 713.82,1139.949 Q718.383,1139.297 722.186,1138.428 Q725.988,1137.559 727.944,1136.907 L727.944,1166.893 Q725.119,1168.196 720.773,1169.5 Q716.428,1170.804 711.213,1171.781 Q705.998,1172.759 700.349,1173.302 Q694.699,1173.846 689.267,1173.846 Q675.795,1173.846 664.279,1170.369 Q652.763,1166.893 644.398,1158.418 Q636.032,1149.944 631.252,1135.495 Q626.472,1121.045 626.472,1099.1 L626.472,960.689 L592.792,960.689 L592.792,943.089 L626.472,926.141 L643.42,876.165 L666.235,876.165 L666.235,930.921 L726.206,930.921 L726.206,960.689 L666.235,960.689 L666.235,1099.1 Q666.235,1120.176 673.079,1130.823 Q679.924,1141.47 695.568,1141.47 z" fill="#009FE3"/> + <path d="M868.527,1173.846 Q844.626,1173.846 824.853,1165.806 Q805.08,1157.767 790.848,1142.339 Q776.616,1126.912 768.793,1104.097 Q760.971,1081.282 760.971,1051.949 Q760.971,1022.398 768.142,999.148 Q775.312,975.899 788.349,959.711 Q801.386,943.523 819.529,935.049 Q837.673,926.575 859.619,926.575 Q881.13,926.575 898.295,934.289 Q915.461,942.002 927.412,956.017 Q939.362,970.032 945.772,989.697 Q952.182,1009.361 952.182,1033.262 L952.182,1057.815 L801.821,1057.815 Q802.907,1099.751 819.529,1119.524 Q836.152,1139.297 868.962,1139.297 Q880.043,1139.297 889.495,1138.211 Q898.947,1137.125 907.747,1135.06 Q916.547,1132.996 924.804,1129.845 Q933.061,1126.695 941.535,1122.784 L941.535,1157.984 Q932.844,1162.112 924.478,1165.154 Q916.113,1168.196 907.313,1170.152 Q898.513,1172.107 889.061,1172.977 Q879.609,1173.846 868.527,1173.846 z M858.749,959.385 Q833.979,959.385 819.529,976.333 Q805.08,993.282 802.69,1025.657 L909.594,1025.657 Q909.594,1010.882 906.661,998.605 Q903.727,986.329 897.535,977.637 Q891.342,968.946 881.782,964.166 Q872.221,959.385 858.749,959.385 z" fill="#009FE3"/> + <path d="M1155.126,1104.097 Q1155.126,1121.48 1148.825,1134.517 Q1142.524,1147.554 1130.682,1156.354 Q1118.84,1165.154 1102.109,1169.5 Q1085.378,1173.846 1064.518,1173.846 Q1040.834,1173.846 1023.886,1170.043 Q1006.938,1166.241 994.118,1158.853 L994.118,1122.784 Q1000.854,1126.26 1009.111,1129.628 Q1017.368,1132.996 1026.494,1135.604 Q1035.62,1138.211 1045.289,1139.841 Q1054.958,1141.47 1064.518,1141.47 Q1078.642,1141.47 1088.528,1139.08 Q1098.415,1136.69 1104.608,1132.236 Q1110.8,1127.781 1113.625,1121.371 Q1116.45,1114.961 1116.45,1107.139 Q1116.45,1100.403 1114.277,1094.971 Q1112.104,1089.539 1106.346,1084.216 Q1100.588,1078.892 1090.593,1073.46 Q1080.598,1068.028 1064.953,1061.292 Q1049.308,1054.556 1036.815,1048.038 Q1024.321,1041.519 1015.629,1033.479 Q1006.938,1025.44 1002.266,1014.902 Q997.595,1004.363 997.595,989.805 Q997.595,974.595 1003.57,962.753 Q1009.545,950.911 1020.41,942.872 Q1031.274,934.832 1046.484,930.704 Q1061.694,926.575 1080.38,926.575 Q1101.457,926.575 1118.948,931.138 Q1136.44,935.701 1152.084,943.089 L1138.395,975.03 Q1124.272,968.729 1109.388,964.057 Q1094.504,959.385 1079.077,959.385 Q1056.913,959.385 1046.266,966.664 Q1035.62,973.943 1035.62,987.415 Q1035.62,995.02 1038.118,1000.669 Q1040.617,1006.319 1046.701,1011.316 Q1052.785,1016.314 1062.997,1021.42 Q1073.21,1026.526 1088.42,1032.828 Q1104.064,1039.346 1116.341,1045.865 Q1128.618,1052.383 1137.309,1060.531 Q1146,1068.68 1150.563,1079.109 Q1155.126,1089.539 1155.126,1104.097 z" fill="#009FE3"/> + <path d="M1285.28,1141.47 Q1289.191,1141.47 1294.08,1141.036 Q1298.969,1140.601 1303.532,1139.949 Q1308.095,1139.297 1311.898,1138.428 Q1315.7,1137.559 1317.656,1136.907 L1317.656,1166.893 Q1314.831,1168.196 1310.485,1169.5 Q1306.14,1170.804 1300.925,1171.781 Q1295.71,1172.759 1290.06,1173.302 Q1284.411,1173.846 1278.979,1173.846 Q1265.507,1173.846 1253.991,1170.369 Q1242.475,1166.893 1234.109,1158.418 Q1225.744,1149.944 1220.964,1135.495 Q1216.183,1121.045 1216.183,1099.1 L1216.183,960.689 L1182.504,960.689 L1182.504,943.089 L1216.183,926.141 L1233.132,876.165 L1255.947,876.165 L1255.947,930.921 L1315.917,930.921 L1315.917,960.689 L1255.947,960.689 L1255.947,1099.1 Q1255.947,1120.176 1262.791,1130.823 Q1269.636,1141.47 1285.28,1141.47 z" fill="#009FE3"/> + </g> + </g> +<script xmlns=""/></svg> -- GitLab