)]}'
{
  "commit": "c0697963498a934a6323b8e04adf1a92aad25620",
  "tree": "cadae59d2d6cd85d2bd2d9709f3c4a44977d8330",
  "parents": [
    "8648759895b8778f06528ecebf5170f67a0dc65e"
  ],
  "author": {
    "name": "Martin von Gagern",
    "email": "gagern@google.com",
    "time": "Thu Jul 04 09:37:20 2019 -0400"
  },
  "committer": {
    "name": "Mike Bayer",
    "email": "mike_mp@zzzcomputing.com",
    "time": "Mon Jul 08 11:25:00 2019 -0400"
  },
  "message": "Support n filter in the page tag\n\nIn some situations, it is inconvenient to pass default_filters in the\nTemplate constructor depending on the template in question.  It might be\neasier in such situations to express page filters in the template itself.\nHowever, dropping the existing default_filters (either explicitly set or the\ndefault of [\"str\"] resp. [\"unicode\"]) might break existing templates.\n\nThe code change here comes to the rescue in such situations.  Existing\ntemplates keep working as they are, but editors of templates get a tool to\nreplace the default filters for specific templates.  They do take on the\nresponsibility of turning all encountered inputs into strings, lest they\nfail along the lines of https://github.com/sqlalchemy/mako/issues/272.\n\nThis change should be sufficiently backwards compatible to not cause any\nconcerns.  Sure, technically a \"n\" filter at page tag level was treated as a\nno-op so far.  So theoretically existing templates could break.  But there\nwas no incentive to have such an \"n\" filter at the page tag level, and the\nexpressed semantics of the \"n\" filter is to suppress default filters, so\nsemantically anyone relying on it being a no-op in that situation was using\nunsupported hacks anyway.\n\nCloses: #299\nPull-request: https://github.com/sqlalchemy/mako/pull/299\nPull-request-sha: f8d5a22db3230634d2b42c59909985f31875a9f5\n\nChange-Id: Ide030975229c1df7c0cef534976f740a03c17ca6\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c8765d3635a9342250f41a47116af498520d4180",
      "old_mode": 33188,
      "old_path": "doc/build/filtering.rst",
      "new_id": "c657b01f89cf318d70517d72548cbde500a4e1fe",
      "new_mode": 33188,
      "new_path": "doc/build/filtering.rst"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "958a5ba6a5342dbdd7ceeb4bd7f3d1aa28e8cca1",
      "new_mode": 33188,
      "new_path": "doc/build/unreleased/n_page.rst"
    },
    {
      "type": "modify",
      "old_id": "1acc5e6a2f802c209f12ab0325953fa42388edc9",
      "old_mode": 33188,
      "old_path": "mako/codegen.py",
      "new_id": "5ca7b0411d34e83f3ceac8f8b68a76ce9d0f7246",
      "new_mode": 33188,
      "new_path": "mako/codegen.py"
    },
    {
      "type": "modify",
      "old_id": "598cb456e3dbd90163422ba1d99de770234559f1",
      "old_mode": 33188,
      "old_path": "test/test_filters.py",
      "new_id": "a58a01f9dd8e49c61e821daddef38ac321ebf549",
      "new_mode": 33188,
      "new_path": "test/test_filters.py"
    }
  ]
}
