Generates a coverage badge using coverage.py and the shields.io service.

Overview

Welcome to README Coverage Badger ๐Ÿ‘‹

PyPi PyPI - Python Version Build Status codecov pre-commit.ci status Updates PyPI - Downloads GitHub commits since latest release (by SemVer)

License Code style: black Conventional Commits Commitizen friendly

Generates a coverage badge using coverage.py and the shields.io service. Your README file is then updated with the generated badge.

demo.gif

Source Code: github.com/engineervix/readme-coverage-badger

Contents generated with DocToc

Why this project?

There are so many excellent coverage badge generation tools out there, why do we need another one? Well, at the time of writing this package (circa early 2021), all the existing tools (for example, coverage-badge) I had come across ended at generating SVG/PNG files/strings/Base64 images. What you do with this remains entirely up to you.

Now, it is often much easier to simply use online services such as codecov.io and coveralls.io. These services are free for open source projects, but require a monthly subscription for private repos. Many times, we work on private repos, and we wanna be able to automatically have coverage badges in our READMEs. What if you are unable to pay such subscription fees, or maybe you don't want to use a SaaS? Your solution becomes to generate your own badge!

This is where this project comes in. It automatically generates your project's coverage badge using the shields.io service, and then updates your README accordingly, in just one command! That's all it does, resonating with the Unix philosophy of doing one thing and doing it well. The main idea for this came from istanbul-badges-readme, which does exactly the same thing for JavaScript projects. You will see that these two projects have quite a lot in common.

After using istanbul-badges-readme, I searched for a python alternative but couldn't find anything suitable. The closest I found was coverage-badge, and if you look at this project's code, you will see a lot of similarities with coverage-badge!

If what you're looking for is a powerful, general purpose badge generation tool for your projects, then you should probably check out projects like anybadge and genbadge.

Features

  • automatically generates your project's coverage badge using the shields.io service, and then updates your project's README with the newly generated badge
  • simple CLI tool (readme-cov) with helpful messages
  • tested on python 3.6 to 3.9 with coverage โ‰ฅ 84%
  • free software: BSD-3-Clause license
  • generates different colours depending on the coverage percentage. Optionally generate plain colour (green) regardless of percentage
  • minimal external dependencies โ€“ this tool only has 2 external dependencies; Coverage.py (obviously!) and colorama (for cross-platform coloured terminal output)

The table below shows the coverage thresholds, associated colours and examples of generated badges:

Coverage Colour Example
0 โ‰ค coverage < 40 red Code Coverage Red
40 โ‰ค coverage < 60 orange Code Coverage Orange
60 โ‰ค coverage < 75 yellow Code Coverage Yellow
75 โ‰ค coverage < 90 yellowgreen Code Coverage Yellow Green
90 โ‰ค coverage < 95 green Code Coverage Green
95 โ‰ค coverage โ‰ค 100 brightgreen Code Coverage Bright Green

Installation

pip install readme-coverage-badger

Usage

Note: Before using the tool, ensure that you insert a string of the form ![Code Coverage]() or ![Code Coverage](anything here) in your project's README.

readme-cov [-h] [-v] [-p]

optional arguments:
  -h, --help     show the help message and exit
  -v, --version  show program's version number and exit
  -p, --plain    Plain colour mode. Standard green badge.

The tool operates on the basis of the following assumptions:

  • you have a README.md or README file at the root of your project
  • your README file is in markdown format. I know, some Pythonistas prefer restructuredtext! Sadly, this isn't supported (yet)
  • Somewhere in your your README is a string in the form: ![Code Coverage]() or ![Code Coverage](anything here). This is what gets updated in-place (using re.sub()) when the script runs.
  • the script is called from the root of your project repo, which has coverage.py already configured, and the coverage already updated (you have already run your tests prior to running the script)
  • If the coverage badge in your README file is already up to date, your README file won't be updated, you will only be notified

๐Ÿ’ป Development

First things first

Getting Started

First, fork this repository, then fire up your command prompt and ...

  1. Clone the forked repository
  2. Navigate to the cloned project directory: cd readme_coverage_badger
  3. activate your python virtual environment and pip install --upgrade pip
  4. Install dependencies: pip install -r requirements_dev.txt
  5. Setup pre-commit by running pre-commit install followed by pre-commit install --hook-type commit-msg. Optionally run pre-commit run --all-files to make sure your pre-commit setup is okay.

At this stage, hopefully everything should be working fine, and you should be able to start hacking on the project.

You can run the application via invoke run or

python readme_coverage_badger/__main__.py

Tests

Simply run pytest or invoke test to run tests in your virtual environment.

Test other Python versions by running tox.

Code Formatting

  • Run invoke lint to run flake8, black, isort and mypy on the code.
  • If you get any errors from black and/or isort, run invoke lint --fix or invoke lint -f so that black and isort can format your files. Alternatively, just run pre-commit. You can take a look at .pre-commit-config.yaml.

