{"id":15677833,"url":"https://github.com/edsu/xkcd2347","last_synced_at":"2025-05-07T01:43:38.371Z","repository":{"id":49345890,"uuid":"289151211","full_name":"edsu/xkcd2347","owner":"edsu","description":"Get dependencies for a project on GitHub.","archived":false,"fork":false,"pushed_at":"2021-06-17T17:32:26.000Z","size":25,"stargazers_count":15,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-11T21:49:10.389Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edsu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-08-21T01:47:47.000Z","updated_at":"2025-01-13T11:38:45.000Z","dependencies_parsed_at":"2022-09-23T21:31:07.107Z","dependency_job_id":null,"html_url":"https://github.com/edsu/xkcd2347","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsu%2Fxkcd2347","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsu%2Fxkcd2347/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsu%2Fxkcd2347/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsu%2Fxkcd2347/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edsu","download_url":"https://codeload.github.com/edsu/xkcd2347/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252798539,"owners_count":21805876,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-03T16:12:37.417Z","updated_at":"2025-05-07T01:43:38.353Z","avatar_url":"https://github.com/edsu.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xkcd2347\n\nxkcd2347 is a small utility that uses the\n[DependencyGraphManifestConnection](https://docs.github.com/en/graphql/reference/objects#dependencygraphmanifestconnection)\nresource in the GitHub GraphQL API to walk the software dependencies in\nprojects. The utility got its strange name from this XKCD comic:\n\n\u003ca href=\"https://m.xkcd.com/2347/\"\u003e\n  \u003cimg src=\"https://imgs.xkcd.com/comics/dependency.png\"\u003e\n\u003c/a\u003e\n\n## Install\n\n    pip install xkcd2347\n\n### Use\n\n```\n$ xkcd2347 --depth 2 edsu/xkcd2347\ndiskcache: https://github.com/wikifactory/dircache\npyyaml: https://github.com/yaml/pyyaml\nrequests: https://github.com/psf/requests\n alabaster: https://github.com/bitprophet/alabaster\n codecov: https://github.com/webknjaz/codecov-python\n detox: https://github.com/tox-dev/detox\n flake8: https://github.com/PyCQA/flake8\n httpbin: https://github.com/postmanlabs/httpbin\n more-itertools: https://github.com/more-itertools/more-itertools\n pysocks: https://github.com/Anorov/PySocks\n pytest: https://github.com/pytest-dev/pytest\n pytest-cov: https://github.com/pytest-dev/pytest-cov\n pytest-httpbin: https://github.com/kevin1024/pytest-httpbin\n pytest-mock: https://github.com/pytest-dev/pytest-mock\n pytest-xdist: https://github.com/pytest-dev/pytest-xdist\n readme-renderer: https://github.com/pypa/readme_renderer\n sphinx: https://github.com/sphinx-doc/sphinx\n tox: https://github.com/tox-dev/tox\n apipkg: https://github.com/pytest-dev/apipkg\n appdirs: https://github.com/ActiveState/appdirs\n atomicwrites: https://github.com/untitaker/python-atomicwrites\n attrs: https://github.com/python-attrs/attrs\n babel: https://github.com/python-babel/babel\n bleach: https://github.com/mozilla/bleach\n blinker: https://github.com/jek/blinker\n brotlipy: https://github.com/python-hyper/brotlipy\n certifi: https://github.com/certifi/python-certifi\n cffi: https://github.com/chevah/python-cffi\n chardet: https://github.com/chardet/chardet\n click: https://github.com/pallets/click\n configparser: https://github.com/mdsitton/configparser-3.2.0r3\n contextlib2: https://github.com/jazzband/contextlib2\n coverage: https://github.com/nedbat/coveragepy\n decorator: https://github.com/micheles/decorator\n distlib: \n dnspython: https://github.com/rthalley/dnspython\n entrypoints: \n enum34: https://github.com/certik/enum34\n eventlet: https://github.com/eventlet/eventlet\n execnet: https://github.com/pytest-dev/execnet\n filelock: https://github.com/benediktschmitt/py-filelock\n flask: https://github.com/pallets/flask\n funcsigs: https://github.com/aliles/funcsigs\n functools32: https://github.com/michilu/python-functools32\n greenlet: https://github.com/python-greenlet/greenlet\n idna: https://github.com/kjd/idna\n imagesize: https://github.com/shibukawa/imagesize_py\n importlib-metadata: \n importlib-resources: \n itsdangerous: https://github.com/pallets/itsdangerous\n jinja2: https://github.com/pallets/jinja\n markupsafe: https://github.com/pallets/markupsafe\n mccabe: https://github.com/PyCQA/mccabe\n mock: https://github.com/calvinchengx/python-mock\n monotonic: https://github.com/atdt/monotonic\n pathlib2: https://github.com/mcmtroffaes/pathlib2\n pluggy: https://github.com/pytest-dev/pluggy\n py: https://github.com/pytest-dev/py\n pycodestyle: https://github.com/PyCQA/pycodestyle\n pycparser: https://github.com/eliben/pycparser\n pyflakes: https://github.com/PyCQA/pyflakes\n pygments: https://github.com/pygments/pygments\n pytest-forked: https://github.com/pytest-dev/pytest-forked\n pytz: https://github.com/stub42/pytz\n raven: https://github.com/getsentry/raven-python\n scandir: https://github.com/benhoyt/scandir\n singledispatch: https://github.com/ambv/singledispatch\n six: https://github.com/benjaminp/six\n snowballstemmer: https://github.com/snowballstem/snowball\n toml: https://github.com/uiri/toml\n typing: https://github.com/python/typing\n urllib3: https://github.com/urllib3/urllib3\n virtualenv: https://github.com/cheshire/virtualenv\n webencodings: https://github.com/gsnedders/python-webencodings\n werkzeug: https://github.com/pallets/werkzeug\n zipp: https://github.com/jaraco/zipp\n```\n\nxkcd2347 will cache results in `~/.xkcd2347/cache` but you can ignore the cache to get more recent results by using the `--flush` command line option.\n\nIf you give set `--level 0` then xkcd2347 will try to find all the dependencies\nas far down as they go. It does take care to not get caught in circular\ndependencies.\n\n## Use as a Library\n\n```python\n\nimport xkcd2347\n\ngh = xkcd2347.GitHub(key=\"yourkeyhere\")\n\nfor dep in gh.get_dependencies('docnow', 'twarc'):\n    print(dep['packageName'])\n```\n\n## Develop\n\nPut your GitHub token in a .env file:\n\n    GITHUB_TOKEN=YOUR_TOKEN_HERE\n\nAnd then run the tests!\n\n    python setup.py test\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsu%2Fxkcd2347","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedsu%2Fxkcd2347","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsu%2Fxkcd2347/lists"}