Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"python",
"youtube",
"youtube-downloader"
],
"is_fork": false,
"size_kb": 19412,
"has_wiki": true,
"homepage": "https://pytube.io",
"languages": {
"Python": 271575,
"Makefile": 1428
},
"pushed_at": "2024-08-15T06:51:20Z",
"created_at": "2012-03-18T19:33:44Z",
"owner_type": "Organization",
"updated_at": "2026-07-21T17:03:04Z",
"description": "Lightweight, dependency-free Python library and CLI for downloading YouTube videos, playlists, and captions.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Unlicense",
"default_branch": "master",
"license_spdx_raw": "Unlicense",
"primary_language": "Python",
"significant_languages": [
"Python"
]
},
"owner": {
"blog": null,
"name": "pytube",
"type": "Organization",
"login": "pytube",
"company": null,
"location": null,
"followers": 179,
"avatar_url": "https://avatars.githubusercontent.com/u/16789089?v=4",
"created_at": "2016-01-20T02:03:14Z",
"is_verified": null,
"public_repos": 1,
"account_age_days": 3835
},
"license": {
"state": "standard",
"spdx_id": "Unlicense",
"raw_spdx": "Unlicense",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v11.0.1",
"kind": "patch",
"published_at": "2021-08-27T22:55:44Z"
},
{
"tag": "v11.0.0",
"kind": "major",
"published_at": "2021-08-03T23:09:54Z"
},
{
"tag": "v10.9.3",
"kind": "patch",
"published_at": "2021-07-21T00:40:06Z"
},
{
"tag": "v10.9.2",
"kind": "patch",
"published_at": "2021-07-07T19:29:04Z"
},
{
"tag": "v10.9.1",
"kind": "patch",
"published_at": "2021-07-06T23:28:45Z"
},
{
"tag": "v10.9.0",
"kind": "minor",
"published_at": "2021-07-06T00:49:06Z"
},
{
"tag": "v10.8.5",
"kind": "patch",
"published_at": "2021-06-19T00:44:02Z"
},
{
"tag": "v10.8.4",
"kind": "patch",
"published_at": "2021-06-02T22:32:10Z"
},
{
"tag": "v10.8.3",
"kind": "patch",
"published_at": "2021-05-30T18:02:47Z"
},
{
"tag": "v10.8.2",
"kind": "patch",
"published_at": "2021-05-20T21:54:03Z"
},
{
"tag": "v10.8.1",
"kind": "patch",
"published_at": "2021-05-09T21:41:31Z"
},
{
"tag": "v10.8.0",
"kind": "minor",
"published_at": "2021-05-09T02:13:37Z"
},
{
"tag": "v10.7.2",
"kind": "patch",
"published_at": "2021-04-20T15:56:05Z"
},
{
"tag": "v10.7.1",
"kind": "patch",
"published_at": "2021-04-05T22:12:04Z"
},
{
"tag": "v10.7.0",
"kind": "minor",
"published_at": "2021-04-04T19:35:14Z"
},
{
"tag": "v10.6.1",
"kind": "patch",
"published_at": "2021-03-28T14:36:48Z"
},
{
"tag": "v10.6.0",
"kind": "minor",
"published_at": "2021-03-19T14:59:25Z"
},
{
"tag": "v10.5.2",
"kind": "patch",
"published_at": "2021-03-06T20:19:14Z"
},
{
"tag": "v10.5.1",
"kind": "patch",
"published_at": "2021-02-23T03:40:52Z"
},
{
"tag": "v10.5.0",
"kind": "minor",
"published_at": "2021-01-31T06:28:25Z"
},
{
"tag": "v10.4.0",
"kind": "minor",
"published_at": "2020-12-28T21:41:15Z"
},
{
"tag": "v10.2.0",
"kind": "minor",
"published_at": "2020-12-28T19:21:32Z"
},
{
"tag": "v10.1.1",
"kind": "patch",
"published_at": "2020-12-28T19:03:37Z"
},
{
"tag": "v10.1.0",
"kind": "minor",
"published_at": "2020-12-10T02:07:17Z"
},
{
"tag": "v10.0.0",
"kind": "major",
"published_at": "2020-12-10T02:00:20Z"
},
{
"tag": "v9.7.3",
"kind": "patch",
"published_at": "2020-12-11T15:22:41Z"
},
{
"tag": "v9.7.2",
"kind": "patch",
"published_at": "2020-12-11T15:28:43Z"
},
{
"tag": "v9.7.0",
"kind": "minor",
"published_at": "2020-10-31T00:50:09Z"
},
{
"tag": "0.3.1",
"kind": "patch",
"published_at": "2015-09-06T02:14:20Z"
},
{
"tag": "0.3.0",
"kind": "minor",
"published_at": "2015-09-06T02:13:47Z"
},
{
"tag": "0.2.1",
"kind": "patch",
"published_at": "2015-09-06T02:14:07Z"
}
],
"recent_commits": [
{
"oid": "a32fff39058a6f7e5e59ecd06a7467b71197ce35",
"body": null,
"is_bot": false,
"headline": "Add .editorconfig file (#1628)",
"author_name": "Alexey Pelykh",
"author_login": "alexey-pelykh",
"committed_at": "2023-05-20T10:08:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f6f2ef9b24289a5b77b83b83c02800f6f7e41d73",
"body": null,
"is_bot": false,
"headline": "fix logger.warn deprecation (#1534)",
"author_name": "Blake",
"author_login": "bvandrc",
"committed_at": "2023-05-12T23:17:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2ff84938cddd02a78053204517389374f5be7019",
"body": null,
"is_bot": false,
"headline": "Bump version: 14.0.0 → 15.0.0",
"author_name": "EC2 Default User",
"author_login": null,
"committed_at": "2023-05-07T19:38:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "20857ba1c0a11296d52f19a0fe5abc510c006a52",
"body": null,
"is_bot": false,
"headline": "Bump version: 13.0.0 → 14.0.0",
"author_name": "EC2 Default User",
"author_login": null,
"committed_at": "2023-05-07T19:38:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3cee7f5a78f668d5e019d853886a604b70995eba",
"body": null,
"is_bot": false,
"headline": "Bump version: 12.1.3 → 13.0.0",
"author_name": "EC2 Default User",
"author_login": null,
"committed_at": "2023-05-07T19:38:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c9edd68486c6ecc7b7659a67a7403eee56e22fdd",
"body": null,
"is_bot": false,
"headline": "Fixed error with android client version (#1575)",
"author_name": "Felipe Ucelli",
"author_login": "felipeucelli",
"committed_at": "2023-05-07T19:19:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "09e12fd3eb6351a2d22f9378bc780ed1b6f1d212",
"body": "remove 3.10 library since it sometimes gets confused for 3.1 by CI tool",
"is_bot": false,
"headline": "Update ci.yml",
"author_name": "Ronnie Ghose",
"author_login": "RONNCC",
"committed_at": "2023-05-07T19:19:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "32710ab2bb1250f22a42ae0139ff8c807ff84819",
"body": "Need to import `VideoUnavailable` exception.",
"is_bot": false,
"headline": "Fix documentation example (add missing import) (#1496)",
"author_name": "Sam Ryan",
"author_login": "samryan18",
"committed_at": "2023-05-07T19:11:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "445c94bbb0419aaba55f3e061366311d8ca2a33e",
"body": "fixed missing space in --ffmpeg and --audio help sections",
"is_bot": false,
"headline": "Update cli.py (#1462)",
"author_name": "jtmr05",
"author_login": "jtmr05",
"committed_at": "2023-05-07T19:11:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7a6933e77d84f6c6dcfaa5b51a5856389f66818d",
"body": "Add code of conduct",
"is_bot": false,
"headline": "Create CODE_OF_CONDUCT.md",
"author_name": "Ronnie Ghose",
"author_login": "RONNCC",
"committed_at": "2023-05-07T19:05:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da3141f3d937459cd7cfd9180970b9ec1d14bb5e",
"body": null,
"is_bot": false,
"headline": "Update captions.py to import json",
"author_name": "Ronnie Ghose",
"author_login": "RONNCC",
"committed_at": "2023-04-25T23:47:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "96315dff218c3c5c4621997a5587f9d677774b97",
"body": null,
"is_bot": false,
"headline": "Update setup.py",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2023-03-27T16:47:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "39cda38c83efdd9cf960bf479d7cde19a9ebffda",
"body": null,
"is_bot": false,
"headline": "update ci file",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2023-03-27T16:44:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "965d5e9af2617243ad297368a3ddb3a98a4a2b67",
"body": null,
"is_bot": false,
"headline": "Create ci-tests.yml",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2023-03-27T16:38:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "472b1ad409931bd3a15754be208e7637f26c093e",
"body": "add 3.10-3.11 support",
"is_bot": false,
"headline": "Update ci.yml",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2023-03-27T16:31:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b563f7817533c3144c10582c13fec4fbdfb1d179",
"body": "Remove 3.6 support, add 3.10-3.11",
"is_bot": false,
"headline": "Update setup.py",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2023-03-27T16:25:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "14cf228e6df8bdc89ab5c251217e4361f492af0d",
"body": "remove 3.6 support (reached end-of-life)",
"is_bot": false,
"headline": "Update ci.yml",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2023-03-27T16:22:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ac8bdf813a581c74c132f0840a96334c6daa516b",
"body": null,
"is_bot": false,
"headline": "Bump version: 12.1.2 → 12.1.3",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2023-03-27T16:14:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "549e8afd99c154581ce8a3a3620953893c4d076c",
"body": "Fix parser py",
"is_bot": false,
"headline": "Merge pull request #1520 from fischcode/Fix-parser-py",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2023-03-27T16:13:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec0d6b8851b36f126a65e4db100b793821d63494",
"body": "Integrate fix from last PR",
"is_bot": false,
"headline": "Update parser.py",
"author_name": "fischcode",
"author_login": "fischcode",
"committed_at": "2023-03-19T14:25:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "deee2804f1027453f19b43067086a51bf501b7e1",
"body": "I managed to figure out why pytube suddenly dumped: The function find_object_from_startpoint in pytube parser.py failed to recognize regular expressions and ignore closing characters contained therein, resulting in incomplete code fragments being passed to downstream functions.\nThis fix enables find\n[…]\nriginal cipher.py.\nI have tested that the function find_object_from_startpoint works and returns complete functions, but have no idea how I could test if the mechanism to avoid throttling still works.",
"is_bot": false,
"headline": "Update parser.py",
"author_name": "fischcode",
"author_login": "fischcode",
"committed_at": "2023-03-19T14:18:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d3d18691b3e99b2d3b4d620446b088a1c32896c6",
"body": "Adding list data type to 'res' parameter of filter() function.",
"is_bot": false,
"headline": "Merge pull request #1436 from stark821/master",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2022-12-17T15:28:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "16a54f9b2e34d0bc8089278d3297a17dbd1aecfb",
"body": null,
"is_bot": false,
"headline": "Bump version: 12.1.1 → 12.1.2",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2022-12-17T00:10:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1bb2ea788d52a3eb15932c11f063fe8b58bacc4b",
"body": "Update itags.py",
"is_bot": false,
"headline": "Merge pull request #1435 from duruburak/patch-1",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2022-12-17T00:10:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "187aa9739c6bf8085348689e40d8317101655dd1",
"body": null,
"is_bot": false,
"headline": "Bump version: 12.1.0 → 12.1.1",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2022-12-17T00:06:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1c10b81ae47c9dd1e0ac9e2d47b76c7846c153fc",
"body": "`YouTube.from_id` — YouTube object with just the video id",
"is_bot": false,
"headline": "Merge pull request #1437 from subtleGradient/from_id",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2022-12-17T00:00:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fb5d4508e6849e8e3027750c2c61589ff6140c4c",
"body": "`caption.json_captions` — Download and parse the \"json3\" caption tracks",
"is_bot": false,
"headline": "Merge pull request #1438 from subtleGradient/json_captions",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2022-12-17T00:00:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d19b8d43d6fa83020b6fd5554b24cfa271fe3aff",
"body": null,
"is_bot": false,
"headline": "json_captions — Download and parse the json caption tracks",
"author_name": "Thomas Aylott",
"author_login": "subtleGradient",
"committed_at": "2022-12-12T12:30:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "94fec487f4dc4c2dee70f071b87c5c72e8e4f183",
"body": null,
"is_bot": false,
"headline": "YouTube.from_id",
"author_name": "Thomas Aylott",
"author_login": "subtleGradient",
"committed_at": "2022-12-12T12:09:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f697a53a1574337f563bace28406958f198cd62a",
"body": "Adding list data type in addition to the existing str type to the 'res' and 'resolution' parameter of the filter() function of the StreamQuery class. This enables us to get streams with multiple resolutions in a single query.",
"is_bot": false,
"headline": "Adding list data type to 'res' parameter of filter() function.",
"author_name": "stark821",
"author_login": "stark821",
"committed_at": "2022-12-09T13:26:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8c1afabdc17e015c1cacd8879e733705db89a016",
"body": "Adding list data type in addition to the existing str type to the 'res' and 'resolution' parameter of the filter() function of the StreamQuery class. This enables us to streams with multiple resolutions in a single query.",
"is_bot": false,
"headline": "Adding list data type to 'res' parameter of filter() function.",
"author_name": "stark821",
"author_login": "stark821",
"committed_at": "2022-12-09T13:03:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ce85f4edd16c00a02e8b707839ad424bf064ce09",
"body": "I noticed itags.py left a bit outdated. Here's the up-to-date form.",
"is_bot": false,
"headline": "Update itags.py",
"author_name": "Burak Duru",
"author_login": "duruburak",
"committed_at": "2022-12-09T00:48:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "84faec34c8a66f502ac635a5610445dbff160654",
"body": null,
"is_bot": false,
"headline": "fixing type casting bug and reinforcing _ naming convention (#1390)",
"author_name": "Sid Shardanand",
"author_login": "s1ddly",
"committed_at": "2022-09-18T02:17:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3cabdbd621843b5797fef4913729462467061657",
"body": "* Enable inbuilt conversion(with rounding) to KB, MB and GB for the filesize attribute\r\n\r\n* return kb, mb, gb as floats rounded up to 3 significant figures\r\n\r\n* updating filesize function with appropriate naming conventions",
"is_bot": false,
"headline": "Introducing filesize returned in kb, mb and gb (#1364)",
"author_name": "Sid Shardanand",
"author_login": "s1ddly",
"committed_at": "2022-09-17T01:44:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2e307d8d615ef30aa837fe2275954146dab07ca6",
"body": null,
"is_bot": false,
"headline": "Bump version: 12.0.0 → 12.1.0",
"author_name": "Ronnie Ghose",
"author_login": "RONNCC",
"committed_at": "2022-05-09T00:22:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd26b1c8019e622a5d399d07e7915241a2dc2594",
"body": "* Generalize regex to find throttle function name\r\n* Extend tests and fixtures for throttling name\r\n* Rename mock asset to follow similar naming style",
"is_bot": false,
"headline": "Fix regex to find throttling function name (#1282)",
"author_name": "Kinshuk Vasisht",
"author_login": "kinshuk-h",
"committed_at": "2022-05-09T00:20:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e8575465468312ca5a6ac9fdbbfa99b93af770e1",
"body": null,
"is_bot": false,
"headline": "Bump version: 11.0.2 → 12.0.0",
"author_name": "Ronnie Ghose",
"author_login": "RONNCC",
"committed_at": "2022-02-14T18:52:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "642bb0af608c5f353a11e35ee7cdf3d60397dcec",
"body": "* Fix regex to find throttle function name\r\n\r\nThe javascript now stores the throttling function name in an array.\r\nFix https://github.com/pytube/pytube/issues/1218\r\n\r\n* Fix array parsing\r\n\r\nStrip whitespaces around symbol names for future-proofing.\r\n\r\nThe variable name might be \"b\" right now, but it could change in the\r\nfuture.",
"is_bot": false,
"headline": "Fix regex to find throttle function name (#1222)",
"author_name": "Fuan",
"author_login": "glubsy",
"committed_at": "2022-02-13T19:55:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e8f4391867fea2bf1c2320113217c0e27bb9705d",
"body": "Bump pipenv from 2021.5.29 to 2022.1.8",
"is_bot": false,
"headline": "Merge pull request #1237 from pytube/dependabot/pip/pipenv-2022.1.8",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2022-02-04T16:02:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a7702f8682c8b92693afc8e4e7da9da69f43015b",
"body": "Bumps [pipenv](https://github.com/pypa/pipenv) from 2021.5.29 to 2022.1.8.\n- [Release notes](https://github.com/pypa/pipenv/releases)\n- [Changelog](https://github.com/pypa/pipenv/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pypa/pipenv/compare/v2021.5.29...v2022.1.8)\n\n---\nupdated-dependencies:\n- dependency-name: pipenv\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "Bump pipenv from 2021.5.29 to 2022.1.8",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2022-02-04T15:51:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d57d696d2ec79a37d68c9d346af597e0333f9758",
"body": "Revert \"Fixed RegexMatchError\"",
"is_bot": false,
"headline": "Merge pull request #1236 from pytube/revert-1200-master",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2022-02-04T10:34:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0a7e960c9bd503efd8848340b3ac4b2e924f26ff",
"body": null,
"is_bot": false,
"headline": "Revert \"Fixed RegexMatchError\"",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2022-02-04T10:34:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f23b20c7640b46019954c2ee497eb992a9314983",
"body": "Fixed RegexMatchError",
"is_bot": false,
"headline": "Merge pull request #1200 from DJStompZone/master",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2022-02-04T10:33:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e77eef610e882c56412757a221e15971886f2c10",
"body": "* Update __main__.py\r\n\r\n* Update __main__.py",
"is_bot": false,
"headline": "Added == comparison between YouTube objects. (#1161)",
"author_name": "G_cat",
"author_login": "Gcat101",
"committed_at": "2022-02-04T08:01:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "991c571a19b856d7a2e09df6bb7322473a93ab3d",
"body": "Correct typos, improve clarity, engagement, and delivery.",
"is_bot": false,
"headline": "Update README.md (#1140)",
"author_name": "Ege Akman",
"author_login": "egeakman",
"committed_at": "2022-02-04T07:49:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "46fe44c3025cbaafce4ddb0b34526b91e4e819fe",
"body": null,
"is_bot": false,
"headline": "Update cipher.py",
"author_name": "DJ (Salvo)",
"author_login": "DJStompZone",
"committed_at": "2022-01-20T03:58:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "56ccab4f9cbfa989c418e93a42ef00b424fc05f4",
"body": null,
"is_bot": false,
"headline": "Bump version: 11.0.1 → 11.0.2",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-12-14T01:48:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aa39c8746825ad61030685734e939edf59ae8e3e",
"body": "fix bug regex",
"is_bot": false,
"headline": "Merge pull request #1172 from mhi-iranmanesh/patch-1",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-12-14T01:42:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bc891f4a2e7c68580ef73abccd3f148a51537c24",
"body": null,
"is_bot": false,
"headline": "fix bug regex",
"author_name": "mohammad hassan",
"author_login": "mhi-iranmanesh",
"committed_at": "2021-11-23T13:09:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f06e0710dcf5089e582487fee94f7bb0afbf7ba9",
"body": null,
"is_bot": false,
"headline": "Pass `--python` into pipenv to specify version (#1116)",
"author_name": "Ronnie Llamado",
"author_login": "ronnie-llamado",
"committed_at": "2021-09-19T16:38:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bb890af3b271a616bbe1d08abc8c65bac9266b0a",
"body": null,
"is_bot": false,
"headline": "Bump version: 11.0.0 → 11.0.1",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-08-27T22:53:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cc6b4aa7f0bdf65f618657a7bdfa518e6a074205",
"body": "* Change Search client to WEB.\r\n\r\n* Add documentation for oauth functionality.\r\n\r\n* Return raw 'last_updated' string where it is not parseable.",
"is_bot": false,
"headline": "Selection of bugfixes and improvements (#1090)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-08-27T22:52:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ce8901c36c69a5b3188dd4d608dbe86602b17656",
"body": "* Fixes RegexMatchError in n cipher",
"is_bot": false,
"headline": "fixes #1098 (#1099)",
"author_name": "xioren",
"author_login": "vercingetorx",
"committed_at": "2021-08-27T22:50:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "12c7c4da5a11913bb39774175a78e7579e274fb5",
"body": null,
"is_bot": false,
"headline": "Bump version: 10.9.3 → 11.0.0",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-08-03T23:09:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fc9aec5c35829f2ebb4ef8dd599b14a666850d20",
"body": "* User InnerTube in place of `get_video_info` url\r\n\r\n* Added some additional base parameters for innertube requests.\r\n\r\n* Added Oauth support for innertube client\r\n\r\n* Add exception for age-restricted videos which can no longer be accessed without using auth.\r\n\r\n* Carved out and simplified code wher\n[…]\nes.\r\n\r\n* Added renderer catch -- fixes #1068\r\n\r\n* Additional channel name support for URL-encoded names.\r\n\r\n* Updated test mocks, removed region-locked test because that functionality no longer works.",
"is_bot": false,
"headline": "Fix #1060 (#1067)",
"author_name": "Alex G",
"author_login": "Zeecka",
"committed_at": "2021-08-03T23:04:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "10989d2b7a5c1825958904638932c0a3d8147d71",
"body": null,
"is_bot": false,
"headline": "Bump version: 10.9.2 → 10.9.3",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-07-21T00:38:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8f73fede6365330bd9e354d19e0bb1dbac2150d6",
"body": "* Add catch for suggested search results; accounts for edge case of no views on result.\r\n\r\n* Added exception handling for incorrect cached js files.\r\n\r\n* Now allows you to *actually* set filenames, instead of doing partial overrides to create safe filenames.\r\n\r\n* Innertube improvements, and skeleton code for future innertube work",
"is_bot": false,
"headline": "Bugfixes (#1058)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-07-21T00:36:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "851eb9969c08b2bcb34ec5113380c4569e122651",
"body": null,
"is_bot": false,
"headline": "Bump version: 10.9.1 → 10.9.2",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-07-07T19:28:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9a866866d66f75450d4ea8613d90a978f7f7b0cf",
"body": "* Update mock so that stream raises HTTPError, rather than head, and simplified some other mocks.\r\n\r\n* pep8-naming updated, adding a new ignore",
"is_bot": false,
"headline": "Fix test to no longer make web requests. (#1048)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-07-07T19:27:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf5a7e74bcc4918b9436468e628fd676c13028fa",
"body": null,
"is_bot": false,
"headline": "Bump version: 10.9.0 → 10.9.1",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-07-06T23:27:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e573655052af2f8d2f78cc7f61640af80c3aae14",
"body": "* Removed special character from __author__ attribute.\r\n\r\n* Changed -v CLI arg to have a single setting, rather than multiple.\r\n\r\n* Add retry functionality for IncompleteRead errors.\r\n\r\n* Extract contentLength from info where possible.\r\n\r\n* Mock open in final streams test to prevent file from being written.\r\n\r\n* Exception handling for accessing titles of private videos.",
"is_bot": false,
"headline": "Bugfixes (#1045)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-07-06T23:27:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "181c88c243158c064d6575882005896c3cf8ac7f",
"body": "* Added search functionality.\r\n\r\n* Added repr method to YouTube to make it more useful.\r\n\r\n* Added some docstrings + comments for clarity.",
"is_bot": false,
"headline": "[DRAFT] Feature/search (#1030)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-07-06T17:07:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "257e6d28e73404c344925c95716aff312739fe8c",
"body": null,
"is_bot": false,
"headline": "Bump version: 10.8.5 → 10.9.0",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-07-06T00:34:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "79befd686c2a37a381356a2e891d51c8e3af0f3d",
"body": "* JS emulation for calculating n value for stream URLs to fix throttling issue.\r\n\r\n* Made parser HTMLParseError more informative.\r\n\r\n* Add support for bracket start to parser.\r\n\r\n* Helper for auto-generating necessary json files.\r\n\r\n* Removed test that no longer seems to work.",
"is_bot": false,
"headline": "Fix/1033 (#1037)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-07-06T00:32:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "48ea5205b92e8e090866589be67780ce8e29a922",
"body": "* Adds functionality for interacting with certain endpoints of the innertube API.",
"is_bot": false,
"headline": "Improvement/youtubei (#1029)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-06-23T00:51:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f5162cb42dad10dab3cc92bcf4221505fe60c27",
"body": null,
"is_bot": false,
"headline": "Bump version: 10.8.4 → 10.8.5",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-06-19T00:42:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c92997f19e4c61d1dd95399930bb72b946340b7",
"body": "* Temporary workaround for get_video_info issue by adding more parameters to `get_video_info` call.",
"is_bot": false,
"headline": "Fix/param update (#1025)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-06-19T00:41:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a1518e745a8ee54fc29d8d0561a66c1f4a1303e0",
"body": "* Adds support for additional channel URL patterns",
"is_bot": false,
"headline": "Improve Channel object support for user channels",
"author_name": "JarbasAI",
"author_login": "JarbasAl",
"committed_at": "2021-06-15T00:48:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "be07012c20162cfc44193514ba96931ab469b7aa",
"body": "* Docstring improvements\r\n\r\n* Documentation for the channel object\r\n\r\n* Additional metadata available from the channel object, with unit tests",
"is_bot": false,
"headline": "Improvement/channel docs (#1011)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-06-04T00:24:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9f9723b13c8591d49c43962efd820e37aeed8287",
"body": "Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.4 to 1.26.5.\r\n- [Release notes](https://github.com/urllib3/urllib3/releases)\r\n- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)\r\n- [Commits](https://github.com/urllib3/urllib3/compare/1.26.4...1.26.5)",
"is_bot": true,
"headline": "Bump urllib3 from 1.26.4 to 1.26.5 (#1010)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2021-06-02T22:49:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "754efa0b28dcb0840ab14923804956ae1f1af101",
"body": null,
"is_bot": false,
"headline": "Bump version: 10.8.3 → 10.8.4",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-06-02T22:30:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c9fbfe4d31a05134d13be65b988f3ea6fa21db8",
"body": null,
"is_bot": false,
"headline": "Added fix for playlist length string not parsing correctly. (#1009)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-06-02T22:29:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3e6d79f1fa77bf1868958d900f1a27ad5cf411d",
"body": null,
"is_bot": false,
"headline": "Bump version: 10.8.2 → 10.8.3",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-05-30T18:01:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b45ac805fb2cfa9e93878129a784e02fc2cfc6ad",
"body": "* Fixes channel url matching for channels without canonical names.",
"is_bot": false,
"headline": "Fix channel url matching. (#1005)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-05-30T18:01:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3157612ec77d579a782530977ea87a13cf72281c",
"body": "* Implements an actual check for whether a video is a livestream, and raises an exception if it is.",
"is_bot": false,
"headline": "Livestream exception raising",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-05-30T17:27:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e776be69d62d88380a2e316460de395656e587c5",
"body": null,
"is_bot": false,
"headline": "Bump version: 10.8.1 → 10.8.2",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-05-20T21:51:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "153317f33321accdc05320d0d52fe6160f0ea984",
"body": "* HTTP 404 Error fix by adding html5 parameter to get_video_info requests\r\n\r\n* Add `www.` to URL to avoid redirect request.",
"is_bot": false,
"headline": "Fix bug video_info_url HTTP 404 Error (#998)",
"author_name": "Jianfeng Wu",
"author_login": "drwjf",
"committed_at": "2021-05-20T21:51:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "40dc397dec44254fb7447c4d27534d5847c095c0",
"body": null,
"is_bot": false,
"headline": "Bump version: 10.8.0 → 10.8.1",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-05-09T21:40:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af1eeee625292300b59b15a2b4fe992220c4cddc",
"body": "* Added channel id and channel url properties to YouTube object.\r\n\r\n* Added some metadata to playlist object:\r\n - owner\r\n - owner_id\r\n - owner_url\r\n - description\r\n - length\r\n - views",
"is_bot": false,
"headline": "Improve metadata availability (#988)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-05-09T21:39:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d091d913d8c4117a95c49674d597ad110e8b0f9",
"body": null,
"is_bot": false,
"headline": "Bump version: 10.7.2 → 10.8.0",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-05-09T02:11:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f293f7658fff7412ea5ad5c9c4923dc96442600d",
"body": "* Implements a Channel object for downloading videos from a YouTube channel.\r\n\r\n* Minor changes to the playlist class to make it more compatible to be subclassed.\r\n\r\n* `.videos` and `.video_urls` now behave just like iterable lists, but defer web requests.\r\n\r\n* Implements DeferredGeneratorList which converts generators to lazy list-like objects.",
"is_bot": false,
"headline": "Initial implementation of Channel object (#932)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-05-09T02:11:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7f650809f056b988d725475596de17c5822a9dd",
"body": "This should speed up downloads for most users to some extent.",
"is_bot": false,
"headline": "Remove the chunk size file write limit to speed up downloads. (#982)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-05-05T23:10:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "518ce2774ab93bc0a6b56096f4b78765e9572328",
"body": "* Add docstring about max_retried to stream.download() method",
"is_bot": false,
"headline": "Docstring improvement (#980)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-04-23T01:07:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8b96181261cb73a4f5998847ae5737915a21e310",
"body": "* Adds some documentation about downloading a stream to the streams section of readthedocs.\r\n\r\n* Hopefully fixes some API documentation references",
"is_bot": false,
"headline": "Documentation update. (#979)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-04-23T00:57:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4c073d1044e22e7fe0b34ec3c0ca7c09d1aa470f",
"body": null,
"is_bot": false,
"headline": "Remove contributors block",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-04-22T17:00:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ca51d497790f7e910c0b90bd1ef2ced6d904f27",
"body": null,
"is_bot": false,
"headline": "Update README.md",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-04-22T16:54:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "319fd41ecc18cacf8b7747b821901fc40806e384",
"body": null,
"is_bot": false,
"headline": "Add contributors to the readme",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-04-22T16:51:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9feef4e692688dab4f14034d865ee13060c3bf18",
"body": null,
"is_bot": false,
"headline": "Bump version: 10.7.1 → 10.7.2",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-04-20T15:54:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a916080734f42cced1cd848c1857439e06bfb6e5",
"body": null,
"is_bot": false,
"headline": "Raises non-timeout URLErrors correctly now. (#977)",
"author_name": "Taylor Fox Dahlin",
"author_login": "tfdahlin",
"committed_at": "2021-04-20T15:53:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "706e53c9b5c3f5f2ba3067c14a91b11003d55cf7",
"body": null,
"is_bot": false,
"headline": "Remove Codecov badge",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-04-12T14:18:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "abb922ec688a152afdada3107dc451f9eee3ac32",
"body": null,
"is_bot": false,
"headline": "Update README.md",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-04-12T09:18:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bff3e77253e39ee4e1865f8b9dc03632346ba9b5",
"body": "* Update authors/contact\r\n\r\n* Update documentation URLs\r\n\r\n* Update some old references from nficano/pytube to pytube/pytube\r\n\r\n* Updated license in setup.py to The Unlicense\r\n\r\n* Removed pytube3 CLI entrypoint\r\n\r\n* Change OS classified to platform-independent\r\n\r\n* Remove travis, coveralls, and codecov references\r\n\r\n* Remove legacy 'coding: utf-8' tag",
"is_bot": false,
"headline": "Remove \"harold.martin@gmail.com\" from authors (#974)",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-04-12T02:28:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d2c1a4e756cd8bac373867bf673155e691f1e04",
"body": "…ecov.",
"is_bot": false,
"headline": "Strip out code coverage until I can find a working alternative to cod…",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-04-11T19:27:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9300b80082db472c124c74da4ddfe10524a06049",
"body": null,
"is_bot": false,
"headline": "Add Sketch logo",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-04-11T18:55:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "83135af38ce16301d7601a05183fa4ea8ef6a3a7",
"body": null,
"is_bot": false,
"headline": "Create codecov.yml",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-04-11T18:45:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "23b18c56e9b73a063402a2715dc6c8e6b00f574e",
"body": null,
"is_bot": false,
"headline": "Update ci.yml",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-04-11T18:43:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b86dc6458a48680e569674777b65eb2bc5609327",
"body": null,
"is_bot": false,
"headline": "Create codecov.yml",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-04-11T18:33:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "488dd7ebd19165ed8ef05dfd33bd34c657634740",
"body": null,
"is_bot": false,
"headline": "Update ci.yml",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-04-11T18:12:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d832160db28abd84809d3fc7e4d14357d227abe0",
"body": null,
"is_bot": false,
"headline": "Update ci.yml",
"author_name": "Nick Ficano",
"author_login": "nficano",
"committed_at": "2021-04-11T18:10:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3f05a17fb90a19fe460a38ffd83fbc81148940db",
"body": "Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.3 to 1.26.4.\r\n- [Release notes](https://github.com/urllib3/urllib3/releases)\r\n- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)\r\n- [Commits](https://github.com/urllib3/urllib3/compare/1.26.3...1.26.4)",
"is_bot": true,
"headline": "Bump urllib3 from 1.26.3 to 1.26.4 (#970)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2021-04-06T20:03:10Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 31,
"commits_last_year": 0,
"latest_release_at": "2021-08-27T22:55:44Z",
"latest_release_tag": "v11.0.1",
"releases_from_tags": false,
"days_since_last_push": 705,
"active_weeks_last_year": 0,
"days_since_latest_release": 1788,
"mean_days_between_releases": 11
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 75,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "pytube",
"exists": true,
"license": "The Unlicense (Unlicense)",
"keywords": [
"youtube",
"download",
"video",
"stream",
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: Developers",
"License :: OSI Approved :: The Unlicense (Unlicense)",
"Natural Language :: English",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Topic :: Internet",
"Topic :: Multimedia :: Video",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Terminals",
"Topic :: Utilities"
],
"ecosystem": "pypi",
"matches_repo": true,
"registry_url": "https://pypi.org/project/pytube/",
"is_deprecated": false,
"latest_version": "15.0.0",
"repository_url": "https://github.com/pytube/pytube",
"versions_count": 86,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 4595201,
"first_published_at": "2014-09-28T04:24:11.028152Z",
"latest_published_at": "2023-05-07T19:39:01.903042Z",
"latest_version_yanked": null,
"days_since_latest_publish": 1171
}
]
},
"popularity": {
"forks": 2499,
"stars": 13153,
"watchers": 197,
"fork_history": {
"days": [
{
"date": "2022-12-12",
"count": 1
},
{
"date": "2022-12-15",
"count": 1
},
{
"date": "2022-12-18",
"count": 1
},
{
"date": "2022-12-19",
"count": 1
},
{
"date": "2022-12-20",
"count": 1
},
{
"date": "2022-12-21",
"count": 3
},
{
"date": "2022-12-22",
"count": 1
},
{
"date": "2022-12-23",
"count": 1
},
{
"date": "2022-12-24",
"count": 1
},
{
"date": "2022-12-25",
"count": 1
},
{
"date": "2022-12-28",
"count": 2
},
{
"date": "2022-12-29",
"count": 2
},
{
"date": "2022-12-30",
"count": 2
},
{
"date": "2023-01-01",
"count": 1
},
{
"date": "2023-01-02",
"count": 3
},
{
"date": "2023-01-03",
"count": 2
},
{
"date": "2023-01-04",
"count": 1
},
{
"date": "2023-01-06",
"count": 1
},
{
"date": "2023-01-08",
"count": 1
},
{
"date": "2023-01-11",
"count": 1
},
{
"date": "2023-01-12",
"count": 1
},
{
"date": "2023-01-16",
"count": 3
},
{
"date": "2023-01-18",
"count": 2
},
{
"date": "2023-01-19",
"count": 1
},
{
"date": "2023-01-20",
"count": 1
},
{
"date": "2023-01-23",
"count": 1
},
{
"date": "2023-01-26",
"count": 2
},
{
"date": "2023-01-28",
"count": 1
},
{
"date": "2023-01-29",
"count": 3
},
{
"date": "2023-02-02",
"count": 1
},
{
"date": "2023-02-03",
"count": 1
},
{
"date": "2023-02-04",
"count": 2
},
{
"date": "2023-02-07",
"count": 1
},
{
"date": "2023-02-08",
"count": 1
},
{
"date": "2023-02-09",
"count": 3
},
{
"date": "2023-02-12",
"count": 1
},
{
"date": "2023-02-13",
"count": 1
},
{
"date": "2023-02-14",
"count": 1
},
{
"date": "2023-02-15",
"count": 1
},
{
"date": "2023-02-17",
"count": 1
},
{
"date": "2023-02-20",
"count": 3
},
{
"date": "2023-02-24",
"count": 1
},
{
"date": "2023-02-25",
"count": 1
},
{
"date": "2023-02-26",
"count": 1
},
{
"date": "2023-03-01",
"count": 1
},
{
"date": "2023-03-02",
"count": 1
},
{
"date": "2023-03-03",
"count": 2
},
{
"date": "2023-03-04",
"count": 1
},
{
"date": "2023-03-05",
"count": 1
},
{
"date": "2023-03-06",
"count": 1
},
{
"date": "2023-03-08",
"count": 1
},
{
"date": "2023-03-10",
"count": 1
},
{
"date": "2023-03-13",
"count": 2
},
{
"date": "2023-03-15",
"count": 1
},
{
"date": "2023-03-17",
"count": 10
},
{
"date": "2023-03-18",
"count": 5
},
{
"date": "2023-03-19",
"count": 4
},
{
"date": "2023-03-20",
"count": 10
},
{
"date": "2023-03-21",
"count": 3
},
{
"date": "2023-03-24",
"count": 1
},
{
"date": "2023-03-27",
"count": 2
},
{
"date": "2023-03-28",
"count": 2
},
{
"date": "2023-03-29",
"count": 1
},
{
"date": "2023-03-30",
"count": 2
},
{
"date": "2023-04-01",
"count": 1
},
{
"date": "2023-04-03",
"count": 3
},
{
"date": "2023-04-04",
"count": 1
},
{
"date": "2023-04-05",
"count": 1
},
{
"date": "2023-04-06",
"count": 1
},
{
"date": "2023-04-09",
"count": 2
},
{
"date": "2023-04-10",
"count": 3
},
{
"date": "2023-04-11",
"count": 1
},
{
"date": "2023-04-15",
"count": 1
},
{
"date": "2023-04-16",
"count": 2
},
{
"date": "2023-04-18",
"count": 1
},
{
"date": "2023-04-20",
"count": 1
},
{
"date": "2023-04-22",
"count": 1
},
{
"date": "2023-04-24",
"count": 1
},
{
"date": "2023-04-26",
"count": 3
},
{
"date": "2023-04-27",
"count": 7
},
{
"date": "2023-04-28",
"count": 2
},
{
"date": "2023-04-29",
"count": 4
},
{
"date": "2023-04-30",
"count": 3
},
{
"date": "2023-05-01",
"count": 2
},
{
"date": "2023-05-02",
"count": 2
},
{
"date": "2023-05-03",
"count": 3
},
{
"date": "2023-05-04",
"count": 1
},
{
"date": "2023-05-05",
"count": 3
},
{
"date": "2023-05-06",
"count": 1
},
{
"date": "2023-05-07",
"count": 1
},
{
"date": "2023-05-08",
"count": 3
},
{
"date": "2023-05-09",
"count": 1
},
{
"date": "2023-05-10",
"count": 3
},
{
"date": "2023-05-11",
"count": 3
},
{
"date": "2023-05-12",
"count": 2
},
{
"date": "2023-05-13",
"count": 1
},
{
"date": "2023-05-14",
"count": 2
},
{
"date": "2023-05-15",
"count": 1
},
{
"date": "2023-05-17",
"count": 1
},
{
"date": "2023-05-18",
"count": 1
},
{
"date": "2023-05-19",
"count": 1
},
{
"date": "2023-05-20",
"count": 2
},
{
"date": "2023-05-21",
"count": 1
},
{
"date": "2023-05-22",
"count": 2
},
{
"date": "2023-05-23",
"count": 2
},
{
"date": "2023-05-24",
"count": 8
},
{
"date": "2023-05-25",
"count": 7
},
{
"date": "2023-05-26",
"count": 1
},
{
"date": "2023-05-27",
"count": 1
},
{
"date": "2023-05-29",
"count": 1
},
{
"date": "2023-05-30",
"count": 2
},
{
"date": "2023-05-31",
"count": 1
},
{
"date": "2023-06-02",
"count": 2
},
{
"date": "2023-06-04",
"count": 1
},
{
"date": "2023-06-07",
"count": 1
},
{
"date": "2023-06-08",
"count": 1
},
{
"date": "2023-06-21",
"count": 1
},
{
"date": "2023-06-23",
"count": 6
},
{
"date": "2023-06-24",
"count": 7
},
{
"date": "2023-06-25",
"count": 2
},
{
"date": "2023-06-26",
"count": 1
},
{
"date": "2023-06-27",
"count": 4
},
{
"date": "2023-06-28",
"count": 2
},
{
"date": "2023-06-29",
"count": 2
},
{
"date": "2023-07-01",
"count": 1
},
{
"date": "2023-07-02",
"count": 2
},
{
"date": "2023-07-03",
"count": 3
},
{
"date": "2023-07-04",
"count": 3
},
{
"date": "2023-07-05",
"count": 4
},
{
"date": "2023-07-06",
"count": 1
},
{
"date": "2023-07-07",
"count": 3
},
{
"date": "2023-07-08",
"count": 3
},
{
"date": "2023-07-09",
"count": 3
},
{
"date": "2023-07-10",
"count": 2
},
{
"date": "2023-07-11",
"count": 5
},
{
"date": "2023-07-12",
"count": 1
},
{
"date": "2023-07-13",
"count": 1
},
{
"date": "2023-07-14",
"count": 2
},
{
"date": "2023-07-15",
"count": 1
},
{
"date": "2023-07-17",
"count": 3
},
{
"date": "2023-07-19",
"count": 10
},
{
"date": "2023-07-20",
"count": 6
},
{
"date": "2023-07-21",
"count": 1
},
{
"date": "2023-07-22",
"count": 1
},
{
"date": "2023-07-23",
"count": 1
},
{
"date": "2023-07-24",
"count": 1
},
{
"date": "2023-07-25",
"count": 1
},
{
"date": "2023-07-27",
"count": 1
},
{
"date": "2023-08-07",
"count": 1
},
{
"date": "2023-08-09",
"count": 1
},
{
"date": "2023-08-10",
"count": 1
},
{
"date": "2023-08-11",
"count": 5
},
{
"date": "2023-08-12",
"count": 14
},
{
"date": "2023-08-13",
"count": 7
},
{
"date": "2023-08-14",
"count": 16
},
{
"date": "2023-08-15",
"count": 6
},
{
"date": "2023-08-16",
"count": 4
},
{
"date": "2023-08-17",
"count": 1
},
{
"date": "2023-08-18",
"count": 1
},
{
"date": "2023-08-21",
"count": 1
},
{
"date": "2023-08-28",
"count": 3
},
{
"date": "2023-08-29",
"count": 1
},
{
"date": "2023-08-30",
"count": 1
},
{
"date": "2023-09-01",
"count": 1
},
{
"date": "2023-09-02",
"count": 1
},
{
"date": "2023-09-04",
"count": 1
},
{
"date": "2023-09-06",
"count": 2
},
{
"date": "2023-09-07",
"count": 1
},
{
"date": "2023-09-08",
"count": 1
},
{
"date": "2023-09-12",
"count": 1
},
{
"date": "2023-09-13",
"count": 1
},
{
"date": "2023-09-15",
"count": 3
},
{
"date": "2023-09-17",
"count": 1
},
{
"date": "2023-09-20",
"count": 1
},
{
"date": "2023-09-21",
"count": 1
},
{
"date": "2023-09-25",
"count": 1
},
{
"date": "2023-09-27",
"count": 8
},
{
"date": "2023-09-28",
"count": 6
},
{
"date": "2023-09-29",
"count": 1
},
{
"date": "2023-10-02",
"count": 2
},
{
"date": "2023-10-04",
"count": 2
},
{
"date": "2023-10-06",
"count": 3
},
{
"date": "2023-10-11",
"count": 1
},
{
"date": "2023-10-12",
"count": 1
},
{
"date": "2023-10-14",
"count": 1
},
{
"date": "2023-10-16",
"count": 1
},
{
"date": "2023-10-17",
"count": 1
},
{
"date": "2023-10-21",
"count": 1
},
{
"date": "2023-10-22",
"count": 1
},
{
"date": "2023-10-24",
"count": 1
},
{
"date": "2023-10-26",
"count": 2
},
{
"date": "2023-10-28",
"count": 1
},
{
"date": "2023-10-30",
"count": 1
},
{
"date": "2023-10-31",
"count": 1
},
{
"date": "2023-11-01",
"count": 2
},
{
"date": "2023-11-02",
"count": 1
},
{
"date": "2023-11-03",
"count": 3
},
{
"date": "2023-11-04",
"count": 3
},
{
"date": "2023-11-05",
"count": 3
},
{
"date": "2023-11-06",
"count": 1
},
{
"date": "2023-11-12",
"count": 1
},
{
"date": "2023-11-13",
"count": 1
},
{
"date": "2023-11-14",
"count": 2
},
{
"date": "2023-11-16",
"count": 2
},
{
"date": "2023-11-17",
"count": 1
},
{
"date": "2023-11-20",
"count": 1
},
{
"date": "2023-11-21",
"count": 2
},
{
"date": "2023-11-22",
"count": 1
},
{
"date": "2023-11-23",
"count": 2
},
{
"date": "2023-11-28",
"count": 2
},
{
"date": "2023-11-29",
"count": 2
},
{
"date": "2023-12-01",
"count": 1
},
{
"date": "2023-12-02",
"count": 1
},
{
"date": "2023-12-03",
"count": 1
},
{
"date": "2023-12-04",
"count": 1
},
{
"date": "2023-12-06",
"count": 1
},
{
"date": "2023-12-07",
"count": 6
},
{
"date": "2023-12-08",
"count": 1
},
{
"date": "2023-12-09",
"count": 1
},
{
"date": "2023-12-13",
"count": 1
},
{
"date": "2023-12-15",
"count": 3
},
{
"date": "2023-12-16",
"count": 1
},
{
"date": "2023-12-18",
"count": 2
},
{
"date": "2023-12-19",
"count": 6
},
{
"date": "2023-12-20",
"count": 3
},
{
"date": "2023-12-21",
"count": 1
},
{
"date": "2023-12-26",
"count": 3
},
{
"date": "2023-12-27",
"count": 2
},
{
"date": "2023-12-28",
"count": 3
},
{
"date": "2023-12-29",
"count": 1
},
{
"date": "2023-12-31",
"count": 2
},
{
"date": "2024-01-01",
"count": 3
},
{
"date": "2024-01-02",
"count": 1
},
{
"date": "2024-01-03",
"count": 1
},
{
"date": "2024-01-04",
"count": 2
},
{
"date": "2024-01-05",
"count": 1
},
{
"date": "2024-01-07",
"count": 1
},
{
"date": "2024-01-08",
"count": 2
},
{
"date": "2024-01-10",
"count": 3
},
{
"date": "2024-01-11",
"count": 1
},
{
"date": "2024-01-12",
"count": 1
},
{
"date": "2024-01-13",
"count": 2
},
{
"date": "2024-01-14",
"count": 1
},
{
"date": "2024-01-16",
"count": 1
},
{
"date": "2024-01-17",
"count": 1
},
{
"date": "2024-01-18",
"count": 2
},
{
"date": "2024-01-20",
"count": 2
},
{
"date": "2024-01-21",
"count": 2
},
{
"date": "2024-01-22",
"count": 1
},
{
"date": "2024-01-23",
"count": 1
},
{
"date": "2024-01-24",
"count": 1
},
{
"date": "2024-01-25",
"count": 1
},
{
"date": "2024-01-26",
"count": 1
},
{
"date": "2024-01-28",
"count": 3
},
{
"date": "2024-01-29",
"count": 2
},
{
"date": "2024-01-30",
"count": 1
},
{
"date": "2024-02-01",
"count": 2
},
{
"date": "2024-02-03",
"count": 1
},
{
"date": "2024-02-04",
"count": 1
},
{
"date": "2024-02-06",
"count": 1
},
{
"date": "2024-02-11",
"count": 2
},
{
"date": "2024-02-12",
"count": 1
},
{
"date": "2024-02-14",
"count": 2
},
{
"date": "2024-02-16",
"count": 1
},
{
"date": "2024-02-17",
"count": 1
},
{
"date": "2024-02-18",
"count": 1
},
{
"date": "2024-02-19",
"count": 3
},
{
"date": "2024-02-20",
"count": 1
},
{
"date": "2024-02-21",
"count": 2
},
{
"date": "2024-02-22",
"count": 2
},
{
"date": "2024-02-23",
"count": 1
},
{
"date": "2024-02-25",
"count": 1
},
{
"date": "2024-02-26",
"count": 2
},
{
"date": "2024-02-27",
"count": 2
},
{
"date": "2024-02-28",
"count": 2
},
{
"date": "2024-02-29",
"count": 3
},
{
"date": "2024-03-02",
"count": 1
},
{
"date": "2024-03-04",
"count": 1
},
{
"date": "2024-03-06",
"count": 3
},
{
"date": "2024-03-10",
"count": 1
},
{
"date": "2024-03-11",
"count": 1
},
{
"date": "2024-03-12",
"count": 1
},
{
"date": "2024-03-13",
"count": 1
},
{
"date": "2024-03-14",
"count": 1
},
{
"date": "2024-03-17",
"count": 1
},
{
"date": "2024-03-20",
"count": 1
},
{
"date": "2024-03-22",
"count": 1
},
{
"date": "2024-03-23",
"count": 3
},
{
"date": "2024-03-24",
"count": 2
},
{
"date": "2024-03-25",
"count": 4
},
{
"date": "2024-03-28",
"count": 2
},
{
"date": "2024-04-01",
"count": 3
},
{
"date": "2024-04-03",
"count": 1
},
{
"date": "2024-04-04",
"count": 2
},
{
"date": "2024-04-05",
"count": 1
},
{
"date": "2024-04-06",
"count": 1
},
{
"date": "2024-04-09",
"count": 2
},
{
"date": "2024-04-12",
"count": 1
},
{
"date": "2024-04-15",
"count": 2
},
{
"date": "2024-04-17",
"count": 1
},
{
"date": "2024-04-23",
"count": 1
},
{
"date": "2024-04-26",
"count": 1
},
{
"date": "2024-04-27",
"count": 2
},
{
"date": "2024-04-28",
"count": 2
},
{
"date": "2024-04-30",
"count": 1
},
{
"date": "2024-05-03",
"count": 1
},
{
"date": "2024-05-05",
"count": 1
},
{
"date": "2024-05-06",
"count": 8
},
{
"date": "2024-05-07",
"count": 18
},
{
"date": "2024-05-08",
"count": 16
},
{
"date": "2024-05-09",
"count": 3
},
{
"date": "2024-05-16",
"count": 2
},
{
"date": "2024-05-18",
"count": 1
},
{
"date": "2024-05-20",
"count": 1
},
{
"date": "2024-05-21",
"count": 2
},
{
"date": "2024-05-22",
"count": 2
},
{
"date": "2024-05-23",
"count": 9
},
{
"date": "2024-05-24",
"count": 1
},
{
"date": "2024-05-26",
"count": 2
},
{
"date": "2024-05-27",
"count": 1
},
{
"date": "2024-05-30",
"count": 1
},
{
"date": "2024-06-01",
"count": 1
},
{
"date": "2024-06-03",
"count": 1
},
{
"date": "2024-06-07",
"count": 1
},
{
"date": "2024-06-09",
"count": 1
},
{
"date": "2024-06-11",
"count": 1
},
{
"date": "2024-06-12",
"count": 1
},
{
"date": "2024-06-15",
"count": 1
},
{
"date": "2024-06-16",
"count": 1
},
{
"date": "2024-06-17",
"count": 1
},
{
"date": "2024-06-20",
"count": 3
},
{
"date": "2024-06-22",
"count": 1
},
{
"date": "2024-06-24",
"count": 1
},
{
"date": "2024-06-26",
"count": 1
},
{
"date": "2024-06-29",
"count": 1
},
{
"date": "2024-07-02",
"count": 1
},
{
"date": "2024-07-03",
"count": 1
},
{
"date": "2024-07-09",
"count": 8
},
{
"date": "2024-07-10",
"count": 12
},
{
"date": "2024-07-11",
"count": 5
},
{
"date": "2024-07-12",
"count": 7
},
{
"date": "2024-07-13",
"count": 4
},
{
"date": "2024-07-14",
"count": 5
},
{
"date": "2024-07-15",
"count": 7
},
{
"date": "2024-07-16",
"count": 9
},
{
"date": "2024-07-17",
"count": 8
},
{
"date": "2024-07-18",
"count": 9
},
{
"date": "2024-07-19",
"count": 4
},
{
"date": "2024-07-20",
"count": 2
},
{
"date": "2024-07-21",
"count": 2
},
{
"date": "2024-07-22",
"count": 3
},
{
"date": "2024-07-23",
"count": 1
},
{
"date": "2024-07-25",
"count": 1
},
{
"date": "2024-07-26",
"count": 2
},
{
"date": "2024-07-27",
"count": 1
},
{
"date": "2024-07-28",
"count": 1
},
{
"date": "2024-07-29",
"count": 4
},
{
"date": "2024-07-30",
"count": 3
},
{
"date": "2024-07-31",
"count": 2
},
{
"date": "2024-08-01",
"count": 3
},
{
"date": "2024-08-02",
"count": 5
},
{
"date": "2024-08-03",
"count": 1
},
{
"date": "2024-08-05",
"count": 1
},
{
"date": "2024-08-06",
"count": 2
},
{
"date": "2024-08-07",
"count": 1
},
{
"date": "2024-08-09",
"count": 2
},
{
"date": "2024-08-10",
"count": 1
},
{
"date": "2024-08-11",
"count": 1
},
{
"date": "2024-08-12",
"count": 1
},
{
"date": "2024-08-13",
"count": 1
},
{
"date": "2024-08-14",
"count": 2
},
{
"date": "2024-08-15",
"count": 2
},
{
"date": "2024-08-16",
"count": 3
},
{
"date": "2024-08-19",
"count": 1
},
{
"date": "2024-08-20",
"count": 1
},
{
"date": "2024-08-21",
"count": 1
},
{
"date": "2024-08-22",
"count": 1
},
{
"date": "2024-08-25",
"count": 1
},
{
"date": "2024-08-26",
"count": 2
},
{
"date": "2024-08-28",
"count": 1
},
{
"date": "2024-08-29",
"count": 1
},
{
"date": "2024-08-30",
"count": 1
},
{
"date": "2024-08-31",
"count": 3
},
{
"date": "2024-09-01",
"count": 2
},
{
"date": "2024-09-02",
"count": 1
},
{
"date": "2024-09-04",
"count": 1
},
{
"date": "2024-09-07",
"count": 1
},
{
"date": "2024-09-08",
"count": 2
},
{
"date": "2024-09-09",
"count": 1
},
{
"date": "2024-09-10",
"count": 1
},
{
"date": "2024-09-14",
"count": 2
},
{
"date": "2024-09-21",
"count": 2
},
{
"date": "2024-09-22",
"count": 1
},
{
"date": "2024-09-23",
"count": 1
},
{
"date": "2024-09-24",
"count": 1
},
{
"date": "2024-09-25",
"count": 1
},
{
"date": "2024-09-26",
"count": 2
},
{
"date": "2024-09-27",
"count": 1
},
{
"date": "2024-09-28",
"count": 1
},
{
"date": "2024-09-29",
"count": 1
},
{
"date": "2024-10-01",
"count": 3
},
{
"date": "2024-10-02",
"count": 1
},
{
"date": "2024-10-03",
"count": 2
},
{
"date": "2024-10-06",
"count": 2
},
{
"date": "2024-10-07",
"count": 1
},
{
"date": "2024-10-08",
"count": 1
},
{
"date": "2024-10-09",
"count": 2
},
{
"date": "2024-10-10",
"count": 1
},
{
"date": "2024-10-13",
"count": 2
},
{
"date": "2024-10-16",
"count": 1
},
{
"date": "2024-10-18",
"count": 1
},
{
"date": "2024-10-21",
"count": 1
},
{
"date": "2024-10-22",
"count": 2
},
{
"date": "2024-10-23",
"count": 1
},
{
"date": "2024-10-25",
"count": 1
},
{
"date": "2024-10-27",
"count": 1
},
{
"date": "2024-10-28",
"count": 1
},
{
"date": "2024-10-30",
"count": 2
},
{
"date": "2024-11-05",
"count": 3
},
{
"date": "2024-11-10",
"count": 2
},
{
"date": "2024-11-23",
"count": 1
},
{
"date": "2024-11-27",
"count": 1
},
{
"date": "2024-11-30",
"count": 1
},
{
"date": "2024-12-16",
"count": 1
},
{
"date": "2024-12-21",
"count": 2
},
{
"date": "2024-12-22",
"count": 4
},
{
"date": "2024-12-27",
"count": 1
},
{
"date": "2024-12-28",
"count": 2
},
{
"date": "2024-12-29",
"count": 1
},
{
"date": "2024-12-30",
"count": 1
},
{
"date": "2025-01-04",
"count": 2
},
{
"date": "2025-01-09",
"count": 1
},
{
"date": "2025-01-12",
"count": 2
},
{
"date": "2025-01-14",
"count": 1
},
{
"date": "2025-01-22",
"count": 2
},
{
"date": "2025-01-24",
"count": 1
},
{
"date": "2025-01-30",
"count": 2
},
{
"date": "2025-01-31",
"count": 1
},
{
"date": "2025-02-03",
"count": 2
},
{
"date": "2025-02-07",
"count": 1
},
{
"date": "2025-02-08",
"count": 1
},
{
"date": "2025-02-14",
"count": 1
},
{
"date": "2025-02-15",
"count": 1
},
{
"date": "2025-02-18",
"count": 1
},
{
"date": "2025-02-24",
"count": 1
},
{
"date": "2025-02-25",
"count": 2
},
{
"date": "2025-02-26",
"count": 1
},
{
"date": "2025-03-02",
"count": 1
},
{
"date": "2025-03-05",
"count": 1
},
{
"date": "2025-03-11",
"count": 1
},
{
"date": "2025-03-17",
"count": 1
},
{
"date": "2025-03-19",
"count": 1
},
{
"date": "2025-03-21",
"count": 1
},
{
"date": "2025-03-29",
"count": 1
},
{
"date": "2025-03-30",
"count": 1
},
{
"date": "2025-04-07",
"count": 1
},
{
"date": "2025-04-26",
"count": 1
},
{
"date": "2025-04-27",
"count": 1
},
{
"date": "2025-04-30",
"count": 1
},
{
"date": "2025-05-01",
"count": 1
},
{
"date": "2025-05-02",
"count": 1
},
{
"date": "2025-05-12",
"count": 2
},
{
"date": "2025-05-14",
"count": 1
},
{
"date": "2025-05-16",
"count": 1
},
{
"date": "2025-05-17",
"count": 1
},
{
"date": "2025-06-04",
"count": 1
},
{
"date": "2025-06-13",
"count": 1
},
{
"date": "2025-06-18",
"count": 1
},
{
"date": "2025-06-19",
"count": 1
},
{
"date": "2025-06-22",
"count": 1
},
{
"date": "2025-07-05",
"count": 1
},
{
"date": "2025-07-10",
"count": 1
},
{
"date": "2025-07-13",
"count": 1
},
{
"date": "2025-07-21",
"count": 1
},
{
"date": "2025-07-29",
"count": 1
},
{
"date": "2025-08-02",
"count": 1
},
{
"date": "2025-08-04",
"count": 1
},
{
"date": "2025-08-06",
"count": 1
},
{
"date": "2025-08-07",
"count": 1
},
{
"date": "2025-08-08",
"count": 1
},
{
"date": "2025-08-10",
"count": 1
},
{
"date": "2025-08-11",
"count": 1
},
{
"date": "2025-08-23",
"count": 1
},
{
"date": "2025-08-24",
"count": 1
},
{
"date": "2025-08-27",
"count": 1
},
{
"date": "2025-08-28",
"count": 1
},
{
"date": "2025-09-01",
"count": 1
},
{
"date": "2025-09-19",
"count": 1
},
{
"date": "2025-09-21",
"count": 1
},
{
"date": "2025-09-22",
"count": 1
},
{
"date": "2025-09-25",
"count": 1
},
{
"date": "2025-09-27",
"count": 1
},
{
"date": "2025-10-03",
"count": 1
},
{
"date": "2025-10-08",
"count": 1
},
{
"date": "2025-10-11",
"count": 1
},
{
"date": "2025-10-13",
"count": 1
},
{
"date": "2025-10-14",
"count": 2
},
{
"date": "2025-11-02",
"count": 2
},
{
"date": "2025-11-03",
"count": 1
},
{
"date": "2025-11-19",
"count": 1
},
{
"date": "2025-11-26",
"count": 1
},
{
"date": "2025-12-17",
"count": 1
},
{
"date": "2025-12-25",
"count": 1
},
{
"date": "2026-01-11",
"count": 1
},
{
"date": "2026-01-25",
"count": 1
},
{
"date": "2026-01-28",
"count": 1
},
{
"date": "2026-02-22",
"count": 1
},
{
"date": "2026-03-04",
"count": 1
},
{
"date": "2026-03-29",
"count": 1
},
{
"date": "2026-04-07",
"count": 1
},
{
"date": "2026-04-09",
"count": 1
},
{
"date": "2026-04-13",
"count": 1
},
{
"date": "2026-04-16",
"count": 1
},
{
"date": "2026-04-20",
"count": 2
},
{
"date": "2026-05-07",
"count": 1
},
{
"date": "2026-05-08",
"count": 1
},
{
"date": "2026-05-11",
"count": 1
},
{
"date": "2026-05-13",
"count": 1
},
{
"date": "2026-05-14",
"count": 1
},
{
"date": "2026-05-27",
"count": 1
},
{
"date": "2026-06-04",
"count": 1
},
{
"date": "2026-06-11",
"count": 1
}
],
"complete": false,
"collected": 1000,
"total_forks": 2499
},
"star_history": {
"days": [
{
"date": "2024-12-31",
"count": 3
},
{
"date": "2025-01-01",
"count": 3
},
{
"date": "2025-01-02",
"count": 4
},
{
"date": "2025-01-03",
"count": 5
},
{
"date": "2025-01-04",
"count": 3
},
{
"date": "2025-01-05",
"count": 4
},
{
"date": "2025-01-07",
"count": 5
},
{
"date": "2025-01-08",
"count": 5
},
{
"date": "2025-01-09",
"count": 2
},
{
"date": "2025-01-10",
"count": 3
},
{
"date": "2025-01-11",
"count": 1
},
{
"date": "2025-01-12",
"count": 5
},
{
"date": "2025-01-13",
"count": 2
},
{
"date": "2025-01-14",
"count": 6
},
{
"date": "2025-01-15",
"count": 1
},
{
"date": "2025-01-16",
"count": 8
},
{
"date": "2025-01-17",
"count": 2
},
{
"date": "2025-01-18",
"count": 5
},
{
"date": "2025-01-19",
"count": 3
},
{
"date": "2025-01-20",
"count": 1
},
{
"date": "2025-01-21",
"count": 4
},
{
"date": "2025-01-22",
"count": 3
},
{
"date": "2025-01-23",
"count": 5
},
{
"date": "2025-01-24",
"count": 4
},
{
"date": "2025-01-25",
"count": 1
},
{
"date": "2025-01-26",
"count": 7
},
{
"date": "2025-01-27",
"count": 3
},
{
"date": "2025-01-28",
"count": 6
},
{
"date": "2025-01-29",
"count": 3
},
{
"date": "2025-01-30",
"count": 3
},
{
"date": "2025-01-31",
"count": 3
},
{
"date": "2025-02-01",
"count": 3
},
{
"date": "2025-02-02",
"count": 2
},
{
"date": "2025-02-03",
"count": 3
},
{
"date": "2025-02-04",
"count": 6
},
{
"date": "2025-02-05",
"count": 4
},
{
"date": "2025-02-06",
"count": 4
},
{
"date": "2025-02-07",
"count": 4
},
{
"date": "2025-02-08",
"count": 4
},
{
"date": "2025-02-09",
"count": 1
},
{
"date": "2025-02-10",
"count": 4
},
{
"date": "2025-02-11",
"count": 1
},
{
"date": "2025-02-12",
"count": 3
},
{
"date": "2025-02-13",
"count": 4
},
{
"date": "2025-02-14",
"count": 3
},
{
"date": "2025-02-16",
"count": 3
},
{
"date": "2025-02-17",
"count": 2
},
{
"date": "2025-02-18",
"count": 4
},
{
"date": "2025-02-19",
"count": 1
},
{
"date": "2025-02-20",
"count": 3
},
{
"date": "2025-02-21",
"count": 5
},
{
"date": "2025-02-22",
"count": 2
},
{
"date": "2025-02-23",
"count": 3
},
{
"date": "2025-02-24",
"count": 7
},
{
"date": "2025-02-25",
"count": 5
},
{
"date": "2025-02-26",
"count": 1
},
{
"date": "2025-02-27",
"count": 3
},
{
"date": "2025-02-28",
"count": 1
},
{
"date": "2025-03-02",
"count": 3
},
{
"date": "2025-03-04",
"count": 2
},
{
"date": "2025-03-05",
"count": 1
},
{
"date": "2025-03-06",
"count": 3
},
{
"date": "2025-03-07",
"count": 4
},
{
"date": "2025-03-08",
"count": 2
},
{
"date": "2025-03-09",
"count": 3
},
{
"date": "2025-03-10",
"count": 3
},
{
"date": "2025-03-11",
"count": 2
},
{
"date": "2025-03-12",
"count": 2
},
{
"date": "2025-03-13",
"count": 3
},
{
"date": "2025-03-16",
"count": 2
},
{
"date": "2025-03-17",
"count": 1
},
{
"date": "2025-03-18",
"count": 3
},
{
"date": "2025-03-19",
"count": 2
},
{
"date": "2025-03-20",
"count": 2
},
{
"date": "2025-03-21",
"count": 4
},
{
"date": "2025-03-22",
"count": 1
},
{
"date": "2025-03-23",
"count": 2
},
{
"date": "2025-03-24",
"count": 2
},
{
"date": "2025-03-25",
"count": 1
},
{
"date": "2025-03-26",
"count": 1
},
{
"date": "2025-03-27",
"count": 3
},
{
"date": "2025-03-28",
"count": 2
},
{
"date": "2025-03-29",
"count": 3
},
{
"date": "2025-03-30",
"count": 3
},
{
"date": "2025-03-31",
"count": 1
},
{
"date": "2025-04-01",
"count": 2
},
{
"date": "2025-04-02",
"count": 3
},
{
"date": "2025-04-03",
"count": 4
},
{
"date": "2025-04-04",
"count": 1
},
{
"date": "2025-04-05",
"count": 1
},
{
"date": "2025-04-06",
"count": 3
},
{
"date": "2025-04-07",
"count": 1
},
{
"date": "2025-04-08",
"count": 2
},
{
"date": "2025-04-09",
"count": 2
},
{
"date": "2025-04-10",
"count": 5
},
{
"date": "2025-04-11",
"count": 2
},
{
"date": "2025-04-12",
"count": 2
},
{
"date": "2025-04-13",
"count": 3
},
{
"date": "2025-04-14",
"count": 1
},
{
"date": "2025-04-15",
"count": 5
},
{
"date": "2025-04-16",
"count": 2
},
{
"date": "2025-04-17",
"count": 1
},
{
"date": "2025-04-18",
"count": 3
},
{
"date": "2025-04-19",
"count": 2
},
{
"date": "2025-04-20",
"count": 2
},
{
"date": "2025-04-21",
"count": 2
},
{
"date": "2025-04-22",
"count": 5
},
{
"date": "2025-04-23",
"count": 3
},
{
"date": "2025-04-24",
"count": 1
},
{
"date": "2025-04-25",
"count": 3
},
{
"date": "2025-04-27",
"count": 3
},
{
"date": "2025-04-28",
"count": 3
},
{
"date": "2025-04-29",
"count": 3
},
{
"date": "2025-04-30",
"count": 3
},
{
"date": "2025-05-01",
"count": 1
},
{
"date": "2025-05-02",
"count": 3
},
{
"date": "2025-05-03",
"count": 2
},
{
"date": "2025-05-04",
"count": 1
},
{
"date": "2025-05-05",
"count": 3
},
{
"date": "2025-05-06",
"count": 3
},
{
"date": "2025-05-07",
"count": 2
},
{
"date": "2025-05-08",
"count": 5
},
{
"date": "2025-05-09",
"count": 1
},
{
"date": "2025-05-10",
"count": 3
},
{
"date": "2025-05-11",
"count": 1
},
{
"date": "2025-05-12",
"count": 2
},
{
"date": "2025-05-13",
"count": 2
},
{
"date": "2025-05-14",
"count": 4
},
{
"date": "2025-05-16",
"count": 1
},
{
"date": "2025-05-17",
"count": 2
},
{
"date": "2025-05-18",
"count": 3
},
{
"date": "2025-05-19",
"count": 2
},
{
"date": "2025-05-20",
"count": 3
},
{
"date": "2025-05-21",
"count": 1
},
{
"date": "2025-05-23",
"count": 4
},
{
"date": "2025-05-24",
"count": 2
},
{
"date": "2025-05-25",
"count": 2
},
{
"date": "2025-05-26",
"count": 3
},
{
"date": "2025-05-27",
"count": 1
},
{
"date": "2025-05-28",
"count": 2
},
{
"date": "2025-05-29",
"count": 4
},
{
"date": "2025-05-30",
"count": 3
},
{
"date": "2025-05-31",
"count": 4
},
{
"date": "2025-06-01",
"count": 4
},
{
"date": "2025-06-02",
"count": 3
},
{
"date": "2025-06-03",
"count": 2
},
{
"date": "2025-06-04",
"count": 5
},
{
"date": "2025-06-05",
"count": 2
},
{
"date": "2025-06-06",
"count": 1
},
{
"date": "2025-06-07",
"count": 2
},
{
"date": "2025-06-08",
"count": 2
},
{
"date": "2025-06-09",
"count": 2
},
{
"date": "2025-06-10",
"count": 1
},
{
"date": "2025-06-11",
"count": 1
},
{
"date": "2025-06-12",
"count": 1
},
{
"date": "2025-06-13",
"count": 1
},
{
"date": "2025-06-14",
"count": 2
},
{
"date": "2025-06-16",
"count": 1
},
{
"date": "2025-06-17",
"count": 1
},
{
"date": "2025-06-18",
"count": 3
},
{
"date": "2025-06-19",
"count": 3
},
{
"date": "2025-06-20",
"count": 1
},
{
"date": "2025-06-21",
"count": 2
},
{
"date": "2025-06-22",
"count": 1
},
{
"date": "2025-06-23",
"count": 3
},
{
"date": "2025-06-25",
"count": 4
},
{
"date": "2025-06-26",
"count": 1
},
{
"date": "2025-06-28",
"count": 2
},
{
"date": "2025-07-01",
"count": 2
},
{
"date": "2025-07-02",
"count": 4
},
{
"date": "2025-07-04",
"count": 2
},
{
"date": "2025-07-05",
"count": 3
},
{
"date": "2025-07-06",
"count": 1
},
{
"date": "2025-07-07",
"count": 2
},
{
"date": "2025-07-08",
"count": 2
},
{
"date": "2025-07-09",
"count": 1
},
{
"date": "2025-07-12",
"count": 1
},
{
"date": "2025-07-13",
"count": 1
},
{
"date": "2025-07-15",
"count": 2
},
{
"date": "2025-07-17",
"count": 1
},
{
"date": "2025-07-18",
"count": 1
},
{
"date": "2025-07-19",
"count": 2
},
{
"date": "2025-07-20",
"count": 1
},
{
"date": "2025-07-21",
"count": 6
},
{
"date": "2025-07-23",
"count": 1
},
{
"date": "2025-07-25",
"count": 1
},
{
"date": "2025-07-26",
"count": 5
},
{
"date": "2025-07-28",
"count": 2
},
{
"date": "2025-07-29",
"count": 3
},
{
"date": "2025-07-30",
"count": 2
},
{
"date": "2025-08-01",
"count": 5
},
{
"date": "2025-08-03",
"count": 4
},
{
"date": "2025-08-04",
"count": 3
},
{
"date": "2025-08-05",
"count": 3
},
{
"date": "2025-08-06",
"count": 3
},
{
"date": "2025-08-07",
"count": 2
},
{
"date": "2025-08-08",
"count": 2
},
{
"date": "2025-08-09",
"count": 1
},
{
"date": "2025-08-11",
"count": 1
},
{
"date": "2025-08-12",
"count": 2
},
{
"date": "2025-08-13",
"count": 3
},
{
"date": "2025-08-16",
"count": 3
},
{
"date": "2025-08-17",
"count": 3
},
{
"date": "2025-08-18",
"count": 4
},
{
"date": "2025-08-19",
"count": 2
},
{
"date": "2025-08-20",
"count": 1
},
{
"date": "2025-08-21",
"count": 1
},
{
"date": "2025-08-22",
"count": 1
},
{
"date": "2025-08-23",
"count": 1
},
{
"date": "2025-08-24",
"count": 2
},
{
"date": "2025-08-26",
"count": 1
},
{
"date": "2025-08-27",
"count": 1
},
{
"date": "2025-08-28",
"count": 3
},
{
"date": "2025-08-29",
"count": 1
},
{
"date": "2025-08-30",
"count": 2
},
{
"date": "2025-08-31",
"count": 1
},
{
"date": "2025-09-02",
"count": 1
},
{
"date": "2025-09-03",
"count": 2
},
{
"date": "2025-09-04",
"count": 2
},
{
"date": "2025-09-05",
"count": 2
},
{
"date": "2025-09-06",
"count": 2
},
{
"date": "2025-09-07",
"count": 2
},
{
"date": "2025-09-09",
"count": 6
},
{
"date": "2025-09-10",
"count": 3
},
{
"date": "2025-09-11",
"count": 1
},
{
"date": "2025-09-12",
"count": 3
},
{
"date": "2025-09-13",
"count": 1
},
{
"date": "2025-09-15",
"count": 1
},
{
"date": "2025-09-17",
"count": 3
},
{
"date": "2025-09-18",
"count": 3
},
{
"date": "2025-09-19",
"count": 2
},
{
"date": "2025-09-21",
"count": 4
},
{
"date": "2025-09-23",
"count": 1
},
{
"date": "2025-09-24",
"count": 5
},
{
"date": "2025-09-25",
"count": 4
},
{
"date": "2025-09-26",
"count": 3
},
{
"date": "2025-09-27",
"count": 3
},
{
"date": "2025-09-29",
"count": 1
},
{
"date": "2025-09-30",
"count": 4
},
{
"date": "2025-10-01",
"count": 1
},
{
"date": "2025-10-02",
"count": 4
},
{
"date": "2025-10-03",
"count": 4
},
{
"date": "2025-10-04",
"count": 2
},
{
"date": "2025-10-05",
"count": 4
},
{
"date": "2025-10-06",
"count": 2
},
{
"date": "2025-10-07",
"count": 2
},
{
"date": "2025-10-10",
"count": 3
},
{
"date": "2025-10-11",
"count": 2
},
{
"date": "2025-10-12",
"count": 1
},
{
"date": "2025-10-13",
"count": 2
},
{
"date": "2025-10-14",
"count": 2
},
{
"date": "2025-10-15",
"count": 2
},
{
"date": "2025-10-17",
"count": 4
},
{
"date": "2025-10-18",
"count": 2
},
{
"date": "2025-10-19",
"count": 4
},
{
"date": "2025-10-20",
"count": 2
},
{
"date": "2025-10-21",
"count": 3
},
{
"date": "2025-10-23",
"count": 2
},
{
"date": "2025-10-24",
"count": 3
},
{
"date": "2025-10-25",
"count": 1
},
{
"date": "2025-10-26",
"count": 3
},
{
"date": "2025-10-27",
"count": 3
},
{
"date": "2025-10-28",
"count": 1
},
{
"date": "2025-10-29",
"count": 1
},
{
"date": "2025-10-31",
"count": 2
},
{
"date": "2025-11-01",
"count": 4
},
{
"date": "2025-11-02",
"count": 2
},
{
"date": "2025-11-03",
"count": 1
},
{
"date": "2025-11-04",
"count": 1
},
{
"date": "2025-11-05",
"count": 2
},
{
"date": "2025-11-06",
"count": 1
},
{
"date": "2025-11-07",
"count": 1
},
{
"date": "2025-11-08",
"count": 2
},
{
"date": "2025-11-10",
"count": 1
},
{
"date": "2025-11-11",
"count": 3
},
{
"date": "2025-11-12",
"count": 2
},
{
"date": "2025-11-13",
"count": 1
},
{
"date": "2025-11-14",
"count": 1
},
{
"date": "2025-11-16",
"count": 1
},
{
"date": "2025-11-18",
"count": 1
},
{
"date": "2025-11-19",
"count": 1
},
{
"date": "2025-11-20",
"count": 2
},
{
"date": "2025-11-21",
"count": 1
},
{
"date": "2025-11-22",
"count": 4
},
{
"date": "2025-11-23",
"count": 1
},
{
"date": "2025-11-24",
"count": 3
},
{
"date": "2025-11-26",
"count": 2
},
{
"date": "2025-11-27",
"count": 1
},
{
"date": "2025-11-28",
"count": 1
},
{
"date": "2025-11-30",
"count": 3
},
{
"date": "2025-12-01",
"count": 1
},
{
"date": "2025-12-03",
"count": 3
},
{
"date": "2025-12-04",
"count": 3
},
{
"date": "2025-12-05",
"count": 3
},
{
"date": "2025-12-06",
"count": 2
},
{
"date": "2025-12-07",
"count": 1
},
{
"date": "2025-12-08",
"count": 2
},
{
"date": "2025-12-09",
"count": 1
},
{
"date": "2025-12-10",
"count": 2
},
{
"date": "2025-12-11",
"count": 2
},
{
"date": "2025-12-12",
"count": 1
},
{
"date": "2025-12-13",
"count": 1
},
{
"date": "2025-12-14",
"count": 2
},
{
"date": "2025-12-15",
"count": 3
},
{
"date": "2025-12-16",
"count": 2
},
{
"date": "2025-12-17",
"count": 2
},
{
"date": "2025-12-20",
"count": 2
},
{
"date": "2025-12-21",
"count": 1
},
{
"date": "2025-12-22",
"count": 1
},
{
"date": "2025-12-23",
"count": 2
},
{
"date": "2025-12-24",
"count": 1
},
{
"date": "2025-12-26",
"count": 3
},
{
"date": "2025-12-27",
"count": 1
},
{
"date": "2025-12-28",
"count": 1
},
{
"date": "2025-12-29",
"count": 2
},
{
"date": "2025-12-30",
"count": 3
},
{
"date": "2025-12-31",
"count": 1
},
{
"date": "2026-01-02",
"count": 2
},
{
"date": "2026-01-03",
"count": 1
},
{
"date": "2026-01-05",
"count": 3
},
{
"date": "2026-01-06",
"count": 1
},
{
"date": "2026-01-08",
"count": 1
},
{
"date": "2026-01-10",
"count": 3
},
{
"date": "2026-01-12",
"count": 1
},
{
"date": "2026-01-13",
"count": 1
},
{
"date": "2026-01-15",
"count": 3
},
{
"date": "2026-01-16",
"count": 1
},
{
"date": "2026-01-17",
"count": 2
},
{
"date": "2026-01-19",
"count": 2
},
{
"date": "2026-01-22",
"count": 1
},
{
"date": "2026-01-23",
"count": 1
},
{
"date": "2026-01-25",
"count": 1
},
{
"date": "2026-01-28",
"count": 2
},
{
"date": "2026-01-29",
"count": 2
},
{
"date": "2026-01-30",
"count": 3
},
{
"date": "2026-01-31",
"count": 1
},
{
"date": "2026-02-01",
"count": 2
},
{
"date": "2026-02-02",
"count": 1
},
{
"date": "2026-02-03",
"count": 1
},
{
"date": "2026-02-04",
"count": 1
},
{
"date": "2026-02-05",
"count": 3
},
{
"date": "2026-02-08",
"count": 1
},
{
"date": "2026-02-09",
"count": 3
},
{
"date": "2026-02-10",
"count": 1
},
{
"date": "2026-02-11",
"count": 2
},
{
"date": "2026-02-12",
"count": 3
},
{
"date": "2026-02-14",
"count": 1
},
{
"date": "2026-02-15",
"count": 1
},
{
"date": "2026-02-16",
"count": 1
},
{
"date": "2026-02-18",
"count": 1
},
{
"date": "2026-02-21",
"count": 1
},
{
"date": "2026-02-22",
"count": 3
},
{
"date": "2026-02-23",
"count": 1
},
{
"date": "2026-02-24",
"count": 1
},
{
"date": "2026-02-26",
"count": 2
},
{
"date": "2026-02-27",
"count": 1
},
{
"date": "2026-03-02",
"count": 3
},
{
"date": "2026-03-03",
"count": 1
},
{
"date": "2026-03-04",
"count": 1
},
{
"date": "2026-03-05",
"count": 1
},
{
"date": "2026-03-10",
"count": 2
},
{
"date": "2026-03-11",
"count": 1
},
{
"date": "2026-03-13",
"count": 1
},
{
"date": "2026-03-17",
"count": 1
},
{
"date": "2026-03-19",
"count": 1
},
{
"date": "2026-03-20",
"count": 1
},
{
"date": "2026-03-21",
"count": 1
},
{
"date": "2026-03-22",
"count": 2
},
{
"date": "2026-03-24",
"count": 2
},
{
"date": "2026-03-25",
"count": 1
},
{
"date": "2026-03-27",
"count": 1
},
{
"date": "2026-03-29",
"count": 1
},
{
"date": "2026-03-30",
"count": 1
},
{
"date": "2026-03-31",
"count": 1
},
{
"date": "2026-04-01",
"count": 3
},
{
"date": "2026-04-03",
"count": 1
},
{
"date": "2026-04-05",
"count": 1
},
{
"date": "2026-04-06",
"count": 6
},
{
"date": "2026-04-07",
"count": 3
},
{
"date": "2026-04-08",
"count": 2
},
{
"date": "2026-04-09",
"count": 2
},
{
"date": "2026-04-11",
"count": 1
},
{
"date": "2026-04-13",
"count": 1
},
{
"date": "2026-04-16",
"count": 1
},
{
"date": "2026-04-17",
"count": 3
},
{
"date": "2026-04-18",
"count": 3
},
{
"date": "2026-04-20",
"count": 4
},
{
"date": "2026-04-21",
"count": 2
},
{
"date": "2026-04-22",
"count": 3
},
{
"date": "2026-04-23",
"count": 1
},
{
"date": "2026-04-24",
"count": 4
},
{
"date": "2026-04-26",
"count": 2
},
{
"date": "2026-04-27",
"count": 1
},
{
"date": "2026-04-28",
"count": 2
},
{
"date": "2026-05-01",
"count": 2
},
{
"date": "2026-05-02",
"count": 1
},
{
"date": "2026-05-03",
"count": 1
},
{
"date": "2026-05-04",
"count": 2
},
{
"date": "2026-05-06",
"count": 5
},
{
"date": "2026-05-07",
"count": 1
},
{
"date": "2026-05-08",
"count": 1
},
{
"date": "2026-05-10",
"count": 3
},
{
"date": "2026-05-12",
"count": 2
},
{
"date": "2026-05-13",
"count": 2
},
{
"date": "2026-05-14",
"count": 3
},
{
"date": "2026-05-15",
"count": 2
},
{
"date": "2026-05-16",
"count": 2
},
{
"date": "2026-05-17",
"count": 1
},
{
"date": "2026-05-18",
"count": 1
},
{
"date": "2026-05-19",
"count": 2
},
{
"date": "2026-05-20",
"count": 2
},
{
"date": "2026-05-21",
"count": 1
},
{
"date": "2026-05-22",
"count": 1
},
{
"date": "2026-05-26",
"count": 2
},
{
"date": "2026-05-28",
"count": 2
},
{
"date": "2026-05-29",
"count": 3
},
{
"date": "2026-05-30",
"count": 2
},
{
"date": "2026-05-31",
"count": 3
},
{
"date": "2026-06-01",
"count": 2
},
{
"date": "2026-06-02",
"count": 1
},
{
"date": "2026-06-08",
"count": 1
},
{
"date": "2026-06-09",
"count": 2
},
{
"date": "2026-06-10",
"count": 1
},
{
"date": "2026-06-11",
"count": 1
},
{
"date": "2026-06-12",
"count": 1
},
{
"date": "2026-06-14",
"count": 1
},
{
"date": "2026-06-15",
"count": 2
},
{
"date": "2026-06-16",
"count": 1
},
{
"date": "2026-06-17",
"count": 1
},
{
"date": "2026-06-19",
"count": 2
},
{
"date": "2026-06-21",
"count": 4
},
{
"date": "2026-06-22",
"count": 2
},
{
"date": "2026-06-23",
"count": 1
},
{
"date": "2026-06-24",
"count": 1
},
{
"date": "2026-06-27",
"count": 1
},
{
"date": "2026-06-28",
"count": 1
},
{
"date": "2026-06-29",
"count": 1
},
{
"date": "2026-07-02",
"count": 2
},
{
"date": "2026-07-04",
"count": 1
},
{
"date": "2026-07-06",
"count": 2
},
{
"date": "2026-07-07",
"count": 1
},
{
"date": "2026-07-08",
"count": 2
},
{
"date": "2026-07-09",
"count": 2
},
{
"date": "2026-07-10",
"count": 1
},
{
"date": "2026-07-11",
"count": 1
},
{
"date": "2026-07-12",
"count": 2
},
{
"date": "2026-07-13",
"count": 2
},
{
"date": "2026-07-14",
"count": 1
},
{
"date": "2026-07-15",
"count": 1
},
{
"date": "2026-07-16",
"count": 3
},
{
"date": "2026-07-19",
"count": 1
},
{
"date": "2026-07-20",
"count": 1
},
{
"date": "2026-07-21",
"count": 2
}
],
"complete": false,
"collected": 1000,
"total_stars": 13153
},
"open_issues_and_prs": 769
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile",
"docs/Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 22529,
"source_files_sampled": 40,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"Pipfile",
"docs/requirements.txt",
"setup.py"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "black",
"direct": false,
"version": "19.10b0",
"severity": "critical",
"ecosystem": "pypi",
"cvss_score": 9.8,
"advisory_ids": [
"GHSA-3936-cmfr-pm3m",
"GHSA-fj7x-q9j7-g6q6",
"PYSEC-2024-48",
"PYSEC-2026-2120",
"PYSEC-2026-2121"
],
"fixed_version": "26.3.1",
"advisory_count": 5,
"oldest_advisory_days": 854
},
{
"name": "virtualenv",
"direct": false,
"version": "20.13.0",
"severity": "critical",
"ecosystem": "pypi",
"cvss_score": 9.8,
"advisory_ids": [
"GHSA-597g-3phw-6986",
"GHSA-rqc4-2hc7-8c8v",
"PYSEC-2024-187",
"PYSEC-2026-2009"
],
"fixed_version": "20.36.1",
"advisory_count": 4,
"oldest_advisory_days": 604
},
{
"name": "certifi",
"direct": false,
"version": "2021.10.8",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-248v-346w-9cwc",
"GHSA-43fp-rhv2-5gv8",
"GHSA-xqr8-7jwr-rhp7",
"PYSEC-2022-42986",
"PYSEC-2023-135",
"PYSEC-2024-230"
],
"fixed_version": "2024.7.4",
"advisory_count": 6,
"oldest_advisory_days": 1321
},
{
"name": "click",
"direct": false,
"version": "8.0.3",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 7.2,
"advisory_ids": [
"PYSEC-2026-2132"
],
"fixed_version": "8.3.3",
"advisory_count": 1,
"oldest_advisory_days": 82
},
{
"name": "cryptography",
"direct": false,
"version": "36.0.1",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3ww4-gg4f-jr7f",
"GHSA-537c-gmf6-5ccf",
"GHSA-5cpq-8wj7-hf2v",
"GHSA-9v9h-cgj8-h64p",
"GHSA-jfhm-5ghh-2f97",
"GHSA-jm77-qphf-c4w8",
"GHSA-m959-cc7f-wv43",
"GHSA-r6ph-v2qm-q3c2",
"GHSA-v8gr-m533-ghj9",
"GHSA-w7pp-m8wf-vj6r"
],
"fixed_version": "300.0.12",
"advisory_count": 18,
"oldest_advisory_days": 1260
},
{
"name": "idna",
"direct": false,
"version": "3.3",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-65pc-fj4g-8rjx",
"GHSA-jjg7-2v4v-x38h",
"PYSEC-2024-60",
"PYSEC-2026-215"
],
"fixed_version": "3.15",
"advisory_count": 4,
"oldest_advisory_days": 831
},
{
"name": "jinja2",
"direct": false,
"version": "3.0.3",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 8.8,
"advisory_ids": [
"GHSA-cpwx-vrp4-4pq7",
"GHSA-gmj6-6f8f-6699",
"GHSA-h5c8-rqwp-cp95",
"GHSA-h75v-3vvj-5mfj",
"GHSA-q2x7-8rv6-6q7h",
"PYSEC-2026-1471",
"PYSEC-2026-1472",
"PYSEC-2026-1473",
"PYSEC-2026-1474",
"PYSEC-2026-1475"
],
"fixed_version": "3.1.6",
"advisory_count": 10,
"oldest_advisory_days": 922
},
{
"name": "pip",
"direct": false,
"version": "22.0.3",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 8,
"advisory_ids": [
"GHSA-4xh5-x5gv-qwph",
"GHSA-58qw-9mgm-455v",
"GHSA-6vgw-5pg2-w6jp",
"GHSA-jp4c-xjxw-mgf9",
"GHSA-mq26-g339-26xf",
"GHSA-wf93-45jw-7689",
"PYSEC-2023-228",
"PYSEC-2026-1795",
"PYSEC-2026-1796",
"PYSEC-2026-196"
],
"fixed_version": "26.1.2",
"advisory_count": 12,
"oldest_advisory_days": 1000
},
{
"name": "setuptools",
"direct": false,
"version": "60.7.1",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 8.8,
"advisory_ids": [
"GHSA-5rjg-fvgr-3xxf",
"GHSA-cx63-2mw6-8hw5",
"GHSA-h35f-9h28-mq5c",
"GHSA-r9hx-vwmv-q579",
"PYSEC-2022-43012",
"PYSEC-2025-49",
"PYSEC-2026-1918",
"PYSEC-2026-3447"
],
"fixed_version": "83.0.0",
"advisory_count": 8,
"oldest_advisory_days": 1306
},
{
"name": "urllib3",
"direct": false,
"version": "1.26.8",
"severity": "high",
"ecosystem": "pypi",
"cvss_score": 8.1,
"advisory_ids": [
"GHSA-2xpw-w6gg-jr37",
"GHSA-34jh-p97f-mpxf",
"GHSA-38jv-5279-wg99",
"GHSA-g4mx-q9vg-27p4",
"GHSA-gm62-xv2j-4w53",
"GHSA-pq67-6m6q-mj2v",
"GHSA-qccp-gfcp-xxvc",
"GHSA-v845-jxx5-vc9f",
"PYSEC-2023-192",
"PYSEC-2023-212"
],
"fixed_version": "2.7.0",
"advisory_count": 16,
"oldest_advisory_days": 1022
},
{
"name": "bleach",
"direct": false,
"version": "4.1.0",
"severity": "moderate",
"ecosystem": "pypi",
"cvss_score": 6.1,
"advisory_ids": [
"GHSA-8rfp-98v4-mmr6",
"GHSA-gj48-438w-jh9v"
],
"fixed_version": "6.4.0",
"advisory_count": 2,
"oldest_advisory_days": 35
},
{
"name": "filelock",
"direct": false,
"version": "3.4.2",
"severity": "moderate",
"ecosystem": "pypi",
"cvss_score": 6.3,
"advisory_ids": [
"GHSA-qmgc-5h2g-mvrw",
"GHSA-w853-jp5j-5j7f",
"PYSEC-2026-1374",
"PYSEC-2026-1375"
],
"fixed_version": "3.20.3",
"advisory_count": 4,
"oldest_advisory_days": 217
},
{
"name": "pygments",
"direct": false,
"version": "2.11.2",
"severity": "moderate",
"ecosystem": "pypi",
"cvss_score": 5.5,
"advisory_ids": [
"GHSA-5239-wwwm-4pmq",
"GHSA-mrwq-x4v8-fh7p",
"PYSEC-2023-117",
"PYSEC-2026-2987"
],
"fixed_version": "2.20.0",
"advisory_count": 4,
"oldest_advisory_days": 1098
},
{
"name": "pytest",
"direct": false,
"version": "6.2.3",
"severity": "moderate",
"ecosystem": "pypi",
"cvss_score": 6.8,
"advisory_ids": [
"GHSA-6w46-j5rx-g56g",
"PYSEC-2026-1845"
],
"fixed_version": "9.0.3",
"advisory_count": 2,
"oldest_advisory_days": 180
},
{
"name": "requests",
"direct": false,
"version": "2.27.1",
"severity": "moderate",
"ecosystem": "pypi",
"cvss_score": 6.1,
"advisory_ids": [
"GHSA-9hjg-9r4m-mvj7",
"GHSA-9wx4-h78v-vm56",
"GHSA-gc5v-m9x4-r6x2",
"GHSA-j8r2-6x86-q33q",
"PYSEC-2023-74",
"PYSEC-2026-1872",
"PYSEC-2026-1873",
"PYSEC-2026-2275"
],
"fixed_version": "2.33.0",
"advisory_count": 8,
"oldest_advisory_days": 1156
},
{
"name": "zipp",
"direct": false,
"version": "3.7.0",
"severity": "moderate",
"ecosystem": "pypi",
"cvss_score": 6.2,
"advisory_ids": [
"GHSA-jfmj-5v4g-7637",
"PYSEC-2026-2074"
],
"fixed_version": "3.19.1",
"advisory_count": 2,
"oldest_advisory_days": 742
},
{
"name": "tqdm",
"direct": false,
"version": "4.62.3",
"severity": "low",
"ecosystem": "pypi",
"cvss_score": 3.9,
"advisory_ids": [
"GHSA-g7vv-2v7x-gj9p",
"PYSEC-2026-1976"
],
"fixed_version": "4.66.3",
"advisory_count": 2,
"oldest_advisory_days": 809
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"low": 1,
"high": 8,
"critical": 2,
"moderate": 6
},
"advisory_count": 108,
"affected_count": 17,
"assessed_count": 108,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 1,
"direct_affected_count": 0
},
"ecosystems": [
"pypi"
],
"dependencies": [],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "alabaster",
"direct": false,
"version": "0.7.12",
"ecosystem": "pypi"
},
{
"name": "appdirs",
"direct": false,
"version": "1.4.4",
"ecosystem": "pypi"
},
{
"name": "attrs",
"direct": false,
"version": "21.4.0",
"ecosystem": "pypi"
},
{
"name": "babel",
"direct": false,
"version": "2.9.1",
"ecosystem": "pypi"
},
{
"name": "black",
"direct": false,
"version": "19.10b0",
"ecosystem": "pypi"
},
{
"name": "bleach",
"direct": false,
"version": "4.1.0",
"ecosystem": "pypi"
},
{
"name": "bump2version",
"direct": false,
"version": "1.0.1",
"ecosystem": "pypi"
},
{
"name": "bumpversion",
"direct": false,
"version": "0.6.0",
"ecosystem": "pypi"
},
{
"name": "certifi",
"direct": false,
"version": "2021.10.8",
"ecosystem": "pypi"
},
{
"name": "cffi",
"direct": false,
"version": "1.15.0",
"ecosystem": "pypi"
},
{
"name": "cfgv",
"direct": false,
"version": "3.3.1",
"ecosystem": "pypi"
},
{
"name": "charset-normalizer",
"direct": false,
"version": "2.0.11",
"ecosystem": "pypi"
},
{
"name": "click",
"direct": false,
"version": "8.0.3",
"ecosystem": "pypi"
},
{
"name": "colorama",
"direct": false,
"version": "0.4.4",
"ecosystem": "pypi"
},
{
"name": "coverage",
"direct": false,
"version": "5.5",
"ecosystem": "pypi"
},
{
"name": "coveralls",
"direct": false,
"version": "3.0.1",
"ecosystem": "pypi"
},
{
"name": "cryptography",
"direct": false,
"version": "36.0.1",
"ecosystem": "pypi"
},
{
"name": "distlib",
"direct": false,
"version": "0.3.4",
"ecosystem": "pypi"
},
{
"name": "docopt",
"direct": false,
"version": "0.6.2",
"ecosystem": "pypi"
},
{
"name": "docutils",
"direct": false,
"version": "0.16",
"ecosystem": "pypi"
},
{
"name": "enum-compat",
"direct": false,
"version": "0.0.3",
"ecosystem": "pypi"
},
{
"name": "eradicate",
"direct": false,
"version": "2.0.0",
"ecosystem": "pypi"
},
{
"name": "filelock",
"direct": false,
"version": "3.4.2",
"ecosystem": "pypi"
},
{
"name": "flake8",
"direct": false,
"version": "3.9.0",
"ecosystem": "pypi"
},
{
"name": "flake8-breakpoint",
"direct": false,
"version": "1.1.0",
"ecosystem": "pypi"
},
{
"name": "flake8-broken-line",
"direct": false,
"version": "0.3.0",
"ecosystem": "pypi"
},
{
"name": "flake8-bugbear",
"direct": false,
"version": "21.4.3",
"ecosystem": "pypi"
},
{
"name": "flake8-builtins",
"direct": false,
"version": "1.5.3",
"ecosystem": "pypi"
},
{
"name": "flake8-comprehensions",
"direct": false,
"version": "3.4.0",
"ecosystem": "pypi"
},
{
"name": "flake8-eradicate",
"direct": false,
"version": "1.0.0",
"ecosystem": "pypi"
},
{
"name": "flake8-executable",
"direct": false,
"version": "2.1.1",
"ecosystem": "pypi"
},
{
"name": "flake8-if-expr",
"direct": false,
"version": "1.0.4",
"ecosystem": "pypi"
},
{
"name": "flake8-logging-format",
"direct": false,
"version": "0.6.0",
"ecosystem": "pypi"
},
{
"name": "flake8-mock",
"direct": false,
"version": "0.3",
"ecosystem": "pypi"
},
{
"name": "flake8-mutable",
"direct": false,
"version": "1.2.0",
"ecosystem": "pypi"
},
{
"name": "flake8-plugin-utils",
"direct": false,
"version": "1.3.2",
"ecosystem": "pypi"
},
{
"name": "flake8-polyfill",
"direct": false,
"version": "1.0.2",
"ecosystem": "pypi"
},
{
"name": "flake8-print",
"direct": false,
"version": "4.0.0",
"ecosystem": "pypi"
},
{
"name": "flake8-pytest",
"direct": false,
"version": "1.3",
"ecosystem": "pypi"
},
{
"name": "flake8-pytest-style",
"direct": false,
"version": "1.4.1",
"ecosystem": "pypi"
},
{
"name": "flake8-quotes",
"direct": false,
"version": "3.2.0",
"ecosystem": "pypi"
},
{
"name": "flake8-return",
"direct": false,
"version": "1.1.2",
"ecosystem": "pypi"
},
{
"name": "flake8-strict",
"direct": false,
"version": "0.2.1",
"ecosystem": "pypi"
},
{
"name": "flake8-string-format",
"direct": false,
"version": "0.3.0",
"ecosystem": "pypi"
},
{
"name": "gprof2dot",
"direct": false,
"version": "2021.2.21",
"ecosystem": "pypi"
},
{
"name": "identify",
"direct": false,
"version": "2.4.8",
"ecosystem": "pypi"
},
{
"name": "idna",
"direct": false,
"version": "3.3",
"ecosystem": "pypi"
},
{
"name": "imagesize",
"direct": false,
"version": "1.3.0",
"ecosystem": "pypi"
},
{
"name": "importlib-metadata",
"direct": false,
"version": "4.10.1",
"ecosystem": "pypi"
},
{
"name": "iniconfig",
"direct": false,
"version": "1.1.1",
"ecosystem": "pypi"
},
{
"name": "jeepney",
"direct": false,
"version": "0.7.1",
"ecosystem": "pypi"
},
{
"name": "jinja2",
"direct": false,
"version": "3.0.3",
"ecosystem": "pypi"
},
{
"name": "keyring",
"direct": false,
"version": "23.5.0",
"ecosystem": "pypi"
},
{
"name": "markupsafe",
"direct": false,
"version": "2.0.1",
"ecosystem": "pypi"
},
{
"name": "mccabe",
"direct": false,
"version": "0.6.1",
"ecosystem": "pypi"
},
{
"name": "mypy",
"direct": false,
"version": "0.812",
"ecosystem": "pypi"
},
{
"name": "mypy-extensions",
"direct": false,
"version": "0.4.3",
"ecosystem": "pypi"
},
{
"name": "nodeenv",
"direct": false,
"version": "1.6.0",
"ecosystem": "pypi"
},
{
"name": "packaging",
"direct": false,
"version": "21.3",
"ecosystem": "pypi"
},
{
"name": "pathspec",
"direct": false,
"version": "0.9.0",
"ecosystem": "pypi"
},
{
"name": "pbr",
"direct": false,
"version": "5.8.0",
"ecosystem": "pypi"
},
{
"name": "pep8-naming",
"direct": false,
"version": "0.11.1",
"ecosystem": "pypi"
},
{
"name": "pip",
"direct": false,
"version": "22.0.3",
"ecosystem": "pypi"
},
{
"name": "pipenv",
"direct": false,
"version": "2022.1.8",
"ecosystem": "pypi"
},
{
"name": "pipenv-to-requirements",
"direct": false,
"version": "0.9.0",
"ecosystem": "pypi"
},
{
"name": "pkginfo",
"direct": false,
"version": "1.8.2",
"ecosystem": "pypi"
},
{
"name": "platformdirs",
"direct": false,
"version": "2.4.1",
"ecosystem": "pypi"
},
{
"name": "pluggy",
"direct": false,
"version": "0.13.1",
"ecosystem": "pypi"
},
{
"name": "pre-commit",
"direct": false,
"version": "2.12.0",
"ecosystem": "pypi"
},
{
"name": "py",
"direct": false,
"version": "1.11.0",
"ecosystem": "pypi"
},
{
"name": "pycodestyle",
"direct": false,
"version": "2.7.0",
"ecosystem": "pypi"
},
{
"name": "pycparser",
"direct": false,
"version": "2.21",
"ecosystem": "pypi"
},
{
"name": "pyflakes",
"direct": false,
"version": "2.3.1",
"ecosystem": "pypi"
},
{
"name": "pygments",
"direct": false,
"version": "2.11.2",
"ecosystem": "pypi"
},
{
"name": "pyparsing",
"direct": false,
"version": "3.0.7",
"ecosystem": "pypi"
},
{
"name": "pytest",
"direct": false,
"version": "6.2.3",
"ecosystem": "pypi"
},
{
"name": "pytest-cov",
"direct": false,
"version": "2.11.1",
"ecosystem": "pypi"
},
{
"name": "pytest-mock",
"direct": false,
"version": "3.5.1",
"ecosystem": "pypi"
},
{
"name": "pytest-profiling",
"direct": false,
"version": "1.7.0",
"ecosystem": "pypi"
},
{
"name": "pytz",
"direct": false,
"version": "2021.3",
"ecosystem": "pypi"
},
{
"name": "pyyaml",
"direct": false,
"version": "6.0",
"ecosystem": "pypi"
},
{
"name": "readme-renderer",
"direct": false,
"version": "32.0",
"ecosystem": "pypi"
},
{
"name": "regex",
"direct": false,
"version": "2022.1.18",
"ecosystem": "pypi"
},
{
"name": "requests",
"direct": false,
"version": "2.27.1",
"ecosystem": "pypi"
},
{
"name": "requests-toolbelt",
"direct": false,
"version": "0.9.1",
"ecosystem": "pypi"
},
{
"name": "rfc3986",
"direct": false,
"version": "2.0.0",
"ecosystem": "pypi"
},
{
"name": "secretstorage",
"direct": false,
"version": "3.3.1",
"ecosystem": "pypi"
},
{
"name": "setuptools",
"direct": false,
"version": "60.7.1",
"ecosystem": "pypi"
},
{
"name": "six",
"direct": false,
"version": "1.16.0",
"ecosystem": "pypi"
},
{
"name": "snowballstemmer",
"direct": false,
"version": "2.2.0",
"ecosystem": "pypi"
},
{
"name": "sphinx",
"direct": false,
"version": "4.4.0",
"ecosystem": "pypi"
},
{
"name": "sphinx-rtd-theme",
"direct": false,
"version": "0.5.2",
"ecosystem": "pypi"
},
{
"name": "sphinxcontrib-applehelp",
"direct": false,
"version": "1.0.2",
"ecosystem": "pypi"
},
{
"name": "sphinxcontrib-devhelp",
"direct": false,
"version": "1.0.2",
"ecosystem": "pypi"
},
{
"name": "sphinxcontrib-htmlhelp",
"direct": false,
"version": "2.0.0",
"ecosystem": "pypi"
},
{
"name": "sphinxcontrib-jsmath",
"direct": false,
"version": "1.0.1",
"ecosystem": "pypi"
},
{
"name": "sphinxcontrib-qthelp",
"direct": false,
"version": "1.0.3",
"ecosystem": "pypi"
},
{
"name": "sphinxcontrib-serializinghtml",
"direct": false,
"version": "1.1.5",
"ecosystem": "pypi"
},
{
"name": "toml",
"direct": false,
"version": "0.10.2",
"ecosystem": "pypi"
},
{
"name": "tqdm",
"direct": false,
"version": "4.62.3",
"ecosystem": "pypi"
},
{
"name": "twine",
"direct": false,
"version": "3.4.1",
"ecosystem": "pypi"
},
{
"name": "typed-ast",
"direct": false,
"version": "1.4.3",
"ecosystem": "pypi"
},
{
"name": "typing-extensions",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "typing-extensions",
"direct": false,
"version": "4.0.1",
"ecosystem": "pypi"
},
{
"name": "urllib3",
"direct": false,
"version": "1.26.8",
"ecosystem": "pypi"
},
{
"name": "virtualenv",
"direct": false,
"version": "20.13.0",
"ecosystem": "pypi"
},
{
"name": "virtualenv-clone",
"direct": false,
"version": "0.5.7",
"ecosystem": "pypi"
},
{
"name": "webencodings",
"direct": false,
"version": "0.5.1",
"ecosystem": "pypi"
},
{
"name": "zipp",
"direct": false,
"version": "3.7.0",
"ecosystem": "pypi"
}
],
"collected": true,
"truncated": false,
"total_count": 109,
"direct_count": 0,
"indirect_count": 109
}
},
"maintainership": {
"issues": {
"open_prs": 99,
"merged_prs": 207,
"open_issues": 670,
"closed_ratio": 0.544,
"closed_issues": 799,
"closed_unmerged_prs": 376
},
"bus_factor": 2,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "nficano",
"commits": 627,
"avatar_url": "https://avatars.githubusercontent.com/u/65145?v=4"
},
{
"type": "User",
"login": "hbmartin",
"commits": 288,
"avatar_url": "https://avatars.githubusercontent.com/u/745166?v=4"
},
{
"type": "User",
"login": "tfdahlin",
"commits": 85,
"avatar_url": "https://avatars.githubusercontent.com/u/9667869?v=4"
},
{
"type": "User",
"login": "josegonzalez",
"commits": 35,
"avatar_url": "https://avatars.githubusercontent.com/u/65675?v=4"
},
{
"type": "User",
"login": "RONNCC",
"commits": 27,
"avatar_url": "https://avatars.githubusercontent.com/u/1313566?v=4"
},
{
"type": "User",
"login": "swiftyy-mage",
"commits": 26,
"avatar_url": "https://avatars.githubusercontent.com/u/59213103?v=4"
},
{
"type": "User",
"login": "grking8",
"commits": 22,
"avatar_url": "https://avatars.githubusercontent.com/u/8340336?v=4"
},
{
"type": "User",
"login": "ahmedsadman",
"commits": 16,
"avatar_url": "https://avatars.githubusercontent.com/u/11042267?v=4"
},
{
"type": "User",
"login": "Jan-V2",
"commits": 14,
"avatar_url": "https://avatars.githubusercontent.com/u/30025691?v=4"
},
{
"type": "User",
"login": "palashgoel7",
"commits": 10,
"avatar_url": "https://avatars.githubusercontent.com/u/7983902?v=4"
}
],
"contributors_sampled": 96,
"top_contributor_share": 0.482
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"greetings.yml",
"pypi-publish.yml"
],
"has_docs_dir": true,
"linter_configs": [
".flake8"
],
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": true
},
"security_signals": {
"lockfiles": [
"Pipfile.lock"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 0,
"reason": "0 out of 10 merged PRs checked by a CI test -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 4,
"reason": "Found 10/25 approved changesets -- score normalized to 4",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 27 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 0,
"reason": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "58 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "a32fff39058a6f7e5e59ecd06a7467b71197ce35",
"ran_at": "2026-07-21T21:54:53Z",
"aggregate_score": 3.9,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-04-17T00:08:47Z",
"oldest_open_prs": [
{
"number": 1388,
"created_at": "2022-09-07T00:34:05Z",
"last_comment_at": "2022-09-22T05:21:43Z",
"last_comment_author": "bigbear22941"
},
{
"number": 1395,
"created_at": "2022-09-25T16:27:24Z",
"last_comment_at": "2023-03-22T16:14:47Z",
"last_comment_author": "alebychac"
},
{
"number": 1403,
"created_at": "2022-10-22T17:57:11Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1407,
"created_at": "2022-11-01T14:21:53Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1422,
"created_at": "2022-11-22T11:29:32Z",
"last_comment_at": "2024-07-10T08:31:25Z",
"last_comment_author": "shridhardamle"
},
{
"number": 1424,
"created_at": "2022-11-24T13:35:00Z",
"last_comment_at": "2023-05-07T19:24:04Z",
"last_comment_author": "flyinggoatman"
},
{
"number": 1444,
"created_at": "2022-12-30T03:39:00Z",
"last_comment_at": "2023-05-07T19:09:57Z",
"last_comment_author": "RONNCC"
},
{
"number": 1475,
"created_at": "2023-02-09T13:55:07Z",
"last_comment_at": "2023-05-07T19:10:45Z",
"last_comment_author": "RONNCC"
},
{
"number": 1481,
"created_at": "2023-02-18T23:25:54Z",
"last_comment_at": "2023-05-11T20:08:10Z",
"last_comment_author": "RONNCC"
},
{
"number": 1482,
"created_at": "2023-02-19T22:55:03Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1494,
"created_at": "2023-03-06T16:19:10Z",
"last_comment_at": "2023-03-07T18:08:06Z",
"last_comment_author": "rgryta"
},
{
"number": 1502,
"created_at": "2023-03-17T10:32:10Z",
"last_comment_at": "2023-05-07T19:10:39Z",
"last_comment_author": "RONNCC"
},
{
"number": 1510,
"created_at": "2023-03-17T17:12:28Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1516,
"created_at": "2023-03-18T17:29:42Z",
"last_comment_at": "2023-03-21T16:39:16Z",
"last_comment_author": "eyalBr7"
},
{
"number": 1559,
"created_at": "2023-04-27T14:53:42Z",
"last_comment_at": "2023-05-04T18:29:20Z",
"last_comment_author": "pranayp35"
},
{
"number": 1562,
"created_at": "2023-04-27T19:01:17Z",
"last_comment_at": "2023-04-29T09:24:27Z",
"last_comment_author": "player2I0"
},
{
"number": 1595,
"created_at": "2023-05-03T17:56:45Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1600,
"created_at": "2023-05-04T14:51:36Z",
"last_comment_at": "2023-05-07T19:08:17Z",
"last_comment_author": "RONNCC"
},
{
"number": 1621,
"created_at": "2023-05-11T13:28:33Z",
"last_comment_at": "2023-05-21T12:49:08Z",
"last_comment_author": "piltom"
},
{
"number": 1629,
"created_at": "2023-05-14T10:00:52Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2023-05-20T10:08:42Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 698,
"created_at": "2020-07-28T02:55:08Z",
"last_comment_at": "2025-08-24T19:18:55Z",
"last_comment_author": "TechPsychotic"
},
{
"number": 899,
"created_at": "2020-12-30T17:46:05Z",
"last_comment_at": "2022-03-29T17:33:42Z",
"last_comment_author": "RONNCC"
},
{
"number": 904,
"created_at": "2021-01-03T12:07:05Z",
"last_comment_at": "2021-03-11T15:41:04Z",
"last_comment_author": "tfdahlin"
},
{
"number": 910,
"created_at": "2021-01-09T18:00:54Z",
"last_comment_at": "2022-01-26T05:07:45Z",
"last_comment_author": "qkum"
},
{
"number": 922,
"created_at": "2021-01-29T22:42:04Z",
"last_comment_at": "2021-02-08T16:36:15Z",
"last_comment_author": "ghw2020"
},
{
"number": 930,
"created_at": "2021-02-09T19:24:44Z",
"last_comment_at": "2022-08-18T10:37:14Z",
"last_comment_author": "xdrkot"
},
{
"number": 968,
"created_at": "2021-04-05T14:45:32Z",
"last_comment_at": "2023-12-27T13:27:48Z",
"last_comment_author": "poneoneo"
},
{
"number": 985,
"created_at": "2021-05-04T13:56:59Z",
"last_comment_at": "2021-05-04T13:57:36Z",
"last_comment_author": "github-actions"
},
{
"number": 987,
"created_at": "2021-05-06T20:16:16Z",
"last_comment_at": "2021-08-17T20:39:41Z",
"last_comment_author": "nickleman"
},
{
"number": 1000,
"created_at": "2021-05-22T15:04:15Z",
"last_comment_at": "2021-11-15T07:28:59Z",
"last_comment_author": "lottopotato"
},
{
"number": 1028,
"created_at": "2021-06-21T02:41:08Z",
"last_comment_at": "2021-06-22T00:37:37Z",
"last_comment_author": "urna"
},
{
"number": 1046,
"created_at": "2021-07-06T23:35:38Z",
"last_comment_at": "2021-07-17T19:55:47Z",
"last_comment_author": "tfdahlin"
},
{
"number": 1049,
"created_at": "2021-07-09T07:49:01Z",
"last_comment_at": "2023-05-22T02:53:38Z",
"last_comment_author": "Kirkman"
},
{
"number": 1072,
"created_at": "2021-07-27T14:19:15Z",
"last_comment_at": "2021-07-29T10:56:15Z",
"last_comment_author": "windows-server-2003"
},
{
"number": 1077,
"created_at": "2021-08-01T04:46:53Z",
"last_comment_at": "2021-08-24T19:11:39Z",
"last_comment_author": "ladm99"
},
{
"number": 1085,
"created_at": "2021-08-06T17:27:27Z",
"last_comment_at": "2024-01-10T08:36:21Z",
"last_comment_author": "justSam13"
},
{
"number": 1089,
"created_at": "2021-08-13T06:44:23Z",
"last_comment_at": "2021-08-13T06:44:59Z",
"last_comment_author": "github-actions"
},
{
"number": 1093,
"created_at": "2021-08-19T19:15:14Z",
"last_comment_at": "2021-08-19T19:15:55Z",
"last_comment_author": "github-actions"
},
{
"number": 1097,
"created_at": "2021-08-25T19:39:44Z",
"last_comment_at": "2023-01-09T06:09:36Z",
"last_comment_author": "Claire874"
},
{
"number": 1103,
"created_at": "2021-08-27T00:47:30Z",
"last_comment_at": "2021-08-30T14:08:16Z",
"last_comment_author": "ArchAngel727"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/pytube/pytube",
"host": "github.com",
"name": "pytube",
"owner": "pytube"
},
"metrics": {
"overall": {
"key": "overall",
"band": "at_risk",
"name": "Overall health",
"note": "Abandonment Policy applies a 60% multiplier to weighted overall health and gives it a ceiling of 49.",
"notes": [
{
"code": "abandonment_overall_adjustment",
"params": {
"cap": 49,
"pct": 60
}
}
],
"value": 37,
"inputs": {
"security": 51,
"vitality": 25,
"community": 94,
"governance": 58,
"engineering": 88,
"abandonment_cap": 49,
"abandonment_state": "likely_abandoned",
"abandonment_multiplier": 60,
"weighted_overall_before_abandonment": 62,
"overall_after_abandonment_multiplier": 37
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "critical",
"name": "Vitality",
"value": 25,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "critical",
"name": "Development activity",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"commits_last_year": 0,
"human_commit_share": 0.97,
"days_since_last_push": 705,
"active_weeks_last_year": 0
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 705 days ago",
"points": 0,
"status": "missed",
"details": [
{
"code": "push_recency",
"params": {
"days": 705
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "0/52 weeks with commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 0
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "0 commits in the last year",
"points": 0,
"status": "missed",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 0
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "moderate",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 60,
"inputs": {
"releases_count": 31,
"latest_release_tag": "v11.0.1",
"releases_from_tags": false,
"days_since_latest_release": 1788,
"mean_days_between_releases": 11
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "31 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 31
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 1788 days ago",
"points": 0,
"status": "missed",
"details": [
{
"code": "release_recency",
"params": {
"days": 1788
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~11 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 11
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "moderate",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"cap": 49,
"state": "likely_abandoned",
"guards": [],
"signals": [
"unanswered_contributions",
"issue_rot",
"release_stall",
"scorecard_unmaintained"
],
"red_flag": true,
"multiplier_pct": 60,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": 20,
"unanswered_open_issues": 17,
"days_since_last_merged_pr": 1158,
"days_since_last_human_commit": 1158,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "no human commit for 1158 days; 4 unmet obligation(s): pull requests unanswered, issues unanswered, releases stalled, Scorecard reports it unmaintained",
"points": 60,
"status": "partial",
"details": [
{
"code": "abandonment_flagged",
"params": {
"days": 1158,
"count": 4,
"signals": "pull requests unanswered, issues unanswered, releases stalled, Scorecard reports it unmaintained"
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "excellent",
"name": "Community & Adoption",
"value": 94,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "excellent",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 98,
"inputs": {
"forks": 2499,
"stars": 13153,
"watchers": 197,
"growth_state": "organic",
"growth_factor_pct": 100
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "13,153 stars",
"points": 60,
"status": "met",
"details": [
{
"code": "stars",
"params": {
"count": 13153
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "2,499 forks",
"points": 25,
"status": "met",
"details": [
{
"code": "forks",
"params": {
"count": 2499
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "197 watchers",
"points": 12.7,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 197
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Unlicense)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Unlicense"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "excellent",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"packages": [
"pytube"
],
"dependents": null,
"ecosystems": "pypi",
"total_downloads": null,
"monthly_downloads": 4595201
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "4,595,201 downloads/month across pypi",
"points": 80,
"status": "met",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 4595201,
"ecosystems": "pypi"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 58,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "moderate",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"bus_factor": 2,
"contributors_sampled": 96,
"top_contributor_share": 0.482
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "2 contributor(s) cover half of all commits",
"points": 25.2,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 2
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 48% of commits",
"points": 11.7,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 48
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "96 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 96
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 27 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "at_risk",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 45,
"inputs": {
"merged_prs": 207,
"open_issues": 670,
"closed_issues": 799,
"issue_closed_ratio": 0.544,
"closed_unmerged_prs": 376
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "54% of issues closed",
"points": 25.4,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 54
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "207/583 decided PRs merged",
"points": 13.6,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 207,
"decided": 583
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 10/25 approved changesets -- score normalized to 4",
"points": 6,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"followers": 179,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "pytube",
"public_repos": 1,
"account_age_days": 3835
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "179 followers of pytube",
"points": 16.2,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 179,
"login": "pytube"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "1 public repos, account ~10 yr old",
"points": 14.2,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 1
}
},
{
"code": "account_age_years",
"params": {
"years": 10
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "moderate",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 69,
"inputs": {
"packages": [
"pytube"
],
"ecosystems": "pypi",
"any_deprecated": false,
"min_days_since_publish": 1171
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on pypi",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "pypi"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 1171 days ago",
"points": 4,
"status": "partial",
"details": [
{
"code": "publish_recency",
"params": {
"days": 1171
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "86 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 86
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "excellent",
"name": "Engineering Quality",
"value": 88,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 80,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": true
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "3 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 3
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".flake8",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".flake8"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 9.6,
"status": "met",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "0 out of 10 merged PRs checked by a CI test -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"python",
"youtube",
"youtube-downloader"
],
"has_wiki": true,
"homepage": "https://pytube.io",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://pytube.io",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "3 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 3
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 51,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 39,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 15,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 3,
"scorecard_aggregate": 3.9
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "0 out of 10 merged PRs checked by a CI test -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 10/25 approved changesets -- score normalized to 4",
"points": 3,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 27 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "58 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 108 resolved dependencies against OSV; 1 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories",
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 108
}
},
{
"code": "advisories_unassessed",
"params": {
"count": 1
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 108,
"affected_packages": 17,
"assessed_packages": 108,
"unassessed_packages": 1,
"affected_by_severity": "critical 2, high 8, moderate 6, low 1",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 108,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 13
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 51,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 25,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.474,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "46 of 97 human commits state their intent (structured subject or explanatory body)",
"points": 25.3,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 46,
"sampled": 97
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 69,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"Pipfile.lock"
],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [
"Makefile",
"docs/Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0.03
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile, docs/Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile, docs/Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".flake8",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".flake8"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "3 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 3,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"primary_language": "Python",
"largest_source_bytes": 22529,
"source_files_sampled": 40,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Python without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "Python"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/40 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 40,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [],
"report_type": "repository",
"generated_at": "2026-07-21T21:55:18.375891Z",
"schema_version": "0.25.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/p/pytube/pytube.svg",
"full_name": "pytube/pytube",
"license_state": "standard",
"license_spdx": "Unlicense"
}