bizyengine 1.2.9__tar.gz → 1.2.11__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. {bizyengine-1.2.9 → bizyengine-1.2.11}/PKG-INFO +1 -1
  2. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_wan_i2v.py +18 -6
  3. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/common/caching.py +23 -1
  4. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/nodes_base.py +1 -1
  5. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/path_utils/__init__.py +1 -1
  6. bizyengine-1.2.11/bizyengine/core/path_utils/utils.py +75 -0
  7. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/misc/llm.py +30 -6
  8. bizyengine-1.2.11/bizyengine/version.txt +1 -0
  9. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine.egg-info/PKG-INFO +1 -1
  10. bizyengine-1.2.9/bizyengine/core/path_utils/utils.py +0 -34
  11. bizyengine-1.2.9/bizyengine/version.txt +0 -1
  12. {bizyengine-1.2.9 → bizyengine-1.2.11}/MANIFEST.in +0 -0
  13. {bizyengine-1.2.9 → bizyengine-1.2.11}/README.md +0 -0
  14. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/__init__.py +0 -0
  15. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizy_server/__init__.py +0 -0
  16. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizy_server/api_client.py +0 -0
  17. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizy_server/errno.py +0 -0
  18. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizy_server/error_handler.py +0 -0
  19. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizy_server/execution.py +0 -0
  20. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizy_server/profile.py +0 -0
  21. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizy_server/resp.py +0 -0
  22. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizy_server/server.py +0 -0
  23. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizy_server/stream_response.py +0 -0
  24. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizy_server/utils.py +0 -0
  25. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/__init__.py +0 -0
  26. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_advanced_refluxcontrol.py +0 -0
  27. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_cogview4.py +0 -0
  28. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_comfyui_detail_daemon.py +0 -0
  29. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_comfyui_instantid.py +0 -0
  30. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_comfyui_layerstyle_advance.py +0 -0
  31. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_comfyui_pulid_flux.py +0 -0
  32. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_controlnet.py +0 -0
  33. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_custom_sampler.py +0 -0
  34. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_dataset.py +0 -0
  35. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_differential_diffusion.py +0 -0
  36. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_flux.py +0 -0
  37. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_image_utils.py +0 -0
  38. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_ip2p.py +0 -0
  39. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_ipadapter_plus/__init__.py +0 -0
  40. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_ipadapter_plus/nodes_ipadapter_plus.py +0 -0
  41. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_janus_pro.py +0 -0
  42. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_kolors_mz/__init__.py +0 -0
  43. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_model_advanced.py +0 -0
  44. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_nunchaku.py +0 -0
  45. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_sd3.py +0 -0
  46. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_segment_anything.py +0 -0
  47. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_segment_anything_utils.py +0 -0
  48. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_testing_utils.py +0 -0
  49. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_trellis.py +0 -0
  50. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_ultimatesdupscale.py +0 -0
  51. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_upscale_model.py +0 -0
  52. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/nodes_wan_video.py +0 -0
  53. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/oauth_callback/main.py +0 -0
  54. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/bizyair_extras/route_bizyair_tools.py +0 -0
  55. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/__init__.py +0 -0
  56. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/commands/__init__.py +0 -0
  57. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/commands/base.py +0 -0
  58. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/commands/invoker.py +0 -0
  59. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/commands/processors/model_hosting_processor.py +0 -0
  60. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/commands/processors/prompt_processor.py +0 -0
  61. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/commands/servers/model_server.py +0 -0
  62. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/commands/servers/prompt_server.py +0 -0
  63. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/common/__init__.py +0 -0
  64. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/common/client.py +0 -0
  65. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/common/env_var.py +0 -0
  66. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/common/utils.py +0 -0
  67. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/configs/conf.py +0 -0
  68. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/configs/models.json +0 -0
  69. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/configs/models.yaml +0 -0
  70. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/data_types.py +0 -0
  71. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/image_utils.py +0 -0
  72. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/nodes_io.py +0 -0
  73. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/core/path_utils/path_manager.py +0 -0
  74. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/misc/__init__.py +0 -0
  75. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/misc/auth.py +0 -0
  76. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/misc/mzkolors.py +0 -0
  77. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/misc/nodes.py +0 -0
  78. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/misc/nodes_controlnet_aux.py +0 -0
  79. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/misc/nodes_controlnet_union_sdxl.py +0 -0
  80. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/misc/route_sam.py +0 -0
  81. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/misc/segment_anything.py +0 -0
  82. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/misc/supernode.py +0 -0
  83. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine/misc/utils.py +0 -0
  84. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine.egg-info/SOURCES.txt +0 -0
  85. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine.egg-info/dependency_links.txt +0 -0
  86. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine.egg-info/requires.txt +0 -0
  87. {bizyengine-1.2.9 → bizyengine-1.2.11}/bizyengine.egg-info/top_level.txt +0 -0
  88. {bizyengine-1.2.9 → bizyengine-1.2.11}/pyproject.toml +0 -0
  89. {bizyengine-1.2.9 → bizyengine-1.2.11}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bizyengine
