      "\n",
      "class TestMergeSort(object):\n",
      "    def test_merge_sort(self):\n",
      "        print('Empty input')\n",
      "        data = []\n",
      "        sorted_data = merge_sort(data)\n",
      "        assert_equal(sorted_data, [])\n",
 
</s> remove     "    if len(data) < 2:\n",
 </s> add     "    if data is None or len(data) < 2:\n", </s> remove     "    right = data[mid:len(data)]\n",
 </s> add     "    right = data[mid:]\n", </s> remove     "* Space: O(n), stable"
 </s> add     "* Space: O(n+m), n = number of elements, m = recursion depth\n",
    "\n",
    "Most implementations are stable."
    "        print('None input')\n",
    "        data = None\n",
    "        sorted_data = merge_sort(data)\n",
    "        assert_equal(sorted_data, None)\n",
    "\n",
      "\n",
      "class TestMergeSort(object):\n",
      "    def test_merge_sort(self):\n",
    "        print('None input')\n",
    "        data = None\n",
    "        sorted_data = merge_sort(data)\n",
    "        assert_equal(sorted_data, None)\n",
    "\n",
      "        print('Empty input')\n",
      "        data = []\n",
      "        sorted_data = merge_sort(data)\n",
      "        assert_equal(sorted_data, [])\n",
keep keep add keep keep keep keep
 Polish merge sort challenge and solution

Add None input test case.  Update space complexity discussion. 
sorting_searching/merge_sort/merge_sort_challenge.ipynb