{"id":47841286,"url":"https://github.com/patsuckow/spb","last_synced_at":"2026-04-03T20:40:19.666Z","repository":{"id":57469675,"uuid":"230495254","full_name":"patsuckow/spb","owner":"patsuckow","description":"spb - Simple Progress Bar. This module allows you to display, in the console, a progress indicator and other indicators of any process you need.","archived":false,"fork":false,"pushed_at":"2023-11-15T12:14:44.000Z","size":76,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-29T16:34:12.783Z","etag":null,"topics":["bar","console-progress","data-rate-indicator","eta","meter","percent-indicator","progress","progress-bar","progress-indicator","progressbar","progressmeter","rate","spb","timer-indicator","transmitted-data-indicator"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/spb/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/patsuckow.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"custom":["https://www.paypal.me/patsuckow","https://www.buymeacoffee.com/patsuckow"]}},"created_at":"2019-12-27T18:26:47.000Z","updated_at":"2023-02-19T16:50:18.000Z","dependencies_parsed_at":"2023-11-12T23:45:14.500Z","dependency_job_id":null,"html_url":"https://github.com/patsuckow/spb","commit_stats":{"total_commits":30,"total_committers":2,"mean_commits":15.0,"dds":"0.033333333333333326","last_synced_commit":"36942d77b0ca6dd99511277618c996579af871f4"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/patsuckow/spb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patsuckow%2Fspb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patsuckow%2Fspb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patsuckow%2Fspb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patsuckow%2Fspb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/patsuckow","download_url":"https://codeload.github.com/patsuckow/spb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/patsuckow%2Fspb/sbom","scorecard":{"id":722658,"data":{"date":"2025-08-11","repo":{"name":"github.com/patsuckow/spb","commit":"ae4dad8f1b6cdebf3a59262741057dde40106764"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.8,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","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":"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":"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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"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":"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":"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":"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: GNU General Public License v3.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 'main'"],"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":"Vulnerabilities","score":8,"reason":"2 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5"],"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-22T11:50:13.634Z","repository_id":57469675,"created_at":"2025-08-22T11:50:13.634Z","updated_at":"2025-08-22T11:50:13.634Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31375775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T17:53:18.093Z","status":"ssl_error","status_checked_at":"2026-04-03T17:53:17.617Z","response_time":107,"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":["bar","console-progress","data-rate-indicator","eta","meter","percent-indicator","progress","progress-bar","progress-indicator","progressbar","progressmeter","rate","spb","timer-indicator","transmitted-data-indicator"],"created_at":"2026-04-03T20:40:18.916Z","updated_at":"2026-04-03T20:40:19.657Z","avatar_url":"https://github.com/patsuckow.png","language":"Python","readme":"# spb - Simple Progress Bar\n\nThis module allows you to display, in the console, a progress indicator and\nother indicators of any process you need.\n\nIndicators that can be displayed:\n- progress indicator\n- percent indicator\n- timer indicator\n- data rate indicator\n- transmitted data indicator\n\n**Any indicator, if desired, can be either turned on or off or displayed with\ndefault settings, or you yourself can configure multiple parameters for any\nindicator you need.**\n\n**Support**: [![Donate via PayPal](https://www.paypalobjects.com/webstatic/mktg/Logo/pp-logo-100px.png)](https://www.paypal.me/patsuckow) or [![Buy us a Cofee](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/patsuckow)\n\n## How to install:\n\n\n#### From PyPI and in the inside of your virtual environment:\n\n    pip3 install spb\n\n\n#### From sources:\n\nAlternatively you can install **spb** from sources directory:\n\n    git clone https://github.com/patsuckow/spb\n    cd spb\n    pip3 install -r requirements.txt\n    pip3 install . --user\n    cd ..\n    rm -rf spb\n\n## How to import in your project:\n\n`from spb import SimpleProgressBar as spb`\n\n## Requirements:\nSee in file requirements.txt\n\n**spb** works with ![version](https://user-images.githubusercontent.com/12321741/68495259-e298c480-0260-11ea-9d83-beab9b416562.png) or higher.\n\n### What are the required modules inside `spb`:\n- import **`sys`**\n- import **`time`**\n- import **`shutil`**\n- from **`typing`** import Union\n- from **`collections`** import deque\n\n## Examples:\n#### Base examples:\n\nBasic use cases. We display the progress bar itself and the percentage\nindicator with different settings. All possible options for setting parameters,\nsee the documentation.\n\nHere is not show the display of file transfer rate indicators and the number\nof transmitted data.\n\n- [Base example №1 (setup minimum parameters)](https://github.com/patsuckow/spb/blob/master/examples/base_examples.py#L12):\n![Base example №1 (setup minimum parameters)](https://user-images.githubusercontent.com/12321741/71492289-06cb5780-2847-11ea-8eaa-fd7e77549679.gif)\n- [Base example №2 (with setting some parameters you need)](https://github.com/patsuckow/spb/blob/master/examples/base_examples.py#L25):\n![Base example №2 (with setting some parameters you need)](https://user-images.githubusercontent.com/12321741/71492299-282c4380-2847-11ea-9a73-33088ebd6d3e.gif)\n- [Base example №3 (with setting some parameters you need)](https://github.com/patsuckow/spb/blob/master/examples/base_examples.py#L48):\n![Base example №3 (with setting some parameters you need)](https://user-images.githubusercontent.com/12321741/71492307-38dcb980-2847-11ea-8bf7-3dd8889caf89.gif)\n- [Base example №4 (start progress bar not from zero cycles (percent))](https://github.com/patsuckow/spb/blob/master/examples/base_examples.py#L66):\n![Base example №4 (start progress bar not from zero cycles (percent))](https://user-images.githubusercontent.com/12321741/71492316-4a25c600-2847-11ea-9fe9-0ec71e8f5eb9.gif)\n- [Base example №5 (whith decreasing progress bar not from zero cycles (percent))](https://github.com/patsuckow/spb/blob/master/examples/base_examples.py#L78):\n![Base example №5 (whith decreasing progress bar not from zero cycles (percent))](https://user-images.githubusercontent.com/12321741/71492321-5d389600-2847-11ea-8859-a4cf41a6973e.gif)\n\nOther configuration options (`variant_brackets`, `variant_arrow` and `variant_space`) can be found [here](https://github.com/patsuckow/spb/blob/master/examples/base_examples.py#L97).\n\n\n#### Examples of using:\n\nHow uses a load file indicator and progress bar indicator (the type of indicator will depend on the settings that you set)\n\n- [Example using № 1 (Download single file using requests module)](https://github.com/patsuckow/spb/blob/master/examples/examples_of_using_1-4.py#L6):\n![Example № 1 (Download single file using requests module)](https://user-images.githubusercontent.com/12321741/71492331-704b6600-2847-11ea-9a14-98ddb7554932.gif)\n- [Example using № 2 (Download files from url list one by one using requests module)](https://github.com/patsuckow/spb/blob/master/examples/examples_of_using_1-4.py#L36).\n- [Example using № 3 (Download files from url list one by one using urllib3)](https://github.com/patsuckow/spb/blob/master/examples/examples_of_using_1-4.py#L72).\n- [Example using № 4 (Download multiple files (Parallel/bulk download) using requests module)](/examples/examples_of_using_1-4.py#L111).\n- [Example using № 5 (Download video from YouTube using pytube module)](https://github.com/patsuckow/spb/blob/master/examples/examples_of_using_5-6.py#L6):\n![Example № 5 (Download video from Youtube using pytube module)](https://user-images.githubusercontent.com/12321741/71492346-9113bb80-2847-11ea-81fb-5511f287520f.gif)\n- [Example using № 6 (Download video playlist from YouTube using pytube module)](https://github.com/patsuckow/spb/blob/master/examples/examples_of_using_5-6.py#L35).\n- [Example using № 7 (Download one file or all files from a folder Google Drive using google-api-client)](https://github.com/patsuckow/spb/blob/master/examples/examples_of_using_7.py).\n- [Example using № 8 (Download from Google drive using requests module and not using google-api-client)](https://github.com/patsuckow/spb/blob/master/examples/examples_of_using_8.py):\n![Example № 8](https://user-images.githubusercontent.com/12321741/71492361-a12b9b00-2847-11ea-93d0-d2a519833a59.gif)\n\n## Documentation:\nAll english documentation can be found in - [wiki](https://github.com/patsuckow/spb/wiki/1.-Home-(en))\n\nAll possible settings (parameters) can be found in the this page - [parameters](https://github.com/patsuckow/spb//wiki/2.-Parameters-(en)).\n\nРусская документация - [wiki](https://github.com/patsuckow/spb/wiki/1.-Home-(ru))\n\nВсе возможные настройки (параметры) можно найти на этой странице - [parameters](https://github.com/patsuckow/spb//wiki/2.-Parameters-(ru)).\n\n\n## Tests:\nUnit-tests - [test_spb.py](https://github.com/patsuckow/spb/blob/master/tests/test_spb.py)\n\nRun tests:\n\n`\npython3 -m unittest discover\n`\n\nNotes:\n------\n\n1. Unicode-symbols values that can be used for parameters, can be taken\n   from the Unicode table. You can copy Unicode characters, for example,\n   from this site: https://unicode-table.com/en/\n\n2. By default, the width of the console window is different on different\n   systems, but on average 80 columns. If you do not expand the console\n   window to full screen, then this will not be enough to display all the\n   possible indicators and inscriptions in the progress bar line.\n   But thanks to the settings, you can display those indicators, icons\n   and exchanges of indicators that you need and hide what you do not need.\n\n3. For recording gifs, was used the console utility **peek** - \n   Simple animated GIF screen recorder with an easy to use interface\n   https://github.com/phw/peek\n\n\n## Licence:\n![GNU GPL v 3 0](https://user-images.githubusercontent.com/12321741/67310082-c4636280-f505-11e9-83a7-d23e8037c54f.png)\n\n## Authors:\n\n**Alexey Patsukov 🇷🇺** - [GitHub profile](https://github.com/patsuckow)\n\n### Submit issues\n\nIf you spotted something weird in application behavior or want to propose a feature you are welcome.\n\n### Write code\n\nIf you are eager to participate in application development and to work on an existing issue (whether it should\nbe a bugfix or a feature implementation), fork, write code, and make a pull request right from the forked project page.\n\n### Spread the word\n\nIf you have some tips and tricks or any other words that you think might be of interest for the others — publish it\nwherever you find convenient.\n","funding_links":["https://www.paypal.me/patsuckow","https://www.buymeacoffee.com/patsuckow"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatsuckow%2Fspb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpatsuckow%2Fspb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpatsuckow%2Fspb/lists"}