
Python bindings for the [triskel](https://github.com/triskellib/triskel) library.
## Getting started
```
$ pip install pytriskel
```
```python
from pytriskel.pytriskel import *
builder = make_layout_builder()
# Build the graph
n1 = builder.make_node("Hello")
n2 = builder.make_node("World")
builder.make_edge(n1, n2)
# Measure node size using font size
png_renderer = make_png_renderer()
builder.measure_nodes(png_renderer)
# Export an image
layout = builder.build()
layout.save(png_renderer, "out.png")
```
Raw data
{
"_id": null,
"home_page": "https://github.com/triskellib/triskel",
"name": "pytriskel",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "cfg, visualization, reverse-engineering",
"author": "Jack Royer",
"author_email": "jack.royer@inria.fr",
"download_url": null,
"platform": null,
"description": "\n\nPython bindings for the [triskel](https://github.com/triskellib/triskel) library.\n\n## Getting started\n\n```\n$ pip install pytriskel\n```\n\n```python\nfrom pytriskel.pytriskel import *\n\nbuilder = make_layout_builder()\n\n# Build the graph\nn1 = builder.make_node(\"Hello\")\nn2 = builder.make_node(\"World\")\nbuilder.make_edge(n1, n2)\n\n# Measure node size using font size\npng_renderer = make_png_renderer()\nbuilder.measure_nodes(png_renderer)\n\n# Export an image\nlayout = builder.build()\nlayout.save(png_renderer, \"out.png\")\n```\n",
"bugtrack_url": null,
"license": "MPL2.0",
"summary": "CFG visualization library",
"version": "0.2.0",
"project_urls": {
"Homepage": "https://github.com/triskellib/triskel"
},
"split_keywords": [
"cfg",
" visualization",
" reverse-engineering"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "034b04abab37bfede70abbfe6fee813787e4bdb14143d7a6ea85b8ab2ae39a22",
"md5": "f26717046e5a6dee1cffaf39ca995984",
"sha256": "8c270bf0c78dd8e1d24231d1c8ede9476c49b98171a1e10db631576497436455"
},
"downloads": -1,
"filename": "pytriskel-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "f26717046e5a6dee1cffaf39ca995984",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 3996748,
"upload_time": "2025-02-17T14:52:24",
"upload_time_iso_8601": "2025-02-17T14:52:24.244607Z",
"url": "https://files.pythonhosted.org/packages/03/4b/04abab37bfede70abbfe6fee813787e4bdb14143d7a6ea85b8ab2ae39a22/pytriskel-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "da9d93938ba88ada8dd24afd5f0b0155e1c4768183e2cb19249cd3277dd62d5f",
"md5": "abd237098d681c2cc223c8d9db76a64c",
"sha256": "eb113648918c9cb0011394452abd3c8db75e190edc57cb81e7f1c16887ca736c"
},
"downloads": -1,
"filename": "pytriskel-0.2.0-cp311-cp311-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "abd237098d681c2cc223c8d9db76a64c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 3998164,
"upload_time": "2025-02-17T14:52:26",
"upload_time_iso_8601": "2025-02-17T14:52:26.840596Z",
"url": "https://files.pythonhosted.org/packages/da/9d/93938ba88ada8dd24afd5f0b0155e1c4768183e2cb19249cd3277dd62d5f/pytriskel-0.2.0-cp311-cp311-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "eb3908869d908d48d0e94f816759a76c45bc572f8f13b2da1ef825a258809d17",
"md5": "1339ebda174774ae6be27f2840a6758f",
"sha256": "f0b30c34af6694ae89119d3ccb88ca7fbe175f4ad6dbfab21501df9a2449c7ef"
},
"downloads": -1,
"filename": "pytriskel-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "1339ebda174774ae6be27f2840a6758f",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 3999554,
"upload_time": "2025-02-17T14:52:52",
"upload_time_iso_8601": "2025-02-17T14:52:52.250760Z",
"url": "https://files.pythonhosted.org/packages/eb/39/08869d908d48d0e94f816759a76c45bc572f8f13b2da1ef825a258809d17/pytriskel-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "39c3fd7f22045ba8c92c090df102276b4b874736fd9a1060d0174032371baae4",
"md5": "e907eb17694b4a4db123bf882c42a12b",
"sha256": "7b0ebece544bc3086b594fad68b800f52e286dbef02c0907b4320435f7f91fa5"
},
"downloads": -1,
"filename": "pytriskel-0.2.0-cp313-cp313-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "e907eb17694b4a4db123bf882c42a12b",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 3999567,
"upload_time": "2025-02-17T14:52:57",
"upload_time_iso_8601": "2025-02-17T14:52:57.087339Z",
"url": "https://files.pythonhosted.org/packages/39/c3/fd7f22045ba8c92c090df102276b4b874736fd9a1060d0174032371baae4/pytriskel-0.2.0-cp313-cp313-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e16639da9e4c76b05e457b82ca52eaece24d9ed7b7a20482d9b7a2bec1c50d27",
"md5": "68e8d5956a6905cfa56388a68cfcf330",
"sha256": "fac218a29e7b949f40177d6b2c948ae2bba125e2774147e66f7c16cdb0f3c42b"
},
"downloads": -1,
"filename": "pytriskel-0.2.0-cp313-cp313t-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "68e8d5956a6905cfa56388a68cfcf330",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": null,
"size": 3761663,
"upload_time": "2025-02-17T14:53:00",
"upload_time_iso_8601": "2025-02-17T14:53:00.137609Z",
"url": "https://files.pythonhosted.org/packages/e1/66/39da9e4c76b05e457b82ca52eaece24d9ed7b7a20482d9b7a2bec1c50d27/pytriskel-0.2.0-cp313-cp313t-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "60702042fd86f56596b4da4f20da31d7f8c537d8d606705c5ca69f94d49800f4",
"md5": "24aa14883925e9b3e0b65e8e3e140d95",
"sha256": "c4aca09252ce173355ac80fdeeb140d6c840ffa0648831b3ade7da119a40e49e"
},
"downloads": -1,
"filename": "pytriskel-0.2.0-cp37-cp37m-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "24aa14883925e9b3e0b65e8e3e140d95",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 4000494,
"upload_time": "2025-02-17T14:53:03",
"upload_time_iso_8601": "2025-02-17T14:53:03.747403Z",
"url": "https://files.pythonhosted.org/packages/60/70/2042fd86f56596b4da4f20da31d7f8c537d8d606705c5ca69f94d49800f4/pytriskel-0.2.0-cp37-cp37m-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "454080b39ebeb75527f6c953398c1955d0015981c237fc048462b2d72e5dcf4b",
"md5": "ec506ff33d4b4c8f81e79940e904bd56",
"sha256": "7bd05285bcb7e811ebd8afbbf6a7a696ba25fa537d1e20f1a12839cae6fa1998"
},
"downloads": -1,
"filename": "pytriskel-0.2.0-cp38-cp38-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "ec506ff33d4b4c8f81e79940e904bd56",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 3996705,
"upload_time": "2025-02-17T14:53:06",
"upload_time_iso_8601": "2025-02-17T14:53:06.637314Z",
"url": "https://files.pythonhosted.org/packages/45/40/80b39ebeb75527f6c953398c1955d0015981c237fc048462b2d72e5dcf4b/pytriskel-0.2.0-cp38-cp38-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "73fb867c6897ac2eafb75211557eb0342e777ba99644f6abd55b70dac24fb0b9",
"md5": "4307a1fd5365d3c267f27b09e4f35c88",
"sha256": "4b38c1f7d0990ccaf510427a82a3104b87da336d3d85de92527285be7ca32923"
},
"downloads": -1,
"filename": "pytriskel-0.2.0-cp39-cp39-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "4307a1fd5365d3c267f27b09e4f35c88",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 3997207,
"upload_time": "2025-02-17T14:53:09",
"upload_time_iso_8601": "2025-02-17T14:53:09.188839Z",
"url": "https://files.pythonhosted.org/packages/73/fb/867c6897ac2eafb75211557eb0342e777ba99644f6abd55b70dac24fb0b9/pytriskel-0.2.0-cp39-cp39-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b39cd70ee6702befb6220f31dee54d33a0acb1b13cfe7d032bb754e2f24310bc",
"md5": "00bb0b7a2f05ca980a5bd2d82c947b70",
"sha256": "6963001fb038a92b85fbd953b47e154bc40f108b13b2283321d8a7a6d8636313"
},
"downloads": -1,
"filename": "pytriskel-0.2.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "00bb0b7a2f05ca980a5bd2d82c947b70",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": null,
"size": 3755915,
"upload_time": "2025-02-17T14:53:12",
"upload_time_iso_8601": "2025-02-17T14:53:12.066355Z",
"url": "https://files.pythonhosted.org/packages/b3/9c/d70ee6702befb6220f31dee54d33a0acb1b13cfe7d032bb754e2f24310bc/pytriskel-0.2.0-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b8a2e3015f3b42ee6c667de28157aa8585b86b9f93003ffb5f3abf9795648994",
"md5": "3f40ca292241d33612e889700a63eb12",
"sha256": "2ca2e2023cfe703e2af8d7ecba53eae86621a7b07cce637a3b777097862c1118"
},
"downloads": -1,
"filename": "pytriskel-0.2.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "3f40ca292241d33612e889700a63eb12",
"packagetype": "bdist_wheel",
"python_version": "pp311",
"requires_python": null,
"size": 3758086,
"upload_time": "2025-02-17T14:53:14",
"upload_time_iso_8601": "2025-02-17T14:53:14.474114Z",
"url": "https://files.pythonhosted.org/packages/b8/a2/e3015f3b42ee6c667de28157aa8585b86b9f93003ffb5f3abf9795648994/pytriskel-0.2.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-17 14:52:24",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "triskellib",
"github_project": "triskel",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "pytriskel"
}