{"action":"created","comment":{"url":"https://api.github.com/repos/alphagov/gds-way/pulls/comments/233526220","pull_request_review_id":174954403,"id":233526220,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzMzUyNjIyMA==","diff_hunk":"@@ -1,106 +1,150 @@\n ---\n title: Writing Python at GDS\n-last_reviewed_on: 2018-07-31\n-review_in: 6 months\n+last_reviewed_on: 2018-11-09\n+review_in: 3 months\n ---\n \n # <%= current_page.data.title %>\n \n-### About this manual\n+## About this manual\n \n This manual is designed to aid developers in writing Python code that is clear and consistent, within, and across,\n projects at GDS.\n \n \n-### Guidance\n+## Coding standards\n \n-We follow [PEP8][], in some cases [PEP8][] doesn't express a view (e.g. on the usage of language\n-features such as metaclasses) in these cases we defer to the [Google Python style guide][GPSG].\n-We suggest using [PEP8][] and the [Google Python style guide][GPSG] (in order of preference) as references unless\n+We follow [PEP 8][]; where [PEP 8][] doesn't express a view (e.g. on the usage of language\n+features such as metaclasses) we defer to the [Google Python style guide][GPSG].\n+Use these as references unless\n something is explicitly mentioned in the [GDS Python Style Guide][GDSPSG].\n \n+The [GDS Python Style Guide][GDSPSG] is the place for detailing GDS specific rules/exemptions to [PEP&nbsp;8][PEP 8]\n+or the [Google Python style guide][GPSG]. An example of which is allowing a line length of 120 instead\n+of 79.\n \n-### Additional rules\n-\n-The [GDS Python Style Guide][GDSPSG] is the place for detailing GDS specific rules/ exemptions to [PEP8][] or the\n-[Google Python style guide][GPSG]. An example of which is allowing a line length of 120 instead of 79.\n-\n-As always the rules in the [GDS Python Style Guide][GDSPSG] should be followed only in conjunction with the advice\n-on consistency on the main [programming languages manual page][GDSPSG].\n+As always the rules in the [GDS Python Style Guide][GDSPSG] should be followed only in conjunction\n+with the advice on consistency on the main [programming languages manual page][GDSPSG].\n \n If you want to add a new rule or exception please create a pull request against this repo.\n \n+## Linting\n \n-### Linting\n-\n-_For more on linting (including standard settings and config) see the [linting][linting] section of this manual._\n+_For more on linting (including standard settings and config) see the [linting][] section of this manual._\n \n [Flake8][] is the preferred linting tool. It incorporates:\n \n-* [PEP-0008][PEP8] inspired style checks using PyCodeStyle\n+* [PEP 8][] inspired style checks using [pycodestyle][]\n * [Complexity][WikiCyclomatic_complexity] checking using the [McCabe project][McCabe]\n-* Lint checks using [PyFlakes][]\n+* Lint checks using [Pyflakes][]\n \n \n-### Dependencies\n+## Dependencies\n \n-<blockquote>The tools mentioned in this topic are changing quickly, so this\n-section would benefit from review in July 2018</blockquote>\n+A Python application project typically brings together Python packages from PyPI, with\n+others written in-house (or otherwise not distributed via PyPI).\n \n-It is important to have a good strategy for specifying your project's Python\n-libraries. There are two desirable characteristics:\n+There are two ways of specifying dependencies in Python world: as a specific version or\n+as an allowable range.\n \n-1. Reproducibility\n+Different considerations apply to dependency management depending whether you are packaging a library, or creating\n+a deployable artifact such as an application or a bundle of scripts: in general, you should only specify specific\n+versions at the last responsible moment.\n \n-    Pin your full dependencies or you'll get unpredictability between your dev\n-    environment and other environments. You want a new starter to avoid small\n-    hard-to-spot problems. And you want parity between what you test locally,\n-    what is tested by CI, and what you deploy, or you risk new issues appearing\n-    on a live server. Additionally these things can be hard to diagnose.\n+### Applications\n \n-    Traditionally a `requirements.txt` lists the app's immediate dependencies,\n-    but that leaves sub-dependencies unpinned. It makes sense to use a tool to\n-    generate these, but we've noticed problems with using\n-    piptools/pip-compile and pipenv/Pipfile, as detailed in [this commit\n-    message][dm-deps-commit].\n+These recommendations apply wherever you need a reproducible set of dependencies, such\n+as a complete web application, perhaps with many dependencies and sub-dependencies. It also\n+applies to a collection of scripts that are deployed into the cloud and run automatically\n+(for example, batch jobs).\n \n-    **Recommendation**: Put your top-level requirements in a\n-    `requirements-app.txt` file and use [this Makefile\n-    script][dm-deps-commit-makefile] to generate a fully specified\n-    `requirements.txt`, which is used whenever you need to pip-install the\n-    dependencies. The script creates a temporary virtualenv, pip-installs the\n-    `requirements-app.txt` and pip-freezes the result as `requirements.txt`.\n+A good strategy for specifying your application's Python dependencies has two desirable\n+characteristics - they should be:\n \n-    **Recommendation**: Use `requirements-dev.txt` for any dependencies used in\n-    development/test but not production environments.\n+1. Reproducible (predictable)\n \n+    Pin your application's full dependencies – specific versions, rather than ranges – or you'll\n+    get unpredictability between your dev environment and other environments. You want a\n+    new starter to avoid small hard-to-spot problems. And you want parity between what you\n+    test locally, what is tested by CI, and what you deploy, or you risk new issues appearing on\n+    a live server. Additionally these things can be hard to diagnose.\n \n 2. Kept up-to-date\n \n-    Security issues are found in libraries, so it is important to choose\n-    libraries that are maintained and to ensure your team has a strategy to\n-    ensure security updates are installed without significant delay.\n+    Security issues are found in libraries, so it is important to choose libraries that are\n+    maintained and to ensure your team has a strategy to ensure security updates are installed\n+    without significant delay. The [how to manage third party software dependencies][gds-way-deps] section\n+    gives further context and discusses tools that can help, such as [snyk.io][].\n+\n+Your README should document an easy-to-follow process by which all your Python\n+dependencies can be upgraded to get bug fixes and security fixes, without introducing\n+breaking changes to your build.\n+\n+Your pinned dependencies should be fully specified in a file called `requirements.txt`, and checked\n+into your version control system (VCS). For projects with only a small number of dependencies, maintaining\n+this manually (for example, installing with `pip install`, then using `pip freeze`) may be adequate.\n+\n+For larger projects, GDS recommends the following approach, which was developed after various issues\n+were found in current mainstream tooling (see [this commit message][dm-deps-commit], and note also the\n+[lack of support for specifying VCS dependencies](https://github.com/jazzband/pip-tools/issues/355)\n+in `pip-compile`).\n+\n+Put your top-level requirements in a `requirements-app.txt` file.\n+\n+Use a \"freeze\" script (as seen in [this Makefile][dm-deps-commit-makefile]) to generate the\n+fully specified `requirements.txt`, which is used whenever you need to pip-install the\n+dependencies.\n+\n+* The script creates a temporary virtualenv, pip-installs the `requirements-app.txt` and","path":"source/manuals/programming-languages/python/python.html.md.erb","position":144,"original_position":144,"commit_id":"aa1735f2ebb53f98f5dfe0c82ea5f57c8f2daf0e","original_commit_id":"aa1735f2ebb53f98f5dfe0c82ea5f57c8f2daf0e","user":{"login":"MatMoore","id":87579,"node_id":"MDQ6VXNlcjg3NTc5","avatar_url":"https://avatars1.githubusercontent.com/u/87579?v=4","gravatar_id":"","url":"https://api.github.com/users/MatMoore","html_url":"https://github.com/MatMoore","followers_url":"https://api.github.com/users/MatMoore/followers","following_url":"https://api.github.com/users/MatMoore/following{/other_user}","gists_url":"https://api.github.com/users/MatMoore/gists{/gist_id}","starred_url":"https://api.github.com/users/MatMoore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MatMoore/subscriptions","organizations_url":"https://api.github.com/users/MatMoore/orgs","repos_url":"https://api.github.com/users/MatMoore/repos","events_url":"https://api.github.com/users/MatMoore/events{/privacy}","received_events_url":"https://api.github.com/users/MatMoore/received_events","type":"User","site_admin":false},"body":"This feels like information that should belong in a readme.\r\n\r\nCan we package up the makefile solution into a standalone repo so we don't have to copy and paste it across projects? Even if it was just a template, it seems like it would be simpler to link to that than use Digital Marketplace as the template and have to update this if they change anything.","created_at":"2018-11-14T16:41:09Z","updated_at":"2018-11-14T16:42:01Z","html_url":"https://github.com/alphagov/gds-way/pull/210#discussion_r233526220","pull_request_url":"https://api.github.com/repos/alphagov/gds-way/pulls/210","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/alphagov/gds-way/pulls/comments/233526220"},"html":{"href":"https://github.com/alphagov/gds-way/pull/210#discussion_r233526220"},"pull_request":{"href":"https://api.github.com/repos/alphagov/gds-way/pulls/210"}}},"pull_request":{"url":"https://api.github.com/repos/alphagov/gds-way/pulls/210","id":230866288,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMwODY2Mjg4","html_url":"https://github.com/alphagov/gds-way/pull/210","diff_url":"https://github.com/alphagov/gds-way/pull/210.diff","patch_url":"https://github.com/alphagov/gds-way/pull/210.patch","issue_url":"https://api.github.com/repos/alphagov/gds-way/issues/210","number":210,"state":"open","locked":false,"title":"Python manual/advice update (dependencies)","user":{"login":"galund","id":190828,"node_id":"MDQ6VXNlcjE5MDgyOA==","avatar_url":"https://avatars3.githubusercontent.com/u/190828?v=4","gravatar_id":"","url":"https://api.github.com/users/galund","html_url":"https://github.com/galund","followers_url":"https://api.github.com/users/galund/followers","following_url":"https://api.github.com/users/galund/following{/other_user}","gists_url":"https://api.github.com/users/galund/gists{/gist_id}","starred_url":"https://api.github.com/users/galund/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/galund/subscriptions","organizations_url":"https://api.github.com/users/galund/orgs","repos_url":"https://api.github.com/users/galund/repos","events_url":"https://api.github.com/users/galund/events{/privacy}","received_events_url":"https://api.github.com/users/galund/received_events","type":"User","site_admin":false},"body":"@lfdebrux and I have attempted to update our advice re Python dependencies as follows:\r\n\r\n* rearrange the sections\r\n* lose some detail where it's covered better elsewhere (e.g. Snyk)\r\n* expand on our treatment of dependencies, to cover applications and libraries in quite different ways.\r\n\r\nThere's nothing really _new_ here, which is kinda of the point of the GDS Way I guess.\r\n\r\nhttps://trello.com/c/ncD4BuBf/56-python-dependencies","created_at":"2018-11-14T15:00:36Z","updated_at":"2018-11-14T16:42:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a338d700fce400714a3353d0b4d7507d30e35355","assignee":null,"assignees":[],"requested_reviewers":[{"login":"benvand","id":3469840,"node_id":"MDQ6VXNlcjM0Njk4NDA=","avatar_url":"https://avatars0.githubusercontent.com/u/3469840?v=4","gravatar_id":"","url":"https://api.github.com/users/benvand","html_url":"https://github.com/benvand","followers_url":"https://api.github.com/users/benvand/followers","following_url":"https://api.github.com/users/benvand/following{/other_user}","gists_url":"https://api.github.com/users/benvand/gists{/gist_id}","starred_url":"https://api.github.com/users/benvand/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benvand/subscriptions","organizations_url":"https://api.github.com/users/benvand/orgs","repos_url":"https://api.github.com/users/benvand/repos","events_url":"https://api.github.com/users/benvand/events{/privacy}","received_events_url":"https://api.github.com/users/benvand/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/alphagov/gds-way/pulls/210/commits","review_comments_url":"https://api.github.com/repos/alphagov/gds-way/pulls/210/comments","review_comment_url":"https://api.github.com/repos/alphagov/gds-way/pulls/comments{/number}","comments_url":"https://api.github.com/repos/alphagov/gds-way/issues/210/comments","statuses_url":"https://api.github.com/repos/alphagov/gds-way/statuses/aa1735f2ebb53f98f5dfe0c82ea5f57c8f2daf0e","head":{"label":"alphagov:python-manual-update","ref":"python-manual-update","sha":"aa1735f2ebb53f98f5dfe0c82ea5f57c8f2daf0e","user":{"login":"alphagov","id":596977,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU5Njk3Nw==","avatar_url":"https://avatars0.githubusercontent.com/u/596977?v=4","gravatar_id":"","url":"https://api.github.com/users/alphagov","html_url":"https://github.com/alphagov","followers_url":"https://api.github.com/users/alphagov/followers","following_url":"https://api.github.com/users/alphagov/following{/other_user}","gists_url":"https://api.github.com/users/alphagov/gists{/gist_id}","starred_url":"https://api.github.com/users/alphagov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alphagov/subscriptions","organizations_url":"https://api.github.com/users/alphagov/orgs","repos_url":"https://api.github.com/users/alphagov/repos","events_url":"https://api.github.com/users/alphagov/events{/privacy}","received_events_url":"https://api.github.com/users/alphagov/received_events","type":"Organization","site_admin":false},"repo":{"id":81935990,"node_id":"MDEwOlJlcG9zaXRvcnk4MTkzNTk5MA==","name":"gds-way","full_name":"alphagov/gds-way","private":false,"owner":{"login":"alphagov","id":596977,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU5Njk3Nw==","avatar_url":"https://avatars0.githubusercontent.com/u/596977?v=4","gravatar_id":"","url":"https://api.github.com/users/alphagov","html_url":"https://github.com/alphagov","followers_url":"https://api.github.com/users/alphagov/followers","following_url":"https://api.github.com/users/alphagov/following{/other_user}","gists_url":"https://api.github.com/users/alphagov/gists{/gist_id}","starred_url":"https://api.github.com/users/alphagov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alphagov/subscriptions","organizations_url":"https://api.github.com/users/alphagov/orgs","repos_url":"https://api.github.com/users/alphagov/repos","events_url":"https://api.github.com/users/alphagov/events{/privacy}","received_events_url":"https://api.github.com/users/alphagov/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/alphagov/gds-way","description":"How we build and operate products at GDS","fork":false,"url":"https://api.github.com/repos/alphagov/gds-way","forks_url":"https://api.github.com/repos/alphagov/gds-way/forks","keys_url":"https://api.github.com/repos/alphagov/gds-way/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alphagov/gds-way/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alphagov/gds-way/teams","hooks_url":"https://api.github.com/repos/alphagov/gds-way/hooks","issue_events_url":"https://api.github.com/repos/alphagov/gds-way/issues/events{/number}","events_url":"https://api.github.com/repos/alphagov/gds-way/events","assignees_url":"https://api.github.com/repos/alphagov/gds-way/assignees{/user}","branches_url":"https://api.github.com/repos/alphagov/gds-way/branches{/branch}","tags_url":"https://api.github.com/repos/alphagov/gds-way/tags","blobs_url":"https://api.github.com/repos/alphagov/gds-way/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alphagov/gds-way/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alphagov/gds-way/git/refs{/sha}","trees_url":"https://api.github.com/repos/alphagov/gds-way/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alphagov/gds-way/statuses/{sha}","languages_url":"https://api.github.com/repos/alphagov/gds-way/languages","stargazers_url":"https://api.github.com/repos/alphagov/gds-way/stargazers","contributors_url":"https://api.github.com/repos/alphagov/gds-way/contributors","subscribers_url":"https://api.github.com/repos/alphagov/gds-way/subscribers","subscription_url":"https://api.github.com/repos/alphagov/gds-way/subscription","commits_url":"https://api.github.com/repos/alphagov/gds-way/commits{/sha}","git_commits_url":"https://api.github.com/repos/alphagov/gds-way/git/commits{/sha}","comments_url":"https://api.github.com/repos/alphagov/gds-way/comments{/number}","issue_comment_url":"https://api.github.com/repos/alphagov/gds-way/issues/comments{/number}","contents_url":"https://api.github.com/repos/alphagov/gds-way/contents/{+path}","compare_url":"https://api.github.com/repos/alphagov/gds-way/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alphagov/gds-way/merges","archive_url":"https://api.github.com/repos/alphagov/gds-way/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alphagov/gds-way/downloads","issues_url":"https://api.github.com/repos/alphagov/gds-way/issues{/number}","pulls_url":"https://api.github.com/repos/alphagov/gds-way/pulls{/number}","milestones_url":"https://api.github.com/repos/alphagov/gds-way/milestones{/number}","notifications_url":"https://api.github.com/repos/alphagov/gds-way/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alphagov/gds-way/labels{/name}","releases_url":"https://api.github.com/repos/alphagov/gds-way/releases{/id}","deployments_url":"https://api.github.com/repos/alphagov/gds-way/deployments","created_at":"2017-02-14T10:54:42Z","updated_at":"2018-11-14T14:39:35Z","pushed_at":"2018-11-14T16:25:06Z","git_url":"git://github.com/alphagov/gds-way.git","ssh_url":"git@github.com:alphagov/gds-way.git","clone_url":"https://github.com/alphagov/gds-way.git","svn_url":"https://github.com/alphagov/gds-way","homepage":"https://gds-way.cloudapps.digital","size":1022,"stargazers_count":19,"watchers_count":19,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":14,"mirror_url":null,"archived":false,"open_issues_count":5,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":14,"open_issues":5,"watchers":19,"default_branch":"master"}},"base":{"label":"alphagov:master","ref":"master","sha":"3a5abae1c122b77e125da0b74416581f14e8f4b3","user":{"login":"alphagov","id":596977,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU5Njk3Nw==","avatar_url":"https://avatars0.githubusercontent.com/u/596977?v=4","gravatar_id":"","url":"https://api.github.com/users/alphagov","html_url":"https://github.com/alphagov","followers_url":"https://api.github.com/users/alphagov/followers","following_url":"https://api.github.com/users/alphagov/following{/other_user}","gists_url":"https://api.github.com/users/alphagov/gists{/gist_id}","starred_url":"https://api.github.com/users/alphagov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alphagov/subscriptions","organizations_url":"https://api.github.com/users/alphagov/orgs","repos_url":"https://api.github.com/users/alphagov/repos","events_url":"https://api.github.com/users/alphagov/events{/privacy}","received_events_url":"https://api.github.com/users/alphagov/received_events","type":"Organization","site_admin":false},"repo":{"id":81935990,"node_id":"MDEwOlJlcG9zaXRvcnk4MTkzNTk5MA==","name":"gds-way","full_name":"alphagov/gds-way","private":false,"owner":{"login":"alphagov","id":596977,"node_id":"MDEyOk9yZ2FuaXphdGlvbjU5Njk3Nw==","avatar_url":"https://avatars0.githubusercontent.com/u/596977?v=4","gravatar_id":"","url":"https://api.github.com/users/alphagov","html_url":"https://github.com/alphagov","followers_url":"https://api.github.com/users/alphagov/followers","following_url":"https://api.github.com/users/alphagov/following{/other_user}","gists_url":"https://api.github.com/users/alphagov/gists{/gist_id}","starred_url":"https://api.github.com/users/alphagov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alphagov/subscriptions","organizations_url":"https://api.github.com/users/alphagov/orgs","repos_url":"https://api.github.com/users/alphagov/repos","events_url":"https://api.github.com/users/alphagov/events{/privacy}","received_events_url":"https://api.github.com/users/alphagov/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/alphagov/gds-way","description":"How we build and operate products at GDS","fork":false,"url":"https://api.github.com/repos/alphagov/gds-way","forks_url":"https://api.github.com/repos/alphagov/gds-way/forks","keys_url":"https://api.github.com/repos/alphagov/gds-way/keys{/key_id}","collaborators_url":"https://api.github.com/repos/alphagov/gds-way/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/alphagov/gds-way/teams","hooks_url":"https://api.github.com/repos/alphagov/gds-way/hooks","issue_events_url":"https://api.github.com/repos/alphagov/gds-way/issues/events{/number}","events_url":"https://api.github.com/repos/alphagov/gds-way/events","assignees_url":"https://api.github.com/repos/alphagov/gds-way/assignees{/user}","branches_url":"https://api.github.com/repos/alphagov/gds-way/branches{/branch}","tags_url":"https://api.github.com/repos/alphagov/gds-way/tags","blobs_url":"https://api.github.com/repos/alphagov/gds-way/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/alphagov/gds-way/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/alphagov/gds-way/git/refs{/sha}","trees_url":"https://api.github.com/repos/alphagov/gds-way/git/trees{/sha}","statuses_url":"https://api.github.com/repos/alphagov/gds-way/statuses/{sha}","languages_url":"https://api.github.com/repos/alphagov/gds-way/languages","stargazers_url":"https://api.github.com/repos/alphagov/gds-way/stargazers","contributors_url":"https://api.github.com/repos/alphagov/gds-way/contributors","subscribers_url":"https://api.github.com/repos/alphagov/gds-way/subscribers","subscription_url":"https://api.github.com/repos/alphagov/gds-way/subscription","commits_url":"https://api.github.com/repos/alphagov/gds-way/commits{/sha}","git_commits_url":"https://api.github.com/repos/alphagov/gds-way/git/commits{/sha}","comments_url":"https://api.github.com/repos/alphagov/gds-way/comments{/number}","issue_comment_url":"https://api.github.com/repos/alphagov/gds-way/issues/comments{/number}","contents_url":"https://api.github.com/repos/alphagov/gds-way/contents/{+path}","compare_url":"https://api.github.com/repos/alphagov/gds-way/compare/{base}...{head}","merges_url":"https://api.github.com/repos/alphagov/gds-way/merges","archive_url":"https://api.github.com/repos/alphagov/gds-way/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/alphagov/gds-way/downloads","issues_url":"https://api.github.com/repos/alphagov/gds-way/issues{/number}","pulls_url":"https://api.github.com/repos/alphagov/gds-way/pulls{/number}","milestones_url":"https://api.github.com/repos/alphagov/gds-way/milestones{/number}","notifications_url":"https://api.github.com/repos/alphagov/gds-way/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/alphagov/gds-way/labels{/name}","releases_url":"https://api.github.com/repos/alphagov/gds-way/releases{/id}","deployments_url":"https://api.github.com/repos/alphagov/gds-way/deployments","created_at":"2017-02-14T10:54:42Z","updated_at":"2018-11-14T14:39:35Z","pushed_at":"2018-11-14T16:25:06Z","git_url":"git://github.com/alphagov/gds-way.git","ssh_url":"git@github.com:alphagov/gds-way.git","clone_url":"https://github.com/alphagov/gds-way.git","svn_url":"https://github.com/alphagov/gds-way","homepage":"https://gds-way.cloudapps.digital","size":1022,"stargazers_count":19,"watchers_count":19,"language":"HTML","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":14,"mirror_url":null,"archived":false,"open_issues_count":5,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":14,"open_issues":5,"watchers":19,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/alphagov/gds-way/pulls/210"},"html":{"href":"https://github.com/alphagov/gds-way/pull/210"},"issue":{"href":"https://api.github.com/repos/alphagov/gds-way/issues/210"},"comments":{"href":"https://api.github.com/repos/alphagov/gds-way/issues/210/comments"},"review_comments":{"href":"https://api.github.com/repos/alphagov/gds-way/pulls/210/comments"},"review_comment":{"href":"https://api.github.com/repos/alphagov/gds-way/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/alphagov/gds-way/pulls/210/commits"},"statuses":{"href":"https://api.github.com/repos/alphagov/gds-way/statuses/aa1735f2ebb53f98f5dfe0c82ea5f57c8f2daf0e"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"MatMoore"}}