)]}'
{
  "commit": "c937cbb5dcabde25a24ebad41cb4c44f10ba2746",
  "tree": "48c5405fe2a65c91b92ec29ad0f407503bfae3ba",
  "parents": [
    "1ceb1537a49d516cf6cef9a79bea6926002082f8"
  ],
  "author": {
    "name": "Henrik Ingo",
    "email": "henrik@nyrk.io",
    "time": "Mon May 04 15:57:10 2026 +0300"
  },
  "committer": {
    "name": "Henrik Ingo",
    "email": "henrik@nyrk.io",
    "time": "Mon May 04 17:52:03 2026 +0300"
  },
  "message": "Rename the two different ChangePoint classes for clarity\n\nThe recent work in #96 to replace the original external dependency on the\nso called \"signal processing\" repository with our own implementation,\nintroduced new classess ChangePoint and CandidateChangePoint, in\nchange_point_divisive/base.py but also left in place the original\nChangePoint class in analysis.py. These come together in series.py,\nwhere the newer is renamed as _ChangePoint() and also acts as a parent\nto older class, thus aligning their signature as much as possible.\n\nIt turns out having two similarly named classes can be a source of\nconfusion and bugs. For example, in #141  vishnuchalla fixes a bug\nthat is due to this and has essentially blocked the --orig-edivisive\ncode path completely.\n\nThis patch is an effort to make the existence of two separate\nclasses very explicit, by renaming them to ChagePointHunter\nand ChangePointOtava based on their \"lineage\".\n\nA test case is added to exercise the --orig-edivisive code path.\nThe test fails, as predicted by #141. The test is now cmmented out.\nThe bug is due to a missing cp.metric property in one variation\nof the ChangePoint class.\n\nNote that this patch is intended more for discussion than to merge.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5ff8975664379f007d9246aa7be80bc64cbfdad9",
      "old_mode": 33188,
      "old_path": "otava/analysis.py",
      "new_id": "e57453beae0f8864b84113cea6eef0106392601d",
      "new_mode": 33188,
      "new_path": "otava/analysis.py"
    },
    {
      "type": "modify",
      "old_id": "34f329d287ef5c96231e8d47a51fabf911ef2db5",
      "old_mode": 33188,
      "old_path": "otava/bigquery.py",
      "new_id": "33816b9630fc06fb93e2a973b133c1757556b75e",
      "new_mode": 33188,
      "new_path": "otava/bigquery.py"
    },
    {
      "type": "modify",
      "old_id": "edde8e8d3304e92e1a6d1b9df43b55d17ed539f1",
      "old_mode": 33188,
      "old_path": "otava/change_point_divisive/base.py",
      "new_id": "e50d2d47104c6a26adf5157cbd1ff20306a0223c",
      "new_mode": 33188,
      "new_path": "otava/change_point_divisive/base.py"
    },
    {
      "type": "modify",
      "old_id": "89453720fdbd62553d9aa60328ead2217244f6cc",
      "old_mode": 33188,
      "old_path": "otava/change_point_divisive/detector.py",
      "new_id": "e2026e980bfb62f44c6b6d1bd18808bc5e305eb4",
      "new_mode": 33188,
      "new_path": "otava/change_point_divisive/detector.py"
    },
    {
      "type": "modify",
      "old_id": "7e348c7173208fa8b45abc91e11025cd62c67479",
      "old_mode": 33188,
      "old_path": "otava/change_point_divisive/significance_test.py",
      "new_id": "aa5a8f2c9a568011abbcd313dc1e45a305cc5437",
      "new_mode": 33188,
      "new_path": "otava/change_point_divisive/significance_test.py"
    },
    {
      "type": "modify",
      "old_id": "40ef53d35990db0a60e2ff596c99b0c6cf5df187",
      "old_mode": 33188,
      "old_path": "otava/postgres.py",
      "new_id": "5a30aa1e9e8a3a7c6380c384e238a282279b9109",
      "new_mode": 33188,
      "new_path": "otava/postgres.py"
    },
    {
      "type": "modify",
      "old_id": "bb3bf475dfa7a3ac102101dafc735cf41783a41a",
      "old_mode": 33188,
      "old_path": "otava/series.py",
      "new_id": "1318b8ddb445581695dc06f447035fbd9554ff90",
      "new_mode": 33188,
      "new_path": "otava/series.py"
    },
    {
      "type": "modify",
      "old_id": "45d44318b77bdf7aba59d5f9a56fd6ed82629ca1",
      "old_mode": 33188,
      "old_path": "tests/change_point_divisive_test.py",
      "new_id": "950d982a5502aa4d14542b5f2fc49646fc213bb3",
      "new_mode": 33188,
      "new_path": "tests/change_point_divisive_test.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d578f14b7065cd5b7eda7ac4121437cb6ce3aded",
      "new_mode": 33188,
      "new_path": "tests/cli_options_test.py"
    },
    {
      "type": "modify",
      "old_id": "5da97688057238ea046e545047ef2b7b30611c95",
      "old_mode": 33188,
      "old_path": "tests/postgres_e2e_test.py",
      "new_id": "58bb03ecda15838ec702d318bc071981944b5e5b",
      "new_mode": 33188,
      "new_path": "tests/postgres_e2e_test.py"
    },
    {
      "type": "modify",
      "old_id": "3692a799f1526bbed1556fb6ce83eb3b79996232",
      "old_mode": 33188,
      "old_path": "tests/report_test.py",
      "new_id": "a220eb55e782566893bb0cfd0f88b1d6f5e2ce8c",
      "new_mode": 33188,
      "new_path": "tests/report_test.py"
    },
    {
      "type": "modify",
      "old_id": "7bc47054f9cc44a856cc371694f081e580c04228",
      "old_mode": 33188,
      "old_path": "tests/slack_notification_test.py",
      "new_id": "0f0b81eb11a3e64eb6930d86c6c0eae696d330e0",
      "new_mode": 33188,
      "new_path": "tests/slack_notification_test.py"
    },
    {
      "type": "modify",
      "old_id": "94a901953473f28ce8ebbe734c7c74e1eddedc7d",
      "old_mode": 33188,
      "old_path": "tests/tigerbeetle_test.py",
      "new_id": "77ea524176685d808aafc48ebca2138874b84e1f",
      "new_mode": 33188,
      "new_path": "tests/tigerbeetle_test.py"
    }
  ]
}
