{ "cells": [ { "cell_type": "markdown", "id": "612a3d67-bcd1-4a84-a5b0-b17e6e3f77cf", "metadata": {}, "source": [ "## Basic Usage\n", "\n", "\n", "### Plotting Class Inheritance " ] }, { "cell_type": "code", "execution_count": 1, "id": "2f64e256-519f-4554-b32e-490ee110de5d", "metadata": {}, "outputs": [], "source": [ "from inheritance_explorer import ClassGraphTree\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "id": "4848c79c-7e10-4cb7-aaa4-5dfb7500705f", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdsAAACbCAYAAAAqVTHsAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd1gU1/oH8O82lrb03sFGRxQUFbAhxiiaRNHcWJJoosaeGAWNRm9iwTRNVK4kURO9JmJiCmhIRGMoFqwUKWKkN4N0pO++vz/8sVesoDs7sMzneXj02XLOu3v2zDtzZuYcHhEROBwOh8PhMOUPPtsRcDgcDoej6rhky+FwOBwOw7hky+FwOBwOw4RsB/A0WlpaUFFRgYqKCjQ0NKC2thYA0NTUhMbGRgCAhoYG1NXVAQA6OjrQ1NSEoaEhDA0NoaamxlrsnMe7c+cObt++LW/bpqYmAEBtbS2kUikAQFdXF3w+HwKBADo6OpBIJPK25XRf7X22rq4ONTU1kMlkkMlkqKmpAQAIhUJIJBIAgLq6OrS0tOTtqqWlxWbonKfQ2NiIyspKVFVVddhOA0BVVZX8/9ra2hCJRPL/i8ViGBgYQF9fHzo6OkqPmyndMtnW1tYiLS0NN2/eRG5urvyvqKgI5eXlqKure6byJRIJTExMYGVlBTs7O9jb28Pe3h79+vWDq6urvMNzFK+wsBDp6enIyclBXl4ecnNzkZeXh9LSUlRUVMiT69Pg8/kwNDSEsbFxh3a1s7ODo6MjBgwYAKGwW/7ke7zW1lZkZWXh+vXrHdo1Ly8P5eXlqKiogEwme+ry1dXVYWhoCHNzc3mb2tvbw8HBAS4uLrCyslLgp+E8SVVVFbKyspCTk4PCwkIUFRWhoKAABQUFKC8vR2Vl5TP15XYCgQAGBgYwNDSEpaUlrK2tYWtrC2tra9jY2KB///6wtbVVwCdiHo/tq5Hr6upw9uxZnD9/HikpKUhJSUFubi6ICGKxuMNG08rKCqampjA0NISRkREMDQ2hra0NbW1tAHc7pIaGBgCgoaEBzc3NAID6+nrU1dXJ96wrKipw69YtFBYWdtgoNDc3g8fjwcHBAR4eHvDw8ICPjw+GDx8ur4PTeYWFhYiPj8fly5eRkpKC5ORkVFZWAgD09fU7JEMrKyv5UUz7n0QikY9CSCQSeaJsPyoiIlRXV6Ourg63b9+Wb9T/+eefDjtpJSUl8t+Tq6srPDw8MHDgQPj6+sLd3R0CgYC176gnkkqlSElJQWJiIpKTk5GSkoL09HQ0NzeDz+fDwsJC3rb29vYwNjaGoaEhTExM5O2qr68P4O4Okq6uLgCgra1NviPd0tLSoc+2j3YUFxd3aNvq6moAgKGhIQYOHAgPDw8MHjwY/v7+XAJWAKlUioyMDCQlJSEtLQ0ZGRlIT09HaWkpAEAkEj2QBE1MTORHpvr6+jAwMIC6urq8zYH/jU4Bd3NAW1sbgLtHww0NDfIj4vZ/b9++jcLCQvlffn4+7ty5A+DutsHJyQkuLi5wdnaGt7c3vLy8uttoyB9KT7ZNTU34888/ERsbi4SEBCQnJ0MqlcLBwQGDBg2Cu7s7PDw84O7uDltbW/B4PKXERUTIy8tDamoqUlJSkJqaiqtXryInJwdCoRCenp7w9fVFYGAgRo8eDbFYrJS4epKysjIcP34cf/31FxISEpCfnw+RSCTfcWlvV3d39w4dj2nNzc3IzMyUt2tKSgouX76M6upq6OjowNfXF35+fpgwYQI8PDyUFldPcvXqVcTExCAhIQFnzpxBXV0d9PX1MXjwYHm7enh4wMnJSamnaSorK5Gamipv1/Y2bm1thZ2dHfz8/DBq1ChMmjQJJiYmSourp2poaEBcXBzi4uKQlJSES5cuob6+HlpaWnBxcYGrqyucnJzk/1pbW8uTprJVVFQgMzMTGRkZ8p2Aa9euoaysDAKBAK6urhg6dCiGDx+OcePGwcLCgpU4/59ykm1lZSWioqIQFRWFEydOoKGhAe7u7vD394efnx/8/PxgZmbGdBhPpbS0FAkJCUhISEBcXBzS0tKgra2N8ePHY/LkyZg8eTL09PTYDpM1mZmZ+PnnnxEVFYWLFy9CLBZjxIgR8nYdOnQoNDU12Q7zATKZDOnp6YiPj5e3bVlZGezs7BAUFITJkydj9OjRvfaoVyqV4tSpU4iKikJ0dDQKCgpgbm6OUaNGwdfXF/7+/nBxcVHaznBXNDQ04Pz58/J+e+bMGbS0tGDo0KGYPHkyXnzxRQwYMIDtMLuNlJQU/P777zhx4oT8u3J2dsbQoUPlfy4uLj3mFExBQQGSkpLkfxcvXkRzczPc3NwQGBiIwMBAjBo1StnX7vwBYohUKqXY2FiaPXs2aWpqkrq6OgUEBNCOHTuosLCQqWoZd+vWLfr2229p0qRJJBaLSSwW06RJk+jIkSPU0tLCdnhKUVVVRRERETRixAgCQEZGRjR79mw6cuQI1dbWsh3eU7t27Rpt2LCBBg8eTDwej8zNzWnZsmWUnJzMdmhKk5GRQRs2bCAbGxsCQM7OzhQSEkIJCQkkk8nYDu+pNDQ0UGxsLC1btozMzc0JAA0ePJh27NhB5eXlbIfHivbfuqOjIwEgY2NjCg4OpoiICCooKGA7PIVqb/+QkBB539bT06PZs2dTVFQUNTc3KyOM3xWebG/fvk0ffPABmZmZEY/HI39/f9q3bx/V1NQouirW1dTU0Ndff02+vr7E4/HIwsKCNm/eTBUVFWyHxoirV6/SrFmzSCwWk5aWFs2ZM4dOnTpFUqmU7dAULjs7m9atWydPOsOHD6cffvhBJT9rW1sbRUZG0pAhQwgA2dnZ0fvvv09///0326EpXPtBwKxZs+QHAXPmzKGUlBS2Q2NcRUUFffbZZ/IEa2NjQ++88w6dP3++x+5IPY38/Hz69NNPaejQocTj8cjAwICWLl1K6enpTFaruGSbl5dHS5YsIS0tLTIwMKC1a9fSzZs3FVV8t3fjxg0KCQkhPT090tbWpmXLllF+fj7bYSnEyZMnady4cQSA3NzcaO/evT36CLYrpFIpnTx5kl588UXi8/nUp08f2r17NzU1NbEd2jNrbGyknTt3kr29PfH5fJo2bRqdPn1aJXcoHqampoa++uorcnFxIR6PR+PHj6c///yT7bAU7uLFi/Taa6+RhoYG6ejo0KJFi+js2bO9KsE+Sl5eHoWFhVGfPn0IAI0cOZIOHz5Mra2tiq7q2ZNtZWUlrVy5ksRiMdnZ2dHnn39OdXV1igiuR6qtraXt27eTra0tqaur0+rVq6mqqortsJ7K1atX5Ul27NixFBMT06s7aHZ2Ni1YsIA0NDTIzs6ODh061CO/D6lUSgcOHCAbGxvS0NCgt956i27cuMF2WKyRyWR0/PhxGj16NAGg8ePHq8SR7tmzZ2nSpEnE4/HI0dGRwsLCeuy2iGntIx7BwcEkEonIzs6OIiIiFHlq8OmTrVQqpc8//5z09fXJ2NiYdu7c2WvOWXZGc3Mz7dixg4yMjMjQ0JB2797dYzbM5eXl9OqrrxKfz6ehQ4dSXFwc2yF1K0VFRTR37lwSCATk5eVFSUlJbIfUaWfPniVPT08SCAT0xhtvUHFxMdshdSunT58mLy8v4vP5NHfu3B55SujeneQRI0bQ77//znZIPcrff/9Nc+fOJZFIRPb29nTw4EFFbLufLtneuHGD/Pz8SCQS0dq1a1XyfKyiVFdX0+rVq0koFNKoUaMoJyeH7ZAe6+jRo2Rqako2NjYUGRnZY3YQ2JCamkpjx44loVBIoaGh3XpoubGxkd59910SCAQUGBhI165dYzukbksmk9F3331HlpaWZG5uTr/++ivbIXVKVVUVLV26lAQCAQ0bNoxOnTrFdkg9Wk5ODs2bN4/4fD75+/tTWlrasxTX9WS7b98+0tTUJA8Pj151leazunz5Mrm5uZG2tjYdPHiQ7XAe0NDQQLNnzyYANG/ePG4HqpNkMhnt2bOHJBIJubq6UlZWFtshPSA9PZ2cnJxIR0eHvv76a24HqpOqqqrotddeIwA0d+5camxsZDukR/rll1/I1NSUTExMaN++fVwbK9DFixdpyJAhJBQKac2aNU87gtv5ZNva2krLly8nHo9HISEh3JDxU2hubqaVK1cSj8ejVatWUVtbG9shERFRYWEhDR48mAwMDOj48eNsh9Mj5eXlkY+PD+np6XWrYbvo6GjS0dGhESNGqMwFe8oWFRVF+vr6NHToUCopKWE7nA6amppo2bJlxOPx6PXXX6fKykq2Q1JJUqmU9uzZQ1paWuTj40O5ubldLaJzybaxsZGee+450tDQoO+//77LgXI6OnjwIKmrq9PkyZOVdY/XI6WmppKZmRk5Ozv36otkFKGxsZHmzJlDAoGAIiIi2A6Hdu7cKT/32J2HuHuC69evk6OjI1laWlJGRgbb4RARUWlpKQ0ePJh0dHTou+++YzucXiEjI4Pc3NxIT0+PYmNju/LWJyfb5uZmmjhxIunr69OFCxeePkpOB2fPniVdXV164YUXmLjMvFOysrLI1NSURo4cyQ0bK9C///1v4vP5tH//ftZi+PLLL4nH49GWLVtYi0HVVFVVka+vL1lYWLC+Y5qbm0t9+/al/v37sx5Lb9PQ0ECvvPIKicViOnr0aGff9vhkK5PJKDg4mHR0dHrUFZc9xZkzZ0hbW5tmzpyp9LoLCwvJysqKfHx8es09s8q0fv16EggEXemMCnP48GHi8/m0ceNGpdet6mpqamjIkCFkY2PD2pDyzZs3ycrKijw9PenWrVusxNDbSaVSWrJkCQkEAjp06FBn3vL4ZLtjxw4SCoV0+vRphQTIeVBsbCwJBAIKDw9XWp1tbW3k7+9Pjo6O3H13DFq0aBHp6OgodSam69evk7a2Ni1dulRpdfY2lZWV1L9/fxozZozSJwCpra0lV1dXGjRoEFVXVyu1bs6D2ueYOHfu3JNe+uhke/nyZRKLxbRp0ybFRvf/0tLSaMKECaStrU0SiYRMTU3Jx8eH1q1bx0h93dmGDRtIXV2dUlNTlVofUzfuc217V1NTE3l6epK3t7dSLihsbm6W18fEtQBcu/7PlStXSCwW0+bNm5VWp0wmoylTppCZmRlj8xdzbdw1UqmUgoKCyNzc/En3rD862fr7+5Ofnx8je25FRUWkp6dHMTExVFVVRVZWVgSAANB7772n8Pp27tz5wBFcaWkp7d69m0aPHk2LFy9+7PtramooLCyMvLy8SEtLS+ExtrW1kY+PDwUEBCi03IfJz88nsVhMO3bsYKT87tC2P/30Ezk7O5OWlhYNHTqUzpw50+H5pqYmWrduHdnZ2ZGmpia5urpSeHg4I7dLZGVlkVgsVsoFUzt37iR1dXVGjqS7Q7u262x//Ouvv4jP51NmZqbC4yMi+uijj0hDQ0NpE4N8//33xOfzKSEhgZHyu0MbP2m73Nm+e+jQIfL09CQtLS0yMzOjmTNnMraDUlNTQ3379qWXX375cS97eLI9ceIEAaD4+HhGgtu6dStJJJIOjxUUFDDSqPX19eTg4PBAo7722mvk5uZGAGjBggWPfP/Zs2fJ2tqa+vfvT3v27KEbN24wckFTQkICAWB8yP7NN98kW1tbxq6CZrttT58+TWFhYVRbW0vXrl0jb29v0tbW7nBua/HixfLFMQoKCuT3Uq5atUqh8d1bn4WFBTU0NDBSPtHdK6EtLS3p7bffZqR8ttu1XWf7Y2VlpXwRCaaSbXNzM9nZ2T1xZ10RGhoayNbWlt544w3G6ugObfyk7XJn+u7hw4dJX1+fjh8/Tg0NDVRYWEjBwcE0YMAAxu4/joqKelLOfHiyHT9+PD333HOMBEVEtGDBAjI0NOzwWENDAyONOmfOHALw0I7b1tZGYrH4kck2Li6ONDQ0aNq0aUq5dWLs2LE0adIkxsq/ffs2iUQi2rt3L2N1sN229x+xHzt2jADQX3/9RURE//zzDx04cKDDa6RSKTk5OZG5ublC42tXXFxM6urq9M033zBSPhHR119/TRoaGlRWVsZI+Wy3K1HX+uMrr7xCy5cvZzTZEhHt2bOH1NTUGL/2ITw8nLS0tKi0tJSxOrpDGxM9ervc2b77r3/9i8aMGdPhdYmJicTj8Rg9zx0QEEDjxo171NMPJtuamhpSU1Pr7BVWXRIbGysflrj3r7CwkBobGx/aqH/99Rf5+/uTpqYmmZqa0sKFCzs0UH5+Pk2bNo2MjIxIU1OThg8fTleuXCGiu0dx99d1/yIJurq6D0225eXlZGhoSOPGjVParTn79+8nsVjM2NXB3377LWPld5e2vX8jvGXLFrK1tX3i7D8vvfQSDR06VEHfxoMmTpxIL730EmPlBwUF0QsvvKDwcrtLu3alP0ZERNBnn31G+/fvZzzZVldXk5qaGuP3ufr6+tLs2bMZKbu7tPG9HrVdfpj7++7HH39MPB6PNm3aRG1tbSSTyei1116j0NDQp/2KOuXHH38kgUDwqB3eB5PtDz/8QCKRiNGZSObNm/fAHtTDGvXEiRMkkUgoOjqa6urqKDIykrS0tMjLy0ve4by8vCggIIBKS0spOztbfjtLu61btz5yD4ro0Y26bNkyAkBbtmyhwYMHk1gsJldX167eyNwl5eXlJBAI6JdffmGk/OnTpzM6YkHUfdo2JyeH1q5dS1ZWVp268MzJyYm+/PLLp/3YTxQREUHa2tqMDN83NjaShoYGoyMWbLdrZ/tjZmYmvfTSSySTyZSSbInuHtG88sorjJVfUlJCfD6foqOjGauDiP02vldXku39fbelpYVmzJhBAMjV1ZVefvllOnLkSKe/h6fV0NBAEomE/vOf/zzs6d/5uE9mZib69OkDfX39+59SKiLC4sWL8eqrr2LSpEnQ1tbG9OnT8e677+LSpUv46quvAAAymQwvvvgizMzM0K9fP4wdOxY3b958prplMhm+//57WFhYoH///jh9+jTOnTuH+vp6BAUFPXP5j2JkZAQ7OztkZmYyUn5mZia8vb0ZKbsrmG7boqIiODg4YMuWLSgvL8eBAwcglUof+frExEQIhULMnTtXYZ/xfl5eXqivr0dhYaHCy87Pz0djYyPrbctUu3a2P7a0tGDFihUIDw8Hj8dTymcGAG9vb2RlZTFWfnp6OmQyGUaMGMFYHZ3F5nb5YR7Wd0UiEb7//nu88MILyMjIQHR0tFJ+DxoaGhg0aBCuXbv20OcfSLalpaUwNzdnPLAnuXz5Mm7cuAEPD48Oj8+fPx8AcPz4cfnrFi1ahKSkJMyaNQuRkZFobW19prpLS0tRXl6OUaNGYerUqZBIJPD09MSnn36KpqYmfP75589U/uOYm5ujtLSUkbJ7S9taWVmhsbERp0+fxvDhw/HJJ5/ggw8+eOhrW1tbsXbtWnz33XcQCATP+MkezcLCAgBQUlKi8LLby2S7bZlq1872xzVr1mD58uUwNTVl6BM+nLm5OSPt2q6oqAhaWlqsHwAB7G6X7/e4vrtp0yb4+PggLi4Ourq6mD59Or755huF1v8w1tbWj9yhfiDZ1tXVQSKRMB7Uk+Tn5wMAGhoaOjxuYWEBTU1N+Y+7uLgYEyZMwIIFCzBhwgTMmDEDRPRMddfV1QHAA99DUFAQBAIBsrOzn6n8x9HR0UFNTQ0jZdfV1UFbW5uRsrtCGW2rrq6OUaNGISYmBs7Ozjh8+PBDX/fuu+9i5cqVcHV1fYZP9GQ6OjoAgNraWoWXXV9fDwCsty1T7dqZ/vjHH3+AiDBhwgRFfqROYbLPAkBNTY3898M2NrfL93tU342MjMRPP/2EkJAQ+Pr64uLFi3BycsKSJUtw69YthcZwPz09PVRXVz/0uQeSrampKeMBdYalpSUAPHRIVSgUwsHBAfX19fDz84Ouri4uX76MmTNnQl1dXSF1C4VC5ObmdnhcJBJBV1cXZmZmz1zHo9y6dYuxIxRTU1P8888/jJTdFcpsW7FYjGnTpqGtre2B57Zv345Ro0ZhypQp8scUvUFoV1ZWBgCM/HZMTEwAgPW2ZapdO9Mfd+3ahe3bt4PH48n/Xn/9dQCAk5MTHB0dFfQpH1RWVsboqIK5uTn++eefh/6GlY3N7fK9Htd3d+/ejSFDhsgft7CwQFRUlHy0i0nFxcXy7+h+DyRbc3NzFBUVMRpQS0sLmpubOzzWPsTQ/oPy9PSEtbU1Dh8+LN9zB+4OqdTW1mLGjBlISEhAbm4u5s6d22EY4d4NZvtYfVc2ohKJBBMmTEBcXFyH4aHS0lJUVlZ2aGBFKyoqYqzjWlhY9Mq2zc3NxfPPP9/hscOHD8PLywsvvviiPMa4uDhs2rSpqx+5U9q/dybatn2Imsm2ZbNdO9Mfo6OjQUQd/vbv3w/gbmJg8pwqk30WuHtaRCqV9sq++zBP6rtqamq4ceNGh/fY2dlBLBZDS0ury/V1RX5+PqysrB7+5P2XTCUmJhIAxhbBLioqIjs7OwJAf/75p/zxX3/9lQDQ8OHDqb6+noiIIiMjCQBNnjyZiouLqaSkhCZNmkTjx48nmUxGycnJBIDmzJlD1dXVdOTIEXJ1dSWhUEjp6el0+vRpioiIIAAUGxtLX331FRUVFRHR3anPiouLSU1NjYKCgh64NSQ7O5sMDAzIz8+P8vPzqbCwkAIDAx93H9UzS0lJIQCMra60YsUKcnNzY6RsIvbb9vz582RiYkKvvvoqZWdnU3V1Ne3YsYM8PDw6XF3/4YcfPvRWBwCMrUW7fv16srW1ZaRsmUxGVlZW9MEHHzBSPtvtWlRU9FT9UVlXIzs6OjI2IQrR3SuCdXR0aNeuXYzV0R3amOjJ2+XO9N3o6GgCQJs2baLKykoqKyujBQsWkIuLC6NLmhYWFhKfz6djx4497OkHb/1pa2sjY2Nj2rZtm8KDOXfu3ANfUJ8+fSgmJqbDY5aWlvL3/Pjjj+Th4UFisZhsbGxo7dq1He6lXL16Neno6JCrqyv99NNPdPDgQdLS0qK3336bpFIpVVRU0PDhw8nY2LjDvXArV658IJarV692iDc9PZ0CAwNJW1ubTE1NacWKFfIfHBM2bdpE5ubmjE1ufurUKQJAOTk5Ci+7O7RtfX09BQYGkqamJmloaJCbmxtt3Lixwz18n3zyySM7q6amJmOTlwwcOJCWLFnCSNlERAsXLiQvLy+Fl9sd2rVdV/ujMpJtdnY2AaC4uDjG6iAimjlzJvn5+TFSdndq48dtl7vSdyMjI8nd3Z3U1NTIysqK5s+fT+Xl5Yx8f+0+++wz0tfXf1RCf/gMUm+99RY5ODgoZfJ0zl1NTU1kY2NDy5YtY6yOlpYWMjc3Z2xKP87DxcXFEQDG5rQlujtNJYAH5oHmMGvp0qVkZWXF+MQ3J0+eVEpS5zydO3fukLW19eOm7nx4sm2frF4Zk6dz7vr8889JXV2dCgsLGa3niy++UEo9nP8ZOXKkUhaZGDVqFI0dO5bxejh3tW8n9+zZo5T6JkyYQAMHDlT6sn6cJ3v//fdJIpE8bjrNR6/6s2TJEjI1NWVsrlXO/xQVFZGRkRGtXLmS8bqamprI1taWpk2bxnhdHKKDBw8Sj8frzHqXzyw+Pp54PB5FRkYyXldv177cXZ8+fZQ2ApiRkUEikYg+/PBDpdTH6ZykpCRSV1enjz/++HEve3Syrauro/79+1NgYCC3J8UgqVRKY8eOpb59+zI2J/L9/vrrLxIIBIxOT8gh+vvvv0lHR0epw/aLFy8mXV1dRs7Lc/5n586dxOfzO1xMpAzh4eHE4/Hohx9+UGq9nIcrLS0lKysrCgwMpLa2tse99NHJlojo4sWLpKamxvgEzr3ZO++8Q2KxWD5Jt7KsW7eONDQ0GD2P2JtVVlaSh4cHDRo0SCkrRrVrbGyU18vkCie92enTp0ldXZ02btzISv0LFiwgiUQiX8mKw47y8nIaNGgQ9e/fvzOrPj0+2RIRHThwgPh8PmO3FfRm7733HgkEAsZXDHmY1tZWmjp1Kuno6FBSUpLS61dl1dXV5O3tTTY2NpSbm6v0+nNycsjKyoqGDRumtNGS3uLMmTOkra1N06dPf9KRDGNaWlpo+vTppKGhQVFRUazE0NsVFBSQo6MjOTg40M2bNzvzlicnW6K7K5bweDx67733GFt8tzeRSqW0atUq4vP5tG/fPtbiaG5upokTJ5K+vr7Sh8NUVWlpKQ0ZMoQsLCzoxo0brMWRlZVFpqamNHz4cLp16xZrcaiSEydOkK6uLk2ZMoX1OzXa2trozTffJKFQSDt27OC2y0p07tw5sra2JldXVyouLu7s2zqXbInuLk6tpqZGL7744gNrD3I6r7a2loKCgkgsFj+wEDIbGhsbKTg4mEQiEYWHh7MdTo925coVsra2pn79+tH169fZDofS09PJwcGBbG1tKTk5me1werQvvviChEIhvfLKK0o9LfA4MpmMNm3aREKhkCZPnkwVFRVsh6TSZDIZbdu2jUQiEU2cOLGry9B2PtkS3b3a0djYmFxcXOjy5ctdi5RDFy5cICcnJzIzM6OzZ8+yHY6cTCajDz74gHg8Hs2ZM6cz5x8495DJZLR7927S1NSkcePGMboWdFfdvn2bRo8eTVpaWrRnzx7uCKiLKioqaObMmcTn82nr1q3d8vuLj48nKysrsrKyoh9//JHtcFRSRkYGjR49mkQiEX3yySdP8zvoWrIlIsrLy6NRo0aRUCikdevWMTr9lapoamqiNWvWkFAopICAgG57j2t0dDSZmZmRpaUlHT9+nO1weoScnBwaPXq0vD8wPbnB02hpaaHQ0FD57y8vL4/tkHqEX3/9lczNzcnCwoJiYmLYDuexbt++Ta+++irxeDwKDAzsFiMrqqCuro5WrVpFIpGIBg0aRBcvXnzaorqebInu7slHRESQtrY29e/fn44cOdIt9/i6g6ioKOrbty9pampSWFhYt7+NqqqqiubPn08AKCAggNLS0tgOqVuqr6+nsLAwkkgk5OLi8iydUGmSk5PJw8ODNDU1KSQkhGpqatgOqVvKysqi4OBgAkDBwcF0+/ZttkPqtAsXLpC3tzeJRCKaPXs2ZWdnsx1Sj1RfX46FtS8AACAASURBVE87duwgCwsL0tPTox07djzrBXFPl2zb5eTk0IwZM4jH45Gvry93G8k94uLiaPjw4cTj8WjmzJmUn5/PdkhdEhMTQ66uriQSiWjRokVduRBApTU1NdHu3bvJ1NSU9PT06KOPPuo25/A6o7GxkbZu3Uq6urpkZmZGe/bs6VHxM6moqIgWLlxIQqGQ3N3d6cSJE2yH9FRaW1tp79695ODgQCKRiF5//XXKyMhgO6weobKyksLCwsjY2Ji0tbVp1apVippT+dmSbbukpCQaOXIkAaBhw4bR0aNHu/0RHBPa2tooMjKSvLy8CACNHj26RxzxPEpbWxt9/fXXZGlpSWpqavTaa6/12iPdiooK2rRpE5mZmZGamhqtWLGiRx3x3K+8vJyWLl1KampqZG5uTlu3bu1W55qVKTk5mWbPni2ftH7fvn0qsf1qbW2lb775hvr160c8Ho9GjRpFhw8f5k79PURSUhK9/vrrpKGhQRKJhEJDQ+mff/5RZBWKSbbtEhISaMqUKcTn86lv3760efPmbnt+UpHy8/Ppww8/JAcHB+LxeKSmpkZLliyhhoYGtkNTiKamJvr666/J2dmZeDwejRs3jg4dOqQyn+9RZDIZJSQk0Lx580hLS4v09fUpNDSUSkpK2A5NYYqKimj16tWkq6tL2traNH/+/F6xmMGdO3fo4MGDNGbMGAJArq6utH//fpVMRFKplGJiYmjy5MnE5/PJxMSEli1bRomJiSqxU/G0cnJyaNu2beTh4UEAyN3dncLDw5k6vaLYZNvu+vXrtHTpUjI0NCQ+n0/jxo2jb7/9tkcfCdyvvLycvvnmGwoICCA+n0/Gxsa0fPlySk5OprCwMNLR0SFLS0vasWOHygzTyWQyOnbsGAUFBZFQKCRdXV1688036eTJk6zfd6hI165dow8++ID69u1LAMjDw4O++OILlb7lrba2lrZv306urq4EgPr370+bNm1SqeHH5uZmio2NpXnz5pGOjg6JRCKaMmUKxcTEqPQ1J21tbXTgwAHq37+//PYlZ2dnAkBWVla0YsUKOnXqlMpspx4nLS2NPvroI/L29iYAZGRkRG+++aYy7g5hJtm2a25upqNHj1JQUBCpqamRQCAgf39/+vjjjyk9Pb1H/cBlMhmlpaXRtm3byNfXlwQCAYnFYpoyZQr9/PPPD+wRl5eXU0hICKmrq5OdnR1FRESwNuMME8rKyujTTz8ld3d3AkC6uro0Y8YMOnToUI+bRKGhoYFOnjxJK1asIAcHBwJApqamtHz58gfWOO4NLl26REuXLiVjY2MCQH379qV33nmH/vzzzwcW8+7uysrK6ODBgzR9+nTS0dEhAOTp6Unbt2/vcb/TrpJKpXTkyBFydHQkPp9PwcHBHS6YSktLo/fff5+cnJzka8I+99xz9Nlnn1FycrJKbK8KCgro4MGDNGfOHDI3N5cn2Hnz5tEff/yhzLsHfucREUEJamtr8ccffyAqKgoxMTGoqKiAsbExfH19MXLkSIwYMQJubm4Qi8XKCOeJmpqakJaWhjNnziAuLg6JiYm4ffs2jIyM8PzzzyMoKAjjx4+HRCJ5bDkFBQXYvHkz9u7dC0dHR2zYsAHBwcFK+hTKkZOTg+joaERHRyM+Ph6tra1wcnKCn58f/P394ePjAwcHB/B4PLZDBQDcvn0bly5dQkJCAuLj43Hx4kU0NzfDxcUFQUFBCAoKgo+PD/h8PtuhskoqleLcuXOIjo5GVFQUsrKyIBaLMWTIEPj7+8PPzw9eXl4wNDRkO1QAABHh5s2bOH/+POLj45GQkICsrCyoqanB398fkydPRlBQEOzs7NgOlVEymQxHjx7F+++/j+zsbEydOhWbNm1C//79H/me/Px8xMbG4sSJEzh16hQqKyuhra0NLy8v+Pj4YOjQoRg4cCBsbW27TT++X2VlJdLS0pCUlITz588jKSkJJSUlUFNTw/DhwzFu3DgEBgZi0KBBbPTtP5SWbO8llUpx+fJl+cYuMTERlZWVEAqFGDBgANzd3eHh4YF+/frB3t4e9vb20NPTYySWqqoq5ObmIjc3Fzdu3EBKSgpSU1ORnZ2NtrY2GBoayncI/Pz84OnpCYFA0OV6MjMzsWHDBvz4448YOnQotmzZgtGjRzPwidhVW1uLxMRE+cbu0qVLaGlpgUQigZubG9zd3eHu7g4HBwfY2dnBzs6OkR0smUyGkpIS5ObmIicnB5mZmfK2LSkpAQAMGDBAvkPg7+8PW1tbhcehSvLy8hAfH4+4uDgkJCTgxo0bAABLS0t5n3VycoKDgwPs7e1hYWHByIa5ubkZeXl58rZNTU1Famoq0tLSUF9fDzU1NXh7e8t3CHx9fZ+4U6wKZDIZjh8/jvfffx+pqamYOnUqPvzwQwwYMKBL5UilUqSnp+P8+fPypJWVlQWZTAYtLS04OTnB2dkZzs7OcHBwgJWVFWxtbWFmZsZ4EquqqkJhYSEKCgqQn5+PjIwMZGVlIT09Hbdu3QIAmJmZyXcQfHx84O3tDS0tLUbj6gR2ku39ZDIZsrOzkZqaiuTkZHnHKSwsRHt4+vr6sLa2hrGxMYyNjWFoaAhDQ0NoampCT08PPB4PQqFQ3qnq6urQ1tYGmUyGmpoaNDQ0oKKiAhUVFSgvL0d5eTkKCgpQXV0NAODxeLCxsZEnBA8PD3h4eKB///4K3WBcuHABH374IY4dO4aAgACEhYVh8ODBCiu/u2loaEBaWhpSUlLkf+np6R2+dwsLC1hZWcHQ0BBGRkbytlVXV5e3p6amJsRisbw9gbsb3YaGBlRXV6O8vFzevrdu3UJ+fj6am5sBAGpqarC1tcWQIUPk7Tpw4ECYmJiw86WoiFu3biE5OVneridPnkRFRQWkUikAQCwWw87ODiYmJvI2NTY2hp6enrw9AUBXVxd8Pl/ensDd/tvU1ISKigrcvn1b3rZFRUUoKSnpsF1wdXXt0Gfd3NygoaHBzpfCAiLCsWPHsGHDBqSkpGDq1Kn44IMP4OjoqLA6ampqkJ6ejoyMDGRmZiI9PR2ZmZkoLi6Wt7dIJIKlpSXMzMygr68PAwMD+b+amprQ1taGSCQCgA7/r66ulrdndXU1WlpaUFVVhcrKSvm/FRUVKCgoQH19vTwmQ0NDDBgwAC4uLnB0dISLiwucnZ1hbW2tsM+tQN0j2T7KvXuwubm5KCoqQnl5eYfO19jYiNraWkilUrS2tsobo70xBQIBdHR0oKmpKe/wRkZGMDY2hpWVlfzI2dbWVqlD2ImJiVi7di0SExMxceJEbNmyBW5ubkqrn233jijk5uaitLRU3qbtf83NzaitrQVwN2k3NzeDx+PJRzk0NDSgrq4OPT09eZI2MjKCkZGRvF3t7e0xa9Ys3LlzB+fOnXuqUQnOk2VlZWHgwIHYsmULpk+f3qFt7+2v5eXlqKmpQWNjI5qamgD8b2MrFouhqakJANDR0YFYLJb32fY/CwuLDm3L1IhXT9CeZDdu3Ijk5GQ8//zz2LRpEzw8PJQWQ2trK0pKSlBYWIj8/HwUFhaivLxcnijbk2VDQ4O8DwP/OxgCID9Yau/bIpGoQ7Ju/7+NjQ2sra1hbW0NW1tb+W+lh/iD0QukOE8WGxtLHh4e8gsYOrlcE6cLsrKySCwW0xdffMF2KCpJKpXSiBEjyNvbWyUuqunuZDIZRUVF0aBBg4jP59OkSZN65YV8PczvvfsKkG4gICAAV65cweHDh3H16lU4OTlhwYIFKCsrYzs0lTFgwACsWrUK7733HoqKitgOR+Xs2rULSUlJiIiI4EYOGHby5El4e3tjypQpsLCwwKVLlxAdHY2BAweyHRrnCbhk2w3w+XwEBwcjIyMDO3fuRHR0NPr27YvQ0FD5uU3Os1m3bh0sLS2xcOFCtkNRKQUFBVi3bh1CQ0Ph6enJdjgqqz3JBgYGwtzcXJ5kue+85+CSbTciEokwf/58/P3331i/fj2+/PJL9OnTB9u2bUNjYyPb4fVoYrEYe/bswW+//YZffvmF7XBUxpIlS2Bubo733nuP7VBU0smTJzFkyBAEBgbCzMwMFy9eRHR0NAYNGsR2aJyuYnsgm/NotbW1KjsbFVvab26vrq5mO5Qe7+DBg8Tn8yk+Pp7tUFRObGwsDRkyRL76Vk+eY51DRNw52+5NIpEgJCQEN2/exKxZsxAaGgpHR0d8+eWX8svtOV3z2Wefoa2tDevXr2c7lB6toqICK1euxMKFC+Hn58d2OCrj5MmT8PHxwbhx46Cjo4OLFy8iNjYWXl5ebIfGeUZcsu0BjIyMEBYWhuvXryMwMBCLFi2Ch4cHfvjhB7ZD63EMDQ3x8ccfY/fu3Th37hzb4fRYy5cvh1AoxObNm9kORSUkJiZi1KhRGDduHCQSCS5cuMAlWRXDJdsexMbGBhEREUhLS4OzszNmzJiBYcOG4fTp02yH1qO8+uqrGDNmDBYsWIDW1la2w+lxYmJicOjQIYSHh/fq+1wVITExEWPGjIGfnx9EIhGSkpIQGxsLb29vtkPjKBiXbHsgJycnHDlyBOfPn4e2tjbGjBmDcePG4fLly2yH1mOEh4fjxo0b2LFjB9uh9Ch37tzB4sWL8fLLL2PKlClsh9NjJSYmYuzYsfDz84NAIMD58+cRGxuLIUOGsB0ahyFcsu3BhgwZgtjYWCQkJKC5uRne3t6YPn06rl+/znZo3V6/fv3w3nvvYePGjcjJyWE7nB5jzZo1qKmp4XZSntK9Sba5uRmnT59GbGwshg4dynZoHIZxyVYF+Pr6Ij4+HidOnEB2djacnZ3lU+ZxHm316tWwt7fH4sWL2Q6lR0hKSkJ4eDi2b98OU1NTtsPpUc6cOYOAgAB5kv3zzz/l52k5vQOXbFXIvbNRXblyBY6OjtxsVI+hpqaGvXv34sSJE4iMjGQ7nG6tpaUF8+bNw8iRIzF79my2w+kxzp49i6CgIPj6+qKpqQmnTp1CYmKiSq74xXk8LtmqmPbZqDIzM7nZqDph6NCheOONN7B8+XJUVVWxHU63tWXLFuTm5uLLL7/stuuZdifnzp1DUFAQRowYgaqqKpw8eVJ+MRSnd+KSrYriZqPqvI8++ggCgQChoaFsh9ItZWVlISwsDJs2bUKfPn3YDqdbO3/+PIKCgjB8+HBUVVUhNjZWfp6W07t16yX2OIpTV1eH8PBwbN68GTo6Oli1ahUWLlyo1GUFu7PIyEj861//Qnx8PHx9fdkOp9uQyWTw9/dHS0sLt0ThY5w/fx6bN2/GsWPHMHz4cISGhiIoKIjtsDjdB7fEXm/zzz//UEhICKmrq5OdnR1FRERwy6L9v0mTJtGAAQO4KTHv8fnnn5NQKKQrV66wHUq3lJycTMHBwcTj8WjYsGEUFRXFdkic7ombrrG3MTY25majeoRdu3ahuLgYH3/8MduhdAvcij6PlpqaiunTp8PT0xOFhYX49ddf5RdDcTgPwyXbXoqbjepBtra2eP/997Fp0yZkZWWxHQ7rlixZAgsLC25Fn3u0J9mBAwfKk2z7xVAczuNwybaX42aj6ujtt9+Gs7MzFi5cCOrFlzP897//xfHjx/H1119DXV2d7XBYl5aWJk+y2dnZiIyM5I5kOV3CJVsOAG42qnZCoRARERFITEzEgQMH2A6HFfeu6NPbLxa7du0apk+fDg8PD1y/fh2RkZG4evUqgoODuVugOF3CJVtOB9xsVIC3tzcWLVqElStXory8nO1wlG7ZsmW9fkWf9PR0zJkzBx4eHsjKykJkZCSSk5O5JMt5alyy5TxUb5+NavPmzdDQ0MCqVavYDkWpYmJi8N133/XaFX3uTbLJyck4fPgwUlJSuCTLeXZsXw/N6f5aWlooIiKCzM3NSUtLi0JCQqiqqortsBh37NgxAkCxsbFsh6IU9fX1ZG9vTy+//DLboShdeno6zZ49mwQCAbm6utKRI0dIJpOxHRZHdfzOTWrB6bSGhgbs3LkT27ZtA4/Hw+rVq7Fs2TJoaGiwHRpjXnzxRaSnpyM1NVXlLxRatmwZDh06hIyMjF6z0EBmZia2bt2K7777Do6Ojli9ejVmzZoFPp8b9OMoFDepBaframtrKSwsjCQSCVlaWtKOHTtUdiKIkpIS0tXVpXXr1rEdCqPOnz9PAoGAvv32W7ZDUYqbN2/S/PnzSSAQkLOzM3377bfc5C4cJv3OJVvOU2ufjUosFqv0bFRffPEFqamp0bVr19gOhRHNzc3k4uJCY8aMUfmh05ycHJo/fz4JhUIuyXKUiUu2nGeXn58vP0pwcXGhI0eOsB2SQkmlUho2bBgNHTqUpFIp2+Eo3IYNG0hTU5P+/vtvtkNhzL1J1snJiUuyHGXjki1HcTIyMuTzxPr4+NCff/7JdkgKk5qaSiKRiCIiItgORaEyMzNJLBbT9u3b2Q6FEbm5ufIk6+DgoLKjL5xuj7tAiqN4Fy5cwNq1a3Hq1CkEBAQgLCwMgwcPZjusZ7Zq1Sp89dVXyMjIgIWFBdvhPDNVXtEnPz8fW7Zswb59+2BtbY3Q0FDMnTsXQqGQ7dA4vdMf3CV3HIUbMmQITp48qXKzUf373/+GoaEh3nnnHbZDUYhdu3YhKSkJERERKpNo8/PzsXz5cgwYMAAnTpzA7t27kZ2djfnz53OJlsMuto+tOaovNjaWPDw8iM/nU3BwMOXk5LAd0lOLiYkhAD1+KbX8/HySSCS0fv16tkNRiPz8fFq2bFmHi/VaW1vZDovDaccNI3OUQyaT4ejRo1izZg0KCwvx2muv4d///jfMzMzYDq3LXn75ZZw7dw7p6enQ1tZmO5ynMnnyZGRnZyM5OblH3z9cWFiITz75BBERETAzM8PatWu54WJOd8QNI3OUg8/nIzg4GJmZmdi5cyeio6PRt29fhIaGorq6mu3wuuTzzz9HXV0dPvjgA7ZDeSqqsKJPYWEhli9fjv79++PXX3/Ftm3bcP36dW64mNN9sX1szemd7ty5Q2FhYaSvr08GBgYUFhZGDQ0NbIfVaRERESQUCunKlSsdHq+qquo2E2AsXryYfvzxxw6P3b59m0xMTGjRokUsRfVsCgsLadmyZaSurk42NjYqPaEKR6Vwt/5w2NVTZ6OSyWTk6+tL3t7e8ltJIiMjydDQkABQfn4+6/Hp6+sTAJo2bRqVlZUREdErr7xCFhYWPW5u61u3blFISAhpaGiQtbU17dixgxobG9kOi8PpLC7ZcrqHnjgbVVZWFonFYtq4cSONHz+eABCfzyc+n0/ff/8967EBIAAkEolIIpHQypUrCQBFR0ezGltXcEmWoyK4ZMvpXnrSbFStra00adIkEolEJBKJOiS3pUuXshrbl19+SQKBQB4TAOLxeNSvXz+6fv06q7F1RvvOl4aGBpmYmFBYWBiXZDk92e/cBVKcbsXGxgYRERFIS0uDs7MzZsyYgWHDhuH06dNsh9ZBcnIyvL298dtvv6G1tRWtra3y51pbW/HXX3+xFxyA+Pj4B9ZfJSLk5eXBzc0N27Ztg1QqZSm6RysvL0doaCjs7Oywf/9+bNiwAXl5eQgJCemxF3NxOAC4C6Q43VtSUhKNHTuWAFBAQABdunSJ1Xhqa2tp+fLlxOfzOxzN3v8nEAiorq6OtTgtLS0fGRv+f7h74MCBlJKSwlqM9yovL6eQkBDS1NSUH8n2pAvmOJwn4I5sOd1bd5uNKikpCV9//TUAdDiavZ9UKsWFCxeUFVYHRUVFKC4ufuxreDweMjIykJqaqqSoHu727dvYuHEj+vTpg3379uH999+XH8mq8jrJnN6HS7acHsHX1xfx8fE4ceIEsrOz4ezsjOnTpyM3N1epcQQEBODq1avo27fvY+/nVFNTw9mzZ5UY2f/Ex8c/dvFzkUgEExMTJCYmYtasWUqM7H8qKirkSTY8PBxr167lkixHpXHJltOjBAQE4MqVKzh8+DCuXLkCR0dHLFiwAGVlZU98b2ZmJrKzs585hn79+uHSpUuYNGnSI5Naa2sr4uPjn7mup5GQkPDIHQE+n48xY8YgPT0d3t7eCqmvoaGh06+9N8nu3r0bb7/9Nm7evImQkBBoamoqJB4Op1tieyCbw3laLS0tFBERQebm5qSlpUUhISGPvX908uTJZG5uTgUFBQqpXyaTUVhYGPF4POLz+Q+cF9XW1mZl/dt+/fo99Bwtj8ejkJAQhcbU0NBAo0aNomPHjj32dRUVFbRhwwbS1dUlIyMj2rBhA9XU1CgsDg6nm+Nu/eH0fJ2ZjSopKYl4PB4JBALq06cP/fPPPwqr/7fffiOJRPLQC6bS0tIUVk9nVFRUEI/H6xCDSCQiXV1diomJUWhdTU1NFBAQQADIw8ODZDLZA69pn7RET0+PDA0NuSTL6a24ZMtRHZWVlbRhw4aHzkY1cuRIEgqF8uTj7Oys0FmUbty4QQMGDJDXAYCEQqHSF5v/5ZdfOiRaoVBIrq6uCl9pqaWlhSZOnNjh8967EtLDkmx1dbVCY+BwehAu2XJUT0lJCS1atIjU1NSoX79+tHbt2geOOEUiEQ0ZMoTq6+sVVm9dXR299NJL8iFloVBIc+bMUVj5nbFy5UpSU1OTT2Ixc+ZMunPnjkLraGtro+nTp3eYNEMgEJCbmxvV1NR0GGXgkiyHQ0TcEnscVVZQUIDNmzfj+++/R2NjI9ra2jo8LxQKERAQgKioKIhEIoXUSUQICwvDunXrIJPJYGNjg/z8/Ade19TUhMrKSlRWVqKxsRE1NTUAgLa2NtTV1QG4ezGTrq6uPFaJRAKJRAIDAwMYGBg89OKswYMH48qVKxCJRAgPD8cbb7yhkM917+ebN28eDhw48MCkGDweD/b29qiqqsLbb7+N5cuXQ0dHR6H1czg91B9csuWotJ9//hkvvfTSI58XCAQIDg7GoUOHHnu7TFe0tbVh//79WL58ORobG7Fw4ULcvn0b+fn5KCsrQ0VFRZeu4H0UfX19GBkZwdLSEjY2NrC0tMS2bdugr6+PQ4cOYfz48Qr4NP9DRHjrrbfw1VdfQSaTPfC8QCCAnZ0dLl26BD09PYXWzeH0cFyy5aguqVQKZ2dn/P333w9NDu0EAgHmz5+P8PDwLtfR2NiIS5cuISkpCampqbh27RoyMjLQ3NwM4O4RqZ2dHTw8PGBrawtLS0v5kamhoSEMDAygpaUFiUQij6X9aFAqlaK2thYAIJPJUFNTg7q6OlRWVqKiogIVFRUoLy9HcXEx8vPzkZGRgaKiIvkRp5GREdzc3ODq6oqBAwdi2LBhcHR0fGAax85atWoVPvvss8d+lzweDz/99BNeeOGFp6qDw1FRXLLlqK5vv/0Wr7/+OjrzE+fxeFi3bt0TF4Svq6vDyZMnERcXh3PnzuHq1atobW2Fubk53N3d4e7uDhcXF7i5ucHR0RFEhCtXrsDPz09RH+uRcnNzYWNjg9u3byM9PR3Xrl3DtWvXkJaWhtTUVDQ0NEBfXx/Dhg3DsGHDEBgYCC8vr04d0a9Zswbbtm174ncpEAjQt29fZGRkKGykgMNRAVyy5aimlpYW9O3bF8XFxSCiTiVcANi+fTtWrFjR4bGsrCwcO3YMMTExSExMhFQqxcCBAzF8+HAMGzYMw4cPh62tLRMfQ2Ha2tqQnJyMc+fO4dy5c0hISEBRURGMjY0RGBiI559/Hs8///xDh383bNiADz/8sNPfIQAcPXr0scP3HE4vwyVbjmqqqqrCTz/9hBs3biArKwsZGRnIy8uTz2csEokgEAjQ1NTU4X08Hg/79u3DuHHj8OOPP+KHH37AmTNnYGhoiDFjxiAgIABBQUEwNzdn42MpVE5ODqKjo3Hs2DH5KkHjxo1DcHAwpk6dCi0tLYSFhWHNmjWPLEMgEEAoFKK1tVU+vKympoYXXngBkZGRyvooHE53xyVbTu8hlUpRUFCA7OxsZGdn4/r168jIyEBWVhbKysrkR27t5zT19PQwdepUvPLKK/D394dAIGAzfEZVV1fj559/xnfffYfTp09DS0sL7u7uSExMBHA3qbafC+bxeDAyMoK9vT2cnJzg4OAAe3t72Nvbw8HBAebm5k99XpjDUVFcsuVw6uvr8Z///AdffPEFiouL0a9fPzg4OGD37t1wcHBgOzylKy0tRWhoKCIjI9Hc3Aw7OztMmjQJkyZNgr29Pezs7KCmpsZ2mBxOT8IlW07v1djYiPDwcGzbtg1NTU149dVXsXTpUvTv35/t0LoFmUyGmJgYfPHFF4iNjcWQIUOwadMmBAQEsB0ah9PT/MFdLsjpdYgIe/fuRd++fbFhwwbMmzcPeXl52LlzJ5do78Hn8zFx4kT88ccfuHTpEgwMDDBu3DiMHj0aKSkpbIfH4fQoXLLl9CqZmZkYOXIkFi5ciGnTpuHmzZvYunUrDAwM2A6tWxs0aBB+++03JCYmoqWlBV5eXli9erVCJufgcHoDLtlyegUiwrZt2+Dp6YmGhgZcuHABn3/+OUxNTdkOrUcZMWIEEhISsGvXLnz11VdwdXXF+fPn2Q6Lw+n2uGTLUXnV1dV44YUXsH79enz44YdISkqCp6cn22H1WHw+HwsWLEBGRgacnJwwcuRI7Nq1i+2wOJxuTch2ABwOk27evInx48ejsbERp0+fxogRI9gOSWWYm5sjOjoamzdvxooVK3Dp0iXs3btXpW+R4nCeFpdsOSrrxo0bGDNmDMzMzHDmzBluyJgBfD4f69evh5eXF6ZNm4bGxkb897//VdgqShyOquCGkTkqKTc3F6NGjYKlpSViY2O5RMuwCRMm4LfffsNvv/2GV1555bGLFXA4vRGXbDkqp7GxEVOnToWpqSlOnDjBLfemJCNHjsTx48cRFRWFzZs3sx0Oh9OtcMmWo3IWL16M/Px8HD16lJHFy69du4bnn38eEokEOjo6MDMzw7Bhw7B+/XqF13W/yspKWFlZNKJMAgAAC+9JREFUYevWrYzX9TT8/f2xfft2bNy4ESdOnGA7HA6n2+CSLUelJCQkYP/+/di/fz/s7e0VXn5xcTH8/PywbNkyFBYWQldXF7du3cL58+e7tCpOZ+3atQvV1dUdHiOibj338KJFizBt2jS89dZbaGlpYTscDqdb4JItR6WEhoZi/PjxmDx5MiPlHzx4EFKpFM899xz09PRQWFiIgoICRuq6c+cOtm/f3uExAwMDFBcXIzQ0lJE6FeWzzz5DWVkZ9uzZw3YoHE63wCVbjso4deoUzp49y+gQa15e3gOT8BsZGTFS16JFi5CTk8NI2UyztLTEokWLEBYWxl0sxeGAS7YcFfLDDz9g8ODBjExYcfLkSfB4PERERKCiogI8Hg88Hg9FRUWPHNKNi4vDyJEjoaWlBTMzM7z11lsdhoQLCgoQHBwMY2NjaGlpYcSIEbh69SoAYP78+Thw4AAAQF9fHzweD+Xl5Th48CBGjhwpX2P2+vXrWL16NUxNTVFaWop169bByMgIFhYW+OGHHzrE8/PPP2Pw4MGQSCTw9vZGUlKSwr+ne7355psoLS3FmTNnGK2Hw+kRiMNRATKZjMzMzGjz5s2M1jNv3jwyNDTs8FhjYyMBoPfee0/+2IkTJ0gikVB0dDTV1dVRZGQkaWlpkZeXF7W2thIRkZeXFwUEBFBpaSllZ2eTlZUV+fj4yMvYunUrAaCqqioiIjpw4ADp6ekRAAoJCSEiIl9fXxIIBASAli1bRleuXKHq6mry8/MjPT09eV3R0dHE4/Fo7969VF9fT19++SUBIADE5/OpqKiIke/LxcWF3n77bUbK5nB6kN+5I1uOSqisrERZWRl8fHzYDgVEhMWLF+PVV1/FpEmToK2tjenTp+Pdd9/FpUuX8NVXXwG4u4Tdiy++CDMzM/Tr1w9jx47FzZs3H1nu7Nmzce3atQ6PJSQkYMWKFQCAVatWwdPTE7q6unjhhRdQXV2NW7duAQC+/fZbmJiYYO7cudDS0sKbb74JLy8vTJw4EVKpFJaWlox8Fz4+PsjIyGCkbA6nJ+GSLUclFBcXAwBjSaMrLl++jBs3bsDDw6PD4/PnzwcAHD9+XP66RYsWISkpCbNmzUJkZCRaW1sfW7axsfEDj5mYmAAA1NXV5Y9pamoCgLw8TU1N1NTUdLg62MzMDJcvX+7qx+sSKysrFBUVMVoHh9MTcMmWoxJqa2sBgJH7arsqPz8fAB5Yfs7CwgKampooKSkBcHcHYcKECViwYAEmTJiAGTNmPPH2IT7/wS77sMfut2bNGujo6ODdd99FXV0dLly4gPj4eDz33HOd/VhPRVdXFzU1NYzWweH0BFyy5agEMzMzAEBZWRnLkfzv6DozM/OB54RCIRwcHFBfXw8/Pz/o6uri8uXLmDlzZocjU0VzdHTEu+++i9TUVJiZmSE4OBhvvPEGdu/ezVidAFBSUgJzc3NG6+BwegIu2XJUgoWFBQAwds9ru5aWFjQ3N3d4rH2otq2tDQDg6ekJa2trHD58GPX19fLXFRUVoba2FjNmzEBCQgJyc3Mxd+7cDqvk3Htk236V872P3V8XADQ1NQEApFKp/LH2223aX5eUlITjx4/j1KlTuHPnDvLz8/Hpp5/Kh5uZUlBQ0C2G9jkctnHJlqMSNDU18X/t3W9IU/sfB/D3UBsu0XQ4FEurPVCaNsQHoqvECvxTRoVGTLRoFizyQQYxLKKgZ1lIQpGN6M9cNSN7Us5KU5yu1NKYCQqaLtRiTdtyf0zlex9477j+In63y3bPnJ8XHJCveM7bPXl7/J7v+aampkKv1/vsGuPj42hvb8fMzAxevXrlGf/r6/b2djgcDvD5fFRVVeHbt28oLi7GxMQEJicnoVQqkZOTg8LCQs8fB3V1dbDZbKivr0dHRwecTicGBgbQ2tqKyMhIAItzu2q1GuPj42hpaQEAGI1GuFwuzM7OwmAweHIwxjA3N4fW1lYAQEtLCxhj0Gq1aGtrQ3BwsGfZEo/HQ0JCAl68eOGTz2t+fh4tLS3YsmWLT85PyLLC5bPQhHjTxYsXWUxMDJufn/f6uY1Go2epzF+HWCxmjY2NS8bi4uI8P/Po0SMmlUoZn89n8fHxrLKykrndbs/3T58+zcLDw1lycjJ7/Pgxu3fvHlu9ejU7efIkW1hYYFarlWVmZrLo6Gim1WpZQ0PDkmtJpVKWlZW1ZOzSpUssPT19yVhNTQ17/fo1CwsL++l3AMBiY2O9/nkxtrj8CQAbGRnxyfkJWUb0PMZ88EJXQjgwPDyMpKQkqNVqHDp0iOs4fkWn08Fut6OsrMwz5nQ6MTIygsOHD6Orq+sfPWj1O3JycuBwODx33oSsYE20eTwJGGKxGAqFAmfOnEFRUZHP5yOXi8HBQSiVSlgsliXjAoEAEokERUVFXi/apqYmPH/+3PNvb0JWOpqzJQHl/PnzsNlsOHv2LNdR/MbQ0BCmpqZw/Phx9Pb2wm63w+Fw4P379zh37hxKS0u9ej2bzYby8nLs2bMH2dnZXj03IcsVlS0JKDExMbh58yaqq6uh0+m4juMXCgoK8PTpU4yOjiIvLw/R0dGQSqXQarWoqKjw6tIcxhgUCgXsdjuuX7/utfMSstzRnC0JSOXl5bhz5w4aGxshk8m4jrNiqFQqXL58Gc3Nzdi2bRvXcQjxF010Z0sC0pUrV7Bz507k5uaira2N6zgBjzGGU6dOoaqqCrdu3aKiJeR/UNmSgBQSEoKHDx8iLy8P+fn5P203R7zH7XZDoVDg6tWr0Gg0KCkp4ToSIX6HypYErJCQEGi1Whw5cgQHDhxARUXF/33RP/k9o6OjkMlkaGhowJMnT3Dw4EGuIxHil6hsSUALDg5GTU0NNBoNamtrsXXrVphMJq5jLXuMMdy+fRtpaWlYWFhAT08Pdu3axXUsQvwWlS1ZEYqLi/HmzRvweDykpaWhsrISLpeL61jL0tDQELZv346ysjKUlJTAaDRCLBZzHYsQv0ZlS1YMiUSCzs5OqNVq3LhxA4mJiaitrV3yUn/yaxaLBSqVClKpFNPT0+jo6EB1dTVCQ0O5jkaI36OyJSsKj8dDaWkpTCYTdu/ejfLycmzatAkajYbmc3/hy5cvUKlUWL9+Perq6lBdXY2enh6kp6dzHY2QZYPW2ZIV7ePHj7hw4QLq6uogEomgVCpx7NgxiEQirqNxrqurCzU1Naivr0dERARUKhWUSqVP990lJEA1UdkSgsV9V69duwa1Wo2ZmRns3bsXcrkcubm5WLVqFdfx/jOfP3+GTqeDRqNBd3c3UlNTceLECcjlcipZQv49KltC/s7lckGr1eLu3bswGAxYs2YNCgsLsX//fmRlZQVk4UxOTuLZs2fQ6XRobm6GQCDAvn37cPToUdqLlhDvoLIl5FfMZjMePHiA+/fvo6+vDwKBANnZ2cjPz8eOHTuQmJjIdcR/xe12o7u7G3q9Ho2Njejr6wOfz0dOTg7kcjkKCgrooSdCvIvKlpB/4tOnT9Dr9dDr9Xj58iXsdjuio6ORkZGBzMxMZGZmYvPmzYiIiOA66k/GxsbQ29sLg8EAo9GIt2/fYnZ2FmKxGLm5ucjLy0N2djZtSUiI71DZEvK75ubm8O7dO3R2dnqOiYkJAMC6desgkUiQkpKCpKQkJCQkICEhAfHx8T6d+7XZbBgbG8PY2BiGh4cxMDCA/v5+fPjwAXa7HUFBQZBIJJDJZMjIyIBMJsPGjRt9locQsgSVLSHeYDab0d/fD5PJ5Cm5wcFBOJ1OAItLjmJjYxEXFwehUIioqChERUVBKBQiNDQU4eHhCAoKAgBERkYCAH78+AGHwwFgcS7Z7XbDZrPh69evmJqagtVqhdVqhdlshs1m82QRiUSQSCSQSCRITk5GcnIyUlJSEB4e/h9/KoSQP1HZEuJLFovFc8dpNpsxMTGBqakpz2G1WuFyufD9+3fPyzWmp6cBLL7bOSwsDAAgEAjA5/MREREBoVDoKWyhUIi1a9d67p43bNhA862E+B8qW0IIIcTHaD9bQgghxNeobAkhhBAfo7IlhBBCfCwYQD3XIQghhJAA9v4PZiEaYJeyY4cAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "execution_count": 2, "metadata": { "image/png": { "unconfined": true } }, "output_type": "execute_result" } ], "source": [ "base_class = np.floating\n", "cgt = ClassGraphTree(base_class)\n", "cgt.show_graph()" ] }, { "cell_type": "code", "execution_count": 3, "id": "f85ab6c6-cb25-4326-8464-f14fcaf9cc7d", "metadata": {}, "outputs": [ { "data": { "image/png": "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Pn366IpUIiLiECobItKhAgICuHjxomnrd+/eHfjPAfA7+fPPPxk3bhxeXl4UFRUxe/bsdjsl/9TfnS84OJjIyEg2btxITk4ODz/8MF5eXv963b+jpaWFmpoah+42iYiI81LZEJEOFRgYeNc/9P9X169fB6C1tdU+1tbWBvznD+vHH38cFxcX0tLS7OO3unTpEvv37+fs2bO8+OKLuLq62u+7dSfi1jlvdbvxvzPfTcuWLaOuro6ZM2cyb968v/+D/0sXLlygtbWV/v37O3wtERFxPiobItKhwsPDyc7OblcG7pWmpiYOHDgAQG5uLoZh0NzczL59+wDIycnBarXy8ssvc+LECRISEjh//jylpaV89913AERHR5OcnAxAamoqV65cIT09nfz8fK5du0ZJSQmZmZnk5OQAUFVVZV+/oaHhtuM3dw3uNN/NfACTJ09m5MiR+Pv7Ex4efs9fo/8vKysLT09PRo8e7fC1RETE+bi+++6775odQkSch7+/P+vWrSMyMpKgoKB7OndUVBR79+4FYNu2bXh6epKYmMiePXsAyMjIwNfXl3feeYeWlhbS09P5+OOPqa6uJjQ0lNraWhITE1m5ciVtbW2kpKSwbds2IiMjCQ0NJSsrC4vFQnJyMj/++CMA27dvp7q6mujoaMaPH09eXt5/jQcEBNDY2HjH+ebNm9furEdjYyMhISEOu2rXrVatWsWIESM65GyIiIg4H4txu318EREHGjt2LFarlR07dpgdpVOKjY0lOTkZHx8fh65z9OhRHnvsMbZv387UqVMdupaIiDgnvY1KRDrcmjVr+P7778nNzTU7SqdiGAZJSUn4+vo6vGgALF++nJCQEKZMmeLwtURExDlpZ0NETDFp0iSqqqooLCykV69eZscx1d69e5k6dSoNDQ307t2bI0eOMHjwYIeumZqaypw5c8jNzeXJJ5906FoiIuK8tLMhIqZISkqiurq6Q6641Nl5enri7u7OqFGjyMrKcnjROHXqFAsXLuS1115T0RAREYfSzoaImGb37t3ExsayevVq3nzzTbPjOIWKigomTJhAv379yM3NpVu3bmZHEhGRLkxXoxIR0wwZMgR/f3+WLVuGq6sr48ePNztSl1ZeXs7EiRNxd3cnMzPToZ/kLiIiAuBmdgARcW4LFy7E1dWVhQsXUldXx/r163Fz06+me+3o0aNMmzYNb29vsrOz8fPzMzuSiIg4AZ3ZEBHTzZ8/n9TUVD799FOioqKorq42O1KXsmXLFsLDwxkyZAg5OTkqGiIi0mFUNkSkU3juuef46aefqKioIDg42P6J3vLv1dbWkpCQwNy5c1m8eDG7d++mb9++ZscSEREnorIhIp3GqFGjOHz4MNHR0cyYMYPp06dTWVlpdqz7UkpKCsOHDycnJ4cdO3awbt06XF1dzY4lIiJORmVDRDoVb29vNm/ezL59+ygpKWHYsGGsWLGC+vp6s6PdFwoKCpg4cSIJCQlMnjyZ48eP88wzz5gdS0REnJTKhoh0SuPHj+fIkSO8/fbbfP755wwePJh169Zx9epVs6N1SoWFhcTExGCz2XBzc6OwsJCvvvpKb5sSERFTqWyISKfl4eHB8uXLKS0tZdGiRaxZs4bAwEAWL17M6dOnzY5nuhs3bpCWlkZYWBhhYWHU19ezd+9esrOzGTt2rNnxRERE9KF+InL/uHLlCklJSWzcuJFz584RFRXF7NmziYuLo3fv3mbH6zDHjh0jNTWVlJQULl26RFxcHEuWLCEiIsLsaCIiIu2obIjIfaetrY2MjAy++OILsrKycHNzY8qUKcTHxzNp0qQuWTx++eUXdu7cSVpaGidOnODBBx9k9uzZzJ8/nwEDBpgdT0RE5LZUNkTkvlZXV8fWrVtJS0vjwIEDuLq6EhERQUxMDNHR0YwYMQIXl/vvHaOXL18mLy+PXbt2sWvXLs6fP4+fnx/x8fHMmjWL8PBwLBaL2TFFRETuSmVDRLqM2tpa9uzZQ2ZmJrt376ampgYvLy/Cw8N54oknsNlsjBkzptMdmm5paeHMmTMcOnSI/Px88vPzOXnyJAAhISHExMQQGxtLSEjIfVmcRETEealsiEiX1NbWxvHjx8nPz6egoID8/HzKysoAsFqtPProo4wcOZLhw4czaNAggoKCGDhwID169HBYpkuXLlFWVkZZWRlnzpyhuLiYEydOUFJSQlNTE+7u7oSEhBAeHo7NZsNms+Hj4+OwPCIiIo6msiEiTqOyspLi4mKOHz9OcXExxcXF/PrrrzQ0NABgsVh44IEH6N+/Pz4+PvTt25e+ffvi4+ODh4cHXl5euLi4YLFY8Pb2BqCpqYlr164BcO3aNZqamqitraWurs7+taamhnPnztkfZ7FYGDBgAI888ggjR45kxIgR9lv37t3NeXFEREQcQGVDRJxeTU2NfcehrKyMyspK6urq2hWGxsZG/vjjD1paWjAMw/4hgz169KBnz54AeHp60q1bt3ZF5WZZCQoKst8GDhyoUiEiIk5BZUNERERERBxCJw1FRERERMQhVDZERERERMQhVDZERERERMQh3IB0s0OIiIiIiEjX83/ezlyYGXl9dQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "execution_count": 3, "metadata": { "image/png": { "unconfined": true } }, "output_type": "execute_result" } ], "source": [ "base_class = np.ndarray\n", "cgt = ClassGraphTree(base_class)\n", "cgt.show_graph()" ] }, { "cell_type": "code", "execution_count": null, "id": "d553a1de-4bfa-46e0-961c-547bfbb959b7", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "8aa5df66-8b73-4ea0-b042-828409e33bcf", "metadata": {}, "source": [ "### Additional function tracking \n", "\n", "If you supply a function name via the `funcname` argument, then that function will be tracked as the classes are traversed. Any child class that overrides the function will be flagged and the actual source code of the function will be stored. After traversal, a code-similarity matrix between all classes that over-ride the function. \n", "\n", "This is best illustrated with an example: " ] }, { "cell_type": "code", "execution_count": 4, "id": "cf642e9e-8f69-4bd0-8f34-5856d03fe37a", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 4, "metadata": { "image/png": { "unconfined": true } }, "output_type": "execute_result" } ], "source": [ "from matplotlib.axes import Axes\n", "\n", "cgt = ClassGraphTree(Axes, funcname='clear')\n", "cgt.show_graph()" ] }, { "cell_type": "markdown", "id": "3b08a266-1985-430d-91e8-0496468c6b25", "metadata": {}, "source": [ "here, we're mapping out the `matplotlib` `Axes` class and tracking the `clear()` function. Any methods after the main parent that override `clear` are highlighted in red. Any classes that override **and** look similar (see below) are connected with additional arrows (red and brown). \n", "\n", "In the interactive graph, the same information is displayed, with overriding classes as purple nodes nad similar nodes connected by blue lines:" ] }, { "cell_type": "code", "execution_count": null, "id": "4962ce48-bef6-4366-adac-c12e1362d167", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "0dcff737-698a-4324-9d20-7d524b89fb52", "metadata": {}, "source": [ "We display the actual similarity coefficient matrix used to identify similar nodes:" ] }, { "cell_type": "code", "execution_count": 5, "id": "0848f631-7753-48cf-bf20-312498f31a12", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "({0: 'Axes', 1: 'GeoAxes', 2: 'LambertAxes', 3: 'PolarAxes', 4: 'Axes3D'},\n", " )" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cgt.plot_similarity()" ] }, { "cell_type": "markdown", "id": "b6a6ccd4-0ed0-49d0-8217-bcc797f63a11", "metadata": {}, "source": [ "The above plot is the code inter-comparison between every class that overrides `clear()`. A value of 1 is identical (the diagonal of this plot will always be 1) and a value of 0 is no similarity. " ] }, { "cell_type": "markdown", "id": "373cb635-9b61-4299-9555-3b6fa9d601e5", "metadata": {}, "source": [ "**Furthermore**, the actual source code is recorded during traversal, which you can inspect inividually:" ] }, { "cell_type": "code", "execution_count": 6, "id": "1c42a9ad-8278-49ac-a6eb-e087e6428e7e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
def clear(self):\n",
       "    # docstring inherited\n",
       "    super().clear()\n",
       "\n",
       "    self.title.set_y(1.05)\n",
       "\n",
       "    start = self.spines.get('start', None)\n",
       "    if start:\n",
       "        start.set_visible(False)\n",
       "    end = self.spines.get('end', None)\n",
       "    if end:\n",
       "        end.set_visible(False)\n",
       "    self.set_xlim(0.0, 2 * np.pi)\n",
       "\n",
       "    self.grid(mpl.rcParams['polaraxes.grid'])\n",
       "    inner = self.spines.get('inner', None)\n",
       "    if inner:\n",
       "        inner.set_visible(False)\n",
       "\n",
       "    self.set_rorigin(None)\n",
       "    self.set_theta_offset(self._default_theta_offset)\n",
       "    self.set_theta_direction(self._default_theta_direction)\n",
       "
\n" ], "text/latex": [ "\\begin{Verbatim}[commandchars=\\\\\\{\\}]\n", "\\PY{k}{def} \\PY{n+nf}{clear}\\PY{p}{(}\\PY{n+nb+bp}{self}\\PY{p}{)}\\PY{p}{:}\n", " \\PY{c+c1}{\\PYZsh{} docstring inherited}\n", " \\PY{n+nb}{super}\\PY{p}{(}\\PY{p}{)}\\PY{o}{.}\\PY{n}{clear}\\PY{p}{(}\\PY{p}{)}\n", "\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{title}\\PY{o}{.}\\PY{n}{set\\PYZus{}y}\\PY{p}{(}\\PY{l+m+mf}{1.05}\\PY{p}{)}\n", "\n", " \\PY{n}{start} \\PY{o}{=} \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{spines}\\PY{o}{.}\\PY{n}{get}\\PY{p}{(}\\PY{l+s+s1}{\\PYZsq{}}\\PY{l+s+s1}{start}\\PY{l+s+s1}{\\PYZsq{}}\\PY{p}{,} \\PY{k+kc}{None}\\PY{p}{)}\n", " \\PY{k}{if} \\PY{n}{start}\\PY{p}{:}\n", " \\PY{n}{start}\\PY{o}{.}\\PY{n}{set\\PYZus{}visible}\\PY{p}{(}\\PY{k+kc}{False}\\PY{p}{)}\n", " \\PY{n}{end} \\PY{o}{=} \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{spines}\\PY{o}{.}\\PY{n}{get}\\PY{p}{(}\\PY{l+s+s1}{\\PYZsq{}}\\PY{l+s+s1}{end}\\PY{l+s+s1}{\\PYZsq{}}\\PY{p}{,} \\PY{k+kc}{None}\\PY{p}{)}\n", " \\PY{k}{if} \\PY{n}{end}\\PY{p}{:}\n", " \\PY{n}{end}\\PY{o}{.}\\PY{n}{set\\PYZus{}visible}\\PY{p}{(}\\PY{k+kc}{False}\\PY{p}{)}\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{set\\PYZus{}xlim}\\PY{p}{(}\\PY{l+m+mf}{0.0}\\PY{p}{,} \\PY{l+m+mi}{2} \\PY{o}{*} \\PY{n}{np}\\PY{o}{.}\\PY{n}{pi}\\PY{p}{)}\n", "\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{grid}\\PY{p}{(}\\PY{n}{mpl}\\PY{o}{.}\\PY{n}{rcParams}\\PY{p}{[}\\PY{l+s+s1}{\\PYZsq{}}\\PY{l+s+s1}{polaraxes.grid}\\PY{l+s+s1}{\\PYZsq{}}\\PY{p}{]}\\PY{p}{)}\n", " \\PY{n}{inner} \\PY{o}{=} \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{spines}\\PY{o}{.}\\PY{n}{get}\\PY{p}{(}\\PY{l+s+s1}{\\PYZsq{}}\\PY{l+s+s1}{inner}\\PY{l+s+s1}{\\PYZsq{}}\\PY{p}{,} \\PY{k+kc}{None}\\PY{p}{)}\n", " \\PY{k}{if} \\PY{n}{inner}\\PY{p}{:}\n", " \\PY{n}{inner}\\PY{o}{.}\\PY{n}{set\\PYZus{}visible}\\PY{p}{(}\\PY{k+kc}{False}\\PY{p}{)}\n", "\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{set\\PYZus{}rorigin}\\PY{p}{(}\\PY{k+kc}{None}\\PY{p}{)}\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{set\\PYZus{}theta\\PYZus{}offset}\\PY{p}{(}\\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{\\PYZus{}default\\PYZus{}theta\\PYZus{}offset}\\PY{p}{)}\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{set\\PYZus{}theta\\PYZus{}direction}\\PY{p}{(}\\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{\\PYZus{}default\\PYZus{}theta\\PYZus{}direction}\\PY{p}{)}\n", "\\end{Verbatim}\n" ], "text/plain": [ "def clear(self):\n", " # docstring inherited\n", " super().clear()\n", "\n", " self.title.set_y(1.05)\n", "\n", " start = self.spines.get('start', None)\n", " if start:\n", " start.set_visible(False)\n", " end = self.spines.get('end', None)\n", " if end:\n", " end.set_visible(False)\n", " self.set_xlim(0.0, 2 * np.pi)\n", "\n", " self.grid(mpl.rcParams['polaraxes.grid'])\n", " inner = self.spines.get('inner', None)\n", " if inner:\n", " inner.set_visible(False)\n", "\n", " self.set_rorigin(None)\n", " self.set_theta_offset(self._default_theta_offset)\n", " self.set_theta_direction(self._default_theta_direction)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Code\n", "Code(cgt.get_source_code('PolarAxes'), language=\"python\")" ] }, { "cell_type": "markdown", "id": "4c55b069-3c48-46e5-b1ff-953df7dd2d5f", "metadata": {}, "source": [ "or as a group:" ] }, { "cell_type": "code", "execution_count": 7, "id": "1fb967c4-40f1-4fb5-a098-c589fe7eef28", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
def clear(self):\n",
       "    """Clear the Axes."""\n",
       "    # Act as an alias, or as the superclass implementation depending on the\n",
       "    # subclass implementation.\n",
       "    if self._subclass_uses_cla:\n",
       "        self.cla()\n",
       "    else:\n",
       "        self.__clear()\n",
       "
\n" ], "text/latex": [ "\\begin{Verbatim}[commandchars=\\\\\\{\\}]\n", "\\PY{k}{def} \\PY{n+nf}{clear}\\PY{p}{(}\\PY{n+nb+bp}{self}\\PY{p}{)}\\PY{p}{:}\n", "\\PY{+w}{ }\\PY{l+s+sd}{\\PYZdq{}\\PYZdq{}\\PYZdq{}Clear the Axes.\\PYZdq{}\\PYZdq{}\\PYZdq{}}\n", " \\PY{c+c1}{\\PYZsh{} Act as an alias, or as the superclass implementation depending on the}\n", " \\PY{c+c1}{\\PYZsh{} subclass implementation.}\n", " \\PY{k}{if} \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{\\PYZus{}subclass\\PYZus{}uses\\PYZus{}cla}\\PY{p}{:}\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{cla}\\PY{p}{(}\\PY{p}{)}\n", " \\PY{k}{else}\\PY{p}{:}\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{\\PYZus{}\\PYZus{}clear}\\PY{p}{(}\\PY{p}{)}\n", "\\end{Verbatim}\n" ], "text/plain": [ "def clear(self):\n", " \"\"\"Clear the Axes.\"\"\"\n", " # Act as an alias, or as the superclass implementation depending on the\n", " # subclass implementation.\n", " if self._subclass_uses_cla:\n", " self.cla()\n", " else:\n", " self.__clear()" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "src_dict = cgt.get_multiple_source_code('LambertAxes', 'GeoAxes', 'Axes')\n", "\n", "Code(src_dict['Axes'], language=\"python\")" ] }, { "cell_type": "code", "execution_count": 8, "id": "840cd027-fccf-4693-be9a-10cbf8b153cf", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
def clear(self):\n",
       "    # docstring inherited\n",
       "    super().clear()\n",
       "\n",
       "    self.set_longitude_grid(30)\n",
       "    self.set_latitude_grid(15)\n",
       "    self.set_longitude_grid_ends(75)\n",
       "    self.xaxis.set_minor_locator(NullLocator())\n",
       "    self.yaxis.set_minor_locator(NullLocator())\n",
       "    self.xaxis.set_ticks_position('none')\n",
       "    self.yaxis.set_ticks_position('none')\n",
       "    self.yaxis.set_tick_params(label1On=True)\n",
       "    # Why do we need to turn on yaxis tick labels, but\n",
       "    # xaxis tick labels are already on?\n",
       "\n",
       "    self.grid(mpl.rcParams['axes.grid'])\n",
       "\n",
       "    Axes.set_xlim(self, -np.pi, np.pi)\n",
       "    Axes.set_ylim(self, -np.pi / 2.0, np.pi / 2.0)\n",
       "
\n" ], "text/latex": [ "\\begin{Verbatim}[commandchars=\\\\\\{\\}]\n", "\\PY{k}{def} \\PY{n+nf}{clear}\\PY{p}{(}\\PY{n+nb+bp}{self}\\PY{p}{)}\\PY{p}{:}\n", " \\PY{c+c1}{\\PYZsh{} docstring inherited}\n", " \\PY{n+nb}{super}\\PY{p}{(}\\PY{p}{)}\\PY{o}{.}\\PY{n}{clear}\\PY{p}{(}\\PY{p}{)}\n", "\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{set\\PYZus{}longitude\\PYZus{}grid}\\PY{p}{(}\\PY{l+m+mi}{30}\\PY{p}{)}\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{set\\PYZus{}latitude\\PYZus{}grid}\\PY{p}{(}\\PY{l+m+mi}{15}\\PY{p}{)}\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{set\\PYZus{}longitude\\PYZus{}grid\\PYZus{}ends}\\PY{p}{(}\\PY{l+m+mi}{75}\\PY{p}{)}\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{xaxis}\\PY{o}{.}\\PY{n}{set\\PYZus{}minor\\PYZus{}locator}\\PY{p}{(}\\PY{n}{NullLocator}\\PY{p}{(}\\PY{p}{)}\\PY{p}{)}\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{yaxis}\\PY{o}{.}\\PY{n}{set\\PYZus{}minor\\PYZus{}locator}\\PY{p}{(}\\PY{n}{NullLocator}\\PY{p}{(}\\PY{p}{)}\\PY{p}{)}\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{xaxis}\\PY{o}{.}\\PY{n}{set\\PYZus{}ticks\\PYZus{}position}\\PY{p}{(}\\PY{l+s+s1}{\\PYZsq{}}\\PY{l+s+s1}{none}\\PY{l+s+s1}{\\PYZsq{}}\\PY{p}{)}\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{yaxis}\\PY{o}{.}\\PY{n}{set\\PYZus{}ticks\\PYZus{}position}\\PY{p}{(}\\PY{l+s+s1}{\\PYZsq{}}\\PY{l+s+s1}{none}\\PY{l+s+s1}{\\PYZsq{}}\\PY{p}{)}\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{yaxis}\\PY{o}{.}\\PY{n}{set\\PYZus{}tick\\PYZus{}params}\\PY{p}{(}\\PY{n}{label1On}\\PY{o}{=}\\PY{k+kc}{True}\\PY{p}{)}\n", " \\PY{c+c1}{\\PYZsh{} Why do we need to turn on yaxis tick labels, but}\n", " \\PY{c+c1}{\\PYZsh{} xaxis tick labels are already on?}\n", "\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{grid}\\PY{p}{(}\\PY{n}{mpl}\\PY{o}{.}\\PY{n}{rcParams}\\PY{p}{[}\\PY{l+s+s1}{\\PYZsq{}}\\PY{l+s+s1}{axes.grid}\\PY{l+s+s1}{\\PYZsq{}}\\PY{p}{]}\\PY{p}{)}\n", "\n", " \\PY{n}{Axes}\\PY{o}{.}\\PY{n}{set\\PYZus{}xlim}\\PY{p}{(}\\PY{n+nb+bp}{self}\\PY{p}{,} \\PY{o}{\\PYZhy{}}\\PY{n}{np}\\PY{o}{.}\\PY{n}{pi}\\PY{p}{,} \\PY{n}{np}\\PY{o}{.}\\PY{n}{pi}\\PY{p}{)}\n", " \\PY{n}{Axes}\\PY{o}{.}\\PY{n}{set\\PYZus{}ylim}\\PY{p}{(}\\PY{n+nb+bp}{self}\\PY{p}{,} \\PY{o}{\\PYZhy{}}\\PY{n}{np}\\PY{o}{.}\\PY{n}{pi} \\PY{o}{/} \\PY{l+m+mf}{2.0}\\PY{p}{,} \\PY{n}{np}\\PY{o}{.}\\PY{n}{pi} \\PY{o}{/} \\PY{l+m+mf}{2.0}\\PY{p}{)}\n", "\\end{Verbatim}\n" ], "text/plain": [ "def clear(self):\n", " # docstring inherited\n", " super().clear()\n", "\n", " self.set_longitude_grid(30)\n", " self.set_latitude_grid(15)\n", " self.set_longitude_grid_ends(75)\n", " self.xaxis.set_minor_locator(NullLocator())\n", " self.yaxis.set_minor_locator(NullLocator())\n", " self.xaxis.set_ticks_position('none')\n", " self.yaxis.set_ticks_position('none')\n", " self.yaxis.set_tick_params(label1On=True)\n", " # Why do we need to turn on yaxis tick labels, but\n", " # xaxis tick labels are already on?\n", "\n", " self.grid(mpl.rcParams['axes.grid'])\n", "\n", " Axes.set_xlim(self, -np.pi, np.pi)\n", " Axes.set_ylim(self, -np.pi / 2.0, np.pi / 2.0)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Code(src_dict['GeoAxes'], language=\"python\")" ] }, { "cell_type": "code", "execution_count": 9, "id": "be352520-f25f-49ef-99e2-6c3c86892006", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
def clear(self):\n",
       "    # docstring inherited\n",
       "    super().clear()\n",
       "    self.yaxis.set_major_formatter(NullFormatter())\n",
       "
\n" ], "text/latex": [ "\\begin{Verbatim}[commandchars=\\\\\\{\\}]\n", "\\PY{k}{def} \\PY{n+nf}{clear}\\PY{p}{(}\\PY{n+nb+bp}{self}\\PY{p}{)}\\PY{p}{:}\n", " \\PY{c+c1}{\\PYZsh{} docstring inherited}\n", " \\PY{n+nb}{super}\\PY{p}{(}\\PY{p}{)}\\PY{o}{.}\\PY{n}{clear}\\PY{p}{(}\\PY{p}{)}\n", " \\PY{n+nb+bp}{self}\\PY{o}{.}\\PY{n}{yaxis}\\PY{o}{.}\\PY{n}{set\\PYZus{}major\\PYZus{}formatter}\\PY{p}{(}\\PY{n}{NullFormatter}\\PY{p}{(}\\PY{p}{)}\\PY{p}{)}\n", "\\end{Verbatim}\n" ], "text/plain": [ "def clear(self):\n", " # docstring inherited\n", " super().clear()\n", " self.yaxis.set_major_formatter(NullFormatter())" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Code(src_dict['LambertAxes'], language=\"python\")" ] }, { "cell_type": "markdown", "id": "ae4ad5b6-c3c5-4065-9cf3-1d235e15c7b2", "metadata": {}, "source": [ "Additionally, from a Jupyter notebook, you can use `cgt.display_code_comparison()` to spawn the Code Comparison Widget (see the Examples page for a demonstration)." ] }, { "cell_type": "markdown", "id": "b7cc55e8-552e-44c9-b354-061c513a69ba", "metadata": {}, "source": [ "### Interactive Graph\n", "\n", "In a jupyter notebook, you can construct a pyvis interactive graph from a `ClassGraphTree` instance, `cgt` with:\n", "\n", "```python\n", "graph = cgt.build_interactive_graph(width=\"400px\",\n", " height=\"400px\",\n", " bgcolor='#222222',\n", " font_color='white') # constructs a pyvis interactive graph\n", "graph.show('_tmp.html') # render the pyvis interactive graph here!\n", "```\n" ] }, { "cell_type": "markdown", "id": "52f6c762-6c42-46b2-af01-07ad36ba1c35", "metadata": {}, "source": [ "### Limitations\n", "\n", "Note that while the class inheritance structures **should** be well behaved for most code bases, the source code comparison is limited by the type limitations of the underlying `inspect` library. \n", "\n", "The `sum` method for numpy arrays, for example, is a `method_descriptor`:" ] }, { "cell_type": "code", "execution_count": 10, "id": "0fae710a-ea9f-4c3a-9d65-610acf0ccd8c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "method_descriptor" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(np.ndarray.sum)" ] }, { "cell_type": "markdown", "id": "c4b13035-a32b-413f-b26c-609ff1e2f3e3", "metadata": {}, "source": [ "which `inspect.get_source` cannot handle. So if we try to track `sum` across the class structure with:\n", "\n", "```python\n", "base_class = np.ndarray\n", "cgt = ClassGraphTree(base_class, funcname = 'sum')\n", "```\n", "\n", "we will get a `TypeError` similar to the following:\n", "\n", "```\n", "--> 677 raise TypeError('module, class, method, function, traceback, frame, or '\n", " 678 'code object was expected, got {}'.format(\n", " 679 type(object).__name__))\n", "\n", "TypeError: module, class, method, function, traceback, frame, or code object was expected, got method_descriptor\n", "```" ] }, { "cell_type": "code", "execution_count": null, "id": "2c97fcaf-5cdf-4e38-a1af-4fe9660884ac", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "53bd4234-de2d-4b4b-a090-b9fcde9bff5e", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.0" } }, "nbformat": 4, "nbformat_minor": 5 }