{"id":37202428,"url":"https://github.com/multiformats/py-multibase","last_synced_at":"2026-01-14T23:20:49.169Z","repository":{"id":41233172,"uuid":"102251211","full_name":"multiformats/py-multibase","owner":"multiformats","description":"Multibase implementation in Python","archived":false,"fork":false,"pushed_at":"2025-12-18T02:24:46.000Z","size":114,"stargazers_count":24,"open_issues_count":1,"forks_count":9,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-12-19T12:50:19.984Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/multiformats.png","metadata":{"files":{"readme":"README.rst","changelog":"HISTORY.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-09-03T08:33:07.000Z","updated_at":"2025-12-18T02:24:48.000Z","dependencies_parsed_at":"2024-06-18T20:04:24.399Z","dependency_job_id":"f318d040-2e39-44e5-aab8-6627fa20e87c","html_url":"https://github.com/multiformats/py-multibase","commit_stats":{"total_commits":33,"total_committers":3,"mean_commits":11.0,"dds":0.06060606060606055,"last_synced_commit":"dfb77b5362e87c06239586a9a863b6ed37efa53d"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/multiformats/py-multibase","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/multiformats%2Fpy-multibase","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/multiformats%2Fpy-multibase/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/multiformats%2Fpy-multibase/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/multiformats%2Fpy-multibase/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/multiformats","download_url":"https://codeload.github.com/multiformats/py-multibase/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/multiformats%2Fpy-multibase/sbom","scorecard":{"id":667935,"data":{"date":"2025-08-18","repo":{"name":"github.com/multiformats/py-multibase","commit":"a49fe7d7651d90f6b572cfa83481e11bef08aa34"},"scorecard":{"version":"v5.2.1-41-g40576783","commit":"40576783fda6698350fcbbeaea760ff827433034"},"score":1.9,"checks":[{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#maintained"}},{"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/40576783fda6698350fcbbeaea760ff827433034/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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#packaging"}},{"name":"Code-Review","score":1,"reason":"Found 2/16 approved changesets -- score normalized to 1","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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#code-review"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#pinned-dependencies"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#dangerous-workflow"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#cii-best-practices"}},{"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/40576783fda6698350fcbbeaea760ff827433034/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: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/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/40576783fda6698350fcbbeaea760ff827433034/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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#branch-protection"}},{"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/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 19 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"12 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-238 / GHSA-h3qr-fjhm-jphw","Warn: Project is vulnerable to: GHSA-3ww4-gg4f-jr7f","Warn: Project is vulnerable to: GHSA-5cpq-8wj7-hf2v","Warn: Project is vulnerable to: GHSA-9v9h-cgj8-h64p","Warn: Project is vulnerable to: PYSEC-2023-254 / GHSA-jfhm-5ghh-2f97","Warn: Project is vulnerable to: GHSA-jm77-qphf-c4w8","Warn: Project is vulnerable to: PYSEC-2021-63 / GHSA-rhm9-p9w5-fwm7","Warn: Project is vulnerable to: GHSA-v8gr-m533-ghj9","Warn: Project is vulnerable to: GHSA-w7pp-m8wf-vj6r","Warn: Project is vulnerable to: GHSA-x4qr-2fvf-3mr5","Warn: Project is vulnerable to: PYSEC-2021-62","Warn: Project is vulnerable to: PYSEC-2022-43017 / GHSA-qwmp-2cf2-g9g6"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/40576783fda6698350fcbbeaea760ff827433034/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-21T18:47:30.872Z","repository_id":41233172,"created_at":"2025-08-21T18:47:30.872Z","updated_at":"2025-08-21T18:47:30.872Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28437980,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T22:37:52.437Z","status":"ssl_error","status_checked_at":"2026-01-14T22:37:31.496Z","response_time":107,"last_error":"SSL_read: 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":[],"created_at":"2026-01-14T23:20:46.977Z","updated_at":"2026-01-14T23:20:48.589Z","avatar_url":"https://github.com/multiformats.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"py-multibase\n------------\n\n.. image:: https://img.shields.io/pypi/v/py-multibase.svg\n        :target: https://pypi.python.org/pypi/py-multibase\n\n.. image:: https://github.com/multiformats/py-multibase/actions/workflows/tox.yml/badge.svg\n        :target: https://github.com/multiformats/py-multibase/actions\n\n.. image:: https://readthedocs.org/projects/py-multibase/badge/?version=stable\n        :target: https://py-multibase.readthedocs.io/en/stable/?badge=stable\n        :alt: Documentation Status\n\n`Multibase \u003chttps://github.com/multiformats/multibase\u003e`_ implementation for Python\n\nMultibase is a protocol for distinguishing base encodings and other simple string encodings, and for ensuring full compatibility with program interfaces.\n\nIt answers the question: Given data d encoded into string s, how can I tell what base d is encoded with?\n\nBase encodings exist because transports have restrictions, use special in-band sequences, or must be human-friendly.\nWhen systems chose a base to use, it is not always clear which base to use, as there are many tradeoffs in the decision.\nMultibase is here to save programs and programmers from worrying about which encoding is best.\n\nIt solves the biggest problem: a program can use multibase to take input or produce output in whichever base is desired.\n\nThe important part is that the value is self-describing, letting other programs elsewhere know what encoding it is using.\n\n* Free software: MIT license\n* Documentation: https://py-multibase.readthedocs.io.\n* Python versions: Python 3.10, 3.11, 3.12, 3.13, 3.14\n\nInstallation\n============\n\n.. code-block:: shell\n\n    $ pip install py-multibase\n\n\nSample Usage\n============\n\n.. code-block:: python\n\n    \u003e\u003e\u003e # encoding a buffer\n    \u003e\u003e\u003e from multibase import encode, decode\n    \u003e\u003e\u003e encode('base58btc', 'hello world')\n    b'zStV1DL6CwTryKyV'\n    \u003e\u003e\u003e encode('base64', 'hello world')\n    b'mGhlbGxvIHdvcmxk'\n    \u003e\u003e\u003e # decoding a multibase\n    \u003e\u003e\u003e decode('mGhlbGxvIHdvcmxk')\n    b'hello world'\n    \u003e\u003e\u003e decode(b'zStV1DL6CwTryKyV')\n    b'hello world'\n    \u003e\u003e\u003e decode(encode('base2', b'hello world'))\n    b'hello world'\n\n    \u003e\u003e\u003e # Using reusable Encoder/Decoder classes\n    \u003e\u003e\u003e from multibase import Encoder, Decoder\n    \u003e\u003e\u003e encoder = Encoder('base64')\n    \u003e\u003e\u003e encoded1 = encoder.encode('data1')\n    \u003e\u003e\u003e encoded2 = encoder.encode('data2')\n\n    \u003e\u003e\u003e decoder = Decoder()\n    \u003e\u003e\u003e decoded = decoder.decode(encoded1)\n\n    \u003e\u003e\u003e # Getting encoding information\n    \u003e\u003e\u003e from multibase import get_encoding_info, list_encodings, is_encoding_supported\n    \u003e\u003e\u003e info = get_encoding_info('base64')\n    \u003e\u003e\u003e print(info.encoding, info.code)\n    base64 b'm'\n    \u003e\u003e\u003e all_encodings = list_encodings()\n    \u003e\u003e\u003e is_encoding_supported('base64')\n    True\n\n    \u003e\u003e\u003e # Decode with encoding return\n    \u003e\u003e\u003e encoding, data = decode(encoded1, return_encoding=True)\n    \u003e\u003e\u003e print(f'Encoded with {encoding}: {data}')\n\n\nSupported codecs\n================\n\n* base2\n* base8\n* base10\n* base16\n* base16upper\n* base32hex\n* base32hexupper\n* base32hexpad\n* base32hexpadupper\n* base32\n* base32upper\n* base32pad\n* base32padupper\n* base32z\n* base36\n* base36upper\n* base58flickr\n* base58btc\n* base64\n* base64pad\n* base64url\n* base64urlpad\n* base256emoji\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmultiformats%2Fpy-multibase","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmultiformats%2Fpy-multibase","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmultiformats%2Fpy-multibase/lists"}