{"id":15442023,"url":"https://github.com/kludex/promypy","last_synced_at":"2025-12-14T13:44:02.349Z","repository":{"id":41401873,"uuid":"509434464","full_name":"Kludex/promypy","owner":"Kludex","description":"Progressive type annotation without regression! 🚀","archived":false,"fork":false,"pushed_at":"2022-10-16T05:54:39.000Z","size":33,"stargazers_count":30,"open_issues_count":1,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-14T01:04:21.046Z","etag":null,"topics":["annotation","mypy","python","type"],"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/Kludex.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}},"created_at":"2022-07-01T11:46:02.000Z","updated_at":"2024-12-26T12:03:05.000Z","dependencies_parsed_at":"2022-09-11T03:32:55.690Z","dependency_job_id":null,"html_url":"https://github.com/Kludex/promypy","commit_stats":null,"previous_names":["kludex/progressive-mypy"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kludex%2Fpromypy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kludex%2Fpromypy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kludex%2Fpromypy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kludex%2Fpromypy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kludex","download_url":"https://codeload.github.com/Kludex/promypy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249765238,"owners_count":21322388,"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":["annotation","mypy","python","type"],"created_at":"2024-10-01T19:24:47.538Z","updated_at":"2025-12-14T13:44:02.243Z","avatar_url":"https://github.com/Kludex.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n    \u003cstrong\u003epromypy\u003c/strong\u003e\n\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/Kludex/promypy\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/github/last-commit/Kludex/promypy\" alt=\"Latest Commit\"\u003e\n    \u003c/a\u003e\n        \u003cimg src=\"https://img.shields.io/github/workflow/status/Kludex/promypy/CI\"\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://pypi.org/project/promypy\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://img.shields.io/pypi/v/promypy\" alt=\"Package version\"\u003e\n    \u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/pyversions/promypy\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/Kludex/promypy\"\u003e\n\u003c/p\u003e\n\nYou've decided to add type annotation on the code source. What's your plan? 😅\n\nThis package is a small tool set to help you to achieve your dreamed fully type annotation project. 🚀\n\nUsing `mypy`, you'd probably add a [`files`](https://mypy.readthedocs.io/en/stable/config_file.html#confval-files)\nentry on your configuration file, and each time someone on the team wants to include type annotation on that file,\nyou'd add on the `files` list. There are a some problems with this approach:\n\n1. Each new file is not added to the `files` list.\n2. If a file gets fully type annotated, you don't notice, and it will not be added to the `files` list.\n\nThe `1.` is more important, as we don't want to have regressions on our goal to have our code source fully type annotated.\nBut you don't want to worry about `2.` as well...\n\nWhat this package does:\n- [`dump`](#dump): Generates a **list** of files that are currently not type annotated.\n- [`check`](#check): Given an input of files:\n  - If a file is in the **list**, and is fully type annotated, it will be removed from the **list**.\n  - If a file is in the **list**, and is **not** fully annotated, it will be ignored.\n  - If a file is **not** in the **list**, and is fully annotated, it will be ignored.\n  - If a file is **not** in the **list**, and is **not** fully annotated, it will raise errors.\n\n## Installation\n\nAs usual.\n\n```bash\npip install promypy\n```\n\n## Usage\n\nThere are two commands available: `dump` and `check`.\n\n### Dump\n\nThe idea of this command is to store the list of files that are not fully type annotated into a file.\n\n```bash\nUsage: promypy dump [OPTIONS] FILES...\n\n  Generate a list of files that are not fully type annotated.\n\nArguments:\n  FILES...  [required]\n\nOptions:\n  --mypy-args TEXT\n  --output TEXT\n  --help            Show this message and exit.\n```\n\n### Check\n\n```bash\nUsage: promypy check [OPTIONS] FILES...\n\n  Check the given files with mypy, applying a set of custom rules.\n\nArguments:\n  FILES...  [required]\n\nOptions:\n  -f, --ignore-file PATH  [required]\n  --mypy-args TEXT\n  --help                  Show this message and exit.\n```\n\n### Pre-commit\n\nAdd the following to your `.pre-commit-config.yaml` file:\n\n```yaml\n  - repo: https://github.com/Kludex/promypy\n    rev: 0.3.0\n    hooks:\n      - id: promypy\n        args:\n        - --ignore-file=\u003cdump_filename\u003e\n```\n\n## License\n\nThis project is licensed under the terms of the MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkludex%2Fpromypy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkludex%2Fpromypy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkludex%2Fpromypy/lists"}