{"id":15473464,"url":"https://github.com/alexwaygood/typeshed-stats","last_synced_at":"2026-05-24T05:07:08.313Z","repository":{"id":62798897,"uuid":"548629656","full_name":"AlexWaygood/typeshed-stats","owner":"AlexWaygood","description":"Library and command-line tool to gather stats on typeshed packages","archived":false,"fork":false,"pushed_at":"2024-10-29T12:44:02.000Z","size":5443,"stargazers_count":9,"open_issues_count":3,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-29T15:12:53.935Z","etag":null,"topics":["python","python-typing","typeshed","typing"],"latest_commit_sha":null,"homepage":"https://alexwaygood.github.io/typeshed-stats/","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/AlexWaygood.png","metadata":{"files":{"readme":"README.md","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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-09T23:59:17.000Z","updated_at":"2024-10-29T15:12:30.000Z","dependencies_parsed_at":"2023-10-15T02:24:26.939Z","dependency_job_id":"70461f6a-f74e-4718-a1f8-bbecd540aa92","html_url":"https://github.com/AlexWaygood/typeshed-stats","commit_stats":{"total_commits":1384,"total_committers":7,"mean_commits":"197.71428571428572","dds":0.25,"last_synced_commit":"228d39f0b9690c67d183de2fe68dcc9d11384a3e"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexWaygood%2Ftypeshed-stats","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexWaygood%2Ftypeshed-stats/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexWaygood%2Ftypeshed-stats/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexWaygood%2Ftypeshed-stats/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexWaygood","download_url":"https://codeload.github.com/AlexWaygood/typeshed-stats/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232655229,"owners_count":18556481,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["python","python-typing","typeshed","typing"],"created_at":"2024-10-02T02:53:37.181Z","updated_at":"2026-01-18T09:42:56.084Z","avatar_url":"https://github.com/AlexWaygood.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=center\u003e\n\n# typeshed-stats\n\n\u003cimg src=\"https://raw.githubusercontent.com/AlexWaygood/typeshed-stats/main/stats_website/big_logo.png\" width=\"500\" alt=\"A Python in a field of wheat with a shed behind it, golden-red sunset in the background\"\u003e\n\n\u003cbr\u003e\n\n---\n\n## A CLI tool and library to gather stats on [typeshed](https://github.com/python/typeshed)\n\n\u003cbr\u003e\n\n[![website](https://img.shields.io/website?down_color=red\u0026down_message=Offline\u0026style=for-the-badge\u0026up_color=green\u0026up_message=Running\u0026url=https%3A%2F%2Falexwaygood.github.io%2Ftypeshed-stats%2F)](https://alexwaygood.github.io/typeshed-stats/)[![build status](https://img.shields.io/github/actions/workflow/status/AlexWaygood/typeshed-stats/test.yml?branch=main\u0026label=Tests\u0026style=for-the-badge)](https://github.com/AlexWaygood/typeshed-stats/actions/workflows/test.yml)\n\u003cbr\u003e\n[![Checked with mypy](https://img.shields.io/badge/mypy-checked-blue?style=for-the-badge)](http://mypy-lang.org/)[![Code style: Ruff](https://img.shields.io/badge/Code_style-Ruff-D7FF64?style=for-the-badge\u0026logo=ruff)](https://github.com/astral-sh/ruff)[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white\u0026style=for-the-badge)](https://pre-commit.ci)\n\u003cbr\u003e\n[![PyPI](https://img.shields.io/pypi/v/typeshed-stats?style=for-the-badge)](https://pypi.org/project/typeshed-stats/)![PyPI - Wheel](https://img.shields.io/pypi/wheel/typeshed-stats?style=for-the-badge)[![license](https://img.shields.io/github/license/AlexWaygood/typeshed-stats?style=for-the-badge)](https://opensource.org/licenses/MIT)\n\n---\n\n\u003cbr\u003e\n\u003c/div\u003e\n\n## What's this project for?\n\nThis project is for easy gathering of statistics relating to [typeshed](https://github.com/python/typeshed)'s stubs. As well as being a CLI tool and library, it also powers [a website](https://alexwaygood.github.io/typeshed-stats/) where stats about typeshed's stubs are uploaded twice a day.\n\nThis project was created by Alex Waygood. It is not necessarily endorsed by any of the other typeshed maintainers.\n\nSome examples of things you can do from the command line:\n\n- Create a `.csv` file with stats on all typeshed stubs: `typeshed-stats --typeshed-dir \u003cPATH_TO_TYPESHED_CLONE\u003e --to-file stats.csv` (the `.csv` file extension will be automatically detected by the script to identify the format required).\n- Pretty-print stats on typeshed stubs for emoji and redis to the terminal, in JSON format: `typeshed-stats --typeshed-dir \u003cPATH_TO_TYPESHED_CLONE\u003e --to-json emoji redis`\n- Generate a MarkDown file detailing stats on typeshed's stubs for protobuf and the stdlib: `typeshed-stats --typeshed-dir \u003cPATH_TO_TYPESHED_CLONE\u003e --to-file stats.md stdlib protobuf`\n- Open the upstream repository URLs for `requests`, `Flask-SocketIO` and `CPython` in your default web browser: `typeshed-stats --typeshed-dir \u003cPATH_TO_TYPESHED_CLONE\u003e --upstream-repo requests Flask-SocketIO stdlib`\n\nExample usage of the Python-level API:\n\n```python\nfrom typeshed_stats.gather import tmpdir_typeshed, gather_stats\n\nwith tmpdir_typeshed() as typeshed:\n    stats_on_all_packages = gather_stats_on_multiple_packages(typeshed_dir=typeshed)\n```\n\n## How can I use this?\n\n1. Run `pip install typeshed-stats[rich]` to install the package\n1. Run `typeshed-stats --help` for information about various options\n\n## Are there any examples of things this script can produce, other than [the website](https://alexwaygood.github.io/typeshed-stats/)?\n\nI'm glad you asked! They're in the `examples/` folder in this repo.\n(These examples are generated using the `regenerate.py` script in the `scripts/` directory.)\n\n## How do I run tests/linters?\n\n1. Clone the repo and `cd` into it\n1. Create and activate a virtual environment\n1. Run `pip install -e .[dev]`\n1. Either run the linters/tests individually (see the `.github/workflows` directory for details about what's run in CI) or use the `scripts/runtests.py` convenience script to run them all in succession.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexwaygood%2Ftypeshed-stats","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexwaygood%2Ftypeshed-stats","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexwaygood%2Ftypeshed-stats/lists"}