{"id":17552360,"url":"https://github.com/saschpe/rapport","last_synced_at":"2026-02-16T05:34:05.799Z","repository":{"id":7578813,"uuid":"8933860","full_name":"saschpe/rapport","owner":"saschpe","description":"Work report generator for the lazy™","archived":false,"fork":false,"pushed_at":"2018-03-06T07:45:32.000Z","size":238,"stargazers_count":10,"open_issues_count":17,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-24T23:44:50.659Z","etag":null,"topics":["bugzilla","github","launchpad","mediawiki","openbuildservice","python","trello","twitter","work-report"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saschpe.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-03-21T17:00:54.000Z","updated_at":"2025-01-08T21:38:11.000Z","dependencies_parsed_at":"2022-08-28T13:52:09.069Z","dependency_job_id":null,"html_url":"https://github.com/saschpe/rapport","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/saschpe/rapport","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saschpe%2Frapport","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saschpe%2Frapport/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saschpe%2Frapport/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saschpe%2Frapport/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saschpe","download_url":"https://codeload.github.com/saschpe/rapport/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saschpe%2Frapport/sbom","scorecard":{"id":801110,"data":{"date":"2025-08-11","repo":{"name":"github.com/saschpe/rapport","commit":"ccceb8f84bd7e8add88ab5e137cdab6424aa4683"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.1,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 16 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"28 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2021-16 / GHSA-93xj-8mrv-444m","Warn: Project is vulnerable to: PYSEC-2020-46 / GHSA-gg84-qgv9-w4pq","Warn: Project is vulnerable to: PYSEC-2014-81 / GHSA-q48q-77qv-cf9p","Warn: Project is vulnerable to: PYSEC-2019-217 / GHSA-462w-v97r-4m45","Warn: Project is vulnerable to: PYSEC-2014-8 / GHSA-8r7q-cvjq-x353","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: PYSEC-2014-82 / GHSA-fqh9-2qgg-h84h","Warn: Project is vulnerable to: PYSEC-2021-66 / GHSA-g3rq-g295-4j3m","Warn: Project is vulnerable to: GHSA-h5c8-rqwp-cp95","Warn: Project is vulnerable to: GHSA-h75v-3vvj-5mfj","Warn: Project is vulnerable to: PYSEC-2019-220 / GHSA-hj2j-77xm-mc5v","Warn: Project is vulnerable to: GHSA-q2x7-8rv6-6q7h","Warn: Project is vulnerable to: GHSA-55x5-fj6c-h6m8","Warn: Project is vulnerable to: PYSEC-2014-9 / GHSA-57qw-cc2g-pv5p","Warn: Project is vulnerable to: PYSEC-2021-19 / GHSA-jq4v-f5q6-mjqq","Warn: Project is vulnerable to: GHSA-pgww-xf46-h92r","Warn: Project is vulnerable to: PYSEC-2022-230 / GHSA-wrxv-2j5q-m38w","Warn: Project is vulnerable to: PYSEC-2018-12 / GHSA-xp26-p53h-6h2p","Warn: Project is vulnerable to: PYSEC-2018-19 / GHSA-232r-66cg-79px","Warn: Project is vulnerable to: PYSEC-2008-8 / GHSA-wqmm-q65g-2hqr","Warn: Project is vulnerable to: PYSEC-2022-166","Warn: Project is vulnerable to: PYSEC-2014-88 / GHSA-2q4h-27m7-rj67","Warn: Project is vulnerable to: PYSEC-2014-14 / GHSA-652x-xj99-gmcc","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2014-13 / GHSA-cfj3-7x9c-4p3h","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg","Warn: Project is vulnerable to: PYSEC-2012-17 / GHSA-pwx5-xg7g-wpc5"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T10:30:12.508Z","repository_id":7578813,"created_at":"2025-08-23T10:30:12.508Z","updated_at":"2025-08-23T10:30:12.508Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29500832,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T03:57:51.541Z","status":"ssl_error","status_checked_at":"2026-02-16T03:55:59.854Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bugzilla","github","launchpad","mediawiki","openbuildservice","python","trello","twitter","work-report"],"created_at":"2024-10-21T05:04:05.702Z","updated_at":"2026-02-16T05:34:05.784Z","avatar_url":"https://github.com/saschpe.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Rapport: Work report generator for the lazy\n===========================================\n\n.. image:: https://travis-ci.org/saschpe/rapport.png?branch=master\n        :target: https://travis-ci.org/saschpe/rapport\n\n.. image:: https://img.shields.io/pypi/dm/rapport.svg\n        :target: https://pypi.python.org/pypi/rapport\n\n.. image:: https://img.shields.io/pypi/v/rapport.svg\n        :target: https://pypi.python.org/pypi/rapport\n\nWriting work reports is tedious. Some people have custom hacks. This is meant\nto be the last one. It's Apache-2.0 licensed and written in Python, not\nVimScript, not Bash, not Ruby, not C, ..., you probably got it ;-)\n\n\nFeatures\n--------\n\n- Asynchronously collects data from various resources:\n\n  - Bugzilla\n  - Gerrit\n  - Github\n  - Launchpad\n  - MediaWiki\n  - OpenBuildService\n  - Trello\n  - Twitter\n\n- Supports plugins for extendability\n- Simple ini-style config file\n- (Almost) comprehensive unit and functional testsuite\n- Supports creating work reports for arbitrary timeframes and provides some convenient ones:\n\n  - Current week / month\n  - Recent days\n  - Week / month of of year\n  - Generic\n\n\nInstallation\n------------\n\nTo install rapport from the `Python Package Index`_, simply:\n\n.. code-block:: bash\n\n    $ pip install rapport\n\nOr, if you absolutely must:\n\n.. code-block:: bash\n\n    $ easy_install rapport\n\nBut, you really shouldn't do that. Lastly, you can check your distro of choice\nif they provide packages. For openSUSE, you can find packages in the `Open\nBuild Service`_ for all releases. If you happen to use openSUSE:Factory (the\nrolling release / development version), simply:\n\n.. code-block:: bash\n\n    $ sudo zypper install rapport\n\n\nUsage\n-----\n\nRapport allows to query various upstream resources for modifications you made.\nSo before creating your first work report, you should check rapport's config\nfile and add your credentials to the resources you are interested in.\n\n.. TODO: Explain configuration\n\nBy default, rapport creates a work report for the current weak, so from Monday\nuntil *now* (And yes, i18n and i10n are on the TODO list). You can also set the\ntimeframe to consider explicitly. For instance, you could generate a work\nreport for the last 10 days:\n\n.. code-block:: bash\n\n    $ rapport create --recent-days 10\n\nCheck the help of the *create* command for other options:\n\n.. code-block:: bash\n\n    $ rapport create --help\n\nYou can show a list of all previous work reports:\n\n.. code-block:: bash\n\n    $ rapport list\n\nAnd display details for a specific work report:\n\n.. code-block:: bash\n\n    $ rapport show 2013-05-21T09:27:43\n\nOr display the latest work report by:\n\n.. code-block:: bash\n\n    $ rapport show\n\nIf you need further assistance, check rapport's help:\n\n.. code-block:: bash\n\n    $ rapport help\n\n\nHacking and contributing\n------------------------\n\nYou can test rapport from your git checkout by executing the rapport.cli module:\n\n.. code-block:: bash\n\n    $ python -m rapport.cli\n\nAlternatively, you can invoke the convenience script wrapper:\n\n.. code-block:: bash\n\n    $ ./scripts/rapport\n\nFork `the repository`_ on Github to start making your changes to the **master**\nbranch (or branch off of it). Don't forget to write a test for fixed issues or\nimplemented features whenever appropriate. You can invoke the testsuite from\nthe repository root directory via:\n\n.. code-block:: bash\n\n    $ python setup.py test\n\nOr by running `nose`_ directly:\n\n.. code-block:: bash\n\n    $ nosetests\n\nBoth assume you have the test dependencies installed (available on PYTHONPATH)\non your system. If that doesn't work for you, you can create a `virtual\nenvironment`_ instead:\n\n.. code-block:: bash\n\n    $ virtualenv .venv\n    $ source .venv/bin/activate\n    (.venv)$ pip install -r test-requirements.txt \n    (.venv)$ nosetests\n\nLastly, if using virtualenv is too tedious or you want to test different\nconfigurations (py26, py27, py33, pep8), you can also use `tox`_:\n\n.. code-block:: bash\n\n    $ tox\n\n\n\n.. _`Python Package Index`: https://pypi.python.org/pypi/rapport\n.. _`Open Build Service`: https://build.opensuse.org/package/show?package=rapport\u0026project=devel:languages:python\n.. _`the repository`: https://github.com/saschpe/rapport\n.. _`nose`: https://nose.readthedocs.org\n.. _`virtual environment`: http://www.virtualenv.org\n.. _`tox`: http://testrun.org/tox\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaschpe%2Frapport","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaschpe%2Frapport","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaschpe%2Frapport/lists"}