Author

๐Ÿ‘ค Victor Miti

๐Ÿค Contributing

Contributions, issues and feature requests are most welcome! A good place to start is by helping out with the unchecked items in the TODO section of this README!

Feel free to check the issues page and take a look at the contributing guide before you get started. In addition, please note the following:

  • if you're making code contributions, please try and write some tests to accompany your code, and ensure that the tests pass. Also, were necessary, update the docs so that they reflect your changes.
  • commit your changes via cz commit. Follow the prompts. When you're done, pre-commit will be invoked to ensure that your contributions and commits follow defined conventions. See pre-commit-config.yaml for more details.
  • your commit messages should follow the conventions described here. Write your commit message in the imperative: "Fix bug" and not "Fixed bug" or "Fixes bug." This convention matches up with commit messages generated by commands like git merge and git revert. Once you are done, please create a pull request.

Show your support

Please give a โญ๏ธ if this project helped you!

โœ… TODO

core

  • Cater for not only markdown but also restructuredtext, and automatically detect if a file's syntax is markdown or restructuredtext if no extension given
  • Provide option to generate badge in HTML format
  • Provide option to generate to stdout and skip substitution in a README file. This could be useful if you're using the tool in a script and you just want the result so that you can use it elsewhere.
  • Allow for flexibility in choosing whatever colours one wants
  • Allow for specifying Alt Text on the badge URL, for example ![Alt Text]() or ![Alt Text](anything here)
  • Make the codebase fully typed
  • Improve the Tests by parametrizing fixtures and test functions
  • improve CI/CD to cater for GNU/Linux, Mac OS X and Windows
  • Create pre-commit hook

docs

  • Add a screenshot / demo in this README
  • Create standalone documentation for hosting either on Github Pages or readthedocs. This README is already detailed enough to serve as documentation!

other

  • It would be fun if we had some kind of a badger logo!

๐Ÿ“ License

Copyright ยฉ 2021 Victor Miti.

This project is licensed under the terms of the BSD-3-Clause license.


This README was generated with โค๏ธ by readme-md-generator


