{"action":"created","comment":{"url":"https://api.github.com/repos/sxs-collaboration/spectre/pulls/comments/195143521","pull_request_review_id":128451204,"id":195143521,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5NTE0MzUyMQ==","diff_hunk":"@@ -0,0 +1,121 @@\n+// Distributed under the MIT License.\n+// See LICENSE.txt for details.\n+\n+#include \"NumericalAlgorithms/Spectral/Spectral.hpp\"\n+\n+#include <cmath>\n+#include <cstddef>\n+// IWYU pragma: no_include <type_traits>\n+#include <utility>\n+\n+#include \"DataStructures/DataVector.hpp\"\n+#include \"ErrorHandling/Assert.hpp\"\n+#include \"Utilities/ConstantExpressions.hpp\"\n+\n+namespace Spectral {\n+\n+// Algorithms to compute Chebyshev basis functions\n+// These functions specialize the templates declared in `Spectral.cpp`.\n+\n+/// \\cond\n+template <Basis>\n+DataVector compute_basis_function_values(size_t, const DataVector&) noexcept;\n+template <>\n+DataVector compute_basis_function_values<Basis::Chebyshev>(\n+    const size_t k, const DataVector& x) noexcept {\n+  // Algorithm 21 from Kopriva's book, p. 60\n+  // Since the trigonometric form is expensive to compute we make use of it only\n+  // for large k. It remains to be determined what is a reasonable crossover\n+  // point between the two forms, e.g. depending on compiler settings.\n+  static constexpr size_t chebyshev_recursion_to_trigonometry_crossover = 10;\n+  switch (k) {\n+    case 0:\n+      return DataVector(x.size(), 1.);\n+    case 1:\n+      return x;\n+    default:\n+      if (k <= chebyshev_recursion_to_trigonometry_crossover) {\n+        DataVector T_k_minus_2(x.size(), 1.);\n+        DataVector T_k_minus_1 = x;\n+        DataVector T_k(x.size());\n+        for (size_t j = 2; j <= k; j++) {\n+          T_k = 2 * x * T_k_minus_1 - T_k_minus_2;\n+          T_k_minus_2 = T_k_minus_1;\n+          T_k_minus_1 = T_k;\n+        }\n+        return T_k;\n+      } else {\n+        return cos(k * acos(x));\n+      }\n+  }\n+}\n+\n+template <Basis>\n+DataVector compute_inverse_weight_function_values(const DataVector&) noexcept;\n+template <>\n+DataVector compute_inverse_weight_function_values<Basis::Chebyshev>(\n+    const DataVector& x) noexcept {\n+  return sqrt(1. - square(x));\n+}\n+\n+template <Basis>\n+double compute_basis_function_normalization_square(size_t) noexcept;\n+template <>\n+double compute_basis_function_normalization_square<Basis::Chebyshev>(\n+    const size_t k) noexcept {\n+  if (k == 0) {\n+    return M_PI;\n+  } else {\n+    return M_PI_2;\n+  }\n+}\n+\n+template <Basis, Quadrature>\n+std::pair<DataVector, DataVector> compute_collocation_points_and_weights(\n+    size_t) noexcept;\n+/// \\endcond\n+\n+// Algorithm to compute Chebyshev-Gauss quadrature\n+\n+/// \\cond\n+template <>\n+std::pair<DataVector, DataVector>\n+compute_collocation_points_and_weights<Basis::Chebyshev, Quadrature::Gauss>(\n+    const size_t num_points) noexcept {\n+  // Algorithm 26 from Kopriva's book, p. 67\n+  ASSERT(num_points >= 1,\n+         \"Chebyshev-Gauss quadrature requires at least one collocation point.\");\n+  const size_t poly_degree = num_points - 1;\n+  DataVector x(num_points);\n+  const DataVector w(num_points, M_PI / num_points);\n+  for (size_t j = 0; j < num_points; j++) {\n+    x[j] = -cos((2. * double(j) + 1.) / (2. * poly_degree + 2.) * M_PI);\n+  }\n+  return std::make_pair(std::move(x), w);\n+}\n+/// \\endcond\n+\n+// Algorithm to compute Chebyshev-Gauss-Lobatto quadrature\n+\n+/// \\cond\n+template <>\n+std::pair<DataVector, DataVector> compute_collocation_points_and_weights<\n+    Basis::Chebyshev, Quadrature::GaussLobatto>(\n+    const size_t num_points) noexcept {\n+  // Algorithm 27 from Kopriva's book, p. 68\n+  ASSERT(num_points >= 2,\n+         \"Chebyshev-Gauss-Lobatto quadrature requires at least two collocation \"\n+         \"points.\");\n+  const size_t poly_degree = num_points - 1;\n+  DataVector x(num_points);\n+  DataVector w(num_points, M_PI / poly_degree);\n+  for (size_t j = 0; j < num_points; j++) {\n+    x[j] = -cos(double(j) / double(poly_degree) * M_PI);\n+  }\n+  w[0] /= 2.;","path":"src/NumericalAlgorithms/Spectral/Chebyshev.cpp","position":115,"original_position":115,"commit_id":"1c190d14178bf1d3ab91f6edf4e171fcc62fe832","original_commit_id":"f4efad0ea422c3f2b710060635c8010c6c350a0d","user":{"login":"nilsleiffischer","id":746230,"node_id":"MDQ6VXNlcjc0NjIzMA==","avatar_url":"https://avatars2.githubusercontent.com/u/746230?v=4","gravatar_id":"","url":"https://api.github.com/users/nilsleiffischer","html_url":"https://github.com/nilsleiffischer","followers_url":"https://api.github.com/users/nilsleiffischer/followers","following_url":"https://api.github.com/users/nilsleiffischer/following{/other_user}","gists_url":"https://api.github.com/users/nilsleiffischer/gists{/gist_id}","starred_url":"https://api.github.com/users/nilsleiffischer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nilsleiffischer/subscriptions","organizations_url":"https://api.github.com/users/nilsleiffischer/orgs","repos_url":"https://api.github.com/users/nilsleiffischer/repos","events_url":"https://api.github.com/users/nilsleiffischer/events{/privacy}","received_events_url":"https://api.github.com/users/nilsleiffischer/received_events","type":"User","site_admin":false},"body":"is this not something the compiler can cope with? anyway, changed it","created_at":"2018-06-13T16:04:21Z","updated_at":"2018-06-13T16:04:21Z","html_url":"https://github.com/sxs-collaboration/spectre/pull/716#discussion_r195143521","pull_request_url":"https://api.github.com/repos/sxs-collaboration/spectre/pulls/716","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/sxs-collaboration/spectre/pulls/comments/195143521"},"html":{"href":"https://github.com/sxs-collaboration/spectre/pull/716#discussion_r195143521"},"pull_request":{"href":"https://api.github.com/repos/sxs-collaboration/spectre/pulls/716"}},"in_reply_to_id":194561292},"pull_request":{"url":"https://api.github.com/repos/sxs-collaboration/spectre/pulls/716","id":189443307,"node_id":"MDExOlB1bGxSZXF1ZXN0MTg5NDQzMzA3","html_url":"https://github.com/sxs-collaboration/spectre/pull/716","diff_url":"https://github.com/sxs-collaboration/spectre/pull/716.diff","patch_url":"https://github.com/sxs-collaboration/spectre/pull/716.patch","issue_url":"https://api.github.com/repos/sxs-collaboration/spectre/issues/716","number":716,"state":"open","locked":false,"title":"Add Chebyshev basis","user":{"login":"nilsleiffischer","id":746230,"node_id":"MDQ6VXNlcjc0NjIzMA==","avatar_url":"https://avatars2.githubusercontent.com/u/746230?v=4","gravatar_id":"","url":"https://api.github.com/users/nilsleiffischer","html_url":"https://github.com/nilsleiffischer","followers_url":"https://api.github.com/users/nilsleiffischer/followers","following_url":"https://api.github.com/users/nilsleiffischer/following{/other_user}","gists_url":"https://api.github.com/users/nilsleiffischer/gists{/gist_id}","starred_url":"https://api.github.com/users/nilsleiffischer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nilsleiffischer/subscriptions","organizations_url":"https://api.github.com/users/nilsleiffischer/orgs","repos_url":"https://api.github.com/users/nilsleiffischer/repos","events_url":"https://api.github.com/users/nilsleiffischer/events{/privacy}","received_events_url":"https://api.github.com/users/nilsleiffischer/received_events","type":"User","site_admin":false},"body":"## Proposed changes\r\n\r\nThis PR adds Chebyshev polynomials as a choice for `Spectral::Basis`. This is mostly for testing that our `Spectral` interface works as expected also for a basis that is not `Spectral::Basis::Legendre`.\r\n\r\nIndeed the interface needs a few additions to accommodate for basis functions with a non-unity weight function, i.e. the function w.r.t. which the basis functions are orthogonal. In particular, quadrature and integration is not identical in that case, so this PR adds a `Spectral::integral_weights` function that returns the coefficients for computing the definite integral of a function (as opposed to `Spectral::quadrature_weights` that returns the coefficients for computing the quadrature, i.e. the definite integral of a function times the weight function).\r\n\r\n### Types of changes:\r\n\r\n- [ ] Bugfix\r\n- [ ] New feature\r\n\r\n### Component:\r\n\r\n- [ ] Code\r\n- [ ] Documentation\r\n- [ ] Build system\r\n- [ ] Continuous integration\r\n\r\n### Code review checklist\r\n\r\n- Follows [code review guidelines](https://sxs-collaboration.github.io/spectre/code_review_guide.html)\r\n- Code has documentation and unit tests\r\n- Private member variables have a trailing underscore\r\n- Do not use [Hungarian notation](https://en.wikipedia.org/wiki/Hungarian_notation), e.g. `double* pd_blah` is bad\r\n- Header order:\r\n  1. hpp corresponding to cpp (only in cpp files) or `tests/Unit/TestingFramework.hpp` (only in tests)\r\n  2. Blank line (only in cpp files and tests)\r\n  3. STL and externals (in alphabetical order)\r\n  4. Blank line\r\n  5. SpECTRE includes (in alphabetical order)\r\n- File lists in CMake are alphabetical\r\n- Correct `noexcept` specification for functions (if unsure, mark `noexcept`)\r\n- Mark objects `const` whenever possible\r\n- Almost always `auto`, except with expression templates, i.e. `DataVector`\r\n- All commits for performance changes provide quantitative evidence and the tests used to obtain said evidence.\r\n- Make sure error messages are helpful, e.g. \"The number of grid points in the matrix 'F' is not the same as the number of grid points in the determinant.\"\r\n- Prefix commits addressing PR requests with `fixup`. These commits are flagged\r\n  by Travis so we do not accidentally merge them.\r\n- Include what you use, prefer forward declarations in hpp files.\r\n- Explicitly make numbers floating point, e.g. `2.` or `2.0` over `2`\r\n- Use `Tensor`'s non-member get if the indices are constant expressions, e.g.\r\n  `get<1>(tensor)`\r\n\r\n### Further comments\r\n\r\n<!--\r\nIf this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did and what alternatives you considered, etc...\r\n-->","created_at":"2018-05-21T17:42:15Z","updated_at":"2018-06-13T16:04:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a9c8bf0c994b3cb213299e35121bca97d9388f6c","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/sxs-collaboration/spectre/pulls/716/commits","review_comments_url":"https://api.github.com/repos/sxs-collaboration/spectre/pulls/716/comments","review_comment_url":"https://api.github.com/repos/sxs-collaboration/spectre/pulls/comments{/number}","comments_url":"https://api.github.com/repos/sxs-collaboration/spectre/issues/716/comments","statuses_url":"https://api.github.com/repos/sxs-collaboration/spectre/statuses/1c190d14178bf1d3ab91f6edf4e171fcc62fe832","head":{"label":"nilsleiffischer:chebyshev","ref":"chebyshev","sha":"1c190d14178bf1d3ab91f6edf4e171fcc62fe832","user":{"login":"nilsleiffischer","id":746230,"node_id":"MDQ6VXNlcjc0NjIzMA==","avatar_url":"https://avatars2.githubusercontent.com/u/746230?v=4","gravatar_id":"","url":"https://api.github.com/users/nilsleiffischer","html_url":"https://github.com/nilsleiffischer","followers_url":"https://api.github.com/users/nilsleiffischer/followers","following_url":"https://api.github.com/users/nilsleiffischer/following{/other_user}","gists_url":"https://api.github.com/users/nilsleiffischer/gists{/gist_id}","starred_url":"https://api.github.com/users/nilsleiffischer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nilsleiffischer/subscriptions","organizations_url":"https://api.github.com/users/nilsleiffischer/orgs","repos_url":"https://api.github.com/users/nilsleiffischer/repos","events_url":"https://api.github.com/users/nilsleiffischer/events{/privacy}","received_events_url":"https://api.github.com/users/nilsleiffischer/received_events","type":"User","site_admin":false},"repo":{"id":119436274,"node_id":"MDEwOlJlcG9zaXRvcnkxMTk0MzYyNzQ=","name":"spectre","full_name":"nilsleiffischer/spectre","owner":{"login":"nilsleiffischer","id":746230,"node_id":"MDQ6VXNlcjc0NjIzMA==","avatar_url":"https://avatars2.githubusercontent.com/u/746230?v=4","gravatar_id":"","url":"https://api.github.com/users/nilsleiffischer","html_url":"https://github.com/nilsleiffischer","followers_url":"https://api.github.com/users/nilsleiffischer/followers","following_url":"https://api.github.com/users/nilsleiffischer/following{/other_user}","gists_url":"https://api.github.com/users/nilsleiffischer/gists{/gist_id}","starred_url":"https://api.github.com/users/nilsleiffischer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nilsleiffischer/subscriptions","organizations_url":"https://api.github.com/users/nilsleiffischer/orgs","repos_url":"https://api.github.com/users/nilsleiffischer/repos","events_url":"https://api.github.com/users/nilsleiffischer/events{/privacy}","received_events_url":"https://api.github.com/users/nilsleiffischer/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/nilsleiffischer/spectre","description":"SpECTRE is a code for multi-scale, multi-physics problems in astrophysics and gravitational physics.","fork":true,"url":"https://api.github.com/repos/nilsleiffischer/spectre","forks_url":"https://api.github.com/repos/nilsleiffischer/spectre/forks","keys_url":"https://api.github.com/repos/nilsleiffischer/spectre/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nilsleiffischer/spectre/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nilsleiffischer/spectre/teams","hooks_url":"https://api.github.com/repos/nilsleiffischer/spectre/hooks","issue_events_url":"https://api.github.com/repos/nilsleiffischer/spectre/issues/events{/number}","events_url":"https://api.github.com/repos/nilsleiffischer/spectre/events","assignees_url":"https://api.github.com/repos/nilsleiffischer/spectre/assignees{/user}","branches_url":"https://api.github.com/repos/nilsleiffischer/spectre/branches{/branch}","tags_url":"https://api.github.com/repos/nilsleiffischer/spectre/tags","blobs_url":"https://api.github.com/repos/nilsleiffischer/spectre/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nilsleiffischer/spectre/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nilsleiffischer/spectre/git/refs{/sha}","trees_url":"https://api.github.com/repos/nilsleiffischer/spectre/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nilsleiffischer/spectre/statuses/{sha}","languages_url":"https://api.github.com/repos/nilsleiffischer/spectre/languages","stargazers_url":"https://api.github.com/repos/nilsleiffischer/spectre/stargazers","contributors_url":"https://api.github.com/repos/nilsleiffischer/spectre/contributors","subscribers_url":"https://api.github.com/repos/nilsleiffischer/spectre/subscribers","subscription_url":"https://api.github.com/repos/nilsleiffischer/spectre/subscription","commits_url":"https://api.github.com/repos/nilsleiffischer/spectre/commits{/sha}","git_commits_url":"https://api.github.com/repos/nilsleiffischer/spectre/git/commits{/sha}","comments_url":"https://api.github.com/repos/nilsleiffischer/spectre/comments{/number}","issue_comment_url":"https://api.github.com/repos/nilsleiffischer/spectre/issues/comments{/number}","contents_url":"https://api.github.com/repos/nilsleiffischer/spectre/contents/{+path}","compare_url":"https://api.github.com/repos/nilsleiffischer/spectre/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nilsleiffischer/spectre/merges","archive_url":"https://api.github.com/repos/nilsleiffischer/spectre/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nilsleiffischer/spectre/downloads","issues_url":"https://api.github.com/repos/nilsleiffischer/spectre/issues{/number}","pulls_url":"https://api.github.com/repos/nilsleiffischer/spectre/pulls{/number}","milestones_url":"https://api.github.com/repos/nilsleiffischer/spectre/milestones{/number}","notifications_url":"https://api.github.com/repos/nilsleiffischer/spectre/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nilsleiffischer/spectre/labels{/name}","releases_url":"https://api.github.com/repos/nilsleiffischer/spectre/releases{/id}","deployments_url":"https://api.github.com/repos/nilsleiffischer/spectre/deployments","created_at":"2018-01-29T20:19:38Z","updated_at":"2018-05-18T09:26:16Z","pushed_at":"2018-06-11T16:57:31Z","git_url":"git://github.com/nilsleiffischer/spectre.git","ssh_url":"git@github.com:nilsleiffischer/spectre.git","clone_url":"https://github.com/nilsleiffischer/spectre.git","svn_url":"https://github.com/nilsleiffischer/spectre","homepage":"","size":9047,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"sxs-collaboration:develop","ref":"develop","sha":"17965e6fd3674a75c4d7f971b0507ccaed5a26ae","user":{"login":"sxs-collaboration","id":26882595,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI2ODgyNTk1","avatar_url":"https://avatars2.githubusercontent.com/u/26882595?v=4","gravatar_id":"","url":"https://api.github.com/users/sxs-collaboration","html_url":"https://github.com/sxs-collaboration","followers_url":"https://api.github.com/users/sxs-collaboration/followers","following_url":"https://api.github.com/users/sxs-collaboration/following{/other_user}","gists_url":"https://api.github.com/users/sxs-collaboration/gists{/gist_id}","starred_url":"https://api.github.com/users/sxs-collaboration/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sxs-collaboration/subscriptions","organizations_url":"https://api.github.com/users/sxs-collaboration/orgs","repos_url":"https://api.github.com/users/sxs-collaboration/repos","events_url":"https://api.github.com/users/sxs-collaboration/events{/privacy}","received_events_url":"https://api.github.com/users/sxs-collaboration/received_events","type":"Organization","site_admin":false},"repo":{"id":87570510,"node_id":"MDEwOlJlcG9zaXRvcnk4NzU3MDUxMA==","name":"spectre","full_name":"sxs-collaboration/spectre","owner":{"login":"sxs-collaboration","id":26882595,"node_id":"MDEyOk9yZ2FuaXphdGlvbjI2ODgyNTk1","avatar_url":"https://avatars2.githubusercontent.com/u/26882595?v=4","gravatar_id":"","url":"https://api.github.com/users/sxs-collaboration","html_url":"https://github.com/sxs-collaboration","followers_url":"https://api.github.com/users/sxs-collaboration/followers","following_url":"https://api.github.com/users/sxs-collaboration/following{/other_user}","gists_url":"https://api.github.com/users/sxs-collaboration/gists{/gist_id}","starred_url":"https://api.github.com/users/sxs-collaboration/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sxs-collaboration/subscriptions","organizations_url":"https://api.github.com/users/sxs-collaboration/orgs","repos_url":"https://api.github.com/users/sxs-collaboration/repos","events_url":"https://api.github.com/users/sxs-collaboration/events{/privacy}","received_events_url":"https://api.github.com/users/sxs-collaboration/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sxs-collaboration/spectre","description":"SpECTRE is a code for multi-scale, multi-physics problems in astrophysics and gravitational physics.","fork":false,"url":"https://api.github.com/repos/sxs-collaboration/spectre","forks_url":"https://api.github.com/repos/sxs-collaboration/spectre/forks","keys_url":"https://api.github.com/repos/sxs-collaboration/spectre/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sxs-collaboration/spectre/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sxs-collaboration/spectre/teams","hooks_url":"https://api.github.com/repos/sxs-collaboration/spectre/hooks","issue_events_url":"https://api.github.com/repos/sxs-collaboration/spectre/issues/events{/number}","events_url":"https://api.github.com/repos/sxs-collaboration/spectre/events","assignees_url":"https://api.github.com/repos/sxs-collaboration/spectre/assignees{/user}","branches_url":"https://api.github.com/repos/sxs-collaboration/spectre/branches{/branch}","tags_url":"https://api.github.com/repos/sxs-collaboration/spectre/tags","blobs_url":"https://api.github.com/repos/sxs-collaboration/spectre/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sxs-collaboration/spectre/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sxs-collaboration/spectre/git/refs{/sha}","trees_url":"https://api.github.com/repos/sxs-collaboration/spectre/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sxs-collaboration/spectre/statuses/{sha}","languages_url":"https://api.github.com/repos/sxs-collaboration/spectre/languages","stargazers_url":"https://api.github.com/repos/sxs-collaboration/spectre/stargazers","contributors_url":"https://api.github.com/repos/sxs-collaboration/spectre/contributors","subscribers_url":"https://api.github.com/repos/sxs-collaboration/spectre/subscribers","subscription_url":"https://api.github.com/repos/sxs-collaboration/spectre/subscription","commits_url":"https://api.github.com/repos/sxs-collaboration/spectre/commits{/sha}","git_commits_url":"https://api.github.com/repos/sxs-collaboration/spectre/git/commits{/sha}","comments_url":"https://api.github.com/repos/sxs-collaboration/spectre/comments{/number}","issue_comment_url":"https://api.github.com/repos/sxs-collaboration/spectre/issues/comments{/number}","contents_url":"https://api.github.com/repos/sxs-collaboration/spectre/contents/{+path}","compare_url":"https://api.github.com/repos/sxs-collaboration/spectre/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sxs-collaboration/spectre/merges","archive_url":"https://api.github.com/repos/sxs-collaboration/spectre/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sxs-collaboration/spectre/downloads","issues_url":"https://api.github.com/repos/sxs-collaboration/spectre/issues{/number}","pulls_url":"https://api.github.com/repos/sxs-collaboration/spectre/pulls{/number}","milestones_url":"https://api.github.com/repos/sxs-collaboration/spectre/milestones{/number}","notifications_url":"https://api.github.com/repos/sxs-collaboration/spectre/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sxs-collaboration/spectre/labels{/name}","releases_url":"https://api.github.com/repos/sxs-collaboration/spectre/releases{/id}","deployments_url":"https://api.github.com/repos/sxs-collaboration/spectre/deployments","created_at":"2017-04-07T17:28:20Z","updated_at":"2018-06-13T12:10:17Z","pushed_at":"2018-06-13T13:37:52Z","git_url":"git://github.com/sxs-collaboration/spectre.git","ssh_url":"git@github.com:sxs-collaboration/spectre.git","clone_url":"https://github.com/sxs-collaboration/spectre.git","svn_url":"https://github.com/sxs-collaboration/spectre","homepage":"","size":10595,"stargazers_count":26,"watchers_count":26,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":22,"mirror_url":null,"archived":false,"open_issues_count":84,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":22,"open_issues":84,"watchers":26,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/sxs-collaboration/spectre/pulls/716"},"html":{"href":"https://github.com/sxs-collaboration/spectre/pull/716"},"issue":{"href":"https://api.github.com/repos/sxs-collaboration/spectre/issues/716"},"comments":{"href":"https://api.github.com/repos/sxs-collaboration/spectre/issues/716/comments"},"review_comments":{"href":"https://api.github.com/repos/sxs-collaboration/spectre/pulls/716/comments"},"review_comment":{"href":"https://api.github.com/repos/sxs-collaboration/spectre/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/sxs-collaboration/spectre/pulls/716/commits"},"statuses":{"href":"https://api.github.com/repos/sxs-collaboration/spectre/statuses/1c190d14178bf1d3ab91f6edf4e171fcc62fe832"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"nilsleiffischer"}}