)]}'
{
  "commit": "3dc3f5f0fc41db52e894f65cc4eec9470ffdf725",
  "tree": "df9613f63a21f3dcfaaea9c8a2ea8a885fdc486c",
  "parents": [
    "d3eb7daf88e29bc20ffd4cfb833da3c49c617625"
  ],
  "author": {
    "name": "Ingy döt Net",
    "email": "ingy@ingy.net",
    "time": "Thu Jun 28 10:39:26 2018 -0700"
  },
  "committer": {
    "name": "Ingy döt Net",
    "email": "ingy@ingy.net",
    "time": "Thu Jun 28 10:39:26 2018 -0700"
  },
  "message": "Rework the safety related API code\n\nThe main change is that \u0027Danger\u0027 has been renamed to \u0027Python\u0027 and that\nthe default `dump()` and `dump_all()` functions use the \u0027Python\u0027 schema\nto be able to dump any Python data structure.\n\nNOTE: In YAML, \u0027Schema\u0027 is used to mean all the semantics and rules of\nwhat a YAML document means and how it is processed.\n\nThe `load()` and `load_all()` functions continue to use the Safe schema.\n\nThe dump() and load() sugar functions should be similar in that they\nboth do the must useful and safe operations.\n\nThere are top level functions for each schema (Safe and Python) and\nthose functions should be used when feeding data from one system to the\nother and expecting the same semantics (schema):\n\n* safe_dump safe_dump_all\n* safe_load safe_load_all\n* python_dump python_dump_all\n* python_load python_load_all\n\nWhen we have a schema language for YAML, the generic methods with be:\n\n* yaml.dump(node, Schema\u003d\u0027foo.schema\u0027)\n* yaml.load(yaml, Schema\u003d\u0027foo.schema\u0027)\n\nA loader class like SafeLoader is a loader with a hardcoded schema.\nRight now pyyaml has 2 schemas:\n\n* Python - serialize any python data\n* Safe - only serialize in a way that won\u0027t trigger code\n\n\u0027Danger\u0027 was used in response to a situation where people were caught\nunaware that something bad could happen in a seemingly normal, default\nsituation. Now we\u0027ve fixed the default to be safe, and Safe is an OK\nname for a schema, but Danger really is not. It\u0027s not the purpose of the\nschema to be dangerous. The purpose is to serialize Python data\nstructures.\n\nThe danger_ API functions can be removed because they have only been\nreleased for a couple days and they aren\u0027t documented anywhere.\n\n----\n\nThis also fixes a bug in that safe_load() and load() were aliases. They\nshouldn\u0027t be, because load() accepts a Loader kwarg, and safe_load()\nshould not. ie safe_load(yaml, Loader\u003dPythonLoader) shouldn\u0027t be\nallowed.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "628eb747c699fdcd77cb010fc009f9e7924f4456",
      "old_mode": 33188,
      "old_path": "lib/yaml/__init__.py",
      "new_id": "772b1d839806a1178a2d0dbe6824784e5009524d",
      "new_mode": 33188,
      "new_path": "lib/yaml/__init__.py"
    },
    {
      "type": "modify",
      "old_id": "5371f636427da55a0337a21058a289abaf2302ac",
      "old_mode": 33188,
      "old_path": "lib/yaml/cyaml.py",
      "new_id": "f3af879cc4fa54c4a0ca175d5bd47dad141545a5",
      "new_mode": 33188,
      "new_path": "lib/yaml/cyaml.py"
    },
    {
      "type": "modify",
      "old_id": "22fd927191a422e9d837558e9a132fad1082f1af",
      "old_mode": 33188,
      "old_path": "lib/yaml/dumper.py",
      "new_id": "88477ab226f412cdb1c5a90334836c5ad9a88db9",
      "new_mode": 33188,
      "new_path": "lib/yaml/dumper.py"
    },
    {
      "type": "modify",
      "old_id": "6b18527a70966a009ac3036c457419b39a61de5f",
      "old_mode": 33188,
      "old_path": "lib/yaml/loader.py",
      "new_id": "77e119cefe9eeefb5a3797a776e352261806a8fd",
      "new_mode": 33188,
      "new_path": "lib/yaml/loader.py"
    },
    {
      "type": "modify",
      "old_id": "cbb841749e0b5ef34d277ead92b7921c11aee8bc",
      "old_mode": 33188,
      "old_path": "lib3/yaml/__init__.py",
      "new_id": "994c59997c70a0045af5e09926888adbc003bc63",
      "new_mode": 33188,
      "new_path": "lib3/yaml/__init__.py"
    },
    {
      "type": "modify",
      "old_id": "ac8b0b76976642cb7593e21e0aa3fea44131e078",
      "old_mode": 33188,
      "old_path": "lib3/yaml/cyaml.py",
      "new_id": "3ecab187132c6218e929afde52277d2a70cdc4ff",
      "new_mode": 33188,
      "new_path": "lib3/yaml/cyaml.py"
    },
    {
      "type": "modify",
      "old_id": "b2d3a0743a84541d65774232017a27af1f042d4a",
      "old_mode": 33188,
      "old_path": "lib3/yaml/dumper.py",
      "new_id": "5e4929bf2da6562f83ccf1c298087ab824881a43",
      "new_mode": 33188,
      "new_path": "lib3/yaml/dumper.py"
    },
    {
      "type": "modify",
      "old_id": "16e9fab9ffbcc9ffcb572fef589601423e1a3b3e",
      "old_mode": 33188,
      "old_path": "lib3/yaml/loader.py",
      "new_id": "7f80be84eda20674612a61a19fb0e9611ae7285b",
      "new_mode": 33188,
      "new_path": "lib3/yaml/loader.py"
    },
    {
      "type": "modify",
      "old_id": "12d53913e5a595fe57cdf3a05086e3d8ae5a8b0b",
      "old_mode": 33188,
      "old_path": "tests/lib/test_constructor.py",
      "new_id": "6a03f7a69426c8b65a9821f78b766982b473e3e6",
      "new_mode": 33188,
      "new_path": "tests/lib/test_constructor.py"
    },
    {
      "type": "modify",
      "old_id": "c67c1700b96e8661189011c39a9936ae34d04628",
      "old_mode": 33188,
      "old_path": "tests/lib/test_recursive.py",
      "new_id": "d368b352707625e21e6c6c0a5b2bfd1f87ac6540",
      "new_mode": 33188,
      "new_path": "tests/lib/test_recursive.py"
    },
    {
      "type": "modify",
      "old_id": "71caa8e4fb7a3568caa9d6f424ed5c294afdda2b",
      "old_mode": 33188,
      "old_path": "tests/lib3/test_constructor.py",
      "new_id": "c121bd732ac6a607aa39dfe2fd85a322537750c4",
      "new_mode": 33188,
      "new_path": "tests/lib3/test_constructor.py"
    },
    {
      "type": "modify",
      "old_id": "31f23447d71e290be7f206ab9f30456c9dcc24ca",
      "old_mode": 33188,
      "old_path": "tests/lib3/test_recursive.py",
      "new_id": "437b9864d867d7186655654a81ebbb51a5a7c47b",
      "new_mode": 33188,
      "new_path": "tests/lib3/test_recursive.py"
    }
  ]
}
