fffiloni commited on
Commit
07a867d
·
verified ·
1 Parent(s): 0cc2ff2

Update app_zero.py

Browse files
Files changed (1) hide show
  1. app_zero.py +72 -41
app_zero.py CHANGED
@@ -1,6 +1,7 @@
1
  import sys
2
  import types
3
  import datetime
 
4
  from pathlib import Path
5
 
6
  import huggingface_hub
@@ -79,7 +80,7 @@ sys.path.append("./PASD")
79
 
80
 
81
  # -------------------------------------------------------------------
82
- # Runtime patching for PASD legacy imports
83
  # -------------------------------------------------------------------
84
  def patch_file(path_str: str, replacements: list[tuple[str, str]]) -> None:
85
  path = Path(path_str)
@@ -107,8 +108,73 @@ def patch_file(path_str: str, replacements: list[tuple[str, str]]) -> None:
107
  print(f"[patch] no changes: {path}")
108
 
109
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
110
  def patch_pasd_for_diffusers() -> None:
111
- # 1) pipeline_utils path moved
112
  patch_file(
113
  "./PASD/pipelines/pipeline_pasd.py",
114
  [
@@ -119,7 +185,7 @@ def patch_pasd_for_diffusers() -> None:
119
  ],
120
  )
121
 
122
- # 2) PositionNet -> GLIGENTextBoundingboxProjection alias
123
  patch_file(
124
  "./PASD/models/pasd/unet_2d_condition.py",
125
  [
@@ -131,7 +197,7 @@ def patch_pasd_for_diffusers() -> None:
131
  ],
132
  )
133
 
134
- # 3) internal module paths moved in newer diffusers
135
  patch_file(
136
  "./PASD/models/pasd/unet_2d_blocks.py",
137
  [
@@ -150,43 +216,8 @@ def patch_pasd_for_diffusers() -> None:
150
  ],
151
  )
152
 
153
- # 4) robust ControlNet mixin fallback at top level
154
- controlnet_import_fallback = (
155
- "try:\n"
156
- " from diffusers.loaders import FromOriginalControlNetMixin as FromOriginalControlnetMixin\n"
157
- "except ImportError:\n"
158
- " try:\n"
159
- " from diffusers.loaders import FromOriginalControlnetMixin\n"
160
- " except ImportError:\n"
161
- " class FromOriginalControlnetMixin:\n"
162
- " pass"
163
- )
164
-
165
- patch_file(
166
- "./PASD/models/pasd/controlnet.py",
167
- [
168
- (
169
- "from diffusers.loaders import FromOriginalControlnetMixin",
170
- controlnet_import_fallback,
171
- ),
172
- (
173
- "from diffusers.loaders import FromOriginalControlNetMixin",
174
- controlnet_import_fallback,
175
- ),
176
- (
177
- "from diffusers.loaders.single_file_model import FromOriginalModelMixin as FromOriginalControlnetMixin",
178
- controlnet_import_fallback,
179
- ),
180
- (
181
- "from diffusers.loaders.single_file_model import FromOriginalModelMixin as FromOriginalControlNetMixin",
182
- controlnet_import_fallback,
183
- ),
184
- (
185
- "FromOriginalControlNetMixin",
186
- "FromOriginalControlnetMixin",
187
- ),
188
- ],
189
- )
190
 
191
 
192
  patch_pasd_for_diffusers()
 
1
  import sys
2
  import types
3
  import datetime
4
+ import re
5
  from pathlib import Path
6
 
7
  import huggingface_hub
 
80
 
81
 
82
  # -------------------------------------------------------------------
83
+ # Runtime patching helpers
84
  # -------------------------------------------------------------------
85
  def patch_file(path_str: str, replacements: list[tuple[str, str]]) -> None:
86
  path = Path(path_str)
 
108
  print(f"[patch] no changes: {path}")
109
 
110
 
111
+ def patch_controlnet_loader_import(path_str: str) -> None:
112
+ path = Path(path_str)
113
+ if not path.exists():
114
+ print(f"[patch] file not found: {path}")
115
+ return
116
+
117
+ try:
118
+ text = path.read_text(encoding="utf-8")
119
+ except Exception as e:
120
+ print(f"[patch] failed reading {path}: {e}")
121
+ return
122
+
123
+ safe_block = """try:
124
+ from diffusers.loaders import FromOriginalControlNetMixin as FromOriginalControlnetMixin
125
+ except Exception:
126
+ try:
127
+ from diffusers.loaders import FromOriginalControlnetMixin
128
+ except Exception:
129
+ class FromOriginalControlnetMixin:
130
+ pass
131
+
132
+ """
133
+
134
+ original = text
135
+
136
+ # Enlève d'anciens imports simples
137
+ text = re.sub(
138
+ r"(?m)^from diffusers\.loaders[^\n]*FromOriginalControl\w*Mixin[^\n]*\n",
139
+ "",
140
+ text,
141
+ )
142
+ text = re.sub(
143
+ r"(?m)^from diffusers\.loaders\.single_file_model[^\n]*FromOriginal\w+[^\n]*\n",
144
+ "",
145
+ text,
146
+ )
147
+
148
+ # Enlève d'anciens blocs try/except cassés liés à ce mixin
149
+ text = re.sub(
150
+ r"(?ms)^try:\n(?:(?: |\t).*\n)+?except Exception:\n(?:(?: |\t).*\n)+?(?=^(?:class|def|@|from |import |\Z))",
151
+ lambda m: "" if "FromOriginalControl" in m.group(0) else m.group(0),
152
+ text,
153
+ )
154
+
155
+ # Normalise la référence de mixin dans le reste du fichier
156
+ text = text.replace("FromOriginalControlNetMixin", "FromOriginalControlnetMixin")
157
+
158
+ marker = "class ControlNetConditioningEmbedding"
159
+ if safe_block not in text:
160
+ idx = text.find(marker)
161
+ if idx != -1:
162
+ text = text[:idx] + safe_block + text[idx:]
163
+ else:
164
+ text = safe_block + text
165
+
166
+ if text != original:
167
+ try:
168
+ path.write_text(text, encoding="utf-8")
169
+ print(f"[patch] normalized: {path}")
170
+ except Exception as e:
171
+ print(f"[patch] failed writing {path}: {e}")
172
+ else:
173
+ print(f"[patch] no changes: {path}")
174
+
175
+
176
  def patch_pasd_for_diffusers() -> None:
177
+ # pipeline_utils path moved
178
  patch_file(
179
  "./PASD/pipelines/pipeline_pasd.py",
180
  [
 
185
  ],
186
  )
187
 
188
+ # PositionNet -> GLIGENTextBoundingboxProjection alias
189
  patch_file(
190
  "./PASD/models/pasd/unet_2d_condition.py",
191
  [
 
197
  ],
198
  )
199
 
200
+ # internal module paths moved in newer diffusers
201
  patch_file(
202
  "./PASD/models/pasd/unet_2d_blocks.py",
203
  [
 
216
  ],
217
  )
218
 
219
+ # robust controlnet patch
220
+ patch_controlnet_loader_import("./PASD/models/pasd/controlnet.py")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
 
222
 
223
  patch_pasd_for_diffusers()