{"id":19224424,"url":"https://github.com/hermann-web/inspect-recursive","last_synced_at":"2025-07-17T01:33:16.364Z","repository":{"id":233579312,"uuid":"787474861","full_name":"Hermann-web/inspect-recursive","owner":"Hermann-web","description":null,"archived":false,"fork":false,"pushed_at":"2024-10-30T03:21:15.000Z","size":26,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-23T10:16:00.759Z","etag":null,"topics":["inspect","recursive","rich","traceback"],"latest_commit_sha":null,"homepage":"https://inspect-recursive.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hermann-web.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-04-16T15:37:04.000Z","updated_at":"2024-10-30T03:21:18.000Z","dependencies_parsed_at":"2025-06-11T20:06:11.711Z","dependency_job_id":null,"html_url":"https://github.com/Hermann-web/inspect-recursive","commit_stats":null,"previous_names":["hermann-web/inspect-recursive"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Hermann-web/inspect-recursive","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hermann-web%2Finspect-recursive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hermann-web%2Finspect-recursive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hermann-web%2Finspect-recursive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hermann-web%2Finspect-recursive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hermann-web","download_url":"https://codeload.github.com/Hermann-web/inspect-recursive/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hermann-web%2Finspect-recursive/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259330201,"owners_count":22841577,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["inspect","recursive","rich","traceback"],"created_at":"2024-11-09T15:11:38.991Z","updated_at":"2025-06-11T20:06:30.527Z","avatar_url":"https://github.com/Hermann-web.png","language":"Python","readme":"# Inspect Recursive\n\nInspect Recursive is a Python package that provides functionality for inspecting the structure of Python objects recursively.\n\n## Features\n\n- Inspect the structure of Python objects, including nested dictionaries, lists, and other iterable objects.\n- Print the structure of objects as a tree, displaying their types and contents.\n- Handle specific types like NumPy arrays and pandas DataFrames, if installed.\n\n## Installation\n\nYou can install Inspect Recursive using pip:\n\n```bash\npip install inspect-recursive\n```\n\n## Usage\n\n### inspect_object_structure\n\n- Example 1: Inspecting a simple dictionary\n\n```python\nimport inspect_recursive as ipr\n\nsimple_dict = {\"a\": 1, \"b\": 2, \"c\": 3}\nipr.what(simple_dict)\n```\n\n```output\n\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003cinspector\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\n- object : \u003cclass 'dict'\u003e\n  \u003elen=3 content-type=\u003cclass 'str'\u003e vals=\"['a', 'b', 'c']\"\n  - idx0 : \u003cclass 'str'\u003e\n    \u003eval=\"'a'\"\n  - idx1 : \u003cclass 'str'\u003e\n    \u003eval=\"'b'\"\n\u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e\n```\n\n- Example 2: Inspecting a nested dictionary\n\n```python\nimport inspect_recursive as ipr\nnested_dict = {\"a\": {\"x\": 1, \"y\": 2}, \"b\": {\"z\": 3}}\nwhat(nested_dict)\n```\n\n```output\n\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003cinspector\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\n- object : \u003cclass 'dict'\u003e\n  \u003elen=2 content-type=\u003cclass 'str'\u003e vals=\"['a', 'b']\"\n  - idx0 : \u003cclass 'str'\u003e\n    \u003eval=\"'a'\"\n  - idx1 : \u003cclass 'str'\u003e\n    \u003eval=\"'b'\"\n\u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e\n```\n\n- Example 3: Inspecting a list of strings\n\n```python\nlist_of_strings = [\"apple\", \"banana\", \"cherry\"]\nwhat(list_of_strings)\n```\n\n```output\n\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003cinspector\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\n- object : \u003cclass 'list'\u003e\n  \u003elen=3 content-type=\u003cclass 'str'\u003e vals=\"['apple', 'banana', 'cherry']\"\n  - idx0 : \u003cclass 'str'\u003e\n    \u003eval=\"'apple'\"\n  - idx1 : \u003cclass 'str'\u003e\n    \u003eval=\"'banana'\"\n\u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e\n```\n\n- Example 4: Inspecting a more complex object\n\n```python\nimport open3d as o3d\n\nopen3d_mesh = o3d.io.read_point_cloud(ply_filepath)\n\nwhat(open3d_mesh, max_depth=6, thresh_iter_list=5, thresh_iter_dict=5)\n```\n\n```output\n\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003cinspector\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c\n- object : \u003cclass 'open3d.geometry.PointCloud'\u003e\n  \u003elen=1000 content-type=\u003cclass 'open3d.utility.Vector3dVector'\u003e\n  - idx0 : \u003cclass 'open3d.utility.Vector3d'\u003e\n    \u003eval=\"Vector3d(0.002537, -0.01984, -0.08411)\"\n  - idx1 : \u003cclass 'open3d.utility.Vector3d'\u003e\n    \u003eval=\"Vector3d(-0.02286, -0.04225, -0.07801)\"\n  - idx2 : \u003cclass 'open3d.utility.Vector3d'\u003e\n    \u003eval=\"Vector3d(-0.03108, -0.04534, -0.0755)\"\n  ...\n  \u003elen=3 content-type=\u003cclass 'numpy.ndarray'\u003e ...\n  \u003elen=2 content-type=\u003cclass 'dict'\u003e ...\n  ...\n\u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e \u003e\n```\n\n## Contributing\n\nContributions are welcome! Please feel free to open issues or submit pull requests on [GitHub](https://github.com/yourusername/inspect-recursive).\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhermann-web%2Finspect-recursive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhermann-web%2Finspect-recursive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhermann-web%2Finspect-recursive/lists"}