3
- Version: 1.2.9
3
+ Version: 1.2.11
4
4
  Summary: [a/BizyAir](https://github.com/siliconflow/BizyAir) Comfy Nodes that can run in any environment.
5
5
  Author-email: SiliconFlow <yaochi@siliconflow.cn>
6
6
  Project-URL: Repository, https://github.com/siliconflow/BizyAir
@@ -21,6 +21,7 @@ except ModuleNotFoundError as e:
21
21
  from ..core.common import client
22
22
  from ..core.common.env_var import BIZYAIR_DEBUG
23
23
  from ..core.nodes_base import BizyAirBaseNode
24
+ from ..core.path_utils import compose_model_name
24
25
 
25
26
 
26
27
  class WanApiNodeBase:
@@ -30,17 +31,19 @@ class WanApiNodeBase:
30
31
 
31
32
 
32
33
  class Wan_LoraLoader(BizyAirBaseNode):
33
-
34
34
  @classmethod
35
35
  def INPUT_TYPES(cls):
36
36
  return {
37
37
  "required": {
38
38
  "lora_name": (
39
+ [
40
+ "to choose",
41
+ ],
42
+ ),
43
+ "model_version_id": (
39
44
  "STRING",
40
45
  {
41
- "multiline": True,
42
- "default": "https://huggingface.co/Remade-AI/Squish/resolve/main/squish_18.safetensors",
43
- "tooltip": "LoRA 模型下载地址",
46
+ "default": "",
44
47
  },
45
48
  ),
46
49
  },
@@ -54,7 +57,7 @@ class Wan_LoraLoader(BizyAirBaseNode):
54
57
  "step": 0.05,
55
58
  "tooltip": "LoRA权重强度",
56
59
  },
57
- )
60
+ ),
58
61
  },
59
62
  }
60
63
 
@@ -63,7 +66,16 @@ class Wan_LoraLoader(BizyAirBaseNode):
63
66
  FUNCTION = "apply_lora"
64
67
  CATEGORY = "Diffusers/WAN Video Generation"
65
68
 
66
- def apply_lora(self, lora_name, lora_weight=0.75, **kwargs):
69
+ @classmethod
70
+ def VALIDATE_INPUTS(cls, lora_name, model_version_id):
71
+ if lora_name == "to choose":
72
+ return False
73
+ if model_version_id is not None and model_version_id != "":
74
+ return True
75
+ return True
76
+
77
+ def apply_lora(self, lora_name, lora_weight=0.75, model_version_id="", **kwargs):
78
+ lora_name = compose_model_name(model_version_id, fallback_name=lora_name)
67
79
  return ([(lora_name, lora_weight)],)
68
80
 
69
81
 
@@ -1,6 +1,8 @@
1
1
  import glob
2
+ import hashlib
2
3
  import json
3
4
  import os
5
+ import threading
4
6
  import time
5
7
  from abc import ABC, abstractmethod
6
8
  from collections import OrderedDict
@@ -47,7 +49,23 @@ class CacheManager(ABC):
47
49
  pass
48
50
 
49
51
 
50
- class BizyAirTaskCache(CacheManager):
52
+ class ConfigSingleton:
53
+ _instance_lock = threading.Lock()
54
+ _instances = {}
55
+
56
+ def __new__(cls, config, *args, **kwargs):
57
+ config_str = str(config)
58
+ config_key = hashlib.sha256(config_str.encode()).hexdigest()
59
+ if config_key not in cls._instances:
60
+ with cls._instance_lock:
61
+ if config_key not in cls._instances:
62
+ instance = super().__new__(cls)
63
+ cls._instances[config_key] = instance
64
+
65
+ return cls._instances[config_key]
66
+
67
+
68
+ class BizyAirTaskCache(ConfigSingleton, CacheManager):
51
69
  def __init__(self, config: CacheConfig):
52
70
  self.config = config
