diff --git a/src/nodetool/dsl/lib/grid.py b/src/nodetool/dsl/lib/grid.py index d98537d..56a51d9 100644 --- a/src/nodetool/dsl/lib/grid.py +++ b/src/nodetool/dsl/lib/grid.py @@ -1,7 +1,4 @@ -from pydantic import BaseModel, Field -import typing -from typing import Any -import nodetool.metadata.types +from pydantic import Field import nodetool.metadata.types as types from nodetool.dsl.graph import GraphNode diff --git a/src/nodetool/dsl/lib/ocr.py b/src/nodetool/dsl/lib/ocr.py index 75e02ee..d92e30b 100644 --- a/src/nodetool/dsl/lib/ocr.py +++ b/src/nodetool/dsl/lib/ocr.py @@ -1,7 +1,5 @@ -from pydantic import BaseModel, Field +from pydantic import Field import typing -from typing import Any -import nodetool.metadata.types import nodetool.metadata.types as types from nodetool.dsl.graph import GraphNode diff --git a/src/nodetool/dsl/lib/pillow/__init__.py b/src/nodetool/dsl/lib/pillow/__init__.py index af2df14..555fdcc 100644 --- a/src/nodetool/dsl/lib/pillow/__init__.py +++ b/src/nodetool/dsl/lib/pillow/__init__.py @@ -1,7 +1,4 @@ -from pydantic import BaseModel, Field -import typing -from typing import Any -import nodetool.metadata.types +from pydantic import Field import nodetool.metadata.types as types from nodetool.dsl.graph import GraphNode diff --git a/src/nodetool/dsl/lib/pillow/draw.py b/src/nodetool/dsl/lib/pillow/draw.py index ec563ae..b2a7ee6 100644 --- a/src/nodetool/dsl/lib/pillow/draw.py +++ b/src/nodetool/dsl/lib/pillow/draw.py @@ -1,9 +1,8 @@ -from pydantic import BaseModel, Field +from pydantic import Field import typing -from typing import Any -import nodetool.metadata.types import nodetool.metadata.types as types from nodetool.dsl.graph import GraphNode +import nodetool.nodes.lib.pillow.draw # noqa: E402 class Background(GraphNode): @@ -64,10 +63,6 @@ def get_node_type(cls): return "lib.pillow.draw.GaussianNoise" -import nodetool.nodes.lib.pillow.draw -import nodetool.nodes.lib.pillow.draw - - class RenderText(GraphNode): """ This node allows you to add text to images. diff --git a/src/nodetool/dsl/lib/pillow/enhance.py b/src/nodetool/dsl/lib/pillow/enhance.py index 4623a69..f93d0fa 100644 --- a/src/nodetool/dsl/lib/pillow/enhance.py +++ b/src/nodetool/dsl/lib/pillow/enhance.py @@ -1,7 +1,4 @@ -from pydantic import BaseModel, Field -import typing -from typing import Any -import nodetool.metadata.types +from pydantic import Field import nodetool.metadata.types as types from nodetool.dsl.graph import GraphNode diff --git a/src/nodetool/dsl/lib/pillow/filter.py b/src/nodetool/dsl/lib/pillow/filter.py index b19704a..38d5a5e 100644 --- a/src/nodetool/dsl/lib/pillow/filter.py +++ b/src/nodetool/dsl/lib/pillow/filter.py @@ -1,9 +1,8 @@ -from pydantic import BaseModel, Field +from pydantic import Field import typing -from typing import Any -import nodetool.metadata.types import nodetool.metadata.types as types from nodetool.dsl.graph import GraphNode +import nodetool.nodes.lib.pillow.filter # noqa: E402 class Blur(GraphNode): @@ -161,9 +160,6 @@ def get_node_type(cls): return "lib.pillow.filter.FindEdges" -import nodetool.nodes.lib.pillow.filter - - class GetChannel(GraphNode): """ Extract a specific color channel from an image. diff --git a/src/nodetool/dsl/lib/svg.py b/src/nodetool/dsl/lib/svg.py index 9ffe5e0..df418eb 100644 --- a/src/nodetool/dsl/lib/svg.py +++ b/src/nodetool/dsl/lib/svg.py @@ -1,9 +1,9 @@ -from pydantic import BaseModel, Field +from pydantic import Field +from pydantic.fields import PydanticUndefined import typing -from typing import Any -import nodetool.metadata.types import nodetool.metadata.types as types from nodetool.dsl.graph import GraphNode +import nodetool.nodes.lib.svg # noqa: E402 class CircleNode(GraphNode): @@ -165,9 +165,6 @@ def get_node_type(cls): return "lib.svg.GaussianBlur" -import nodetool.nodes.lib.svg - - class Gradient(GraphNode): """ Create linear or radial gradients for SVG elements. @@ -358,9 +355,6 @@ def get_node_type(cls): return "lib.svg.SVGToImage" -import nodetool.nodes.lib.svg - - class Text(GraphNode): """ Add text elements to SVG. diff --git a/src/nodetool/nodes/lib/grid.py b/src/nodetool/nodes/lib/grid.py index a521dac..24e97ad 100644 --- a/src/nodetool/nodes/lib/grid.py +++ b/src/nodetool/nodes/lib/grid.py @@ -2,10 +2,11 @@ import PIL.Image from nodetool.workflows.base_node import BaseNode from nodetool.workflows.processing_context import ProcessingContext -from nodetool.metadata.types import ImageRef, Field +from nodetool.metadata.types import ImageRef +from pydantic import Field from typing import List -from PIL import Image, ImageChops, ImageDraw +from PIL import Image, ImageDraw class Tile: diff --git a/src/nodetool/nodes/lib/ocr.py b/src/nodetool/nodes/lib/ocr.py index 2fb5a3a..a92407c 100644 --- a/src/nodetool/nodes/lib/ocr.py +++ b/src/nodetool/nodes/lib/ocr.py @@ -5,7 +5,6 @@ from nodetool.workflows.processing_context import ProcessingContext from nodetool.workflows.base_node import BaseNode from nodetool.workflows.types import NodeUpdate -from nodetool.workflows.processing_context import ProcessingContext from nodetool.metadata.types import ImageRef, OCRResult from paddleocr import PaddleOCR diff --git a/src/nodetool/nodes/lib/pillow/__init__.py b/src/nodetool/nodes/lib/pillow/__init__.py index ac23dbb..4ad336d 100644 --- a/src/nodetool/nodes/lib/pillow/__init__.py +++ b/src/nodetool/nodes/lib/pillow/__init__.py @@ -1,4 +1,3 @@ -from typing import Any from nodetool.workflows.processing_context import ProcessingContext from nodetool.metadata.types import ImageRef from nodetool.workflows.base_node import BaseNode diff --git a/src/nodetool/nodes/lib/pillow/draw.py b/src/nodetool/nodes/lib/pillow/draw.py index f79ba47..00cafc7 100644 --- a/src/nodetool/nodes/lib/pillow/draw.py +++ b/src/nodetool/nodes/lib/pillow/draw.py @@ -1,4 +1,3 @@ -import os from enum import Enum import PIL.Image import PIL.ImageDraw diff --git a/src/nodetool/nodes/lib/pillow/enhance.py b/src/nodetool/nodes/lib/pillow/enhance.py index 74bf330..9ade3ea 100644 --- a/src/nodetool/nodes/lib/pillow/enhance.py +++ b/src/nodetool/nodes/lib/pillow/enhance.py @@ -1,10 +1,10 @@ import PIL.Image -import PIL.ImageOps -import PIL.ImageFilter import PIL.ImageEnhance +import PIL.ImageFilter +import PIL.ImageOps import numpy as np -from nodetool.metadata.types import Field, ImageRef +from nodetool.metadata.types import ImageRef from nodetool.workflows.base_node import BaseNode from nodetool.workflows.processing_context import ProcessingContext from pydantic import Field @@ -20,12 +20,12 @@ def adaptive_contrast( # Convert image from BGR to LAB color model img_lab = cv2.cvtColor(img, cv2.COLOR_BGR2Lab) - # Split the LAB image into L, A and B channels - l, a, b = cv2.split(img_lab) + # Split the LAB image into L, A, and B channels + l_channel, a, b = cv2.split(img_lab) # Perform histogram equalization only on the L channel clahe = cv2.createCLAHE(clipLimit=clip_limit, tileGridSize=(grid_size, grid_size)) - cl = clahe.apply(l) + cl = clahe.apply(l_channel) # Merge the CLAHE enhanced L channel with the original A and B channel merged_channels = cv2.merge((cl, a, b)) @@ -72,7 +72,12 @@ class AutoContrast(BaseNode): image: ImageRef = Field( default=ImageRef(), description="The image to adjust the contrast for." ) - cutoff: int = Field(default=0, ge=0, le=255, description="Represents the percentage of pixels to ignore at both the darkest and lightest ends of the histogram. A cutoff value of 5 means ignoring the darkest 5% and the lightest 5% of pixels, enhancing overall contrast by stretching the remaining pixel values across the full brightness range.") + cutoff: int = Field( + default=0, + ge=0, + le=255, + description="Represents the percentage of pixels to ignore at both the darkest and lightest ends of the histogram. A cutoff value of 5 means ignoring the darkest 5% and the lightest 5% of pixels, enhancing overall contrast by stretching the remaining pixel values across the full brightness range.", + ) async def process(self, context: ProcessingContext) -> ImageRef: image = await context.image_to_pil(self.image) diff --git a/src/nodetool/nodes/lib/pillow/filter.py b/src/nodetool/nodes/lib/pillow/filter.py index 49061f8..0ec53ee 100644 --- a/src/nodetool/nodes/lib/pillow/filter.py +++ b/src/nodetool/nodes/lib/pillow/filter.py @@ -1,4 +1,3 @@ -import os from enum import Enum import PIL.Image import PIL.ImageDraw @@ -13,7 +12,6 @@ from nodetool.metadata.types import ImageRef from nodetool.workflows.base_node import BaseNode from pydantic import Field -from typing import Literal class Invert(BaseNode): diff --git a/src/nodetool/nodes/lib/svg.py b/src/nodetool/nodes/lib/svg.py index 0adae69..9a5bba6 100644 --- a/src/nodetool/nodes/lib/svg.py +++ b/src/nodetool/nodes/lib/svg.py @@ -1,9 +1,7 @@ -import os from enum import Enum -import PIL.Image import io -from typing import Literal, Optional -from pydantic import BaseModel, Field +import PIL.Image +from pydantic import Field from nodetool.workflows.base_node import BaseNode from nodetool.workflows.processing_context import ProcessingContext from nodetool.metadata.types import ColorRef, ImageRef, SVGRef, SVGElement diff --git a/tests/image/test_grid.py b/tests/image/test_grid.py index 766c4ab..b2ca2be 100644 --- a/tests/image/test_grid.py +++ b/tests/image/test_grid.py @@ -1,7 +1,6 @@ import pytest from typing import List, Tuple from PIL import Image -import numpy as np from nodetool.nodes.lib.grid import Tile, combine_grid, make_grid diff --git a/tests/image/test_image.py b/tests/image/test_image.py index c1193f1..f7751f9 100644 --- a/tests/image/test_image.py +++ b/tests/image/test_image.py @@ -1,5 +1,4 @@ import pytest -import numpy as np from io import BytesIO from PIL import Image from nodetool.nodes.lib.numpy import ConvertToArray diff --git a/tests/image/test_image_source.py b/tests/image/test_image_source.py index b6854ff..d3ea2f8 100644 --- a/tests/image/test_image_source.py +++ b/tests/image/test_image_source.py @@ -2,7 +2,7 @@ import os import pytest from nodetool.workflows.processing_context import ProcessingContext -from nodetool.metadata.types import ImageRef, NPArray +from nodetool.metadata.types import ImageRef from nodetool.nodes.lib.pillow.draw import Background, RenderText, GaussianNoise import PIL.Image diff --git a/tests/image/test_image_transform.py b/tests/image/test_image_transform.py index 60759a6..4b8e801 100644 --- a/tests/image/test_image_transform.py +++ b/tests/image/test_image_transform.py @@ -2,7 +2,7 @@ from io import BytesIO from PIL import Image from nodetool.workflows.processing_context import ProcessingContext -from nodetool.metadata.types import ImageRef, NPArray +from nodetool.metadata.types import ImageRef from nodetool.nodes.lib.pillow.filter import ( Invert, Solarize,