Skip to content

Commit 2346bd6

Browse files
authored
Merge pull request #126 from LlmKira/dev
🗑️ **refactor**(generate_image): Rollback changes #125
2 parents 8bc6db0 + e20df38 commit 2346bd6

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

src/novelai_python/sdk/ai/generate_image/__init__.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,6 @@ def set_mutual_exclusion(self, value: bool):
6565
action: Union[str, Action] = Field(Action.GENERATE, description="Mode for img generate")
6666
parameters: Union[Params]
6767
model_config = ConfigDict(extra="ignore")
68-
69-
# forced params integration
70-
def model_dump(self, *args, **kwargs):
71-
"""
72-
Overrides model_dump for own features
73-
"""
74-
data = super().model_dump(*args, **kwargs)
75-
data["parameters"] = self.parameters.model_dump(*args, **kwargs)
76-
77-
return data
7868

7969
@override
8070
def model_post_init(self, *args) -> None:

src/novelai_python/sdk/ai/generate_image/params.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import base64
22
import random
33
from io import BytesIO
4+
from collections import OrderedDict
45
from typing import Optional, List, Set, Union, Tuple
56

67
import cv2
78
import numpy as np
89
from PIL import Image
910
from loguru import logger
10-
from pydantic import BaseModel, Field, model_validator, field_validator, model_serializer
11+
from pydantic import BaseModel, Field, model_serializer, model_validator, field_validator
1112

1213
from novelai_python.sdk.ai._enum import Sampler, UCPresetTypeAlias, NoiseSchedule, ImageBytesTypeAlias, ControlNetModel, \
1314
Model
@@ -128,11 +129,22 @@ def _serialize(self, handler):
128129
Custom serializer to force include specific fields even when they are None
129130
"""
130131
data = handler(self)
131-
# Just add None values for strong fields
132-
for field in self.__strong_values__:
133-
if field not in data:
134-
data[field] = getattr(self, field, None)
135-
return data
132+
133+
# Force include strong fields and ensure proper ordering
134+
# Create ordered dict following JavaScript field order
135+
ordered_fields = list(self.__class__.model_fields.keys())
136+
ordered_data = OrderedDict()
137+
138+
for field_name in ordered_fields:
139+
if field_name in data:
140+
# Field exists in data, include it
141+
ordered_data[field_name] = data[field_name]
142+
elif field_name in self.__strong_values__:
143+
# Since we iterate from `self.__class__.model_fields`,、
144+
# the field is guaranteed to exist. The previous safety check was redundant.
145+
ordered_data[field_name] = getattr(self, field_name, None)
146+
147+
return ordered_data
136148
# endregion
137149

138150
@model_validator(mode="after")

0 commit comments

Comments
 (0)