Comments
  • build(deps-dev): bump invoke from 1.5.0 to 1.6.0

    build(deps-dev): bump invoke from 1.5.0 to 1.6.0

    Bumps invoke from 1.5.0 to 1.6.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • build(deps-dev): bump isort from 5.9.1 to 5.9.2

    build(deps-dev): bump isort from 5.9.1 to 5.9.2

    Bumps isort from 5.9.1 to 5.9.2.

    Release notes

    Sourced from isort's releases.

    5.9.2 July 8th 2021

    • Improved behavior of isort --check --atomic against Cython files.
    • Fixed #1769: Future imports added below assignments when no other imports present.
    • Fixed #1772: skip-gitignore will check files not in the git repository.
    • Fixed #1762: in some cases when skip-gitignore is set, isort fails to skip any files.
    • Fixed #1767: Encoding issues surfacing when invalid characters set in __init__.py files during placement.
    • Fixed #1771: Improved handling of skips against named streamed in content.
    Changelog

    Sourced from isort's changelog.

    5.9.2 July 8th 2021

    • Improved behavior of isort --check --atomic against Cython files.
    • Fixed #1769: Future imports added below assignments when no other imports present.
    • Fixed #1772: skip-gitignore will check files not in the git repository.
    • Fixed #1762: in some cases when skip-gitignore is set, isort fails to skip any files.
    • Fixed #1767: Encoding issues surfacing when invalid characters set in __init__.py files during placement.
    • Fixed #1771: Improved handling of skips against named streamed in content.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • build(deps-dev): bump faker from 8.9.1 to 8.10.0

    build(deps-dev): bump faker from 8.9.1 to 8.10.0

    Bumps faker from 8.9.1 to 8.10.0.

    Release notes

    Sourced from faker's releases.

    Release v8.10.0

    See CHANGELOG.md

    Changelog

    Sourced from faker's changelog.

    v8.10.0 - 2021-07-07

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • chore(deps-dev): bump commitizen from 2.17.11 to 2.17.12

    chore(deps-dev): bump commitizen from 2.17.11 to 2.17.12

    Bumps commitizen from 2.17.11 to 2.17.12.

    Changelog

    Sourced from commitizen's changelog.

    v2.17.12 (2021-07-06)

    Fix

    • git.py: ensure signed commits in changelog when git config log.showsignature=true
    Commits
    • 4dad5c8 bump: version 2.17.11 โ†’ 2.17.12
    • 7a470bb Merge pull request #398 from lobotmcj/397-changelog-excludes-signed-commits-w...
    • 184c439 test(git.py): Test get_commits() with a gpg-signed commit
    • 9eae518 fix(git.py): ensure signed commits in changelog when git config log.showsigna...
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    opened by dependabot[bot] 2
  • chore(deps): update actions/checkout action to v3

    chore(deps): update actions/checkout action to v3

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | actions/checkout | action | major | v2 -> v3 |


    Release Notes

    actions/checkout

    v3

    Compare Source


    Configuration

    ๐Ÿ“… Schedule: Branch creation - "after 10pm every weekday,every weekend" in timezone Africa/Lusaka, Automerge - At any time (no schedule defined).

    ๐Ÿšฆ Automerge: Disabled by config. Please merge this manually once you are satisfied.

    โ™ป Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    ๐Ÿ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

    python dependencies 
    opened by renovate[bot] 1
  • build(deps-dev): update precommit hook commitizen-tools/commitizen to v2.18.0

    build(deps-dev): update precommit hook commitizen-tools/commitizen to v2.18.0

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | commitizen-tools/commitizen | repository | minor | v2.17.13 -> v2.18.0 |


    Release Notes

    commitizen-tools/commitizen

    v2.18.0

    Compare Source

    Refactor
    • shortcuts: move check for shortcut config setting to apply to any list select
    Feat
    • prompt: add keyboard shortcuts with config option

    Configuration

    ๐Ÿ“… Schedule: "after 10pm every weekday,every weekend" in timezone Africa/Lusaka.

    ๐Ÿšฆ Automerge: Enabled.

    โ™ป Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    ๐Ÿ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

    python dependencies 
    opened by renovate[bot] 1
  • build(deps-dev): update precommit hook pycqa/isort to v5.9.3

    build(deps-dev): update precommit hook pycqa/isort to v5.9.3

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | PyCQA/isort | repository | patch | 5.9.2 -> 5.9.3 |


    Release Notes

    PyCQA/isort

    v5.9.3

    Compare Source

    • Improved text of skipped file message to mention gitignore feature.
      • Made all exceptions pickleable.
      • Fixed #โ€‹1779: Pylama integration ignores pylama specific isort config overrides.
      • Fixed #โ€‹1781: --from-first CLI flag shouldn't take any arguments.
      • Fixed #โ€‹1792: Sorting literals sometimes ignored when placed on first few lines of file.
      • Fixed #โ€‹1777: extend_skip is not honored wit a git submodule when skip_gitignore=true.

    Configuration

    ๐Ÿ“… Schedule: "after 10pm every weekday,every weekend" in timezone Africa/Lusaka.

    ๐Ÿšฆ Automerge: Enabled.

    โ™ป Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    ๐Ÿ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

    python dependencies 
    opened by renovate[bot] 1
  • Action Required: Fix Renovate Configuration

    Action Required: Fix Renovate Configuration

    There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

    Error type: Cannot find preset's package (github>whitesource/merge-confidence:beta)

    opened by renovate[bot] 1
  • build(deps-dev): update precommit hook pre-commit/mirrors-isort to v5.9.2

    build(deps-dev): update precommit hook pre-commit/mirrors-isort to v5.9.2

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | pre-commit/mirrors-isort | repository | patch | v5.9.1 -> v5.9.2 |


    Release Notes

    pre-commit/mirrors-isort

    v5.9.2

    Compare Source


    Configuration

    ๐Ÿ“… Schedule: "after 10pm every weekday,every weekend" in timezone Africa/Lusaka.

    ๐Ÿšฆ Automerge: Enabled.

    โ™ป Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    ๐Ÿ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

    opened by renovate[bot] 1
  • build(deps-dev): update precommit hook commitizen-tools/commitizen to v2.17.12

    build(deps-dev): update precommit hook commitizen-tools/commitizen to v2.17.12

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | commitizen-tools/commitizen | repository | patch | v2.17.11 -> v2.17.12 |


    Release Notes

    commitizen-tools/commitizen

    v2.17.12

    Compare Source

    Fix
    • git.py: ensure signed commits in changelog when git config log.showsignature=true

    Configuration

    ๐Ÿ“… Schedule: "after 10pm every weekday,every weekend" in timezone Africa/Lusaka.

    ๐Ÿšฆ Automerge: Enabled.

    โ™ป Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    ๐Ÿ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

    opened by renovate[bot] 1
  • Configure Renovate

    Configure Renovate

    WhiteSource Renovate

    Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

    ๐Ÿšฆ To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.


    Detected Package Files

    • .github/workflows/greetings.yml (github-actions)
    • .pre-commit-config.yaml (pre-commit)

    Configuration Summary

    Based on the default config's presets, Renovate will:

    • Start dependency updates only once this onboarding PR is merged
    • Separate major versions of dependencies into individual branches/PRs
    • Do not separate patch and minor upgrades into separate PRs for the same dependency
    • Upgrade to unstable versions only if the existing version is unstable
    • Raise PRs immediately (after branch is created)
    • If semantic commits detected, use semantic commit type fix for dependencies and chore for all others
    • Keep existing branches updated even when not scheduled
    • Disable automerging feature - wait for humans to merge all PRs
    • Ignore node_modules, bower_components, vendor and various test/tests directories
    • Autodetect whether to pin dependencies or maintain ranges
    • Rate limit PR creation to a maximum of two per hour
    • Limit to maximum 20 open PRs at any time
    • Group known monorepo packages together
    • Use curated list of recommended non-monorepo package groupings
    • Ignore spring cloud 1.x releases
    • Ignore http4s digest-based 1.x milestones
    • Use node versioning for @types/node
    • Limit concurrent requests to reduce load on Repology servers until we can fix this properly, see issue 10133

    ๐Ÿ”ก Would you like to change the way Renovate is upgrading your dependencies? Simply edit the renovate.json in this branch with your custom config and the list of Pull Requests in the "What to Expect" section below will be updated the next time Renovate runs.


    What to Expect

    With your current configuration, Renovate will create 2 Pull Requests:

    chore(deps): update precommit hook commitizen-tools/commitizen to v2.17.12
    • Schedule: ["at any time"]
    • Branch name: renovate/commitizen-tools-commitizen-2.x
    • Merge into: master
    • Upgrade commitizen-tools/commitizen to v2.17.12
    chore(deps): update precommit hook pre-commit/mirrors-isort to v5.9.2
    • Schedule: ["at any time"]
    • Branch name: renovate/pre-commit-mirrors-isort-5.x
    • Merge into: master
    • Upgrade pre-commit/mirrors-isort to v5.9.2

    โ“ Got questions? Check out Renovate's Docs, particularly the Getting Started section. If you need any further assistance then you can also request help here.


    This PR has been generated by WhiteSource Renovate. View repository job log here.

    opened by renovate[bot] 1
  • chore(deps): update codecov/codecov-action action to v3

    chore(deps): update codecov/codecov-action action to v3

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | codecov/codecov-action | action | major | v2 -> v3 |


    Release Notes

    codecov/codecov-action

    v3

    Compare Source


    Configuration

    ๐Ÿ“… Schedule: Branch creation - "after 10pm every weekday,every weekend" in timezone Africa/Lusaka, Automerge - At any time (no schedule defined).

    ๐Ÿšฆ Automerge: Disabled by config. Please merge this manually once you are satisfied.

    โ™ป Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    ๐Ÿ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    python dependencies 
    opened by renovate[bot] 1
  • chore(deps): update actions/setup-python action to v4

    chore(deps): update actions/setup-python action to v4

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | actions/setup-python | action | major | v2 -> v4 |


    Release Notes

    actions/setup-python

    v4

    Compare Source

    v3

    Compare Source


    Configuration

    ๐Ÿ“… Schedule: Branch creation - "after 10pm every weekday,every weekend" in timezone Africa/Lusaka, Automerge - At any time (no schedule defined).

    ๐Ÿšฆ Automerge: Disabled by config. Please merge this manually once you are satisfied.

    โ™ป Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    ๐Ÿ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    python dependencies 
    opened by renovate[bot] 1
  • chore(deps): update dependency coverage to v6

    chore(deps): update dependency coverage to v6

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | coverage | <6 -> <7 | age | adoption | passing | confidence |


    Release Notes

    nedbat/coveragepy

    v6.5.0

    Compare Source

    • The JSON report now includes details of which branches were taken, and which are missing for each file. Thanks, Christoph Blessing <pull 1438_>. Closes issue 1425.

    • Starting with coverage.py 6.2, class statements were marked as a branch. This wasn't right, and has been reverted, fixing issue 1449_. Note this will very slightly reduce your coverage total if you are measuring branch coverage.

    • Packaging is now compliant with PEP 517, closing issue 1395.

    • A new debug option --debug=pathmap shows details of the remapping of paths that happens during combine due to the [paths] setting.

    • Fix an internal problem with caching of invalid Python parsing. Found by OSS-Fuzz, fixing their bug 50381_.

    .. _bug 50381: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=50381 .. _PEP 517: https://peps.python.org/pep-0517/ .. _issue 139https://github.com/nedbat/coveragepy/issues/1395395 .. _issue 14https://github.com/nedbat/coveragepy/issues/14251425 .. _issue 1https://github.com/nedbat/coveragepy/issues/1449/1449 .. _pull https://github.com/nedbat/coveragepy/pull/1438l/1438

    .. _changes_6-4-4:

    v6.4.4

    Compare Source

    • Wheels are now provided for Python 3.11.

    .. _changes_6-4-3:

    v6.4.3

    Compare Source

    • Fix a failure when combining data files if the file names contained glob-like patterns. Thanks, Michael Krebs and Benjamin Schubert <pull 1405_>_.

    • Fix a messaging failure when combining Windows data files on a different drive than the current directory, closing issue 1428. Thanks, Lorenzo Micรฒ <pull 1430_>.

    • Fix path calculations when running in the root directory, as you might do in a Docker container. Thanks Arthur Rio <pull 1403_>_.

    • Filtering in the HTML report wouldn't work when reloading the index page. This is now fixed. Thanks, Marc Legendre <pull 1413_>_.

    • Fix a problem with Cython code measurement, closing issue 972. Thanks, Matus Valo <pull 1347_>.

    .. _issue 972:https://github.com/nedbat/coveragepy/issues/9722 .. _issue 1428https://github.com/nedbat/coveragepy/issues/142828 .. _pull 134https://github.com/nedbat/coveragepy/pull/1347347 .. _pull 14https://github.com/nedbat/coveragepy/issues/14031403 .. _pull 1https://github.com/nedbat/coveragepy/issues/1405/1405 .. _pull https://github.com/nedbat/coveragepy/issues/1413s/1413 .. _pullhttps://github.com/nedbat/coveragepy/pull/1430ll/1430

    .. _changes_6-4-2:

    v6.4.2

    Compare Source

    • Updated for a small change in Python 3.11.0 beta 4: modules now start with a line with line number 0, which is ignored. This line cannnot be executed, so coverage totals were thrown off. This line is now ignored by coverage.py, but this also means that truly empty modules (like __init__.py) have no lines in them, rather than one phantom line. Fixes issue 1419_.

    • Internal debugging data added to sys.modules is now an actual module, to avoid confusing code that examines everything in sys.modules. Thanks, Yilei Yang <pull 1399_>_.

    .. _issue 1419:https://github.com/nedbat/coveragepy/issues/14199 .. _pull 1399https://github.com/nedbat/coveragepy/pull/139999

    .. _changes_6-4-1:

    v6.4.1

    Compare Source

    • Greatly improved performance on PyPy, and other environments that need the pure Python trace function. Thanks, Carl Friedrich Bolz-Tereick (pull 1381_ and pull 1388). Slightly improved performance when using the C trace function, as most environments do. Closes issue 1339.

    • The conditions for using tomllib from the standard library have been made more precise, so that 3.11 alphas will continue to work. Closes issue 1390_.

    .. _issue 1339:https://github.com/nedbat/coveragepy/issues/13399 .. _pull 1381https://github.com/nedbat/coveragepy/pull/138181 .. _pull 138https://github.com/nedbat/coveragepy/pull/1388388 .. _issue 13https://github.com/nedbat/coveragepy/issues/13901390

    .. _changes_64:

    v6.4

    Compare Source

    • Wheels are now provided for Python 3.11.

    .. _changes_6-4-3:

    v6.3.3

    Compare Source

    • Fix: Coverage.py now builds successfully on CPython 3.11 (3.11.0b1) again. Closes issue 1367_. Some results for generators may have changed.

    .. _issue 1367:https://github.com/nedbat/coveragepy/issues/13677

    .. _changes_632:

    v6.3.2

    Compare Source

    • Fix: adapt to pypy3.9's decorator tracing behavior. It now traces function decorators like CPython 3.8: both the @โ€‹-line and the def-line are traced. Fixes issue 1326_.

    • Debug: added pybehave to the list of :ref:coverage debug <cmd_debug> and :ref:cmd_run_debug options.

    • Fix: show an intelligible error message if --concurrency=multiprocessing is used without a configuration file. Closes issue 1320_.

    .. _issue 1320:https://github.com/nedbat/coveragepy/issues/13200 .. _issue 1326https://github.com/nedbat/coveragepy/issues/132626

    .. _changes_631:

    v6.3.1

    Compare Source

    • Fix: deadlocks could occur when terminating processes. Some of these deadlocks (described in issue 1310_) are now fixed.

    • Fix: a signal handler was being set from multiple threads, causing an error: "ValueError: signal only works in main thread". This is now fixed, closing issue 1312_.

    • Fix: --precision on the command-line was being ignored while considering --fail-under. This is now fixed, thanks to Marcelo Trylesinski <pull 1317_>_.

    • Fix: releases no longer provide 3.11.0-alpha wheels. Coverage.py uses CPython internal fields which are moving during the alpha phase. Fixes issue 1316_.

    .. _issue 1310:https://github.com/nedbat/coveragepy/issues/13100 .. _issue 1312https://github.com/nedbat/coveragepy/issues/131212 .. _issue 131https://github.com/nedbat/coveragepy/issues/1316316 .. _pull 13https://github.com/nedbat/coveragepy/pull/13171317

    .. _changes_63:

    v6.3

    Compare Source

    • Fix: Coverage.py now builds successfully on CPython 3.11 (3.11.0b1) again. Closes issue 1367_. Some results for generators may have changed.

    .. _issue 1367:https://github.com/nedbat/coveragepy/issues/13677

    .. _changes_632:

    v6.2

    Compare Source

    • Feature: Now the --concurrency setting can now have a list of values, so that threads and another lightweight threading package can be measured together, such as --concurrency=gevent,thread. Closes issue 1012_ and issue 1082_.

    • Fix: A module specified as the source setting is imported during startup, before the user program imports it. This could cause problems if the rest of the program isn't ready yet. For example, issue 1203_ describes a Django setting that is accessed before settings have been configured. Now the early import is wrapped in a try/except so errors then don't stop execution.

    • Fix: A colon in a decorator expression would cause an exclusion to end too early, preventing the exclusion of the decorated function. This is now fixed.

    • Fix: The HTML report now will not overwrite a .gitignore file that already exists in the HTML output directory (follow-on for issue 1244_).

    • API: The exceptions raised by Coverage.py have been specialized, to provide finer-grained catching of exceptions by third-party code.

    • API: Using suffix=False when constructing a Coverage object with multiprocessing wouldn't suppress the data file suffix (issue 989_). This is now fixed.

    • Debug: The coverage debug data command will now sniff out combinable data files, and report on all of them.

    • Debug: The coverage debug command used to accept a number of topics at a time, and show all of them, though this was never documented. This no longer works, to allow for command-line options in the future.

    .. _issue 989:https://github.com/nedbat/coveragepy/issues/9899 .. _issue 1012https://github.com/nedbat/coveragepy/issues/101212 .. _issue 108https://github.com/nedbat/coveragepy/issues/1082082 .. _issue 12https://github.com/nedbat/coveragepy/issues/12031203

    .. _changes_612:

    v6.1.2

    Compare Source

    • Python 3.11 is supported (tested with 3.11.0a2). One still-open issue has to do with exits through with-statements <issue 1270_>_.

    • Fix: When remapping file paths through the [paths] setting while combining, the [run] relative_files setting was ignored, resulting in absolute paths for remapped file names (issue 1147_). This is now fixed.

    • Fix: Complex conditionals over excluded lines could have incorrectly reported a missing branch (issue 1271_). This is now fixed.

    • Fix: More exceptions are now handled when trying to parse source files for reporting. Problems that used to terminate coverage.py can now be handled with [report] ignore_errors. This helps with plugins failing to read files (django_coverage_plugin issue 78_).

    • Fix: Removed another vestige of jQuery from the source tarball (issue 840_).

    • Fix: Added a default value for a new-to-6.x argument of an internal class. This unsupported class is being used by coveralls (issue 1273_). Although I'd rather not "fix" unsupported interfaces, it's actually nicer with a default value.

    .. _django_coverage_plugin issue 78:https://github.com/nedbat/django_coverage_plugin/issues/788 .. _issue 1147https://github.com/nedbat/coveragepy/issues/114747 .. _issue 127https://github.com/nedbat/coveragepy/issues/1270270 .. _issue 12https://github.com/nedbat/coveragepy/issues/12711271 .. _issue 1https://github.com/nedbat/coveragepy/issues/1273/1273

    .. _changes_611:

    v6.1.1

    Compare Source

    • Fix: The sticky header on the HTML report didn't work unless you had branch coverage enabled. This is now fixed: the sticky header works for everyone. (Do people still use coverage without branch measurement!? j/k)

    • Fix: When using explicitly declared namespace packages, the "already imported a file that will be measured" warning would be issued (issue 888_). This is now fixed.

    .. _issue 888:https://github.com/nedbat/coveragepy/issues/8888

    .. _changes_61:

    v6.1

    Compare Source

    • Python 3.11 is supported (tested with 3.11.0a2). One still-open issue has to do with exits through with-statements <issue 1270_>_.

    • Fix: When remapping file paths through the [paths] setting while combining, the [run] relative_files setting was ignored, resulting in absolute paths for remapped file names (issue 1147_). This is now fixed.

    • Fix: Complex conditionals over excluded lines could have incorrectly reported a missing branch (issue 1271_). This is now fixed.

    • Fix: More exceptions are now handled when trying to parse source files for reporting. Problems that used to terminate coverage.py can now be handled with [report] ignore_errors. This helps with plugins failing to read files (django_coverage_plugin issue 78_).

    • Fix: Removed another vestige of jQuery from the source tarball (issue 840_).

    • Fix: Added a default value for a new-to-6.x argument of an internal class. This unsupported class is being used by coveralls (issue 1273_). Although I'd rather not "fix" unsupported interfaces, it's actually nicer with a default value.

    .. _django_coverage_plugin issue 78:https://github.com/nedbat/django_coverage_plugin/issues/788 .. _issue 1147https://github.com/nedbat/coveragepy/issues/114747 .. _issue 127https://github.com/nedbat/coveragepy/issues/1270270 .. _issue 12https://github.com/nedbat/coveragepy/issues/12711271 .. _issue 1https://github.com/nedbat/coveragepy/issues/1273/1273

    .. _changes_611:

    v6.0.2

    Compare Source

    • Namespace packages being measured weren't properly handled by the new code that ignores third-party packages. If the namespace package was installed, it was ignored as a third-party package. That problem (issue 1231_) is now fixed.

    • Packages named as "source packages" (with source, or source_pkgs, or pytest-cov's --cov) might have been only partially measured. Their top-level statements could be marked as unexecuted, because they were imported by coverage.py before measurement began (issue 1232_). This is now fixed, but the package will be imported twice, once by coverage.py, then again by your test suite. This could cause problems if importing the package has side effects.

    • The :meth:.CoverageData.contexts_by_lineno method was documented to return a dict, but was returning a defaultdict. Now it returns a plain dict. It also no longer returns negative numbered keys.

    .. _issue 1231:https://github.com/nedbat/coveragepy/issues/12311 .. _issue 1232https://github.com/nedbat/coveragepy/issues/123232

    .. _changes_601:

    v6.0.1

    Compare Source

    • In 6.0, the coverage.py exceptions moved from coverage.misc to coverage.exceptions. These exceptions are not part of the public supported API, CoverageException is. But a number of other third-party packages were importing the exceptions from coverage.misc, so they are now available from there again (issue 1226_).

    • Changed an internal detail of how tomli is imported, so that tomli can use coverage.py for their own test suite (issue 1228_).

    • Defend against an obscure possibility under code obfuscation, where a function can have an argument called "self", but no local named "self" (pull request 1210_). Thanks, Ben Carlsson.

    .. _pull request 1210:https://github.com/nedbat/coveragepy/pull/12100 .. _issue 1226https://github.com/nedbat/coveragepy/issues/122626 .. _issue 122https://github.com/nedbat/coveragepy/issues/1228228

    .. _changes_60:

    v6.0

    Compare Source

    • Changes to file pattern matching, which might require updating your configuration:

      • Previously, * would incorrectly match directory separators, making precise matching difficult. This is now fixed, closing issue 1407_.

      • Now ** matches any number of nested directories, including none.

    • Improvements to combining data files when using the :ref:config_run_relative_files setting:

      • During coverage combine, relative file paths are implicitly combined without needing a [paths] configuration setting. This also fixed issue 991_.

      • A [paths] setting like */foo will now match foo/bar.py so that relative file paths can be combined more easily.

      • The setting is properly interpreted in more places, fixing issue 1280_.

    • Fixed environment variable expansion in pyproject.toml files. It was overly broad, causing errors outside of coverage.py settings, as described in issue 1481_ and issue 1345_. This is now fixed, but in rare cases will require changing your pyproject.toml to quote non-string values that use environment substitution.

    • Fixed internal logic that prevented coverage.py from running on implementations other than CPython or PyPy (issue 1474_).

    .. _issue 991:https://github.com/nedbat/coveragepy/issues/9911 .. _issue 1280https://github.com/nedbat/coveragepy/issues/128080 .. _issue 134https://github.com/nedbat/coveragepy/issues/1345345 .. _issue 14https://github.com/nedbat/coveragepy/issues/14071407 .. _issue 1https://github.com/nedbat/coveragepy/issues/1474/1474 .. _issue https://github.com/nedbat/coveragepy/issues/1481s/1481

    .. _changes_6-5-0:


    Configuration

    ๐Ÿ“… Schedule: Branch creation - "after 10pm every weekday,every weekend" in timezone Africa/Lusaka, Automerge - At any time (no schedule defined).

    ๐Ÿšฆ Automerge: Disabled by config. Please merge this manually once you are satisfied.

    โ™ป Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    ๐Ÿ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    python dependencies 
    opened by renovate[bot] 0
  • Dependency Dashboard

    Dependency Dashboard

    This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

    Open

    These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

    Detected dependencies

    github-actions
    .github/workflows/dispatch.yml
    • actions/checkout v3
    • actions/setup-python v2
    • codecov/codecov-action v2
    • actions/checkout v3
    • actions/setup-python v2
    • softprops/action-gh-release v1
    .github/workflows/greetings.yml
    • actions/first-interaction v1
    .github/workflows/main.yml
    • actions/checkout v3
    • actions/setup-python v2
    • codecov/codecov-action v2
    • actions/checkout v3
    • actions/setup-python v2
    • softprops/action-gh-release v1
    setup-cfg
    setup.cfg
    • coverage <6

    • [ ] Check this box to trigger a request for Renovate to run again on this repository
    opened by renovate[bot] 0
Releases(v0.1.2)
Owner
Victor Miti
Passionate about technology. Learning something new everyday. #pythonista
Victor Miti
Group Management Bot

โค๏ธ ๐—ฆ๐—›๐—”๐——๐—œ๐—ฌ๐—ข โค๏ธ A Powerful, Smart And Advance Group Manager ... Written with AioGram , Pyrogram and Telethon... โญ๏ธ Thanks to everyone who starred

Abdisamad Omar Mohamed 4 Dec 01, 2021
This is a simple program that uses Python and pyTwitchAPI to retrieve the list of users in a streamer's chat and then checks each one of these users to see if they follow the broadcaster or not

This is a simple program that uses Python and pyTwitchAPI to retrieve the list of users in a streamer's chat and then checks each one of these users to see if they follow the broadcaster or not

RwinShow 57 Dec 18, 2022
๐Ÿ”ฎ Uncover some followers of a private instagram account

Private Instagram Chaining ๐Ÿ”ฎ Uncover part of followers of an instagram private account I have this private instagram account julianakhao. I need to g

ะฐัั‚ 69 Dec 17, 2022
Discord bot for calculating basic operations and formulas. (Early Development)

MathBot Discord bot for calculating basic operations and formulas. (Early Development) Commits Feel free to contribute to this bot by forking and pull

4 Jul 14, 2022
๐Ÿ”ฎ A usefull set of scripts to dig into your Discord data package.

Discord DataExtractor ๐Ÿ”ฎ Discord DataExtractor is a set of scripts that allows you to dig into your Discord Data package. Repository guide โ˜• Coffee_Ga

3 Dec 29, 2021
A user reconnaisance tool that extracts a target's information from Instagram, DockerHub & Github.

A user reconnaisance tool that extracts a target's information from Instagram, DockerHub & Github. Also searches for matching usernames on Github.

Richard Mwewa 127 Dec 22, 2022
multi-purpose discord bot

virus multi-purpose discord bot โš ๏ธ WARNING This project is incomplete and may not work as expected. Download & Run Install Python =3.10 Clone the sou

miten 2 Jan 17, 2022
A Telegram Bot which will ask new Group Members to verify them by solving an emoji captcha.

Emoji-Captcha-Bot A Telegram Bot which will ask new Group Members to verify them by solving an emoji captcha. About API: Using api.abirhasan.wtf/captc

Abir Hasan 52 Dec 11, 2022
GG Dorking is a tool to generate GitHub and Google dorking for pentesters and bug bounty hunters.

GG-Dorking GG Dorking is a python tool to generate GitHub and Google dorking links for pentesters and bug bounty hunters. It will help you to find imp

Eslam Akl 80 Nov 24, 2022
Crypto-trading-simulator - Cryptocurrency trading simulator using Python, Streamlit

Crypto Trading Simulator Run streamlit run main.py Dependency Python 3 streamli

Brad 12 Jul 02, 2022
Demo to explain how to use AWS Chalice to connect to twitter API and change profile picture at scheduled times.

chalice-twitter-demo Demo to explain how to use AWS Chalice to connect to twitter API and change profile picture at scheduled times. Video Demo Click

Ahmed Mohamed 4 Dec 13, 2021
A Bot to get RealTime Tweets to a Specific Chats from Desired Persons on Twitter to Telegram Chat.

TgTwitterStreamer A Bot to get RealTime Tweets to a Specific Chats from Desired Persons on Twitter to Telegram Chat. For Getting ENV's Refer this Link

Anonymous 69 Dec 20, 2022
Python script using Twitter API to change user banner to see 100DaysOfCode process.

100DaysOfCode - Automatic Banners ๐Ÿ‘ฉโ€๐Ÿ’ป Adds a number to your twitter banner indicating the number of days you have in the #100DaysOfCode challenge Se

Ingrid Echeverri 10 Jul 06, 2022
PS3API - PS3 API for TMAPI and CCAPI in python.

PS3API PS3 API for TMAPI and CCAPI in python. Examples Connecting and Attaching from ps3api import PS3API PS3 = PS3API(PS3API.API_TMAPI) if PS3.Conn

Adam 9 Sep 01, 2022
Apex lets you build, deploy, and manage AWS Lambda functions with ease.

No longer maintained This software is no longer being maintainted and should not be chosen for new projects. See this issue for more information Apex

Apex 25 Dec 23, 2022
This is a tutorial on how to make a Discord Bot using the discord.py library

HowToMakeADiscordBot This Github repository is here to help you code a Discord Bot using the discord.py library! 1 - Setup: Download the code inside t

Baz 1 Oct 31, 2021
Telegram bot to stream videos in telegram voicechat for both groups and channels. Supports live strams, YouTube videos and telegram media.

Telegram bot to stream videos in telegram voicechat for both groups and channels. Supports live strams, YouTube videos and telegram media.

SUBIN 449 Dec 27, 2022
A badge generator service to count visitors of your markdown file.

Github Visitors Badge A badge generator service to count visitors of your markdown file. Hello every one! In this post, I will tell you the story of m

Kษช๊œฑแด€ส€แด€ Pแด‡๊œฑแด€ษดแดŠษชแด›สœ Pแด‡ส€แด‡ส€แด€ ใ€„ 1 Feb 06, 2022
API generated by OpenAPI for nhentai.net

nhentai-api No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) This Python package is automati

Shikanime Deva 1 Nov 01, 2021
Copier template for solving Advent of Code puzzles with Python

Advent of Code Python Template for Copier This template creates scaffolding for one day of Advent of Code. It includes tests and can download your per

Geir Arne Hjelle 6 Dec 25, 2022