{"id":13936526,"url":"https://github.com/LeGoffLoic/Nodz","last_synced_at":"2025-07-19T22:30:36.731Z","repository":{"id":39580105,"uuid":"93106192","full_name":"LeGoffLoic/Nodz","owner":"LeGoffLoic","description":"Nodz : Visualize your data - Free nodes based graph generator.","archived":false,"fork":false,"pushed_at":"2024-03-28T06:58:21.000Z","size":303,"stargazers_count":410,"open_issues_count":13,"forks_count":110,"subscribers_count":62,"default_branch":"master","last_synced_at":"2024-08-08T23:23:54.858Z","etag":null,"topics":["free","graph","nodal","nodes","nodz","python","qgraphicsscene","qgraphicsview"],"latest_commit_sha":null,"homepage":null,"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/LeGoffLoic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-06-01T22:56:37.000Z","updated_at":"2024-07-24T04:56:56.000Z","dependencies_parsed_at":"2022-08-26T04:20:28.862Z","dependency_job_id":null,"html_url":"https://github.com/LeGoffLoic/Nodz","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeGoffLoic%2FNodz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeGoffLoic%2FNodz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeGoffLoic%2FNodz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeGoffLoic%2FNodz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LeGoffLoic","download_url":"https://codeload.github.com/LeGoffLoic/Nodz/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226686729,"owners_count":17666928,"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":["free","graph","nodal","nodes","nodz","python","qgraphicsscene","qgraphicsview"],"created_at":"2024-08-07T23:02:45.274Z","updated_at":"2024-11-27T04:31:09.275Z","avatar_url":"https://github.com/LeGoffLoic.png","language":"Python","funding_links":[],"categories":["Python","Libraries"],"sub_categories":["UI"],"readme":"![Screenshot](nodz.png)\n\nNodz is a very user friendly python library to create nodes based graphs. It can be connected to anything you want as long as it understands python. Nodz does not hold any data other than its own graphics and attributes types as it is used by the graphics.\nNods provides you with a very simple way to read your graph, it outputs connections as strings ('Node1.attribute1', 'node2.attribute5')\n\nNodz is partially customizable via a configuration file that let you change colors and the shape of nodes.\n\n\n***If you find any errors/bugs/flaws or anything bad, feel free to let me know so I can fix it for the next persons that would like to download nodz.***\n\n***PLEASE MAKE SURE TO CREATE 1 PULL REQUEST PER ISSUE ! THIS IS EASIER AND CLEANER TO PROCESS***\n\nNodz in under the [MIT license](LICENSE.txt).\n\n[WATCH DEMO HERE](https://vimeo.com/219933604)\n\n\n\n\n\n###\n## Requirement\nThe following needs to be installed!\n- pip\n- pipenv\n\n\n\n\n###\n## Installation\n- `git clone`\n- `cd location`\n- `pipenv install`\n- enjoy! :)\n\n\n\n\n###\n## Configuration file\n\nNodz comes with a default [configuration file](default_config.json), it is specified what can be removed and what can't be.\nIf this file stays in the default location, it is auto loaded BUT you still need to apply it to Nodz (look at [nodz_demo.py](nodz_demo.py) lines 5/6)\nBe careful when editing it, if you are missing a \"**,**\" it will error. So don't screw up. :smile:\n\n\n\n\n###\n## Features\n\nNodz comes by default with few features, you can toggle the grid visibility and the auto snap mode + some hotkeys. Hotkeys are at the moment based on Autodesk Maya because I developped this library for my personnal use in this specific software but I'm planning on adding that part in the configuration file so everyone can set different hotkeys.\n\n```python\nnodz.gridVisToggle = True\nnodz.gridSnapToggle = False\n```\n\n```\ndel : delete the selected nodes\nf   : zoom focus on selected items, all the items if nothing is selected\ns   : snap the selected node on the grid\n\n```\n\n\n\n\n###\n## API\n\nNodz has a very simple API of 12 methods.\nFor more information on each method, please read [nodz_main.py](nodz_main.py) as it has all the documentation required.\n\nInitialize\n```python\ndef loadConfig(filePath=defautConfigPath)\ndef initialize()\n```\nNodes\n```python\ndef createNode(name, preset, position, alternate)\ndef deleteNode(node)\ndef editNode(node, newName)\n```\nAttributes\n```python\ndef createAttribute(node, name, index, preset, plug, socket, dataType, plugMaxConnections, socketMaxConnections)\ndef deleteAttribute(node, index)\ndef editAttribute( node, index, newName, newIndex)\n```\nConnections\n```python\ndef createConnection(sourceNode, sourceAttr, targetNode, targetAttr)\n```\nGraph\n```python\ndef saveGraph(filePath)\ndef loadGraph(filePath)\ndef evaluateGraph()\ndef clearGraph()\n```\n\n###\n## Signals\n\nNodz also offers you some signals, most of them can feel redundant considering the design of the library but I'm sure some of you will find a use for it. It's better to have them just in case than not having them.\n**They are absolutly not mandatory in order for nodz to work.**\n\nNodes\n```python\nsignal_NodeCreated(nodeName)\nsignal_NodeDeleted([nodeNames])\nsignal_NodeEdited(oldName, newName)\nsignal_NodeSelected([nodeNames])\nsignal_NodeMoved(nodeName, nodePos)\nsignal_NodeDoubleClicked(nodeName)\n```\nAttributes\n```Python\nsignal_AttrCreated(nodeName, attrIndex)\nsignal_AttrDeleted(nodeName, attrIndex)\nsignal_AttrEdited(nodeName, oldIndex, newIndex)\n```\nConnections\n```python\nsignal_PlugConnected(srcNodeName, plugAttribute, dstNodeName, socketAttribue)\nsignal_PlugDisconnected(srcNodeName, plugAttribute, dstNodeName, socketAttribue)\nsignal_SocketConnected(srcNodeName, plugAttribute, dstNodeName, socketAttribue)\nsignal_SocketDisconnected(srcNodeName, plugAttribute, dstNodeName, socketAttribue)\n```\nGraph\n```python\nsignal_GraphSaved()\nsignal_GraphLoaded()\nsignal_GraphCleared()\n```\nView\n```Python\nsignal_KeyPressed(key)\nsignal_Dropped(drop position)\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLeGoffLoic%2FNodz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLeGoffLoic%2FNodz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLeGoffLoic%2FNodz/lists"}