53
71
  self.cache = OrderedDict()
@@ -180,6 +198,10 @@ class BizyAirTaskCache(CacheManager):
180
198
  if __name__ == "__main__":
181
199
  cache_config = CacheConfig(max_size=12, expiration=10, cache_dir="./cache")
182
200
  cache = BizyAirTaskCache(cache_config)
201
+ assert (
202
+ BizyAirTaskCache(CacheConfig(max_size=12, expiration=10, cache_dir="./cache"))
203
+ is cache
204
+ )
183
205
 
184
206
  # Set some cache values
185
207
  cache.set("key1", "This is the value for key1")
@@ -158,7 +158,7 @@ class BizyAirBaseNode:
158
158
  register_node(cls, PREFIX)
159
159
  cls.setup_input_types()
160
160
 
161
- # 验证FUNCTION接受**kwargs
161
+ # TODO refine 验证FUNCTION接受**kwargs
162
162
  if BIZYAIR_DEBUG:
163
163
  import inspect
164
164
 
@@ -6,4 +6,4 @@ from .path_manager import (
6
6
  guess_config,
7
7
  guess_url_from_node,
8
8
  )
9
- from .utils import filter_files_extensions
9
+ from .utils import compose_model_name, filter_files_extensions
@@ -0,0 +1,75 @@
1
+ import os
2
+ from collections.abc import Collection
3
+ from typing import Dict, Optional, Union
4
+
5
+ import yaml
6
+ from bizyengine.core.common.env_var import BIZYAIR_SERVER_ADDRESS
7
+ from bizyengine.core.configs.conf import config_manager
8
+
9
+
10
+ def compose_model_name(
11
+ model_version_id: str = "", fallback_name: Optional[str] = None
12
+ ) -> str:
13
+ """Generate standardized model name from version ID.
14
+
15
+ Args:
16
+ model_version_id: Model version identifier (empty string or None treated as missing)
17
+ fallback_name: Default name to use when version ID is missing
18
+
19
+ Returns:
20
+ Formatted model name (either prefixed ID or default)
21
+
22
+ Raises:
23
+ ValueError: If both model_version_id and default are missing
24
+ RuntimeError: If configuration manager fails to provide prefix
25
+ """
26
+ # Handle missing version ID case
27
+ if not model_version_id: # Covers None, empty string, etc.
28
+ if fallback_name is None:
29
+ raise ValueError("Missing model_version_id with no default provided")
30
+ return fallback_name
31
+
32
+ # Validate ID format (adjust regex pattern as needed)
33
+ if not isinstance(model_version_id, str):
34
+ raise TypeError(
35
+ f"model_version_id must be string, got {type(model_version_id)}"
36
+ )
37
+
38
+ # Safely retrieve configuration prefix
39
+ try:
40
+ prefix = config_manager.get_model_version_id_prefix()
41
+ except AttributeError as e:
42
+ raise RuntimeError("Configuration manager missing required method") from e
43
+ except Exception as e:
44
+ raise RuntimeError(f"Failed to retrieve model prefix: {str(e)}") from e
45
+
46
+ # Construct final model name
47
+ return f"{prefix}{model_version_id}"
48
+
49
+
50
+ def filter_files_extensions(
51
+ files: Collection[str], extensions: Collection[str]
52
+ ) -> list[str]:
53
+ return sorted(
54
+ list(
55
+ filter(
56
+ lambda a: os.path.splitext(a)[-1].lower() in extensions
57
+ or len(extensions) == 0,
58
+ files,
59
+ )
60
+ )
61
+ )
62
+
63
+
64
+ def load_yaml_config(file_path):
65
+ with open(file_path, "r") as file:
66
+ config = yaml.safe_load(file)
67
+ return config
68
+
69
+
70
+ def get_service_route(service_config: Dict[str, str]) -> Union[str, None]:
71
+ if {"route"}.issubset(service_config):
72
+ return str(
73
+ service_config.get("service_address", BIZYAIR_SERVER_ADDRESS)
74
+ ) + service_config.get("route")
75
+ return None
@@ -318,6 +318,29 @@ class BizyAirJoyCaption2(BizyAirMiscBaseNode):
318
318
 
319
319
  CATEGORY = "☁️BizyAir/AI Assistants"
320
320
 
