Initial DumasNodes seed

This commit is contained in:
2026-07-21 10:43:24 +00:00
commit aa0fe4fa3d
7 changed files with 137 additions and 0 deletions

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
__pycache__/
*.py[cod]
*.egg-info/
.pytest_cache/

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Chris Dumas
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

41
README.md Normal file
View File

@@ -0,0 +1,41 @@
# DumasNodes
`DumasNodes` is a ComfyUI custom-node pack for generic utility workflows under the Dumas brand. The repo starts by replicating the JSON string parsing helper from [`a-und-b/ComfyUI_JSON_Helper`](https://github.com/a-und-b/ComfyUI_JSON_Helper) and rebadging it into a reusable `Dumas` namespace.
## Included Nodes
- `Dumas JSON String to Object`
- Converts a JSON string into a JSON object so downstream nodes can consume structured data.
- Lives in the `Dumas/JSON` category.
## Installation
1. Change into your ComfyUI custom nodes directory:
```bash
cd /path/to/ComfyUI/custom_nodes
```
2. Clone this repository:
```bash
git clone https://git.dumas.ddns.net/chris.dumas/DumasNodes.git
```
3. Restart ComfyUI.
## Usage
Add `Dumas JSON String to Object` anywhere you need to bridge plain-text JSON output into structured JSON input.
## Roadmap
This repo is intended to grow into a broader set of Dumas-branded generic utility nodes, including JSON helpers and adjacent data-manipulation tools.
## Credits
The first node is derived from the upstream `ComfyUI_JSON_Helper` project by `a-und-b`, then repackaged and branded for the Dumas node collection.
## License
MIT.

3
__init__.py Normal file
View File

@@ -0,0 +1,3 @@
from .dumas_json_nodes import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS"]

32
dumas_json_nodes.py Normal file
View File

@@ -0,0 +1,32 @@
import json
class DumasJSONStringToObjectNode:
CATEGORY = "Dumas/JSON"
RETURN_TYPES = ("JSON",)
FUNCTION = "convert_string_to_json"
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"json_string": ("STRING", {"multiline": True}),
}
}
def convert_string_to_json(self, json_string):
try:
json_object = json.loads(json_string)
return (json_object,)
except json.JSONDecodeError as exc:
print(f"[DumasNodes] Error decoding JSON: {exc}")
return (None,)
NODE_CLASS_MAPPINGS = {
"DumasJSONStringToObject": DumasJSONStringToObjectNode,
}
NODE_DISPLAY_NAME_MAPPINGS = {
"DumasJSONStringToObject": "Dumas JSON String to Object",
}

13
pyproject.toml Normal file
View File

@@ -0,0 +1,13 @@
[project]
name = "dumasnodes"
description = "Dumas-branded generic utility nodes for ComfyUI, starting with JSON helpers."
version = "0.1.0"
license = { file = "LICENSE" }
[project.urls]
Repository = "https://git.dumas.ddns.net/chris.dumas/DumasNodes"
[tool.comfy]
PublisherId = "chris-dumas"
DisplayName = "DumasNodes"
Icon = ""

View File

@@ -0,0 +1,23 @@
import unittest
from dumas_json_nodes import DumasJSONStringToObjectNode
class DumasJSONStringToObjectNodeTests(unittest.TestCase):
def test_parses_valid_json(self):
node = DumasJSONStringToObjectNode()
result = node.convert_string_to_json('{"name":"Dumas","count":2}')
self.assertEqual(result, ({"name": "Dumas", "count": 2},))
def test_returns_none_for_invalid_json(self):
node = DumasJSONStringToObjectNode()
result = node.convert_string_to_json('{"name":')
self.assertEqual(result, (None,))
if __name__ == "__main__":
unittest.main()