{"id":43496635,"url":"https://github.com/quarkslab/numbat","last_synced_at":"2026-02-03T10:38:37.734Z","repository":{"id":226213580,"uuid":"728707398","full_name":"quarkslab/numbat","owner":"quarkslab","description":"Library to manipulate and create Sourcetrail databases","archived":false,"fork":false,"pushed_at":"2025-05-27T13:31:37.000Z","size":6127,"stargazers_count":23,"open_issues_count":0,"forks_count":1,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-09-25T16:13:10.539Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://quarkslab.github.io/numbat/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quarkslab.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2023-12-07T14:17:43.000Z","updated_at":"2025-06-07T01:36:35.000Z","dependencies_parsed_at":"2024-07-31T16:28:28.077Z","dependency_job_id":"7888da13-a03d-4f87-b72b-3a21297f7e1f","html_url":"https://github.com/quarkslab/numbat","commit_stats":null,"previous_names":["quarkslab/numbat"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/quarkslab/numbat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarkslab%2Fnumbat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarkslab%2Fnumbat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarkslab%2Fnumbat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarkslab%2Fnumbat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quarkslab","download_url":"https://codeload.github.com/quarkslab/numbat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quarkslab%2Fnumbat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29041866,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T10:09:22.136Z","status":"ssl_error","status_checked_at":"2026-02-03T10:09:16.814Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-02-03T10:38:37.092Z","updated_at":"2026-02-03T10:38:37.725Z","avatar_url":"https://github.com/quarkslab.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Numbat\n\n\u003cimg align=\"right\" src=\"numbat.png\" width=\"250\"\u003e\n\nNumbat is an API to create and manipulate Sourcetrail databases. [Sourcetrail](https://github.com/CoatiSoftware/Sourcetrail) is a code source\nexplorer which allows users to navigate through the different components (functions, classes, types, etc.) easily.\n\nNumbat main goal is to offer a full-python SDK given the fact that the current one, SourcetrailDB cannot be used anymore efficiently. It is not user-friendly at first sight, need to be compiled to provide Python bindings and, moreover, it is no longer maintained. Finally, we have added some little new features as finding an element in the database.\n\nWith Numbat, you will be able to visualize your data quickly with the nice graphical Sourcetrail interface. For example, [Pyrrha](https://quarkslab.github.io/pyrrha/) uses Numbat to map firmware structure.\n\n\n\n## Installation\n\nNumbat is available on `pypi`.\n```bash\npip install numbat\n```\n\n### From sources\nYou can also install it from the `git` repository. Either using the following oneliner:\n```bash\npip install 'numbat @ git+https://github.com/quarkslab/numbat'\n```\nor doing it in few steps:\n```bash\n# Download the repo\ngit clone git@github.com:quarkslab/numbat.git\ncd numbat\n# Install numbat locally\npip install .\n```\n\n### Build Documentation\nIf you want to build the documentation by first installing Numbat with the required `[doc]` dependencies and then serve the documentation on a local server.\n\n```bash\n# if you already have a local clone of the project\ncd NUMBAT_DIR\npip install .[doc]\n\n# otherwise\npip install 'numbat[doc]'\n\n# serve doc locally\nmkdocs serve\n```\n\n## Basic Usage\n\nA complete usage with examples is available in the [documentation](https://quarkslab.github.io/numbat/tutorial/) but here is a quick usage to begin with Numbat.\n\nTo use Numbat, you must first create a `SourcetrailDB` object and either create a new database or open an existing one:\n\n```python\nfrom pathlib import Path\nfrom numbat import SourcetrailDB\n\n# Create DB\ndb = SourcetrailDB.open(Path('my_db'), clear=True)\n\n# Create a first class containing the method 'main'\nmy_main = db.record_class(name=\"MyMainClass\")\nmeth_id = db.record_method(name=\"main\", parent_id=my_main)\n\n# Create a second class with a public field 'first_name'\nclass_id = db.record_class(name=\"PersonalInfo\")\nfield_id = db.record_field(name=\"first_name\", parent_id=class_id)\n\n# The method 'main' is using the 'first_name' field\ndb.record_ref_usage(meth_id, field_id)\n\n# Save modifications and close the DB\ndb.commit()\ndb.close()\n```\n\n## Authors \u0026 Maintainers\n\n### Current\n- Sami Babigeon (@sbabigeon), Quarkslab\n- Eloïse Brocas (@ebrocas), Quarkslab\n\n### Past\n- Pascal Wu (@pwu42), during his internship at Quarkslab\n\nThe logo is a creation of Benoît Forgette and Sami Babigeon.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquarkslab%2Fnumbat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquarkslab%2Fnumbat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquarkslab%2Fnumbat/lists"}