321
+ def resize_if_large(self, image, max_size=384):
322
+ import torch.nn.functional as F
323
+
324
+ _, h, w, _ = image.shape
325
+
326
+ if h <= max_size and w <= max_size:
327
+ return image
328
+
329
+ if h > w:
330
+ new_h = max_size
331
+ new_w = int(w * (max_size / h))
332
+ else:
333
+ new_w = max_size
334
+ new_h = int(h * (max_size / w))
335
+
336
+ image = image.permute(0, 3, 1, 2)
337
+ resized_image = F.interpolate(
338
+ image, size=(new_h, new_w), mode="bilinear", align_corners=False
339
+ )
340
+ resized_image = resized_image.permute(0, 2, 3, 1)
341
+
342
+ return resized_image
343
+
321
344
  def joycaption2(
322
345
  self,
323
346
  image,
@@ -333,12 +356,7 @@ class BizyAirJoyCaption2(BizyAirMiscBaseNode):
333
356
  ):
334
357
  extra_data = pop_api_key_and_prompt_id(kwargs)
335
358
  headers = client.headers(api_key=extra_data["api_key"])
336
-
337
- SIZE_LIMIT = 1536
338
- _, w, h, c = image.shape
339
- assert (
340
- w <= SIZE_LIMIT and h <= SIZE_LIMIT
341
- ), f"width and height must be less than {SIZE_LIMIT}x{SIZE_LIMIT}, but got {w} and {h}"
359
+ image = self.resize_if_large(image)
342
360
 
343
361
  payload = {
344
362
  "image": None,
@@ -380,15 +398,21 @@ class BizyAirJoyCaption2(BizyAirMiscBaseNode):
380
398
  return (caption,)
381
399
 
382
400
 
401
+ class BizyAirJoyCaption3(BizyAirJoyCaption2):
402
+ API_URL = f"{BIZYAIR_SERVER_ADDRESS}/supernode/joycaption3"
403
+
404
+
383
405
  NODE_CLASS_MAPPINGS = {
384
406
  "BizyAirSiliconCloudLLMAPI": SiliconCloudLLMAPI,
385
407
  "BizyAirSiliconCloudVLMAPI": SiliconCloudVLMAPI,
386
408
  "BizyAirJoyCaption": BizyAirJoyCaption,
387
409
  "BizyAirJoyCaption2": BizyAirJoyCaption2,
410
+ "BizyAirJoyCaption3": BizyAirJoyCaption3,
388
411
  }
389
412
  NODE_DISPLAY_NAME_MAPPINGS = {
390
413
  "BizyAirSiliconCloudLLMAPI": "☁️BizyAir SiliconCloud LLM API",
391
414
  "BizyAirSiliconCloudVLMAPI": "☁️BizyAir SiliconCloud VLM API",
392
415
  "BizyAirJoyCaption": "☁️BizyAir Joy Caption",
393
416
  "BizyAirJoyCaption2": "☁️BizyAir Joy Caption2",
417
+ "BizyAirJoyCaption3": "☁️BizyAir Joy Caption3",
394
418
  }
@@ -0,0 +1 @@
1
+ 1.2.11
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bizyengine
3
- Version: 1.2.9
3
+ Version: 1.2.11
4
4
  Summary: [a/BizyAir](https://github.com/siliconflow/BizyAir) Comfy Nodes that can run in any environment.
5
5
  Author-email: SiliconFlow <yaochi@siliconflow.cn>
6
6
  Project-URL: Repository, https://github.com/siliconflow/BizyAir
@@ -1,34 +0,0 @@
1
- import os
2
- from collections.abc import Collection
3
- from typing import Dict, Union
4
-
5
- import yaml
6
- from bizyengine.core.common.env_var import BIZYAIR_SERVER_ADDRESS
7
-
8
-
9
- def filter_files_extensions(
10
- files: Collection[str], extensions: Collection[str]
11
- ) -> list[str]:
12
- return sorted(
13
- list(
14
- filter(
15
- lambda a: os.path.splitext(a)[-1].lower() in extensions
16
- or len(extensions) == 0,
17
- files,
18
- )
19
- )
20
- )
21
-
22
-
23
- def load_yaml_config(file_path):
24
- with open(file_path, "r") as file:
25
- config = yaml.safe_load(file)
26
- return config
27
-
28
-
29
- def get_service_route(service_config: Dict[str, str]) -> Union[str, None]:
30
- if {"route"}.issubset(service_config):
31
- return str(
32
- service_config.get("service_address", BIZYAIR_SERVER_ADDRESS)
33
- ) + service_config.get("route")
34
- return None
@@ -1 +0,0 @@
1
- 1.2.9
File without changes
File without changes
File without changes
File without changes