{"id":29324914,"url":"https://github.com/osrf/py3-ready","last_synced_at":"2025-09-14T05:20:57.819Z","repository":{"id":62578481,"uuid":"194146480","full_name":"osrf/py3-ready","owner":"osrf","description":"Tools for checking if code is ready for python3","archived":false,"fork":false,"pushed_at":"2020-09-18T17:58:55.000Z","size":32,"stargazers_count":9,"open_issues_count":1,"forks_count":4,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-07-07T17:15:38.153Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/osrf.png","metadata":{"files":{"readme":"README.rst","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":"2019-06-27T18:43:56.000Z","updated_at":"2024-12-29T10:54:54.000Z","dependencies_parsed_at":"2022-11-03T21:00:40.741Z","dependency_job_id":null,"html_url":"https://github.com/osrf/py3-ready","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/osrf/py3-ready","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osrf%2Fpy3-ready","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osrf%2Fpy3-ready/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osrf%2Fpy3-ready/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osrf%2Fpy3-ready/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/osrf","download_url":"https://codeload.github.com/osrf/py3-ready/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osrf%2Fpy3-ready/sbom","scorecard":{"id":713814,"data":{"date":"2025-08-11","repo":{"name":"github.com/osrf/py3-ready","commit":"ae227460271e23f277da3155dc27793b8b753a0a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Code-Review","score":1,"reason":"Found 2/14 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 15 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T08:54:42.342Z","repository_id":62578481,"created_at":"2025-08-22T08:54:42.343Z","updated_at":"2025-08-22T08:54:42.343Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275062966,"owners_count":25398888,"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","status":"online","status_checked_at":"2025-09-14T02:00:10.474Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-07T17:02:08.764Z","updated_at":"2025-09-14T05:20:57.808Z","avatar_url":"https://github.com/osrf.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"=========\npy3-ready\n=========\n\nThis is a tool for checking if your ROS package or its dependencies depend on python 2.\n\nInstall\n^^^^^^^\n\nThis package works on Ubuntu and Debian, and it needs some packages installed on the system.\n\nInstall these if the default ``python`` is Python 2 (Ubuntu Bionic, Debian Stretch, etc).\n\n::\n\n    $ sudo apt-get install python-apt\n    $ sudo apt-get install python-rosdep-modules\n    $ sudo apt-get install python-catkin-pkg-modules\n\nInstall these if the default ``python`` is Python 3 (Ubuntu  focal, Debian Buster, etc).\n\n::\n\n    $ sudo apt-get install python3-apt\n    $ sudo apt-get install python3-rosdep-modules\n    $ sudo apt-get install python3-catkin-pkg-modules\n\n\nThen install from PyPI.org.\n\n::\n\n    $ pip install py3-ready\n\nIf you would like to install from source then create a virtual environment with access to system packages.\n\n::\n\n    $ cd py3-ready/\n    # Set up Python 2 virtual environment\n    $ virtualenv --system-site-packages ssenv2\n    $ . ssenv2/bin/activate\n    $ python setup.py develop\n    $ deactivate\n    # Set up Python 3 virtual environment\n    $ python3 venv --system-site-packages ssenv3\n    $ . ssenv3/bin/activate\n    $ python setup.py develop\n\n\nUsage\n^^^^^\nAll commands exit with code 1 if the package does depend on python 2, and 0 if does not.\nIf any unrecoverable error occurs then the exit code is 2.\n\ncheck-package\n:::::::::::::::::\n\nThis checks if any dependency of a ROS package depends on python2.\nThe command takes a name of a ROS package.\nThe package must exist in a sourced workspace.\nUse **--quiet** to suppress warnings and human readable output.\n\n::\n\n    $ py3-ready check-package catkin\n    python-argparse did not resolve to an apt package\n    /opt/ros/melodic/share/catkin depends on python\n\nPassing **--dot** outputs the dependency graph in `DOT \u003chttps://www.graphviz.org/doc/info/lang.html\u003e`_ format.\n\n::\n\n    $ py3-ready check-package --quiet --dot catkin\n    digraph G {\n      \"catkin%package\" -\u003e \"python-empy%rosdep\"[color=pink];  // build_export_depend\n      \"python-empy%rosdep\" -\u003e \"python-empy%apt\"[color=orange];  // rosdep\n      \"python-catkin-pkg%rosdep\" -\u003e \"python-catkin-pkg%apt\"[color=orange];  // rosdep\n      \"catkin%package\" -\u003e \"python-mock%rosdep\"[color=pink];  // test_depend\n      \"python-mock%apt\" -\u003e \"python-funcsigs%apt\"[color=blue];  // Depends\n      \"python:any%apt\" -\u003e \"python%apt\"[color=green];  // virtual\n      \"python-pbr%apt\" -\u003e \"python-six%apt\"[color=blue];  // Depends\n      \"google-mock%apt\" -\u003e \"googletest%apt\"[color=blue];  // Depends\n      \"python-mock%apt\" -\u003e \"python-pbr%apt\"[color=blue];  // Depends\n      \"python-pbr%apt\" -\u003e \"python-pkg-resources%apt\"[color=blue];  // Depends\n      \"python-nose%apt\" -\u003e \"python-pkg-resources%apt\"[color=blue];  // Depends\n      \"catkin%package\" -\u003e \"python-empy%rosdep\"[color=pink];  // build_depend\n      \"python-docutils%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"catkin%package\" -\u003e \"python-catkin-pkg%rosdep\"[color=pink];  // build_export_depend\n      \"python-dateutil%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"python-nose%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"python-funcsigs%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"gtest%rosdep\" -\u003e \"libgtest-dev%apt\"[color=orange];  // rosdep\n      \"python-catkin-pkg%apt\" -\u003e \"python-docutils%apt\"[color=blue];  // Depends\n      \"catkin%package\" -\u003e \"python-catkin-pkg%rosdep\"[color=pink];  // build_depend\n      \"python-docutils%apt\" -\u003e \"python-roman%apt\"[color=blue];  // Depends\n      \"python-mock%rosdep\" -\u003e \"python-mock%apt\"[color=orange];  // rosdep\n      \"python-nose%rosdep\" -\u003e \"python-nose%apt\"[color=orange];  // rosdep\n      \"google-mock%rosdep\" -\u003e \"google-mock%apt\"[color=orange];  // rosdep\n      \"catkin%package\" -\u003e \"python-catkin-pkg%rosdep\"[color=pink];  // exec_depend\n      \"python-catkin-pkg-modules%apt\" -\u003e \"python-pyparsing%apt\"[color=blue];  // Depends\n      \"catkin%package\" -\u003e \"gtest%rosdep\"[color=pink];  // build_export_depend\n      \"catkin%package\" -\u003e \"python-nose%rosdep\"[color=pink];  // build_export_depend\n      \"python-six%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"python-dateutil%apt\" -\u003e \"python-six%apt\"[color=blue];  // Depends\n      \"python-catkin-pkg%apt\" -\u003e \"python-pyparsing%apt\"[color=blue];  // Depends\n      \"python-catkin-pkg-modules%apt\" -\u003e \"python-docutils%apt\"[color=blue];  // Depends\n      \"python-pbr%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"python-pyparsing%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"python-catkin-pkg%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"python-catkin-pkg-modules%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"python-mock%apt\" -\u003e \"python-six%apt\"[color=blue];  // Depends\n      \"catkin%package\" -\u003e \"python-nose%rosdep\"[color=pink];  // test_depend\n      \"python-empy%apt\" -\u003e \"python%apt\"[color=blue];  // Depends\n      \"python-mock%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"python-catkin-pkg%apt\" -\u003e \"python-dateutil%apt\"[color=blue];  // Depends\n      \"python-catkin-pkg%apt\" -\u003e \"python-catkin-pkg-modules%apt\"[color=blue];  // Depends\n      \"googletest%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"python-empy%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"catkin%package\" -\u003e \"google-mock%rosdep\"[color=pink];  // build_export_depend\n      \"python-catkin-pkg-modules%apt\" -\u003e \"python-dateutil%apt\"[color=blue];  // Depends\n      \"libgtest-dev%apt\" -\u003e \"googletest%apt\"[color=blue];  // Depends\n      \"python-pkg-resources%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"python-roman%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n    \n      \"python-mock%rosdep\"[color=orange,shape=rect][label=\"python-mock\"];  // rosdep\n      \"python-mock%apt\"[label=\"python-mock\"];  // apt\n      \"python-catkin-pkg-modules%apt\"[label=\"python-catkin-pkg-modules\"];  // apt\n      \"python-pyparsing%apt\"[label=\"python-pyparsing\"];  // apt\n      \"python-catkin-pkg%apt\"[label=\"python-catkin-pkg\"];  // apt\n      \"gtest%rosdep\"[color=orange,shape=rect][label=\"gtest\"];  // rosdep\n      \"python:any%apt\"[label=\"python:any\"];  // apt\n      \"python-dateutil%apt\"[label=\"python-dateutil\"];  // apt\n      \"python-roman%apt\"[label=\"python-roman\"];  // apt\n      \"catkin%package\"[color=pink,shape=hexagon][label=\"catkin\"];  // package\n      \"python-empy%apt\"[label=\"python-empy\"];  // apt\n      \"google-mock%apt\"[label=\"google-mock\"];  // apt\n      \"python-nose%rosdep\"[color=orange,shape=rect][label=\"python-nose\"];  // rosdep\n      \"python-pbr%apt\"[label=\"python-pbr\"];  // apt\n      \"python-pkg-resources%apt\"[label=\"python-pkg-resources\"];  // apt\n      \"python-funcsigs%apt\"[label=\"python-funcsigs\"];  // apt\n      \"python-nose%apt\"[label=\"python-nose\"];  // apt\n      \"python%apt\"[label=\"python\"];  // apt\n      \"google-mock%rosdep\"[color=orange,shape=rect][label=\"google-mock\"];  // rosdep\n      \"python-empy%rosdep\"[color=orange,shape=rect][label=\"python-empy\"];  // rosdep\n      \"python-catkin-pkg%rosdep\"[color=orange,shape=rect][label=\"python-catkin-pkg\"];  // rosdep\n      \"libgtest-dev%apt\"[label=\"libgtest-dev\"];  // apt\n      \"googletest%apt\"[label=\"googletest\"];  // apt\n      \"python-docutils%apt\"[label=\"python-docutils\"];  // apt\n      \"python-six%apt\"[label=\"python-six\"];  // apt\n    }\n\nBy default this looks for dependencies on the debian package named **python**.\nUse **--target** to change this name.\n\n::\n\n    $ py3-ready check-package --target python3 gazebo_ros 2\u003e/dev/null\n    /opt/ros/melodic/share/gazebo_ros depends on python3\n\ncheck-rosdep\n::::::::::::\n\nThis uses **rosdep** and **apt** to check if a rosdep key recursively depends on python 2.\n\n::\n\n    $ py3-ready check-rosdep python-sip\n    rosdep key python-sip depends on python\n\nPassing **--dot** outputs the dependency graph in `DOT \u003chttps://www.graphviz.org/doc/info/lang.html\u003e`_ format.\nUse **--quiet** to suppress warnings and human readable output.\n\n::\n\n    $ py3-ready check-rosdep --quiet --dot boost\n    digraph G {\n      \"libboost-mpi-python1.65-dev%apt\" -\u003e \"libboost-mpi-python1.65.1%apt\"[color=blue];  // Depends\n      \"libboost-mpi-python1.65.1%apt\" -\u003e \"python%apt\"[color=blue];  // Depends\n      \"libboost-all-dev%apt\" -\u003e \"libboost-mpi-python-dev%apt\"[color=blue];  // Depends\n      \"libboost-mpi-python-dev%apt\" -\u003e \"libboost-mpi-python1.65-dev%apt\"[color=blue];  // Depends\n      \"libboost-python1.65-dev%apt\" -\u003e \"python-dev%apt\"[color=blue];  // Depends\n      \"libboost-mpi-python1.65.1%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"python:any%apt\" -\u003e \"python%apt\"[color=green];  // virtual\n      \"libboost-python-dev%apt\" -\u003e \"libboost-python1.65-dev%apt\"[color=blue];  // Depends\n      \"boost%rosdep\" -\u003e \"libboost-all-dev%apt\"[color=orange];  // rosdep\n      \"python-dev%apt\" -\u003e \"python%apt\"[color=blue];  // Depends\n      \"libboost-all-dev%apt\" -\u003e \"libboost-python-dev%apt\"[color=blue];  // Depend\n      \"python%apt\"[label=\"python\"];  // apt\n    \n      \"libboost-mpi-python-dev%apt\"[label=\"libboost-mpi-python-dev\"];  // apt\n      \"boost%rosdep\"[color=orange,shape=rect][label=\"boost\"];  // rosdep\n      \"libboost-python-dev%apt\"[label=\"libboost-python-dev\"];  // apt\n      \"libboost-mpi-python1.65-dev%apt\"[label=\"libboost-mpi-python1.65-dev\"];  // apt\n      \"libboost-python1.65-dev%apt\"[label=\"libboost-python1.65-dev\"];  // apt\n      \"libboost-mpi-python1.65.1%apt\"[label=\"libboost-mpi-python1.65.1\"];  // apt\n      \"python-dev%apt\"[label=\"python-dev\"];  // apt\n      \"python:any%apt\"[label=\"python:any\"];  // apt\n      \"libboost-all-dev%apt\"[label=\"libboost-all-dev\"];  // apt\n    }\n\n\nBy default this looks for dependencies on the debian package named **python**.\nUse **--target** to change this name.\n\n\n::\n\n    $ py3-ready check-rosdep --target python3 python-sip\n    rosdep key python-sip does not depend on python3\n\ncheck-apt\n:::::::::\n\nThis uses **apt** to check if a debian package recursively depends on python 2.\n\n::\n\n    $ py3-ready check-apt libboost-python-dev\n    libboost-python-dev depends on python\n\n\nPassing **--dot** outputs the dependency graph in `DOT \u003chttps://www.graphviz.org/doc/info/lang.html\u003e`_ format.\nUse **--quiet** to suppress warnings and human readable output.\n\n::\n\n    $ py3-ready check-apt --dot --quiet libboost-all-dev\n    digraph G {\n      \"libboost-mpi-python1.65.1%apt\" -\u003e \"python:any%apt\"[color=blue];  // Depends\n      \"libboost-all-dev%apt\" -\u003e \"libboost-python-dev%apt\"[color=blue];  // Depends\n      \"libboost-python-dev%apt\" -\u003e \"libboost-python1.65-dev%apt\"[color=blue];  // Depends\n      \"libboost-python1.65-dev%apt\" -\u003e \"python-dev%apt\"[color=blue];  // Depends\n      \"python-dev%apt\" -\u003e \"python%apt\"[color=blue];  // Depends\n      \"libboost-all-dev%apt\" -\u003e \"libboost-mpi-python-dev%apt\"[color=blue];  // Depends\n      \"libboost-mpi-python1.65-dev%apt\" -\u003e \"libboost-mpi-python1.65.1%apt\"[color=blue];  // Depends\n      \"libboost-mpi-python1.65.1%apt\" -\u003e \"python%apt\"[color=blue];  // Depends\n      \"python:any%apt\" -\u003e \"python%apt\"[color=green];  // virtual\n      \"libboost-mpi-python-dev%apt\" -\u003e \"libboost-mpi-python1.65-dev%apt\"[color=blue];  // Depends\n    \n      \"libboost-python1.65-dev%apt\"[label=\"libboost-python1.65-dev\"];  // apt\n      \"python-dev%apt\"[label=\"python-dev\"];  // apt\n      \"python:any%apt\"[label=\"python:any\"];  // apt\n      \"python%apt\"[label=\"python\"];  // apt\n      \"libboost-mpi-python-dev%apt\"[label=\"libboost-mpi-python-dev\"];  // apt\n      \"libboost-mpi-python1.65-dev%apt\"[label=\"libboost-mpi-python1.65-dev\"];  // apt\n      \"libboost-python-dev%apt\"[label=\"libboost-python-dev\"];  // apt\n      \"libboost-all-dev%apt\"[label=\"libboost-all-dev\"];  // apt\n      \"libboost-mpi-python1.65.1%apt\"[label=\"libboost-mpi-python1.65.1\"];  // apt\n    }\n\n\nBy default this looks for dependencies on the debian package named **python**.\nUse **--target** to change this name.\n\n\n::\n\n    $ py3-ready check-apt --target python3 python3-apt\n    python3-apt depends on python3\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosrf%2Fpy3-ready","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosrf%2Fpy3-ready","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosrf%2Fpy3-ready/lists"}