)]}'
{
  "log": [
    {
      "commit": "d2d51c9c0b13b416ce191f25b7b713e1f343c30d",
      "tree": "508bc912f94939711ad3d2493bbc2e26bc6ded8c",
      "parents": [
        "da316dd2caef3815977b4ea43bf6711b46e47a11"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Wed Sep 02 23:35:55 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 23:35:55 2026 -0700"
      },
      "message": "Make external service clients optional (#176)\n\n* Make external service clients optional\n\nOtava currently installs every database and notification client even when callers only need the analysis library, bundled CLI, or built-in data sources. Split BigQuery, PostgreSQL, InfluxDB, Grafana, and Slack clients into installable extras so users pay only for the integrations they need.\n\nKeep the production image\u0027s existing all-integrations behavior through the all extra, move contributor tools into the unpublished dev dependency group, load optional clients lazily with actionable installation errors, and verify a clean core wheel in CI. Update installation and integration documentation to describe the new choices.\n\n* Fix documentation examples found during validation\n\nRunning the documented workflows exposed stale paths, timestamps, output, date selectors, and malformed code fences. Add a runnable source-checkout CSV configuration with regression coverage and align the CSV, Graphite, Grafana, PostgreSQL, and InfluxDB examples with the bundled fixtures."
    },
    {
      "commit": "da316dd2caef3815977b4ea43bf6711b46e47a11",
      "tree": "4efa81f44c158660c1d6e639d1a2ff2b5ef954ed",
      "parents": [
        "8a6353a67f2636b4cd399428b7d3bef0840ac52b"
      ],
      "author": {
        "name": "adambernier",
        "email": "adam.c.bernier@gmail.com",
        "time": "Sun Aug 30 23:03:53 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 30 23:03:53 2026 -0700"
      },
      "message": "docs: add Sphinx documentation build (#168)"
    },
    {
      "commit": "8a6353a67f2636b4cd399428b7d3bef0840ac52b",
      "tree": "4422d450fe01f3274e1e060d42d130fcd0016afc",
      "parents": [
        "f15bb29ec2bd047fff33b32b4cbec5715fb345d4"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Wed Aug 26 21:00:31 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 26 21:00:31 2026 -0700"
      },
      "message": "Fix AnalyzedSeries typehint (#174)"
    },
    {
      "commit": "f15bb29ec2bd047fff33b32b4cbec5715fb345d4",
      "tree": "bdbb7f1a4238564647b5d7967e1e61606d073ae3",
      "parents": [
        "a1ef00de28f94c60c9ce9119f1d41b7ac6f6e9f1"
      ],
      "author": {
        "name": "DanaerLee",
        "email": "102979255+MrlixiangWE@users.noreply.github.com",
        "time": "Wed Aug 26 05:06:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 14:06:00 2026 -0700"
      },
      "message": "Make AnalyzedSeries change points lazy properties (#169)\n\n* Make AnalyzedSeries change point computation lazy\n\n* Cover lazy change point computation in series tests"
    },
    {
      "commit": "a1ef00de28f94c60c9ce9119f1d41b7ac6f6e9f1",
      "tree": "b8fa83f5ade3daba7b768a1e1ce72b214ad76ab0",
      "parents": [
        "de46ddfc672b8dcb079e1993c10389607e006b60"
      ],
      "author": {
        "name": "DanaerLee",
        "email": "102979255+MrlixiangWE@users.noreply.github.com",
        "time": "Tue Aug 25 14:14:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 23:14:38 2026 -0700"
      },
      "message": "Make CSV importer configurable via ConfigArgParse (#166)\n\nCSV delimiter and quote character could only be set per test in YAML.\nThey can now also be set through a top-level csv section in the config\nfile, the --csv-delimiter and --csv-quote-char options, and the\nCSV_DELIMITER and CSV_QUOTE_CHAR environment variables. Explicit global\nvalues override per-test csv_options; otherwise existing behavior is\nunchanged.\n\nThe per-test YAML key is renamed from quotechar to quote_char. The\nloader only ever read quote_char, so the documented quotechar spelling\nwas silently ignored and no working configuration depends on it.\n\nCloses #119"
    },
    {
      "commit": "de46ddfc672b8dcb079e1993c10389607e006b60",
      "tree": "02ce279d3ae57803daeada0dbf83a39a081c46db",
      "parents": [
        "19882e91dabd810622373665237dc96f653155ea"
      ],
      "author": {
        "name": "adambernier",
        "email": "adam.c.bernier@gmail.com",
        "time": "Mon Aug 24 10:24:38 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 10:24:38 2026 -0700"
      },
      "message": "Add InfluxDB importer (#170)\n\n* Add InfluxDB importer\n\n* Fix InfluxDB query escaping and timestamps\n\n* Add reproducible InfluxDB example and E2E test\n\n* Stabilize InfluxDB missing column errors\n\n* Test InfluxDB analysis through CLI"
    },
    {
      "commit": "19882e91dabd810622373665237dc96f653155ea",
      "tree": "edb7f49974bf8a6bca96b4bea8006254fd9fb350",
      "parents": [
        "5f6f93cba831ad3c8ce8e182a7b271d7893964b9"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Sun Aug 23 21:53:43 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 23 21:53:43 2026 -0700"
      },
      "message": "Split persistence and report JSON serialization (+introduce Pydantic) (#171)\n\n* Split persistence and report JSON serialization\n\nMake domain to_json() methods return the precise persistence representation:\nChangePoint and ChangePointGroup now emit numeric fields, include qhat, and no\nlonger use rounded\u003dTrue/False as a presentation switch.\n\nMove rounded JSON output into Report, alongside the other report renderers.\nReportType.JSON now owns display-only fields such as backward_change_percent and\nformats human-facing values as strings.\n\nAdd Pydantic v2 schema models for the persisted analyzed-series payload and\nvalidate AnalyzedSeries.to_json() against that schema before returning JSON-safe\ndata.\n\nUpdate tests to pin the split: persistence JSON stays numeric and\nround-trippable, while report JSON keeps the existing rounded output shape.\n\n* Test analyzed series JSON round trip through stdlib\n\n* Convert analysis options to Pydantic\n\nMake AnalysisOptions inherit from the Pydantic v2 AnalysisOptionsModel, with defaults defined on the model itself.\n\nReject unknown option fields and validate assignment so deserialized and CLI-populated options use the same typed contract.\n\nUse model_dump(mode\u003d\"json\") when serializing analyzed-series options, and rebuild options in from_json() with AnalysisOptions.model_validate(...) instead of manual field copying.\n\nKeep the scope narrower than PR #93: reuse the Pydantic direction, but avoid its broader unrelated model conversions and old Pydantic v1 APIs.\n\n* Address JSON serialization review\n\nParse change point timestamps back to datetime objects when loading analyzed series from JSON-decoded payloads, so runtime state matches direct in-memory round trips. Also replace the ambiguous report JSON float formatter with explicit six-decimal formatting while preserving the existing report representation.\n\n* Fix analyzed series persistence edge cases\n\nAllow nullable JSON scalar attributes, preserve integer and fractional timestamps, and retain metric units across current and legacy JSON round trips."
    },
    {
      "commit": "5f6f93cba831ad3c8ce8e182a7b271d7893964b9",
      "tree": "d38ccf4ce999f20a7b1dda8615c366435ed0949d",
      "parents": [
        "47254d9db4924797215c588103f47e00c8bba1e5"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Sun Aug 23 21:13:51 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 23 21:13:51 2026 -0700"
      },
      "message": "Add ChangePoints view parity tests (#173)\n\nAdd a hand-authored sparse reference case and Hypothesis-generated sparse\nhistories for ChangePointsByTime and ChangePointsByMetric.\n\nRead parity covers iteration and indexing, metric enumeration and selection,\nper-metric reads, timestamp and commit lookup, and pivot/by_time/by_metric\nconversions. Mutation coverage exercises copy isolation, shared conversion\nviews, append/extend construction, and invalid or out-of-order boundaries.\n\nThe tests exposed and this commit fixes four parity bugs:\n\n- ChangePoints.select_metrics() retained empty timestamp rows and disagreed\n  with the metric view for missing metrics. It now raises consistent KeyError\n  exceptions and omits empty groups.\n\n- Both select_metrics() implementations accepted lists without validating\n  every element. Invalid keys could leak into lookup and raise KeyError,\n  including before a later invalid value in a mixed list was examined. Both\n  views now validate all elements first and consistently raise TypeError at\n  the API boundary.\n\n- ChangePointsByMetric.pivot() structurally contaminated a source metric\n  bucket when merging metrics at the same timestamp. It now builds shallow\n  group views, so conversion itself is non-mutating while shared ChangePoint\n  semantics remain intact.\n\n- ChangePointsByMetric.extend() stored a complete multi-metric group in every\n  metric bucket, causing duplicate metrics during later pivots. It now stores\n  the matching per-metric projection, consistent with append().\n\nThe conversion contract is documented as producing shared views, with\ncopy().pivot() providing isolation. Hypothesis is added to the development\ndependencies for the generated parity coverage."
    },
    {
      "commit": "47254d9db4924797215c588103f47e00c8bba1e5",
      "tree": "213e68dccc8793794020e9240ab9d98cbffcd026",
      "parents": [
        "cd5bc1eedb2f4ecd851a76ef3211916774cb8afa"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Wed Aug 19 11:34:46 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 11:34:46 2026 -0700"
      },
      "message": "Update Docker actions allowed by ASF CI (#172)\n\nMove the Docker setup actions used by the docker-build job to SHAs currently listed in apache/infrastructure-actions. The previous setup-buildx ref is no longer in the allowlist, and the setup-qemu ref expires on 2026-08-19, which can cause GitHub Actions startup failures before any jobs are created."
    },
    {
      "commit": "cd5bc1eedb2f4ecd851a76ef3211916774cb8afa",
      "tree": "dd3a95cea7fe358abeabbba8b82bbc0b04371b70",
      "parents": [
        "e7e4435acc432177db94cc5bc11afcdc6e1e7a9b"
      ],
      "author": {
        "name": "adambernier",
        "email": "adam.c.bernier@gmail.com",
        "time": "Tue Aug 11 19:19:25 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 11 19:19:25 2026 -0700"
      },
      "message": "refactor(analysis): remove fill_missing method (#97) (#167)"
    },
    {
      "commit": "e7e4435acc432177db94cc5bc11afcdc6e1e7a9b",
      "tree": "e098aeb87ccf9ae89b732f8cd3e44182cdec0337",
      "parents": [
        "08096600d3233d8723941affa5fafed6f19f9bcd"
      ],
      "author": {
        "name": "Sanjay Santhanam",
        "email": "51058514+Sanjays2402@users.noreply.github.com",
        "time": "Sat Aug 08 20:15:28 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 08 20:15:28 2026 -0700"
      },
      "message": "fix: move --update-\u003cimporter\u003e args into their service option groups (#165)\n\nThe --update-grafana, --update-postgres and --update-bigquery options were\nadded directly to the analyze subparser, so argparse placed them in the\ngeneric \u0027options:\u0027 section of \u0027otava analyze --help\u0027 rather than alongside\nthe service options they belong to.\n\nThe subparser already inherits the Grafana/PostgreSQL/BigQuery option groups\nfrom the shared parent parser, so this adds a small config.argument_group()\nhelper that looks up an existing group by title, and registers each\n--update-\u003cimporter\u003e flag on its corresponding service group.\n\nParsing behaviour is unchanged; only the help output grouping differs.\nThe existing golden help-output assertions in tests/cli_help_test.py are\nupdated to the new placement and fail without this change."
    },
    {
      "commit": "08096600d3233d8723941affa5fafed6f19f9bcd",
      "tree": "7d56337e56dd17c0ada0398b51de09b7be053c17",
      "parents": [
        "48ec08d3bb3d328b38b7f8a3d3ea70b5d78e26af"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Sun Aug 09 05:49:33 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 08 19:49:33 2026 -0700"
      },
      "message": "Refactor: Unify ChangePoint and SignificanceTester (#161)\n\n* 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\n* Unify the two ChangePoint classes and add container classes\n\n* Unify the ChangePoint_ class in hunter code and the new\n  ChangePoint introduced by the new edivisive implementation\n\nThen it got out of hand a bit ...\n\n* Separate index and timestamp into different domains.\n  cp.index is used in the context of a single metric and its\n  history of results. Time and commit otoh are on the\n  ChangePointGroup level (essentially a \"row\"). Note\n  that different metrics can now have different cp.index\n  for the same cpg.time or cpg.attributes[\u0027commit\u0027], if\n  they have a different history.\n\n* Introduce a ChangePoints class which is just a list of\n  ChangePointGroups but actually comes with 2 different\n  implementations.\n\nThe last one is supposed to become the class you are left holding\nonce all the change points are computed. Until now we had lots\nof nice classes for each step of computation, but in the end\nyou were left holding a dict[str, ChangePointGroup]. The new\nclass now encapsulates that dict,\n\n* Refactor common code between the significance testers\n\nThis moves stats and functionality up towards parent classes\nso that generic stats like mean are always computed for\nall variants. In fact TTestStat is now an empty class,\nit\u0027s functionality fully absorbed by the parent. (But note\nthat the class name/type itself carries information about the pvalue.\n\n* ruff/flake/idk\n\n* format\n\n* Re-enable tox alsso in gh actions\n\n* fix: timezone in 3.10 compatible way\n\n* bw compat: must use timezone.UTC\n\n* Simplify __compute_change_points() by using ChangePoints earlier\n\n* Simplify ChangePoints() constructor\n\nCreate separate copy(), from_dict(), from_list() constructors\n\nConstructors now just create an empty container\n\nAdd tests for unified ChangePoint classes; fix many bugs\n\nAlso move BaseStats compute logic into a calculate() staticmethod\nso copy() is a plain replace().\n\n* Make ChangePoints._change_points private by adding _\n\n* ChangePointsByMetric()[n] is not well defined, go via by_time()\n\nOther small fixes\n\n* Visit all change points and columns, not just values()[0]\n\n* Add comment about why indexes will not be aligned or can have gaps\n\n* TTestStats: Add tstatistic and degrees_of_freedom\n\nAdd a few t-test specific parameters to the TTestStats class\n\n* Add to_json() serializers to subclasses of BaseStats\n\nNote: No from_json(), as the higher level from_json() functions\ncan easily just call the constructor directly.\n\n* Self review, various fixes\n\nAdded typing annotations and docstrings where I felt they were lacking.\n\nCleaned up the serialization and insert to bigquery and postgres. Both of which\ncontinue to insert ChangePoint(s), even if they take a ChangePointGroup as\narguments. This is because .time and .attributes are now both a property of\nthe ChangePointGroup.\n\n* Add pytest-cov for code coverage\n\n* Add missing unit test coverage\n\nIn fact, went all the way and achieved 100% coverage in the\nfiles mainly touched by this PR.\n\nLint and format edits too.\n\n* review: Remove __eq__() for ChangePoint class\n\n* review: PermutationStats.copy() wasn\u0027t copying NDArray deeply\n\n* review: Fix and add test for ReportType.REGRESSIONS_ONLY\n\n* review: datatype should be datetime\n\n* review: to_json(): fix the case with multiple metrics\n\n* review: Tests cleanup and fixes\n\n* lint \u0026 format (tox)\n\n* review: Add comment blocks to ChangePointsBy* classes\n\n* fix: handle empty ChangePointsByMetric length\n\n* fix: refresh change points by time after append\n\n* fix: update weak change points after append\n\n* fix: serialize weak change points from weak cache\n\n* fix: restore analyzed series from grouped json\n\n---------\n\nCo-authored-by: Alex Sorokoumov \u003caleksandr.sorokoumov@gmail.com\u003e"
    },
    {
      "commit": "48ec08d3bb3d328b38b7f8a3d3ea70b5d78e26af",
      "tree": "cb37497245bcf6840ad0e477ba8ffc4142738183",
      "parents": [
        "f4bbb9a0182921a95bac5cceef592210055fe6a3"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Sat Jul 25 16:05:12 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 16:05:12 2026 -0700"
      },
      "message": "Fix setup-uv allowlist failure in CI (#164)"
    },
    {
      "commit": "f4bbb9a0182921a95bac5cceef592210055fe6a3",
      "tree": "3769f964264f56b202ead24b14de4cb0e15805b5",
      "parents": [
        "8b78e9d78e9c40ad92738e17f0bc3a1a57e8ac80"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jul 25 15:25:20 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 15:25:20 2026 -0700"
      },
      "message": "Bump pyasn1 from 0.6.3 to 0.6.4 (#163)\n\nBumps [pyasn1](https://github.com/pyasn1/pyasn1) from 0.6.3 to 0.6.4.\n- [Release notes](https://github.com/pyasn1/pyasn1/releases)\n- [Changelog](https://github.com/pyasn1/pyasn1/blob/main/CHANGES.rst)\n- [Commits](https://github.com/pyasn1/pyasn1/compare/v0.6.3...v0.6.4)\n\n---\nupdated-dependencies:\n- dependency-name: pyasn1\n  dependency-version: 0.6.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "8b78e9d78e9c40ad92738e17f0bc3a1a57e8ac80",
      "tree": "26376be1a545e97b939dbcc682cefab46c9259c3",
      "parents": [
        "07e76c8c64b1411b59666bc970ea4c083032dd4b"
      ],
      "author": {
        "name": "jordancharest",
        "email": "31459889+jordancharest@users.noreply.github.com",
        "time": "Tue Jun 02 11:22:12 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 10:22:12 2026 -0700"
      },
      "message": "Loosen numpy constraint from \u003d\u003d2.2.0.* to \u003d\u003d2.2.* (Python \u003c 3.14) (#162)\n\nThe inline comment already documents the intent as \"NumPy 2.2.x supports\nPython 3.10-3.13\", but \u003d\u003d2.2.0.* pins to exactly 2.2.0 and excludes the\n2.2.1-2.2.6 patch releases (bug/security fixes). The dependency used a\nminor-level pin (numpy\u003d\u003d1.24.*) before PR #108 bumped it to 2.2.0.*, so\nthe patch-level pin appears unintentional.\n\nLoosen to \u003d\u003d2.2.* to match the documented intent and allow 2.2.x patch\nupdates. Regenerate uv.lock (numpy 2.2.0 -\u003e 2.2.6). Full test suite\n(112 tests) and tox lint pass against numpy 2.2.6."
    },
    {
      "commit": "07e76c8c64b1411b59666bc970ea4c083032dd4b",
      "tree": "ed25e2843c285d943dcded6c0c7f38bbb8f64292",
      "parents": [
        "588ceb80ecd3e06d2fa0e5767a44a220e181168d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed May 20 20:09:52 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 20:09:52 2026 -0700"
      },
      "message": "Bump idna from 3.11 to 3.15 (#160)\n\nBumps [idna](https://github.com/kjd/idna) from 3.11 to 3.15.\n- [Release notes](https://github.com/kjd/idna/releases)\n- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.md)\n- [Commits](https://github.com/kjd/idna/compare/v3.11...v3.15)\n\n---\nupdated-dependencies:\n- dependency-name: idna\n  dependency-version: \u00273.15\u0027\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "588ceb80ecd3e06d2fa0e5767a44a220e181168d",
      "tree": "5cb87d269dad2c62cce311bf02538576a9b1ec6e",
      "parents": [
        "c8b0ccc2d006a09185ce2fb5a3bcbd9cc5cecd30"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Thu May 21 00:33:36 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 00:33:36 2026 +0300"
      },
      "message": "Add and clarify manual release process steps (#159)\n\n* Clarify and separate the two svn repos\n  https://dist.apache.org/repos/dist/dev/incubator/otava\n  https://dist.apache.org/repos/dist/release/incubator/otava\n* Use test.pypi.org earlier\n* Link to otava.apache.org/download for downloads in the final announcement\n* Use svn mv to publish released files"
    },
    {
      "commit": "c8b0ccc2d006a09185ce2fb5a3bcbd9cc5cecd30",
      "tree": "0c57d4f0224e7c1ee0596f44a77705f85bf2d7f6",
      "parents": [
        "70f2178337b4dbe476af758888f05a3e0f50cd42"
      ],
      "author": {
        "name": "Arpit Jain",
        "email": "3242828+arpitjain099@users.noreply.github.com",
        "time": "Thu May 14 11:44:30 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 13 19:44:30 2026 -0700"
      },
      "message": "Add explicit read-only permissions to Python CI workflow (#157)\n\nSigned-off-by: Arpit Jain \u003carpitjain099@gmail.com\u003e"
    },
    {
      "commit": "70f2178337b4dbe476af758888f05a3e0f50cd42",
      "tree": "513b14a665a5997508f9243c60c3029283c277c3",
      "parents": [
        "935cdf4c7fa2ad791f9c14dfbc5fcf3c38b9c72f"
      ],
      "author": {
        "name": "Arpit Jain",
        "email": "3242828+arpitjain099@users.noreply.github.com",
        "time": "Wed May 13 07:34:41 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 15:34:41 2026 -0700"
      },
      "message": "Fix typo in MATH documentation (#158)"
    },
    {
      "commit": "935cdf4c7fa2ad791f9c14dfbc5fcf3c38b9c72f",
      "tree": "028eccd43f5fde7ac298ab8865224e2c55d722c5",
      "parents": [
        "deb4bd1a1e1dc141dcc28c3c11030add7a2f7c3f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue May 12 15:33:41 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 15:33:41 2026 -0700"
      },
      "message": "Bump urllib3 from 2.6.3 to 2.7.0 (#155)\n\nBumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.3 to 2.7.0.\n- [Release notes](https://github.com/urllib3/urllib3/releases)\n- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)\n- [Commits](https://github.com/urllib3/urllib3/compare/2.6.3...2.7.0)\n\n---\nupdated-dependencies:\n- dependency-name: urllib3\n  dependency-version: 2.7.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "deb4bd1a1e1dc141dcc28c3c11030add7a2f7c3f",
      "tree": "a9bbe0f2af6e7e0f1bdf21c43b83e972a6e340cc",
      "parents": [
        "10508e4e97462fbad1c5b5c5df4d50532a9ace97",
        "46e0ba72a9adfbb8bb45e8fe9b417349844664aa"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Wed May 06 21:31:05 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 21:31:05 2026 +0300"
      },
      "message": "Merge pull request #141 from vishnuchalla/orig_edivisive\n\nFix orig edivisive flow"
    },
    {
      "commit": "46e0ba72a9adfbb8bb45e8fe9b417349844664aa",
      "tree": "a9bbe0f2af6e7e0f1bdf21c43b83e972a6e340cc",
      "parents": [
        "413d774ab868a9ebf592010d056b80eef0b76621"
      ],
      "author": {
        "name": "Vishnu Challa",
        "email": "vchalla@redhat.com",
        "time": "Wed May 06 13:59:18 2026 -0400"
      },
      "committer": {
        "name": "Vishnu Challa",
        "email": "vchalla@redhat.com",
        "time": "Wed May 06 14:23:07 2026 -0400"
      },
      "message": "fix tests\n\nSigned-off-by: Vishnu Challa \u003cvchalla@redhat.com\u003e\n"
    },
    {
      "commit": "413d774ab868a9ebf592010d056b80eef0b76621",
      "tree": "a9a8f953b2b45328da341853bb9e904570153853",
      "parents": [
        "76ed75d2fa2ba3639a6d8c01bc30a28f1777ba15",
        "622a4f81e1c98db79bd82eddd7b1c18bffa9fee9"
      ],
      "author": {
        "name": "Vishnu Challa",
        "email": "vchalla@redhat.com",
        "time": "Wed May 06 13:56:28 2026 -0400"
      },
      "committer": {
        "name": "Vishnu Challa",
        "email": "vchalla@redhat.com",
        "time": "Wed May 06 13:56:28 2026 -0400"
      },
      "message": "Merge branch \u0027master\u0027 into orig_edivisive\n"
    },
    {
      "commit": "622a4f81e1c98db79bd82eddd7b1c18bffa9fee9",
      "tree": "5e88b7261a15bf6a2bdcd018f1e6e83309486ada",
      "parents": [
        "f1a2c67561fbc32f8fe11c2fd5e1de57b61e42de",
        "10508e4e97462fbad1c5b5c5df4d50532a9ace97"
      ],
      "author": {
        "name": "vishnuchalla",
        "email": "28471457+vishnuchalla@users.noreply.github.com",
        "time": "Wed May 06 13:55:22 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 13:55:22 2026 -0400"
      },
      "message": "Merge branch \u0027apache:master\u0027 into master\n"
    },
    {
      "commit": "10508e4e97462fbad1c5b5c5df4d50532a9ace97",
      "tree": "4685ab35b1d1376544e25c8b2718814484ba5d0f",
      "parents": [
        "1ceb1537a49d516cf6cef9a79bea6926002082f8"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Wed May 06 19:36:08 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 09:36:08 2026 -0700"
      },
      "message": "Update copyright NOTICE file to include 2026 (#153)"
    },
    {
      "commit": "76ed75d2fa2ba3639a6d8c01bc30a28f1777ba15",
      "tree": "9c40a9c54babaf43a642f15c9e53dc6e6ba3bafc",
      "parents": [
        "34ad6b033c2d0a39b4a0af5d55819f6dca4a8b76"
      ],
      "author": {
        "name": "Vishnu Challa",
        "email": "vchalla@redhat.com",
        "time": "Wed Mar 25 18:03:38 2026 -0400"
      },
      "committer": {
        "name": "Vishnu Challa",
        "email": "vchalla@redhat.com",
        "time": "Mon May 04 08:21:15 2026 -0400"
      },
      "message": "Fix orig divisive flow\n\nSigned-off-by: Vishnu Challa \u003cvchalla@redhat.com\u003e\n"
    },
    {
      "commit": "f1a2c67561fbc32f8fe11c2fd5e1de57b61e42de",
      "tree": "88bd13c77d8c2dd771f7a2117c0a691f0c5d1bea",
      "parents": [
        "1ceb1537a49d516cf6cef9a79bea6926002082f8",
        "8f454081db618d898ed5daae0356a9e72f0374a2"
      ],
      "author": {
        "name": "Vishnu Challa",
        "email": "vchalla@redhat.com",
        "time": "Thu Apr 23 11:22:21 2026 -0400"
      },
      "committer": {
        "name": "Vishnu Challa",
        "email": "vchalla@redhat.com",
        "time": "Thu Apr 23 11:22:21 2026 -0400"
      },
      "message": "Merge branch \u0027orig_edivisive\u0027\n"
    },
    {
      "commit": "1ceb1537a49d516cf6cef9a79bea6926002082f8",
      "tree": "3987965f18245e8aa61de295479b6f2b9427d04a",
      "parents": [
        "6710ff3b6ff48cd32ba454338193503ea62d71f9"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Wed Apr 22 14:15:20 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 17:15:20 2026 -0400"
      },
      "message": "Build multi-platform Docker images (amd64 + arm64) (#149)\n\n* Build multi-platform Docker images (amd64 + arm64)\n\nThe docker buildx build command had no --platform flag, so images were\nbuilt only for the host architecture. This caused examples to fail on\namd64 when the published image was arm64-only.\n\n- Add --platform linux/amd64,linux/arm64 to buildx commands in tox.ini\n- Add QEMU and Buildx setup steps to CI workflow\n- Simplify tox docker-push to push directly to Dockerhub\n- Update RELEASE.md to use tox -e docker-push\n-  Bump numpy version for 3.14 to avoid building numpy within amd64 container."
    },
    {
      "commit": "6710ff3b6ff48cd32ba454338193503ea62d71f9",
      "tree": "67d8b7e377c9b84e136d776233fc0a3fc2d3e2fa",
      "parents": [
        "27c9b08be77b12c2716b3dfd154f2054d5a7aa2d",
        "44db331a99036ab31560857f62b81619cd530e45"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Tue Apr 14 19:01:14 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 19:01:14 2026 +0300"
      },
      "message": "Merge pull request #148 from apache/dependabot/uv/pytest-9.0.3\n\nBump pytest from 9.0.2 to 9.0.3"
    },
    {
      "commit": "44db331a99036ab31560857f62b81619cd530e45",
      "tree": "67d8b7e377c9b84e136d776233fc0a3fc2d3e2fa",
      "parents": [
        "27c9b08be77b12c2716b3dfd154f2054d5a7aa2d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Apr 14 02:37:53 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 02:37:53 2026 +0000"
      },
      "message": "Bump pytest from 9.0.2 to 9.0.3\n\nBumps [pytest](https://github.com/pytest-dev/pytest) from 9.0.2 to 9.0.3.\n- [Release notes](https://github.com/pytest-dev/pytest/releases)\n- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3)\n\n---\nupdated-dependencies:\n- dependency-name: pytest\n  dependency-version: 9.0.3\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "27c9b08be77b12c2716b3dfd154f2054d5a7aa2d",
      "tree": "0b9e31dc182cab218af28fb8a7c3aeb3e4542ffc",
      "parents": [
        "dfae00d0a8de530b340a2c0343da8b21defa9070"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 31 23:47:32 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 23:47:32 2026 -0700"
      },
      "message": "Bump pygments from 2.19.2 to 2.20.0 (#144)\n\nBumps [pygments](https://github.com/pygments/pygments) from 2.19.2 to 2.20.0.\n- [Release notes](https://github.com/pygments/pygments/releases)\n- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)\n- [Commits](https://github.com/pygments/pygments/compare/2.19.2...2.20.0)\n\n---\nupdated-dependencies:\n- dependency-name: pygments\n  dependency-version: 2.20.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "dfae00d0a8de530b340a2c0343da8b21defa9070",
      "tree": "f7d95ed97e65bcc1a2096769f8527acd404d0be0",
      "parents": [
        "8a99d7507176d2418729115caba2bac3fbc15384"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 31 23:46:51 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 23:46:51 2026 -0700"
      },
      "message": "Bump requests from 2.32.5 to 2.33.0 (#142)\n\nBumps [requests](https://github.com/psf/requests) from 2.32.5 to 2.33.0.\n- [Release notes](https://github.com/psf/requests/releases)\n- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)\n- [Commits](https://github.com/psf/requests/compare/v2.32.5...v2.33.0)\n\n---\nupdated-dependencies:\n- dependency-name: requests\n  dependency-version: 2.33.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "8a99d7507176d2418729115caba2bac3fbc15384",
      "tree": "77066b1ed9395db46a43afc1cefe2bdec3b9b1b9",
      "parents": [
        "3ed9c32bda5651d561fe5d230a3625fad9c359e6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 31 23:08:33 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 23:08:33 2026 -0700"
      },
      "message": "Bump pyasn1 from 0.6.2 to 0.6.3 (#140)\n\nBumps [pyasn1](https://github.com/pyasn1/pyasn1) from 0.6.2 to 0.6.3.\n- [Release notes](https://github.com/pyasn1/pyasn1/releases)\n- [Changelog](https://github.com/pyasn1/pyasn1/blob/main/CHANGES.rst)\n- [Commits](https://github.com/pyasn1/pyasn1/compare/v0.6.2...v0.6.3)\n\n---\nupdated-dependencies:\n- dependency-name: pyasn1\n  dependency-version: 0.6.3\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "3ed9c32bda5651d561fe5d230a3625fad9c359e6",
      "tree": "c55b134bad92e8877cf2da0d4d480507a9e6492e",
      "parents": [
        "c90837bfcf7da75c42a2c213974a9259f52c0cb9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 31 22:18:36 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 22:18:36 2026 -0700"
      },
      "message": "Bump protobuf from 6.33.0 to 6.33.5 (#133)\n\nBumps [protobuf](https://github.com/protocolbuffers/protobuf) from 6.33.0 to 6.33.5.\n- [Release notes](https://github.com/protocolbuffers/protobuf/releases)\n- [Commits](https://github.com/protocolbuffers/protobuf/commits)\n\n---\nupdated-dependencies:\n- dependency-name: protobuf\n  dependency-version: 6.33.5\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c90837bfcf7da75c42a2c213974a9259f52c0cb9",
      "tree": "6ccb8e021d71e1285f75f6fa3c46871669a25124",
      "parents": [
        "d11bdeaadcff7618f8547a9742005542535ebb88"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Tue Mar 31 21:52:27 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 21:52:27 2026 -0700"
      },
      "message": "INFRA-27784 Update setup-up version in CI (#147)\n\n* INFRA-27784 Update setup-up version in CI\n\n* Fixup postgres tests"
    },
    {
      "commit": "d11bdeaadcff7618f8547a9742005542535ebb88",
      "tree": "ee6c1fe47004d00293b5a6a0127bfd8f9bcb07c2",
      "parents": [
        "34ad6b033c2d0a39b4a0af5d55819f6dca4a8b76",
        "54317df20d11f9e861b5dbc86f2effb056a19bed"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Sun Mar 29 23:31:46 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 29 23:31:46 2026 +0300"
      },
      "message": "Merge pull request #138 from apache/fix-config-file\n\nFix --config-file parser broken by configargparse 1.7.3"
    },
    {
      "commit": "8f454081db618d898ed5daae0356a9e72f0374a2",
      "tree": "c4a8aa5d317a795271bc8512cfdf688d1ec9986b",
      "parents": [
        "34ad6b033c2d0a39b4a0af5d55819f6dca4a8b76"
      ],
      "author": {
        "name": "Vishnu Challa",
        "email": "vchalla@redhat.com",
        "time": "Wed Mar 25 18:03:38 2026 -0400"
      },
      "committer": {
        "name": "Vishnu Challa",
        "email": "vchalla@redhat.com",
        "time": "Wed Mar 25 18:03:38 2026 -0400"
      },
      "message": "Fix orig divisive flow\n\nSigned-off-by: Vishnu Challa \u003cvchalla@redhat.com\u003e\n"
    },
    {
      "commit": "34ad6b033c2d0a39b4a0af5d55819f6dca4a8b76",
      "tree": "d7a244af60a15cb559363dfbcfbbb41bb60bc384",
      "parents": [
        "394e23553a44da7b5f29c114fc5d99a34f33ff54",
        "0dd231545aaec7f89dd6a3302513318d012ebb2c"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Thu Mar 12 20:26:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 20:26:53 2026 +0200"
      },
      "message": "Merge pull request #139 from apache/next-version-0.8.0\n\nSet release version to 0.8.0"
    },
    {
      "commit": "0dd231545aaec7f89dd6a3302513318d012ebb2c",
      "tree": "d7a244af60a15cb559363dfbcfbbb41bb60bc384",
      "parents": [
        "394e23553a44da7b5f29c114fc5d99a34f33ff54"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Wed Mar 11 00:38:00 2026 -0700"
      },
      "committer": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Wed Mar 11 00:38:00 2026 -0700"
      },
      "message": "Set release version to 0.8.0\n\nAs discussed on the mailing list, we want the next version to\nbe 0.8.0 instead of 1.0.0.\n"
    },
    {
      "commit": "54317df20d11f9e861b5dbc86f2effb056a19bed",
      "tree": "3f31f4a78392f8a034afa8ccc501a7ced481ab9c",
      "parents": [
        "394e23553a44da7b5f29c114fc5d99a34f33ff54"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Tue Mar 10 20:09:36 2026 -0700"
      },
      "committer": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Wed Mar 11 00:34:40 2026 -0700"
      },
      "message": "Fix --config-file parser broken by configargparse 1.7.3\n\nconfigargparse 1.7.3 changed how env var args are inserted into the arg\nlist, causing `OTAVA_CONFIG` env var expansion to land after the\nsubcommand positional arg. The subparser then rejects `--config-file`\nas unrecognized.\n\nThe fix is to add `--config-file` to the parent subparser.\n"
    },
    {
      "commit": "394e23553a44da7b5f29c114fc5d99a34f33ff54",
      "tree": "76ce76f8bc5d8d371fe69563a0fb2577c439e6f2",
      "parents": [
        "59e7f9bebc8186912e7429be162a812e742b7773"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 10 19:14:36 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 19:14:36 2026 -0700"
      },
      "message": "Bump urllib3 from 2.5.0 to 2.6.3 (#135)\n\nBumps [urllib3](https://github.com/urllib3/urllib3) from 2.5.0 to 2.6.3.\n- [Release notes](https://github.com/urllib3/urllib3/releases)\n- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)\n- [Commits](https://github.com/urllib3/urllib3/compare/2.5.0...2.6.3)\n\n---\nupdated-dependencies:\n- dependency-name: urllib3\n  dependency-version: 2.6.3\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "59e7f9bebc8186912e7429be162a812e742b7773",
      "tree": "0111bfd4159fe3eded313d46b6d64364a699fccf",
      "parents": [
        "35eab767a3c7e1849a8b9582171c17e9e02fb1ad"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 10 19:13:05 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 19:13:05 2026 -0700"
      },
      "message": "Bump virtualenv from 20.35.4 to 20.36.1 (#136)\n\nBumps [virtualenv](https://github.com/pypa/virtualenv) from 20.35.4 to 20.36.1.\n- [Release notes](https://github.com/pypa/virtualenv/releases)\n- [Changelog](https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst)\n- [Commits](https://github.com/pypa/virtualenv/compare/20.35.4...20.36.1)\n\n---\nupdated-dependencies:\n- dependency-name: virtualenv\n  dependency-version: 20.36.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "35eab767a3c7e1849a8b9582171c17e9e02fb1ad",
      "tree": "149affd379e132f4a4ea53c42963e1223a2a8cde",
      "parents": [
        "07bc7c06b7746f64c2b0ae2524f6f03df331493e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Mar 10 19:11:23 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 10 19:11:23 2026 -0700"
      },
      "message": "Bump pyasn1 from 0.6.1 to 0.6.2 (#132)\n\nBumps [pyasn1](https://github.com/pyasn1/pyasn1) from 0.6.1 to 0.6.2.\n- [Release notes](https://github.com/pyasn1/pyasn1/releases)\n- [Changelog](https://github.com/pyasn1/pyasn1/blob/main/CHANGES.rst)\n- [Commits](https://github.com/pyasn1/pyasn1/compare/v0.6.1...v0.6.2)\n\n---\nupdated-dependencies:\n- dependency-name: pyasn1\n  dependency-version: 0.6.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "07bc7c06b7746f64c2b0ae2524f6f03df331493e",
      "tree": "7bff523b681d30ffb32c76556cc655c85694c36d",
      "parents": [
        "f78bfee26f17f6df36f3f822ee70d67968cab9b1"
      ],
      "author": {
        "name": "Denis Shchepakin",
        "email": "1842450+Sowiks@users.noreply.github.com",
        "time": "Thu Feb 26 15:09:26 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 26 15:09:26 2026 -0800"
      },
      "message": "Change point detection doc (#126)\n\n* Change Point Detection algorithm documentation\n\n* Added more details to the example\n\n* Implemented suggestions\n\n* Added new line before figure captions.\n\n* Fixed several rendering issues."
    },
    {
      "commit": "f78bfee26f17f6df36f3f822ee70d67968cab9b1",
      "tree": "9e64cc4404d9d3ff84ed3f9f7126dd2e347b1f41",
      "parents": [
        "2bb687f76ddbe36191263524d0f179d8838404ed"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Mon Feb 23 21:50:14 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 23 21:50:14 2026 -0800"
      },
      "message": "Feat/118 (#124)\n\n* Remove `regressions` command\n\n* Make --branch works across all importers\n\n* fixup help e2e test"
    },
    {
      "commit": "2bb687f76ddbe36191263524d0f179d8838404ed",
      "tree": "c00ed8e83628e5b40c16218f5b1ab48782ea9874",
      "parents": [
        "c600ac67f10e42442f2da9e103dd9bd8f6105c46",
        "ed069cb0b6a757438d002f36e0c6847c2a3430f4"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Fri Feb 13 03:01:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 13 03:01:35 2026 +0200"
      },
      "message": "Merge pull request #125 from apache/Gerrrr-patch-4\n\nAdd update instructions for website download page"
    },
    {
      "commit": "ed069cb0b6a757438d002f36e0c6847c2a3430f4",
      "tree": "c00ed8e83628e5b40c16218f5b1ab48782ea9874",
      "parents": [
        "c600ac67f10e42442f2da9e103dd9bd8f6105c46"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Fri Feb 06 19:04:24 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 06 19:04:24 2026 -0800"
      },
      "message": "Add update instructions for website download page\n\nI\u0027ve recently added a Download page to the website. Hence, adding instructions here to update the website download page with the new release information."
    },
    {
      "commit": "c600ac67f10e42442f2da9e103dd9bd8f6105c46",
      "tree": "c71eb1c0a2f224dd9326c9ccac03e78643d0c9bd",
      "parents": [
        "3b3d59a787ea03749e972c3509241114b861c99e",
        "33052b74ae13d96193c3f839eb6662cf93990a1a"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Wed Jan 28 16:11:53 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 28 16:11:53 2026 +0200"
      },
      "message": "Merge pull request #123 from apache/docs/121\n\nUpdate install docs and examples to use PyPI and Dockerhub"
    },
    {
      "commit": "33052b74ae13d96193c3f839eb6662cf93990a1a",
      "tree": "c71eb1c0a2f224dd9326c9ccac03e78643d0c9bd",
      "parents": [
        "f99c7a2fff5ac54d0a49a1c909c526a1abe89d28"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Mon Jan 26 18:31:58 2026 -0800"
      },
      "committer": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Tue Jan 27 23:00:29 2026 -0800"
      },
      "message": "Make examples use published Docker image\n"
    },
    {
      "commit": "f99c7a2fff5ac54d0a49a1c909c526a1abe89d28",
      "tree": "f19b25a43aa104f5ba92dfca4cd0545e7ce93848",
      "parents": [
        "3b3d59a787ea03749e972c3509241114b861c99e"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Mon Jan 26 18:19:10 2026 -0800"
      },
      "committer": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Tue Jan 27 23:00:23 2026 -0800"
      },
      "message": "Update install guide\n"
    },
    {
      "commit": "3b3d59a787ea03749e972c3509241114b861c99e",
      "tree": "4998f1fc97635a73a7156eceb35b9570b8cd3b98",
      "parents": [
        "2e3463423dd29f4bc3eb44d1ccd72edd89553781"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Mon Dec 22 14:42:25 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 22 14:42:25 2025 -0800"
      },
      "message": "Describe release process (#114)\n\n* Describe release process\n\n* Apply suggestions"
    },
    {
      "commit": "2e3463423dd29f4bc3eb44d1ccd72edd89553781",
      "tree": "db06f46fba13952d70a952ca55b4f8a3810c5947",
      "parents": [
        "3209e2fabdcd1ad2919ab4b1f9b272cb13cdb2e4",
        "7c78e1bce3f5af846ddf6e20a30fa1dc19c89a9b"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Sun Dec 21 14:25:58 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Dec 21 14:25:58 2025 +0200"
      },
      "message": "Merge pull request #115 from apache/config-arg-parse-fixup\n\nFix 3 bugs in ConfigArgParse usage"
    },
    {
      "commit": "3209e2fabdcd1ad2919ab4b1f9b272cb13cdb2e4",
      "tree": "2b2b71123fb091e3979f74406cc978967a589058",
      "parents": [
        "7ba418604492dd15c2d458ad772e1d8cada55a49",
        "1d6711653e7af04b7f2096cebeccabdce09af814"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Sun Dec 21 14:18:52 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Dec 21 14:18:52 2025 +0200"
      },
      "message": "Merge pull request #116 from apache/fix-type-annotation\n\nFix type annotation in test_config.py"
    },
    {
      "commit": "7ba418604492dd15c2d458ad772e1d8cada55a49",
      "tree": "72f54e0198813ce76dab0de336b596ebe3a0346d",
      "parents": [
        "b8af75b0e3d875282d53543e75d0507206880c27",
        "08d98e536a46975c9ea60d8977d1fee06c0bc56e"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Sun Dec 21 14:18:11 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Dec 21 14:18:11 2025 +0200"
      },
      "message": "Merge pull request #117 from apache/fix-perf-test\n\nanalysis.split sorts change points before getting intervals"
    },
    {
      "commit": "08d98e536a46975c9ea60d8977d1fee06c0bc56e",
      "tree": "72f54e0198813ce76dab0de336b596ebe3a0346d",
      "parents": [
        "c5e1d399f488e8e25a9f7ad9e05179efca83dd52"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Wed Dec 17 23:24:12 2025 -0800"
      },
      "committer": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Wed Dec 17 23:34:34 2025 -0800"
      },
      "message": "Add perf tests to CI suite\n"
    },
    {
      "commit": "c5e1d399f488e8e25a9f7ad9e05179efca83dd52",
      "tree": "98c3fd83e421cd63953c6ec8a6b91144772c9bc6",
      "parents": [
        "b8af75b0e3d875282d53543e75d0507206880c27"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Wed Dec 17 23:23:55 2025 -0800"
      },
      "committer": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Wed Dec 17 23:34:26 2025 -0800"
      },
      "message": "analysis.split sorts change points before getting intervals\n\nPrior to this patch, change points discovered while scanning sliding\nwindows are added to the end of the list. At the same time,\nSignificanceTester.get_intervals expects change points to be sorted.\n\nAs a result, intervals contain 1 or more None that cause ValueError in\ntester.change_point.\n"
    },
    {
      "commit": "1d6711653e7af04b7f2096cebeccabdce09af814",
      "tree": "07759f153d1fbc5d5191eba6247d2324b19430ab",
      "parents": [
        "b8af75b0e3d875282d53543e75d0507206880c27"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Wed Dec 17 22:08:51 2025 -0800"
      },
      "committer": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Wed Dec 17 23:33:17 2025 -0800"
      },
      "message": "Fix type annotation in test_config.py\n"
    },
    {
      "commit": "7c78e1bce3f5af846ddf6e20a30fa1dc19c89a9b",
      "tree": "778b85613a98f03b4bf896da70972d3a5de0d263",
      "parents": [
        "b8af75b0e3d875282d53543e75d0507206880c27"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Mon Dec 15 16:58:02 2025 -0800"
      },
      "committer": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Wed Dec 17 23:32:35 2025 -0800"
      },
      "message": "Fixup 3 bugs in ConfigArgParse usage\n\n1. --help no longer throws exceptions\n2. ConfigArgParse is passed into the actual commands\n3. Throw when passed an unrecognized CLI arg\n"
    },
    {
      "commit": "b8af75b0e3d875282d53543e75d0507206880c27",
      "tree": "2b69a028cea5e964462239ed395e307026c01d4e",
      "parents": [
        "a68bc98cfafd32432b52f6125a4f1b311d2c6601"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Sat Dec 13 13:05:08 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Dec 13 13:05:08 2025 -0800"
      },
      "message": "PyPI Project description contains ASF incubating disclaimer (#112)\n\n"
    },
    {
      "commit": "a68bc98cfafd32432b52f6125a4f1b311d2c6601",
      "tree": "efd20dc7d982f608c1d684feddd07f45b0cfde85",
      "parents": [
        "766303664fde9c1872e8ff5a6a75da512af37e3b"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Sat Dec 13 10:31:16 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Dec 13 10:31:16 2025 -0800"
      },
      "message": "Add e2e Graphite test (#106)\n\n* Add e2e Graphite test\n\n* Extract common functions into e2e_test_utils.py"
    },
    {
      "commit": "766303664fde9c1872e8ff5a6a75da512af37e3b",
      "tree": "1b141866d83e5ed0a22572830b71953a5304575a",
      "parents": [
        "2d8bd02a5bd5f3e9f3c5b38b31532d508fe77722"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Sat Dec 13 10:30:54 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Dec 13 10:30:54 2025 -0800"
      },
      "message": "Optimize Docker image (#113)\n\n"
    },
    {
      "commit": "2d8bd02a5bd5f3e9f3c5b38b31532d508fe77722",
      "tree": "1272809565a4de5fb5cb313e691de09f5ec5277a",
      "parents": [
        "31545205d3f3c0029c06f229c06df525bdeb77b8"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Tue Dec 09 14:25:07 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 09 14:25:07 2025 -0800"
      },
      "message": "Change supported Python versions to 3.10-3.14 (#108)\n\n"
    },
    {
      "commit": "31545205d3f3c0029c06f229c06df525bdeb77b8",
      "tree": "a9def47d6812dfa81cd06d9772ae5c8e51313501",
      "parents": [
        "5c5abc7bbb2c8fa31128357599bcf06da26ca64c",
        "e6dca232b4a560a36bf9af1ce141c25a5e913084"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Fri Dec 05 17:26:29 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Dec 05 17:26:29 2025 +0200"
      },
      "message": "Merge pull request #105 from apache/config-paths-fixup\n\nFixup config paths in docs"
    },
    {
      "commit": "5c5abc7bbb2c8fa31128357599bcf06da26ca64c",
      "tree": "a7ce215379074f2eed674c68ba66eb48512ec6de",
      "parents": [
        "4e176a5cb77fb0e05c4dfb36b3d9c39e6ff08c81",
        "6aad9db88ae8a8263b51959955e5df52c079ee0a"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Thu Dec 04 19:22:56 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Dec 04 19:22:56 2025 +0200"
      },
      "message": "Merge pull request #96 from Sowiks/master\n\nReplacing signal_processing_algorithms with internal implementation"
    },
    {
      "commit": "e6dca232b4a560a36bf9af1ce141c25a5e913084",
      "tree": "cb8e031c6c790db223d7dced4f09bfbc273df845",
      "parents": [
        "4e176a5cb77fb0e05c4dfb36b3d9c39e6ff08c81"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Sun Nov 30 21:29:27 2025 -0800"
      },
      "committer": {
        "name": "Alex Sorokoumov",
        "email": "aleksandr.sorokoumov@gmail.com",
        "time": "Sun Nov 30 21:29:27 2025 -0800"
      },
      "message": "Fixup config paths in docs\n"
    },
    {
      "commit": "4e176a5cb77fb0e05c4dfb36b3d9c39e6ff08c81",
      "tree": "6f1809a06ae952fef049c1ad3a5eac68770e87ed",
      "parents": [
        "2f4d2ba0cfa5ebf2677a468253dcb6926f6af240"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Fri Nov 28 11:10:20 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 28 11:10:20 2025 -0800"
      },
      "message": "Add e2e tests covering CSV and PostgreSQL usage (#103)\n\n"
    },
    {
      "commit": "2f4d2ba0cfa5ebf2677a468253dcb6926f6af240",
      "tree": "9fd25f66ecc6f8c5c60828c68088a3f74da37fc3",
      "parents": [
        "b70f2aa4f60709d2516a7f830ff13f72a7558b1c"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Fri Nov 28 11:10:07 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 28 11:10:07 2025 -0800"
      },
      "message": "Fixup csv docs (#102)\n\n"
    },
    {
      "commit": "b70f2aa4f60709d2516a7f830ff13f72a7558b1c",
      "tree": "dc3768e403fea1f77b7c354daba2eb23268b4218",
      "parents": [
        "5276f24de6f0853f8304374dd1b3772501863c3c",
        "3ffbc188d0320311d358c421dba4194a3b138eb3"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Fri Nov 28 15:38:24 2025 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 28 15:38:24 2025 +0200"
      },
      "message": "Merge pull request #98 from apache/asf-verify\n\nAdd a bash script that contributors may use/adapt to validate releases"
    },
    {
      "commit": "3ffbc188d0320311d358c421dba4194a3b138eb3",
      "tree": "dc3768e403fea1f77b7c354daba2eb23268b4218",
      "parents": [
        "a31a60f3b5074eeed08146b14efde3250bb6326d"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Sun Nov 23 18:48:40 2025 +0200"
      },
      "committer": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Sun Nov 23 18:48:40 2025 +0200"
      },
      "message": "Add ASF license header to scripts in util/\n\nAlso change filename to end in .sh. This brings these files\ninto the view of .pre-commit-config.yaml\n"
    },
    {
      "commit": "a31a60f3b5074eeed08146b14efde3250bb6326d",
      "tree": "37268987c20a6659db183cadf0123047aa9a4620",
      "parents": [
        "ef64531e38d3e87d7165596958b6d31f9f076aef"
      ],
      "author": {
        "name": "Dave Fischer",
        "email": "wave@apache.org",
        "time": "Sun Nov 23 18:22:17 2025 +0200"
      },
      "committer": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Sun Nov 23 18:22:17 2025 +0200"
      },
      "message": "Add another script to be used as helper to check release tar file.\n\nThis script was shared by Dave Fischer in the mailing list discussion.\n"
    },
    {
      "commit": "6aad9db88ae8a8263b51959955e5df52c079ee0a",
      "tree": "683f3cd545e7af72cfbb273b6c1b66320c1dce8a",
      "parents": [
        "f8f81d873c23e7e8d7326360d73cbe4452f88e4c"
      ],
      "author": {
        "name": "Denis Shchepakin",
        "email": "1842450+Sowiks@users.noreply.github.com",
        "time": "Sat Nov 22 20:55:08 2025 -0800"
      },
      "committer": {
        "name": "Denis Shchepakin",
        "email": "1842450+Sowiks@users.noreply.github.com",
        "time": "Sat Nov 22 20:55:08 2025 -0800"
      },
      "message": "Renamed variables, fixed typos, updated comments. Switched indexing to match slice object notations.\n"
    },
    {
      "commit": "ef64531e38d3e87d7165596958b6d31f9f076aef",
      "tree": "9925e5caeafdf2b42a843bf1a1b6f6f3513f8932",
      "parents": [
        "5276f24de6f0853f8304374dd1b3772501863c3c"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Wed Nov 12 23:18:37 2025 -0800"
      },
      "committer": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Sun Nov 16 20:10:35 2025 +0200"
      },
      "message": "Add a bash script that contributors may use/adapt to validate releases\n"
    },
    {
      "commit": "5276f24de6f0853f8304374dd1b3772501863c3c",
      "tree": "c6acbc4829dbd1e2533004ee9af6059b7b454279",
      "parents": [
        "209ff38e31e1dffeb1e0989debcc09d902ebed57"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Wed Nov 12 23:18:37 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 12 23:18:37 2025 -0800"
      },
      "message": "Fix multiple issues discovered via running examples (#95)\n\n* Fix docker run commands in examples\n\n* Bump year in the postgres example data\n\nBy default, Otava looks 1 year back. Example data is too old.\n\n* Expand all env variables and fix PostgreSQL example\n\nThis commit fixes behavior removed in #86 - expand all env variables,\nnot just ones matching CLI arguments. There are users relying on this\nbehavior so we should not break it without longer discussion and a\nmajor release."
    },
    {
      "commit": "f8f81d873c23e7e8d7326360d73cbe4452f88e4c",
      "tree": "e23b5815017a79e848d2d1dde2d14469d55c6c29",
      "parents": [
        "a59a3cfe984d016d0dab08c5c054fa78d66ec3eb"
      ],
      "author": {
        "name": "Denis Shchepakin",
        "email": "1842450+Sowiks@users.noreply.github.com",
        "time": "Wed Nov 12 00:24:08 2025 -0800"
      },
      "committer": {
        "name": "Denis Shchepakin",
        "email": "1842450+Sowiks@users.noreply.github.com",
        "time": "Wed Nov 12 00:24:08 2025 -0800"
      },
      "message": "Support for Python 3.8 and 3.9\n"
    },
    {
      "commit": "a59a3cfe984d016d0dab08c5c054fa78d66ec3eb",
      "tree": "27b6c4f7c1f5c1d1127532c7a0d5453c42869097",
      "parents": [
        "f75f356f2173a5fc08d839d46ab74697bde688b5"
      ],
      "author": {
        "name": "Denis Shchepakin",
        "email": "1842450+Sowiks@users.noreply.github.com",
        "time": "Tue Nov 11 10:10:35 2025 -0800"
      },
      "committer": {
        "name": "Denis Shchepakin",
        "email": "1842450+Sowiks@users.noreply.github.com",
        "time": "Tue Nov 11 10:10:35 2025 -0800"
      },
      "message": "Correct implementation of bisection method\n"
    },
    {
      "commit": "f75f356f2173a5fc08d839d46ab74697bde688b5",
      "tree": "ff29b4db44bec3b42741d192ae3c274447249f2a",
      "parents": [
        "209ff38e31e1dffeb1e0989debcc09d902ebed57"
      ],
      "author": {
        "name": "Denis Shchepakin",
        "email": "1842450+Sowiks@users.noreply.github.com",
        "time": "Tue Nov 11 00:00:49 2025 -0800"
      },
      "committer": {
        "name": "Denis Shchepakin",
        "email": "1842450+Sowiks@users.noreply.github.com",
        "time": "Tue Nov 11 00:00:49 2025 -0800"
      },
      "message": "Replacing signal_processing_algorithms with internal implementation\n"
    },
    {
      "commit": "209ff38e31e1dffeb1e0989debcc09d902ebed57",
      "tree": "5a023418e8536db7e00aca550870dcb4323e801a",
      "parents": [
        "8d623fcfd079db58b5dc009befbd446d0b924fb2"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Tue Nov 04 21:24:52 2025 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 04 21:24:52 2025 -0800"
      },
      "message": "Bump version to 0.7.0 (#94)\n\n"
    },
    {
      "commit": "8d623fcfd079db58b5dc009befbd446d0b924fb2",
      "tree": "a8f0005c068ee4575ed4da41d21da84ee329c8e7",
      "parents": [
        "36cd1cb9a0a4df3eb87069e30b4fe29dcc541a7f"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Mon Sep 22 11:52:24 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 22 11:52:24 2025 -0700"
      },
      "message": "Add missing config files in examples (#92)\n\n"
    },
    {
      "commit": "36cd1cb9a0a4df3eb87069e30b4fe29dcc541a7f",
      "tree": "cadd19ea632ca0e18cf64251785e90e2c7ba54e6",
      "parents": [
        "cb118307d699600dd2913fa8cf7dca18d72f7f97"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Tue Sep 09 16:47:49 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 09 16:47:49 2025 -0700"
      },
      "message": "Run Docker build in CI (#90)\n\n* Reduce Docker image size\n\n```\n$ uv run tox -e docker-build\n```\n\nWithout this PR:\n\n```\n$ docker image ls | grep apache/otava\napache/otava                    latest              2b43a1b28f21   5 seconds ago   1.8GB\n```\n\nWith this PR:\n\n```\n$ docker image ls | grep apache/otava\napache/otava                    latest              fe6ae40666a2   13 seconds ago       778MB\n```\n\n* Run Docker build in CI"
    },
    {
      "commit": "cb118307d699600dd2913fa8cf7dca18d72f7f97",
      "tree": "f0f0f0923670fbe3ce88d165a5e0a7c399d8ba0a",
      "parents": [
        "484aaef8493a076b42d1b0e92679d9edb87fb043"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Tue Sep 09 16:46:02 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 09 16:46:02 2025 -0700"
      },
      "message": "Reduce Docker image size (#89)\n\n```\n$ uv run tox -e docker-build\n```\n\nWithout this PR:\n\n```\n$ docker image ls | grep apache/otava\napache/otava                    latest              2b43a1b28f21   5 seconds ago   1.8GB\n```\n\nWith this PR:\n\n```\n$ docker image ls | grep apache/otava\napache/otava                    latest              fe6ae40666a2   13 seconds ago       778MB\n```"
    },
    {
      "commit": "484aaef8493a076b42d1b0e92679d9edb87fb043",
      "tree": "8756c9f10a5a8e4e7b34e10aaf3fe4fa1cfb9bf7",
      "parents": [
        "69d2b97a6c38873b74755bf1104a69f099b922b9"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Tue Sep 09 16:45:51 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 09 16:45:51 2025 -0700"
      },
      "message": "Fix config parsing (#91)\n\nNow, the CLI parser ignores sections of the config that do not have\ntheir equivalents in the CLI."
    },
    {
      "commit": "69d2b97a6c38873b74755bf1104a69f099b922b9",
      "tree": "224c61107f63638d26f22b631071ca171b1bc11b",
      "parents": [
        "d337e48ff8f96707a93c47b604d2a791f7ba5e95"
      ],
      "author": {
        "name": "Sean McCarthy",
        "email": "sean.mccarthy.dev@gmail.com",
        "time": "Wed Aug 20 08:30:26 2025 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 20 08:30:26 2025 -0400"
      },
      "message": "OTAVA-82: use ConfigArgParse to create Config (#86)\n\n"
    },
    {
      "commit": "d337e48ff8f96707a93c47b604d2a791f7ba5e95",
      "tree": "de2d4f5b1471da74ad81dc480da59ed578a58992",
      "parents": [
        "651c5d9cb424fe112cc5995918f9c0333347d133"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Mon Aug 04 16:31:23 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 04 16:31:23 2025 -0700"
      },
      "message": "Replace Poetry with uv (#80)\n\n"
    },
    {
      "commit": "651c5d9cb424fe112cc5995918f9c0333347d133",
      "tree": "aaee43776cd76a8f819742969ff07ecd1395ee33",
      "parents": [
        "8bb5e8eaaf8d0880650ad382c557963912e9454d"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Mon Aug 04 16:27:12 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 04 16:27:12 2025 -0700"
      },
      "message": "Fix data location in csv example (#81)\n\n"
    },
    {
      "commit": "8bb5e8eaaf8d0880650ad382c557963912e9454d",
      "tree": "aca3b5bd99be62ab57c22812f895c49c0f39f1dc",
      "parents": [
        "c50c1fb1c64e97b0bdbd9cb9ddd2f1d486303289"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Sun Jul 20 09:55:52 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 20 09:55:52 2025 -0700"
      },
      "message": "Update README.md (#71)\n\nPrefix project name with \"Apache\". This is consistent with READMEs of other Apache projects - [Cassandra](https://github.com/apache/cassandra?tab\u003dreadme-ov-file#apache-cassandra), [Arrow](https://github.com/apache/arrow?tab\u003dreadme-ov-file#apache-arrow), [Airflow](https://github.com/apache/arrow?tab\u003dreadme-ov-file#apache-arrow)"
    },
    {
      "commit": "c50c1fb1c64e97b0bdbd9cb9ddd2f1d486303289",
      "tree": "70aeb6e7d227b11bab01d7ef8ea94b8c0607210e",
      "parents": [
        "15dbb8281dcf769aa4fc188f8b0826b6fb06f336"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Sun Jul 20 09:55:42 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 20 09:55:42 2025 -0700"
      },
      "message": "Update NOTICE (#72)\n\n"
    },
    {
      "commit": "15dbb8281dcf769aa4fc188f8b0826b6fb06f336",
      "tree": "2c5ab61c45be847a8869b1abce699697dc02eb57",
      "parents": [
        "a56bd7642d289cd4344e0ece6622f2c49442d1be"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Sun Jul 20 09:55:31 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 20 09:55:31 2025 -0700"
      },
      "message": "Add license header to python-app.yml (#73)\n\n"
    },
    {
      "commit": "a56bd7642d289cd4344e0ece6622f2c49442d1be",
      "tree": "bd728def42784f94f366f96f69d319a49b55c878",
      "parents": [
        "1ea24319c231d2009458a0c4868eb0e22326e248"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Sun Jul 20 09:55:22 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 20 09:55:22 2025 -0700"
      },
      "message": "Update install instructions on Getting Started page (#75)\n\n"
    },
    {
      "commit": "1ea24319c231d2009458a0c4868eb0e22326e248",
      "tree": "dbf9d9852cbe480bcecc99e8f314cc74dce0e3ff",
      "parents": [
        "9bce358eb9e27d5b11e23b0667c452f3bf189dc8"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Sun Jul 20 09:55:07 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 20 09:55:07 2025 -0700"
      },
      "message": "Use base image 3.8-slim-bookworm (#76)\n\n"
    },
    {
      "commit": "9bce358eb9e27d5b11e23b0667c452f3bf189dc8",
      "tree": "270a41fa6d1c3d5f60c819091004d671a2426692",
      "parents": [
        "9fe98b7ff2e24f116bd0a03be3e4a4335aca5d9a"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Sun Jul 06 17:35:51 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 06 17:35:51 2025 -0700"
      },
      "message": "Bump version to 0.6.1 (#70)\n\n"
    },
    {
      "commit": "9fe98b7ff2e24f116bd0a03be3e4a4335aca5d9a",
      "tree": "a980d11cbd9e8f9131f278d2def5dfc88a88cb5d",
      "parents": [
        "f1821de7463e54f3cc2555a49baac45d7b3a43ad"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Fri Jul 04 16:43:33 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 04 16:43:33 2025 -0700"
      },
      "message": "PyPI Project Description (#69)\n\nFixes #66"
    },
    {
      "commit": "f1821de7463e54f3cc2555a49baac45d7b3a43ad",
      "tree": "2d96fde6a4cb0180caaeeb0ed13521be45077103",
      "parents": [
        "6d8f20893884db3468aa237640f03205492afdfe"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Fri Jul 04 16:43:25 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 04 16:43:25 2025 -0700"
      },
      "message": "Add license and PyPI shields (#67)\n\n"
    },
    {
      "commit": "6d8f20893884db3468aa237640f03205492afdfe",
      "tree": "6e4276c7cadb4b90bb05a4614cb581537b169fd2",
      "parents": [
        "19c4dfd6c868090424d611ea50572a4cd522382e"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Fri Jul 04 11:07:22 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 04 11:07:22 2025 -0700"
      },
      "message": "Install instructions use PyPI instead of GH (#68)\n\n"
    },
    {
      "commit": "19c4dfd6c868090424d611ea50572a4cd522382e",
      "tree": "2a62cc98c611cbb2b7ca96500b6428d4f7da5a64",
      "parents": [
        "f1d21a84b79a4bb411b404437b163250d30edecb"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Wed Jun 04 20:56:25 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 04 20:56:25 2025 -0700"
      },
      "message": "Remove +incubating, add it to description and authors instead (#59)\n\n* Remove +incubating, add it to description and authors instead\n\n* Drop \u0027Developers\u0027"
    },
    {
      "commit": "f1d21a84b79a4bb411b404437b163250d30edecb",
      "tree": "40b23d3bf1ef159aba1b9d3c17fdca93ac9c4b3b",
      "parents": [
        "ee74e5f6d14a6805c8bee9aae1c2e68079586f3a"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Fri May 09 19:09:35 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 09 19:09:35 2025 -0700"
      },
      "message": "Rename project name to apache-otava (#58)\n\n* Rename project name to apache-otava\n\nThis change addresses RC feedback that project names typically contain\nprefix \"apache-\". For example, https://github.com/apache/airflow/blob/40789d677972a3d7d0827e5a12329879487f7926/pyproject.toml#L33\n\n* Fix discrepancy between project and module name"
    },
    {
      "commit": "ee74e5f6d14a6805c8bee9aae1c2e68079586f3a",
      "tree": "f53258c850e2b0b2c0ae65a5ef7321a0f128ccb1",
      "parents": [
        "5502d6b8af59cd1640b8639e22b939e24aa32d8f"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Thu May 08 22:59:00 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 08 22:59:00 2025 -0700"
      },
      "message": "Address ASF feedback for RC3 (#57)\n\n* Replace project authors with Apache Otava Developers\n\nThis change addresses ASF feedback about individual contributor\u0027s name\nand email in PKG-INFO and dist metadata.\n\nTurns out, poetry just takes the first author from pyproject and puts\nthem as the only author in those files. Instead, we\u0027ll do the same as\nPyArrow - https://github.com/apache/arrow/blob/2a88c5267d980851dc1dcdff54dbfe115ee1ef89/python/pyproject.toml#L49-L51.\n\n* Add (incubating) to the NOTICE.txt file\n\n* Remove .txt suffix from DISCLAIMER, LICENSE, NOTICE\n\n* Include DISCLAIMER into the build"
    },
    {
      "commit": "5502d6b8af59cd1640b8639e22b939e24aa32d8f",
      "tree": "b476cff161a410b7e12a107df89936d04adbba0a",
      "parents": [
        "73cf53e684ba72ea7ead869f54aae9eb8337a8ca"
      ],
      "author": {
        "name": "Sergey Bronnikov",
        "email": "estetus@gmail.com",
        "time": "Thu Apr 24 21:27:17 2025 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 24 14:27:17 2025 -0400"
      },
      "message": "Fix markdown markup and a typo in documentation (#54)\n\n"
    },
    {
      "commit": "73cf53e684ba72ea7ead869f54aae9eb8337a8ca",
      "tree": "ba01fc088313ca4d8ba5cd7938d8c942114a5de6",
      "parents": [
        "2958c0313d53db86d36e72c0f72d9b57ca4360c7"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Wed Apr 16 22:32:44 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 16 22:32:44 2025 -0700"
      },
      "message": "Add ASF header to .gitignore (#53)\n\n"
    },
    {
      "commit": "2958c0313d53db86d36e72c0f72d9b57ca4360c7",
      "tree": "863572d9b1d79446767ad46193d458dee85919e3",
      "parents": [
        "404acd0dda6384f4654c0fab2c4a058e360927ba"
      ],
      "author": {
        "name": "Alex Sorokoumov",
        "email": "918393+Gerrrr@users.noreply.github.com",
        "time": "Wed Apr 16 09:44:18 2025 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 16 09:44:18 2025 -0700"
      },
      "message": "CI runs against Python versions 3.8-3.10 (#52)\n\n* CI runs against Python versions 3.8-3.11\n\n* Remove 3.11 due to failing CI\n\n* Document supported Python versions\n\n* Update pyproject.toml\n\n* Update lockfile"
    },
    {
      "commit": "404acd0dda6384f4654c0fab2c4a058e360927ba",
      "tree": "2e6cd1ca0e797b3333a43d8d7c2ccd8fa2da75e3",
      "parents": [
        "8702c402f8d012743d906546f033b00bf2521860",
        "b924b1630dfa41ad1f75d5b632f4e6af8ea9a71c"
      ],
      "author": {
        "name": "Henrik Ingo",
        "email": "henrik@nyrk.io",
        "time": "Fri Apr 11 14:57:19 2025 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 11 14:57:19 2025 +0300"
      },
      "message": "Merge pull request #48 from ligurio/ligurio/doc-fixes\n\nDocumentation fixes"
    }
  ],
  "next": "8702c402f8d012743d906546f033b00bf2521860"
}
