)]}'
{
  "commit": "b8ffdd3059ce5c19b37ac2e5b9918d2fab93f72c",
  "tree": "79a087447cf4be7b08cbe749226f112ee17496e5",
  "parents": [
    "c85c9eecb1b79cdc0acd4dc27983802788518aa3"
  ],
  "author": {
    "name": "vishnu prakash",
    "email": "nvishnuprakash02@gmail.com",
    "time": "Wed Jun 24 01:18:24 2026 +0530"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jun 23 15:48:24 2026 -0400"
  },
  "message": "fix(datetime): raise specific \"Missing zone offset\" error in  timestamptz_to_nanos (#3505)\n\n# Rationale for this change\n\n  `timestamptz_to_nanos` should raise a clear \"Missing zone\n  offset\" error when it\u0027s given a nanosecond timestamp that has no\n  timezone. Today it can\u0027t: the check meant to detect a zone-less\n  timestamp accidentally tests the *same* pattern as the success\n  check right above it, so it never matches. The input falls\n  through to the vague \"Invalid timestamp with zone\" error\n  instead.\n\n  The fix is one line check the zone-less pattern\n  (`ISO_TIMESTAMP_NANO`) instead, mirroring \n  `timestamptz_to_micros`, which already does this correctly.\n  (Introduced in #1632.)\n\n  ## Are these changes tested?\n\n  Yes added tests covering the error messages for both\n  `timestamptz_to_nanos` and `timestamp_to_nanos`.\n  \n  ## Are there any user-facing changes?\n\n  Only a clearer error message: a zone-less nanosecond timestamp\n  now reports \"Missing zone offset\" instead of \"Invalid timestamp\n  with zone\". No API changes.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b5cde34f26a0520716a3762e2c9d816284be3c75",
      "old_mode": 33188,
      "old_path": "pyiceberg/utils/datetime.py",
      "new_id": "e5fa2595fee6cba121287fe40f243f1fc0de247e",
      "new_mode": 33188,
      "new_path": "pyiceberg/utils/datetime.py"
    },
    {
      "type": "modify",
      "old_id": "673908e19f5693b0bb76701d1a3eb69571cf54e7",
      "old_mode": 33188,
      "old_path": "tests/utils/test_datetime.py",
      "new_id": "e9529b6d3e187438c4ed5f481a41fc691b760134",
      "new_mode": 33188,
      "new_path": "tests/utils/test_datetime.py"
    }
  ]
}
