MCPcopy Create free account
hub / github.com/Kosinkadink/ComfyUI-Advanced-ControlNet / AdvancedControlBase

Class AdvancedControlBase

adv_control/utils.py:486–926  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

484
485
486class AdvancedControlBase:
487 ACN_VERSION = CURRENT_WRAPPER_VERSION
488
489 def __init__(self, base: ControlBase, timestep_keyframes: TimestepKeyframeGroup, weights_default: ControlWeights, require_vae=False, allow_condhint_latents=False):
490 self.base = base
491 self.compatible_weights = [ControlWeightType.UNIVERSAL, ControlWeightType.DEFAULT]
492 self.add_compatible_weight(weights_default.weight_type)
493 # mask for which parts of controlnet output to keep
494 self.mask_cond_hint_original = None
495 self.mask_cond_hint = None
496 self.tk_mask_cond_hint_original = None
497 self.tk_mask_cond_hint = None
498 self.weight_mask_cond_hint = None
499 # actual index values
500 self.sub_idxs = None
501 self.full_latent_length = 0
502 self.context_length = 0
503 # timesteps
504 self.t: float = None
505 self.prev_t: float = None
506 self.batched_number: int = None
507 self.batch_size: int = 0
508 self.cond_or_uncond: list[int] = None
509 # weights + override
510 self.weights: ControlWeights = None
511 self.weights_default: ControlWeights = weights_default
512 self.weights_override: ControlWeights = None
513 # latent keyframe + override
514 self.latent_keyframes: LatentKeyframeGroup = None
515 self.latent_keyframe_override: LatentKeyframeGroup = None
516 # initialize timestep_keyframes
517 self.set_timestep_keyframes(timestep_keyframes)
518 # override some functions
519 self.get_control = self.get_control_inject
520 self.control_merge = self.control_merge_inject
521 self.pre_run = self.pre_run_inject
522 self.cleanup = self.cleanup_inject
523 self.set_previous_controlnet = self.set_previous_controlnet_inject
524 self.set_cond_hint = self.set_cond_hint_inject
525 # vae to store
526 self.adv_vae = None
527 self.mult_by_ratio_when_vae = True
528 # compression ratio stuff
529 self.real_compression_ratio = None
530 # require model/vae to be passed into Apply Advanced ControlNet 🛂🅐🅒🅝 node
531 self.require_vae = require_vae
532 self.allow_condhint_latents = allow_condhint_latents
533 self.postpone_condhint_latents_check = False
534 # disarm - when set to False, used to force usage of Apply Advanced ControlNet 🛂🅐🅒🅝 node (which will set it to True)
535 self.disarmed = True
536
537 def add_compatible_weight(self, control_weight_type: str):
538 self.compatible_weights.append(control_weight_type)
539
540 def verify_all_weights(self, throw_error=True):
541 # first, check if override exists - if so, only need to check the override
542 if self.weights_override is not None:
543 if self.weights_override.weight_type not in self.compatible_weights:

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected