{"id":13605367,"url":"https://github.com/pfalcon/pycopy-lib","last_synced_at":"2026-04-10T10:02:26.679Z","repository":{"id":24564018,"uuid":"27971344","full_name":"pfalcon/pycopy-lib","owner":"pfalcon","description":"Standard library of the Pycopy project, minimalist and light-weight Python language implementation","archived":false,"fork":false,"pushed_at":"2023-10-06T09:59:07.000Z","size":3713,"stargazers_count":260,"open_issues_count":29,"forks_count":71,"subscribers_count":13,"default_branch":"master","last_synced_at":"2026-03-29T02:59:18.639Z","etag":null,"topics":["micropython","minimalist","pycopy","python","suckless"],"latest_commit_sha":null,"homepage":"https://github.com/pfalcon/pycopy","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pfalcon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":null}},"created_at":"2014-12-13T19:30:19.000Z","updated_at":"2026-01-06T06:42:18.000Z","dependencies_parsed_at":"2024-01-17T00:17:30.099Z","dependency_job_id":"6bb6329e-d328-45f2-89c3-e74bf606594a","html_url":"https://github.com/pfalcon/pycopy-lib","commit_stats":{"total_commits":3045,"total_committers":47,"mean_commits":64.7872340425532,"dds":"0.044006568144499214","last_synced_commit":"56ebf2110f3caa63a3785d439ce49b11e13c75c0"},"previous_names":["pfalcon/micropython-lib"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/pfalcon/pycopy-lib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfalcon%2Fpycopy-lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfalcon%2Fpycopy-lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfalcon%2Fpycopy-lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfalcon%2Fpycopy-lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pfalcon","download_url":"https://codeload.github.com/pfalcon/pycopy-lib/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfalcon%2Fpycopy-lib/sbom","scorecard":{"id":729734,"data":{"date":"2025-08-11","repo":{"name":"github.com/pfalcon/pycopy-lib","commit":"2f0ababa2fa65c497f1935fc142fc11bd620de59"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.8,"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":"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":"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":"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":"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":"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":"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":"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":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: pipCommand not pinned by hash: uasyncio/benchmark/test-boom-heavy.sh:17","Info:   0 out of   1 pipCommand dependencies pinned"],"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":"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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"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"}}]},"last_synced_at":"2025-08-22T14:04:25.436Z","repository_id":24564018,"created_at":"2025-08-22T14:04:25.436Z","updated_at":"2025-08-22T14:04:25.436Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31522856,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["micropython","minimalist","pycopy","python","suckless"],"created_at":"2024-08-01T19:00:57.893Z","updated_at":"2026-04-10T10:02:26.662Z","avatar_url":"https://github.com/pfalcon.png","language":"Python","readme":"pycopy-lib\n==========\npycopy-lib is a project to develop a non-monolithic standard library\nfor the Pycopy project (https://github.com/pfalcon/pycopy), while\nwhere possible, staying compatible with other variants and implementations\nof Python. The goals of the project are:\n\n* As the main goal, develop Pycopy standard library as close as possible\n  matching that of CPython. It thus necessarily targets \"Unix\" port of\n  Pycopy.\n* As a side goal, develop individual modules usable/useful on baremetal\n  ports of Pycopy. This is oftentimes conflicts with the first goal\n  (something as close as possible matching CPython functionality is just\n  too big to run on low-memory systems), and necessitates creation\n  of additional modules, or special \"micro\" (aka \"u\") versions of them.\n\nEach module or package of `pycopy-lib` is available as a separate\ndistribution package from PyPI. Each module comes from one of the following\nsources (and thus each module has its own licensing terms):\n\n* written from scratch specifically for Pycopy\n* ported from CPython\n* ported from some other Python implementation, e.g. PyPy\n* some modules actually aren't implemented yet and are dummy\n* some modules are extensions and are not part of CPython's\n  standard library\n\nAs mentioned above, the main target of pycopy-lib is the \"Unix\" port\nof Pycopy.Actual system requirements vary per module. Modules not\nrelated to I/O may also work without problems on bare-metal ports, not\njust on \"Unix\" port (e.g. esp8266).\n\n\nUsage\n-----\npycopy-lib packages are published on PyPI (Python Package Index),\nthe standard Python community package repository: http://pypi.python.org/ .\nOn PyPI, you can search for Pycopy related packages and read\nadditional package information. All pycopy-lib package names are prefixed\nwith \"pycopy-\".\n\nBrowse available packages\n[via this URL](https://pypi.org/search/?q=pycopy-). (Note: this may\nalso include 3rd-party modules which are not part of pycopy-lib.)\n\nTo install packages from PyPI for usage on your local system, use the\n`upip` tool, which is Pycopy's native package manager, similar to\n`pip`, which is used to install packages for CPython. `upip` is bundled\nwith Pycopy \"Unix\" port (i.e. if you build \"Unix\" port, you\nautomatically have `upip` tool). Following examples assume that\n`pycopy` binary is available on your `PATH`:\n\n~~~~\n$ pycopy -m upip install pycopy-pystone\n...\n$ pycopy\n\u003e\u003e\u003e import pystone\n\u003e\u003e\u003e pystone.main()\nPystone(1.2) time for 50000 passes = 0.534\nThis machine benchmarks at 93633 pystones/second\n~~~~\n\nRun `pycopy -m upip --help` for more information about `upip`.\n\n\nCPython backports\n-----------------\nWhile pycopy-lib focuses on Pycopy, sometimes it may be beneficial\nto run Pycopy code using CPython, e.g. to use code coverage, debugging,\netc. tools available for it. To facilitate such usage, pycopy-lib also\nprovides reimplementations (\"backports\") of Pycopy modules, which\nrun on CPython. This first of all applies to the builtin Pycopy \"u\"\nmodules, but as time goes on, backports of pycopy-lib's own modules can\nbe provided. Backport modules are in the directories named `cpython-*` of\nthis repository. On PyPI, these named\n[pycopy-cpython-*](https://pypi.org/search/?q=pycopy-cpython-).\n\nThese modules should be installed with CPython's pip3 tool. Example session:\n\n~~~\n$ pip3 install --user pycopy-cpython-uhashlib\n...\n$ python3\n...\n\u003e\u003e\u003e import uhashlib\n\u003e\u003e\u003e uhashlib.sha1(b\"test\").hexdigest()\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nAttributeError: 'sha1' object has no attribute 'hexdigest'\n# Pycopy's uhashlib doesn't have hexdigest(), use ubinascii.hexlify(.digest())\n\u003e\u003e\u003e uhashlib.sha1(b\"test\").digest()\nb'\\xa9J\\x8f\\xe5\\xcc\\xb1\\x9b\\xa6\\x1cL\\x08s\\xd3\\x91\\xe9\\x87\\x98/\\xbb\\xd3'\n~~~\n\n\nDevelopment\n-----------\nTo install modules during development, use `make install`. By default, all\navailable packages will be installed. To install a specific module, add the\n`MOD=\u003cmodule\u003e` parameter to the end of the `make install` command.\n\n\nContributing\n------------\npycopy-lib is a community project and can be implemented \"fully\" only\nby contributions from interested parties. The contributions are expected\nto adhere to [Contribution Guidelines](CONTRIBUTING.md).\n\n\nCredits\n-------\npycopy-lib is developed and maintained by Paul Sokolovsky\n([@pfalcon](https://github.com/pfalcon/)) with the help of\nPycopy community.\n\nList of modules specific to pycopy-lib\n--------------------------------------\n\nWhile pycopy-lib's primary way is to provide implementation\nof Python standard library, pycopy-lib goes further and hosts\nsome extension modules which are deemed to be worth being a part\nof \"Pycopy standard library\". This section lists them to easy\ndiscovery:\n\n* byteslib - similar to `string`, function variants of `bytes` methods.\n* uaiohttpclient - HTTP client for uasyncio\n* uargparse - small subset of argparse module\n* uasyncio - asynchronous scheduling and I/O, roughly based on CPython's\n  asyncio\n* uasyncio.core - just a scheduler part of uasyncio\n* uasyncio.queues - subset of CPython's asyncio.Queue\n* uasyncio.synchro - synchronization primitives for uasyncio (subset\n  of asyncio's)\n* uasyncio.udp - UDP support for uasyncio\n* ucontextlib - subset of contextlib functionality\n* uctypelib - higher-level helpers to define structure for the builtin\n  uctype module\n* uctypeslib2 - pretty printing support for uctypes structure definitions\n* ucurses - small subset of curses module\n* udnspkt - DNS packet handling (Sans I/O approach)\n* ulogging - small subset of logging module\n* umqtt.robust\n* umqtt.simple\n* [uos2](uos2) - minimalist subset of the \"os\" module\n* upip - Pycopy package manager, modelled after \"pip\" tool\n* upysh - minimalistic filesystem shell using Python syntax\n* urequests - subset of \"requests\" module\n* urlib.urequest - small subset of urlib.request module\n* [usubprocess](usubprocess) - small subset of \"subprocess\" module\n* utarfile - small subset of tarfile module\n* utokenize - simple tokenizer for Python source\n* uurequests - very small subset of \"requests\" module\n* uwwwauth - HTTP Basic/Digest authentication algorithms\n* xmltok2 - small/simple XML tokenizer\n","funding_links":[],"categories":["More libraries"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpfalcon%2Fpycopy-lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpfalcon%2Fpycopy-lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpfalcon%2Fpycopy-lib/lists"}