{ "cells": [ { "cell_type": "markdown", "id": "4bd50a68-5516-4d25-adf5-d7f23e9a6c5f", "metadata": {}, "source": [ "## Inheritance Scope\n", "\n", "When traversing an inheritance structure, the `inheritance_explorer` will by default walk any subclasses that are available within the scope of the python session. There are a number of ways to limit or change the scope of available subclasses." ] }, { "cell_type": "markdown", "id": "dc19dda3-7b42-4863-989c-8fb6bbaef2d1", "metadata": {}, "source": [ "### Starting class\n", "\n", "The most obvious way to control the extent of the graph is to select a starting class below branch points. \n", "\n", "For example, the following maps from the `QAbstractButton` class of `QtWidgets`, showing all of the button-related QT widgets wrapped by `qtpy`:" ] }, { "cell_type": "code", "execution_count": 1, "id": "907bbb15-f51a-468e-a25b-60c20d3ed48c", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 1, "metadata": { "image/png": { "unconfined": true } }, "output_type": "execute_result" } ], "source": [ "from inheritance_explorer import ClassGraphTree\n", "from qtpy.QtWidgets import QAbstractButton, QPushButton\n", "\n", "cgt = ClassGraphTree(QAbstractButton)#, max_recursion_level=2)#, classes_to_exclude=('QAbstractButton', 'QDialog'))\n", "cgt.show_graph()" ] }, { "cell_type": "markdown", "id": "e5b86ddc-1c50-4ad4-9767-7cdc587b064b", "metadata": {}, "source": [ "If we instead map from `QPushButton`, we'll obviously only get that branch:" ] }, { "cell_type": "code", "execution_count": 2, "id": "b10165d4-154d-444a-b175-81fa7f9cd32d", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 2, "metadata": { "image/png": { "unconfined": true } }, "output_type": "execute_result" } ], "source": [ "cgt = ClassGraphTree(QPushButton)\n", "cgt.show_graph()" ] }, { "cell_type": "markdown", "id": "9d3cd217-c406-4c69-98c1-b585a093976f", "metadata": {}, "source": [ "### Recursion level\n", "\n", "We can also set the `max_recursion_level` argument to note how far down we want to go. In the following, we map out only the immediate children of `QAbstractButton`:" ] }, { "cell_type": "code", "execution_count": 3, "id": "63767862-4b28-4745-91e2-876aa8516b1d", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 3, "metadata": { "image/png": { "unconfined": true } }, "output_type": "execute_result" } ], "source": [ "cgt = ClassGraphTree(QAbstractButton, max_recursion_level=0)\n", "cgt.show_graph()" ] }, { "cell_type": "markdown", "id": "4b3d45c3-747d-4f1a-bab1-ea533cdd46fb", "metadata": {}, "source": [ "### Excluding branches\n", "\n", "By setting the `classes_to_exclude` argument, we can easily prune branches, leaving only those of interest:" ] }, { "cell_type": "code", "execution_count": 4, "id": "9136f80e-9005-4b70-944f-0cc61b210ed6", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAD7CAYAAABt0P8jAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdeVxU9f4/8NewDjPDDsOOKCKrioqIAgYuSe6VpeWSaWV1y+p3u5ZZX++tvm22WKa3QrOyMq3rbiqg4IIb4hIiKILsywzLwCwMDDPv3x9+51xHUFFhBpjP8/E4D50zy3nP8JnXWeacz4dHRASGYRjGbFiYugCGYRjGuFjwMwzDmBkW/AzDMGbGytQFMAzTMblcjra2NqjVajQ3N0On06GxsZG7X6FQQKPRdPjc1tZWKJXKW742n8+HnZ1dh/dZWFjA0dGRuy0SiWBtbQ0bGxsIhULweDw4OTnd47tiegIW/AxznzQaDerr61FfX4+GhgY0NTVBLpejsbERSqUSSqUSTU1NaGpqglKphEqlgkwmg0Kh4O7XBzURQSaTmfotdZq9vT2srKy4FQmfz4dQKISjoyPs7e0hEAggFArh7OwMoVAIoVAIkUgEJycnCIVCODg4wNnZGS4uLnBxcQGfzzf1WzILPHZWD8P8V1tbGyQSCSQSCaqqqiCRSCCVSlFXV8eF+41TQ0MD5HJ5h6/l6OgIoVAIgUDABaH+tj4IBQIBF5729vYAACcnJ/B4PAiFQtjY2HBb2gDg7OzMvb6trS0EAkGHy77TVvnt9hZaWlqgUqm4201NTdBqtdyeh1arRVNTEwCgsbEROp0OKpWKe55KpeJWdCqVCkqlklvRqVQqKBQKyGQydBQ9+s9GvyLQT/p5Hh4eEIvFEIvF8PLyglgshq2t7S3fJ9MxFvyMWdBoNKisrERZWRlKSkpQUVGBqqoqSKVSVFVVoaamBlKpFBKJxOB5dnZ2cHd3h6urK1xcXLh/Owon/XxHR0eIRCITvdPeo7m5GY2NjdwKtKOV6s3zampqoFAoDF7HyckJnp6eEIvF8PT0hKenJ9zd3eHn52cwsb2J/2LBz/QJCoUCV69eRWlpKYqLi1FWVsZNJSUlqK6uhlarBQBYW1vDy8sL3t7eEIvF8PDw6DA4vL29ua1wpudQqVSoqalBdXU1t2emX3FXVlZCIpGgpqYG5eXlUKvV3PM8PT3h5+cHX19f+Pv7o1+/fvDz84O/vz8GDhwIFxcXE74r42LBz/QaarUalZWVyM3NxaVLl1BUVMRNxcXF0Ol0AK4fDtEH+4ABAzBgwACD2/369YOlpaWJ3w1jDA0NDaisrERVVRXXVm68XVpaira2NgDX242+vXQ09SUs+JkeRyaTITc3FxcvXkROTg4X9PrDMJaWlujXrx8GDhxoMAUFBSEgIIDt0jOdptFoUFZWhqtXr3JTQUEBCgoKcO3aNbS2tgK4fjgpODgYgwcPRkREBDd5eHiY+B3cGxb8jMlotVrk5eXh3LlzBiFfWloKAHBwcEB4eDgiIiIQFhaGoKAgDBw4EP3794eNjY2Jq2f6Oq1Wi9LSUm6FcOnSJeTm5iInJwe1tbUAAHd3dwwePBjh4eEYPHgwIiMjMXTo0B7fPlnwM0ZTWVmJ7OxsbsrMzERDQwOsra0RFBSE8PBwhIWFcf+GhobCwoJdY8j0PA0NDdyeaG5uLrKzs3HhwgUoFApYWVlh0KBBGDFiBEaMGIG4uDgMGzasR7VlFvxMt9BoNDh9+jQyMjJw/PhxZGVlQSqVwsrKCuHh4Rg5ciQ3RUREwNra2tQlM8x9ISJcvnwZWVlZ3HT+/Hmo1WrY29tjxIgRGD16NBISEhAbG8udomsKLPiZLqHVapGdnY309HRkZGTg6NGjUCqV8PX1xdixY7mQHzZs2C3PPWeYvkaj0SAnJ4dbEWRmZiI/Px82NjaIjo7GuHHjkJCQgNGjRxv1tykW/Mw9k0ql2L17N3bt2oX09HQ0NTXB09MTiYmJSEhIQGJiIoKCgkxdJsP0KJWVlUhPT+c2kgoLC8Hn8zFmzBhMnz4dM2bMQEBAQLfWwIKfuStFRUXYsWMHdu7ciczMTNjY2GDChAlISkpCQkICwsLCTF0iw/QqpaWlSE9PR0pKCv7880/IZDJERkZi5syZmDFjBiIjI7t8mSz4mTuqra3FTz/9hB9//BF//fUXXFxcMGXKFMyYMQNJSUkmPVbJMH2JRqNBRkYGduzYgV27dqG8vBwBAQGYN28eFi1ahP79+3fJcljwMx0iIhw6dAjJycnYsWMH+Hw+nnjiCTz22GMYO3YsrKxY/34M052ICGfOnMG2bdvw008/obq6GuPHj8ezzz6LGTNm3Ncpoyz4GQNKpRLfffcd1q5di8LCQowZMwbPPvssHn/8cfajLMOYSFtbG/bu3Yvk5GTs378fLi4ueOaZZ/Dqq69CLBbf9eux4GcAXO8wa/Xq1fj888/R3NyMRYsWYcmSJQgPDzd1aQzD3KC8vBwbNmzAunXroFAo8Nxzz2HFihVwc3Pr/IsQY/Z+++038vPzI5FIRG+//TZJpVJTl8R0scLCQnrrrbfIy8uLrl27dtfPr6urIx8fH/rggw86/ZyrV6/Sm2++SR4eHlRWVnbXy2RuT6lU0pdffkmenp7k5OREn376KWk0mk49lwW/GaupqaGZM2cSj8ejxYsXU2VlpalLMlBdXU1vvPEGhYWFkZ2dHdnb29Po0aNp3bp11Nra2uFzGhoaaNWqVTRy5EhydnYmR0dHeuCBB+iXX36hv/76iz755BMjv4ueYfLkyWRjY0MA6Nq1a/TUU08RgHbTrVb6dXV15O3tTR9++OFdLdPa2poA3DL4Z8yY0WEdtra25OPjQzNnzqR9+/bd03tes2YNNTQ03HFebyeXy+ntt98mPp9P0dHRlJeXd8fnsOA3U+fOnSN/f3/q378/paenm7qcdlJSUsjZ2ZmmTJlCp0+fJrVaTRKJhDZs2EBubm4UHR1NVVVVBs85fvw4+fn5UVBQEG3evJkkEgkplUo6f/48vfjii8Tj8ej111830TsyvZUrV3LBT0RUWVlJYrGYeDwenT17ltra2rp8mStWrLht8BMRlZaWkoODAzk5OVF5eTm1tLRQVVUVbdu2jcLCwggAffnll3e1XIVCQQMGDDAI+Y7m9SW5ubkUHR1NDg4OtHv37ts+lgW/GTp37hw5OTlRXFwcSSQSU5fTTnZ2NtnZ2VFSUhLpdLp29+fk5BCfz6fhw4dTS0sLEREVFRWRs7MzDRw4kGQyWYev+9VXX9HTTz/drbX3ZGvXrjUIfiKioUOHkq2tbbct8/PPP79j8BMRBQYGkqura7v5VVVVZGlpSU5OTne13AULFhAAg5DvaF5fo9Fo6G9/+xtZWFjQ5s2bb/k4Fvxmpqqqitzd3SkpKYkLzZ4mNjaWAFB2dvYtH7Nw4UICQKtXryYiokcffZQA0LZt2275HJ1OR++88w53OyMjg8aOHUsCgYA8PDzo+eef50Lh6tWrtHz5cvLy8qKioiL6/PPPyc/Pj1xdXWnNmjVERPTll19yv43cuCdxP88lIiopKaFZs2aRm5sbCQQCGjNmDJ09e5aIiPLz8+kf//gHicViqqyspBUrVpCrqyt5eXnR1q1bDV4nMzOTYmNjyc7OjiIjI+nvf//7PQW/SqWin376icaOHUtvvvnmXdXxxRdfGAS/fg9AP+Xk5BDRrYNfpVKRQCAgkUhEWq2WLC0tuefqBQcHc/Pkcjk9++yz7Q4dPfHEE+3myeXyO7aDu/m8e5JXXnmFbGxs6PTp0x3ez4LfzDz++OMUGBhICoXC1KV0qLi4mACQi4vLbR+3Y8cOAkDR0dFUW1tLVlZWxOfzSa1Wd2o5KSkpZG9vT7t37ya5XE5btmwhoVBIUVFRpNFoaNKkSdzx6TfffJNOnjxJDQ0NNHnyZLKwsKDly5fTvn37SKlUcodQ9IfM7ue5RERRUVE0YcIEqqqqoitXrpCvry/FxMQQEVFcXBwXfkuXLqWzZ8+STCaj+Ph4cnJy4n7cO3nyJPH5fPrkk0+ooaGBtm7dSnZ2dvcU/D/99BM5OTkRAHrjjTfuqo6bgz8tLY0WLFhA2dnZ1NzczC0jMDCQXFxcSKVSkU6nI5VKRefOnaNp06YRAPr444+J6PpvOKGhoQbBX1dXR6NGjTII8w8//LDd1n1H8+7UDjr7PnsanU5HEydOpPDwcNJqte3uZ8FvRkpLS8nS0pJ+//13U5dyS/v37ycAFBERcdvHnT17lgCQvb09ZWZmEgAKDAzs1DJ0Oh0FBQXRSy+9ZDBfH8Lr1q0zuH358mXuMbt37yYAtGfPHm7e5cuXCQB988037V7rXp47fPhwWrt2LXf7qaeeInd3d+62fsv9xsMnn332GQGg8vJyIroe6ElJSQbvb8mSJfd8qKe8vNwg+Dtbx43B/8MPP9BLL73U4eG7wMDADn/ktbKyaveD/Msvv2wQ/ET/3ZO4m+DvbDvozPvsifLz84nH43X443jP6SCa6XaZmZmwtLTEjBkzTF3KLdH/XVaiH0bxVvTdRGg0GjQ2NgK4PjB6Z2RnZ6OgoABDhw41mP/cc88BAPbu3QsA3IUxN14hqR9E/cahG/X3azQabt79PDc7OxsvvvgiTp06hXnz5mHLli0dvvaNvTnqL67TaDS4cOECLly4gAcffNDg/d1Pny/u7u7t5t2pjhslJyfj008/xZo1a8Dj8TpchouLC5qbm6HValFbW4u9e/di1KhRWLZsGebMmcO1iY6uWL2Xni3vth105n32JMHBwRgyZAgOHz7c7j4W/Gakvr4ejo6OPbrve32vhGVlZbcN/8rKSgDAoEGDuP5LysvLuRXH7ZSUlAC4Pmj3jby9vSEQCLjXvp+BM+7nuRUVFXjooYewZMkSPPTQQ5g9e7bB+7rTa+fl5QHoOKzvVUfLvJv3WFpaiosXLyI5OfmWj+HxeODz+bCwsICrqysmT56MgwcPIiwsDFu2bMGPP/54T7XfijHagam5u7ujrq6u3fze+46YuxYQEIDa2lpu7NqeKCQkBMHBwZDL5Th69OgtH5eamgoAmDVrFkJCQhASEgKZTNbh1s3NfHx8APw3IG9kZWVl0oG1FQoF4uPj4ejoiOzsbMydO/eut2b1W8T6ISzvx/bt27lhBu/HP//5T8THx+O1115DQUFBp59na2uLiRMnAgBOnz5933XcqCe3g66g0+mQl5fX4ftgwW9Gxo0bB2dnZ6xbt87UpdzWqlWrAABvvvlmh7vSJSUlWLduHQICAvDqq68aPOfll19GU1NTh68rl8uxceNGDBs2DH5+fvjtt9+gUCi4+8vLy9HU1ITZs2cD+O9uvFar5R6j3wvpaF5bWxs3716fe/ToUVy7dg2LFi0yOCR04xa/Wq2+7euMGjUKFhYW+PXXXzvca5JKpQa3b7WXpNVqsWfPHri5uXHv58b3eKc6AHCDlQPA5s2bwefzMXfuXIP5t6PT6XDy5EkA1w9dAOD2WG/82zU3Nxu8N/3hpBvf283zOtsOOvM+e6Lt27ejsrISjz76aLv7WPCbET6fj+XLl+Ojjz7C2bNnTV3OLU2bNg2rV6/GqVOnMGnSJJw4cQItLS2QyWTYsmUL4uPjYW9vj3379sHe3h4AMHXqVKxbtw55eXkYPnw4fvjhB1RUVECj0aC6uhq//PIL3nzzTcyePRu2trb49NNPIZPJMHfuXFRWVqKqqgovvPACJk2ahFmzZqG1tRXp6ekAgPT0dOh0OrS1teHAgQMAgMOHD6OtrQ1EhLS0NABARkYGWlpa7uu53t7eAIBffvkFjY2N+P3335GZmQmVSoVLly7hwIEDOHbsGPfaRMR15QsAhw4dgre3N55//nnk5uZiwYIFKCsrQ1FREbZv3w4AePDBB/Hxxx+jsrIS1dXVaG1tRW5uLheIarUa+fn5ePzxx7n+Xw4dOgQAOHHiBJqbm9HS0nLHOpRKJbcHlpGRAS8vL/z888/Izs7GkiVLuCAtKSmBVCpFW1sbcnNz0djYCLlcjtOnT+ORRx7BqVOnEBYWhmeeeQYAEBgYCADYsGEDlEolNmzYgBMnTgAAoqKisGHDBjg7OwO4fhx//fr1qKioaDevtrb2ju2gM++zM4cXja26uhovv/wy5s+f3/FgSEb5eZnpMdra2mjixIkkFospNzfX1OXc1smTJykpKYl4PB53loezszO99tprVFdX1+FzcnJyaNGiRRQQEEC2trbk4uJCsbGxlJyc3O60tj/++IM7q8Xf35/eeust7nTQKVOmGJxdsnLlSpo7d67BvNmzZ3NngOinKVOm3NdziYiWLVtGDg4OFBERQdu2baNNmzaRUCik1157jeLj4w2es2rVKu5URv20Zs0aamtro7feeovc3d1JJBLR/Pnz6cMPP6TIyEhau3YtzZw5s8OzaG6e0tLSaPv27Qbzhg4dSg888MAd67h5eu+999qdx3+ricfjkVAopLCwMFq2bJnB31ulUtEjjzxCfD6fwsPDKT09nd5//32KiYmhDRs2kEKhoLq6OhozZgy5u7vTr7/+SkTU4bw7tYPOvE/9tRk9hUQioSFDhlBwcDDV19d3+BjWO6cZUiqVmDx5Mi5cuIBffvkFU6ZMMXVJt7V161bMnTsXbW1tSExMRGpqqsFhEIZhrjt//jwefvhhWFhYICMjA35+fh0+jh3qMUNCoRApKSl45JFHMG3aNCxZsuSWx8V7gscffxz79++Hq6sr0tPTsWTJkh59bJVhjE2j0eD999/HqFGjMGDAAJw+ffqWoQ+AHeoxd1u3biV3d3dydXWl1atX99grEYmudzcxb948srCwoJEjR9J//vMf1oU0Y/ZSU1MpIiKC+Hw+ffTRR53qbI8d6mFQX1+PTz75BKtXr4a3tzdeeeUVPP/887C1tTV1aR26evUqvv/+e6SmpqKurg5FRUWmLolhjC4tLQ3vvPMOTp48ialTp2L16tXcD993woKf4Vy9ehUffvghNm3aBLFYjEWLFmHRokXcRVUMw5hWXV0dNm3ahOTkZOTl5WHKlCl45513EB0dfVevw4KfaaekpATffPMNfvjhB0gkEkycOBHPPPMMpk+ffl8DPDMMc/eICIcOHcL69euxfft22NraYs6cOXjhhRfuuRsOFvzMLWk0Gm6A5wMHDsDFxQUzZ87EjBkzMH78+HvqH4VhmDvTarXIzMzEzp07sW3bNhQXF2P06NF45plnMHv2bK6vqnvFgp/plLKyMvz888/Y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\n", "text/plain": [ "" ] }, "execution_count": 4, "metadata": { "image/png": { "unconfined": true } }, "output_type": "execute_result" } ], "source": [ "cgt = ClassGraphTree(QAbstractButton, classes_to_exclude=('QRadioButton', 'QToolButton'))\n", "cgt.show_graph()" ] }, { "cell_type": "markdown", "id": "f9748d48-b730-4281-8644-957c6a8000c4", "metadata": {}, "source": [ "### Imported Packages\n", "\n", "Finally, because the `inheritance_explorer` is a dynamic walker, the resulting graph can change depending on what packages you have imported! If you import packages that subclass the parent of interest, then you'll get all those cases as well. \n", "\n", "For example, if we map `collecitons.defaultdict`, we get a simple inheritance structure:" ] }, { "cell_type": "code", "execution_count": 5, "id": "0ca5c2cf-67f7-46a9-84d1-626c7ba5437e", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 5, "metadata": { "image/png": { "unconfined": true } }, "output_type": "execute_result" } ], "source": [ "from inheritance_explorer import ClassGraphTree\n", "from collections import defaultdict\n", "cgt = ClassGraphTree(defaultdict)\n", "cgt.show_graph()" ] }, { "cell_type": "markdown", "id": "ef3d68d8-6f73-406c-b85e-2d751ae67093", "metadata": {}, "source": [ "But if we import a package that implements its own `defaultdict` child class and then re-map, we will get additional entries! \n", "\n", "In this case, we are importing `yt` which uses custom `defaultdict` implementations in a number of places:" ] }, { "cell_type": "code", "execution_count": 6, "id": "729d58ed-81a3-44e5-bf72-82786c86a262", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 6, "metadata": { "image/png": { "unconfined": true } }, "output_type": "execute_result" } ], "source": [ "import yt\n", "cgt = ClassGraphTree(defaultdict)\n", "cgt.show_graph()" ] }, { "cell_type": "code", "execution_count": null, "id": "ade10365-134a-41b6-8d6f-3253d8e9bb85", "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 }