Aller au contenu
weSkelDOCUMENTATION
Documentation/Référence API/DGNode

DGNode

Nom, plugs, création et état SVD des nœuds du Dependency Graph.

ClassAPI 2.0Base
objectNodeDGNode
from weSkel.src.core.node.abstract.dg.lib import DGNode

Dans Maya ou dans un script Python exécuté par Maya / mayapy initialisé, avec weSkel accessible. L’import de om n’est nécessaire que pour manipuler les types OpenMaya dans votre propre code.

Élément Valeur
Classe DGNode
Module weSkel.src.core.node.abstract.dg.lib
Parent direct Node
Descendants directs représentés ContainerBase, GeometryFilter, MultMatrix, Network…
Membres propres 15 propriétés Python + 6 propriétés de specs ; 7 méthodes définies ou redéfinies ici.

Les membres des parents restent disponibles. Chaque rubrique propose des tableaux repliables par classe parente, avec un lien vers le contrat complet. Les méthodes privées et les mécanismes standard Python ne font pas partie de cet inventaire.

Signature : DGNode(node) → DGNode ou une sous-classe compatible déjà enregistrée.

Paramètre Types acceptés Défaut
node str, om.MObject, om.MObjectHandle, om.MFnDependencyNode Obligatoire

Enveloppe un nœud existant ou prépare un wrapper si le nom est introuvable ; ne crée aucun nœud. Pour un autre wrapper, passer other.mobject. Le registre partagé conserve l’identité et peut renvoyer le wrapper concret existant. Une entrée incompatible peut lever TypeError, et un conflit d’identité RuntimeError.

Propriétés Python définies sur cette classe. om désigne maya.api.OpenMaya. Les propriétés issues des specs sont détaillées dans la section suivante.

Propriété Type retourné Accès
dep_fn om.MFnDependencyNode L
uuid str | None L
name str | None L/E
absolute_name str | None L
stripped_name str | None L/E
namespace str | None L/E
plugs Plugs | None L
is_valid_dep_fn bool L
is_default_node bool L
is_from_referenced_file bool L
is_locked bool L/E
is_shared bool L
plugin_name str | None L
affect_animation bool L
type str | None L/E

node.dep_fnLecture seule

Function set live ; objet non attaché si le nœud est absent. Vérifier exists avant ses opérations.

Élément Type / comportement
Retour om.MFnDependencyNode

node.uuidLecture seule

UUID live, ou dernière valeur mémorisée si elle reste disponible. Ne pas utiliser le nom comme identité.

Élément Type / comportement
Retour str | None

node.nameLecture / écriture

Nom live, sinon nom mémorisé. Le setter renomme le nœud existant ou prépare le nom d’un wrapper absent ; Maya peut ajuster un nom en conflit.

Élément Type / comportement
Retour str | None
node.name = value str

node.absolute_nameLecture seule

Nom absolu de namespace renvoyé par MFnDependencyNode.absoluteName() ; None sans nœud. Pour un chemin DAG complet, utiliser full_path_name.

Élément Type / comportement
Retour str | None

node.stripped_nameLecture / écriture

Nom sans namespace, ou None si aucun nom. Le setter conserve le namespace courant.

Élément Type / comportement
Retour str | None
node.stripped_name = value str

node.namespaceLecture / écriture

Namespace normalisé comme a:b ; None à la racine. Le setter crée les namespaces nécessaires pour un nœud live. None, "" et ":" demandent la racine.

Élément Type / comportement
Retour str | None
node.namespace = value str | None

node.plugsLecture seule

Gestionnaire des plugs du nœud live ; None sinon. node.plugs["message"] renvoie un Plug.

Élément Type / comportement
Retour Plugs | None

node.is_valid_dep_fnLecture seule

Compatibilité du function set avec le MObject courant.

Élément Type / comportement
Retour bool

node.is_default_nodeLecture seule

Indique un nœud par défaut de Maya ; False sans nœud.

Élément Type / comportement
Retour bool

node.is_from_referenced_fileLecture seule

Indique un nœud issu d’un fichier référencé ; False sans nœud.

Élément Type / comportement
Retour bool

node.is_lockedLecture / écriture

Verrouillage du nœud, distinct des locks de plugs. Le setter agit sur le nœud live et mémorise la valeur pour une création ultérieure.

Élément Type / comportement
Retour bool
node.is_locked = value bool

node.is_sharedLecture seule

État partagé renvoyé par Maya ; False sans nœud.

Élément Type / comportement
Retour bool

node.plugin_nameLecture seule

Nom du plugin Maya associé, éventuellement chaîne vide ; None sans nœud.

Élément Type / comportement
Retour str | None

node.affect_animationLecture seule

Résultat de MFnDependencyNode.affectsAnimation() ; False sans nœud.

Élément Type / comportement
Retour bool

node.typeLecture / écriture

Type natif live ou type mémorisé. Le setter ne fonctionne que sans nœud live ; sinon il lève RuntimeError. Un wrapper concret fixe normalement son type avec NODE_TYPE.

Élément Type / comportement
Retour str | None
node.type = value str
Propriétés héritées de Node10
Propriété Type retourné Accès Description
mobject om.MObject L/E Objet Maya live, ou objet nul.
mobject_handle om.MObjectHandle L/E Handle associé au nœud.
api_type int | None L Identifiant du type API Maya.
api_type_str str L Nom du type API, par exemple "kTime".
exists bool L Le wrapper possède actuellement un nœud live.
is_null bool L L’objet Maya retourné est nul.
is_alive bool L L’objet existe avec un handle valide et vivant.
is_valid_handle bool L Validité du handle mémorisé.
is_dag_node bool L Compatibilité avec om.MFn.kDagNode.
hash_code int L Hash du handle Maya.

Les noms Python et Maya sont reproduits exactement. Type déclaré, retour Python et défaut déclaré sont des informations différentes. Le défaut d’une spec n’est pas nécessairement la valeur live d’un nœud, ni une valeur automatiquement écrite à sa création.

Les retours ci-dessous décrivent les descriptors de cette classe ; les observations live utilisent un network, un container, un transform, un mesh ou un skinCluster selon la classe. Certains plugs dépendent du type concret. Une sous-classe peut redéfinir un membre et ses possibilités d’écriture. Les noms de proxies identifient le résultat actuel : ne pas importer leurs classes privées.

Forme Utilisation
_ValuePlugProxy .value lit la valeur ; .plug donne un Plug, .mplug un MPlug.
IndexedPathProxy Objet d’accès indexé. Sa résolution présente des limites au checkpoint documenté : les fiches donnent des alternatives vérifiées avec node.plugs[...].
Flags / écriture stored, input, output, connectable décrivent le contrat de replay. Ils ne garantissent pas qu’un plug natif soit modifiable dans son état courant.

Pour une écriture dont il faut vérifier l’échec, utiliser explicitement le Plug et contrôler le résultat live : certains setters de descriptors peuvent mémoriser la valeur sans propager une erreur d’écriture Maya.

Propriété Plug Maya Retour
message message None
frozen frozen _ValuePlugProxy · .value: bool
is_historically_interesting isHistoricallyInteresting _ValuePlugProxy · .value: int
bin_membership binMembership _ValuePlugProxy · .value: str
caching_enabled caching _ValuePlugProxy · .value: bool
caching_node_state nodeState _ValuePlugProxy · .value: int

node.messageConnexions

Plug de message du nœud ; sert aux connexions, sans valeur numérique.

Élément Type / comportement
Chemin Maya déclaré message
Retour de la propriété None
Type déclaré par la spec message
Défaut déclaré None
Flags output, connectable, hidden

Le setter du descriptor lève AttributeError. Gérer les connexions avec node.plugs[...] ; cette propriété ne renvoie pas le nœud connecté.

node.frozenLecture / écriture

État natif de gel de l’évaluation.

Élément Type / comportement
Chemin Maya déclaré frozen
Retour de la propriété _ValuePlugProxy · .value: bool
Type déclaré par la spec numeric:bool
Défaut déclaré False
Flags output, input, connectable, stored
Lire la valeur node.frozen.value
Affectation node.frozen = value

node.is_historically_interestingLecture / écriture

Niveau d’intérêt du nœud dans l’historique Maya.

Élément Type / comportement
Chemin Maya déclaré isHistoricallyInteresting
Retour de la propriété _ValuePlugProxy · .value: int
Type déclaré par la spec numeric:byte
Défaut déclaré 2
Flags output, input, connectable, stored, hidden
Lire la valeur node.is_historically_interesting.value
Affectation node.is_historically_interesting = value

node.bin_membershipLecture / écriture

Appartenance aux bins Maya.

Élément Type / comportement
Chemin Maya déclaré binMembership
Retour de la propriété _ValuePlugProxy · .value: str
Type déclaré par la spec typed:string
Défaut déclaré ''
Flags output, input, stored, hidden
Lire la valeur node.bin_membership.value
Affectation node.bin_membership = value

node.caching_enabledLecture / écriture

Activation du cache natif du nœud.

Élément Type / comportement
Chemin Maya déclaré caching
Retour de la propriété _ValuePlugProxy · .value: bool
Type déclaré par la spec numeric:bool
Défaut déclaré False
Flags output, input, connectable, stored
Lire la valeur node.caching_enabled.value
Affectation node.caching_enabled = value

node.caching_node_stateLecture / écriture

État d’évaluation natif nodeState.

Élément Type / comportement
Chemin Maya déclaré nodeState
Retour de la propriété _ValuePlugProxy · .value: int
Type déclaré par la spec enum
Défaut déclaré 0
Flags output, input, connectable, stored
Lire la valeur node.caching_node_state.value
Affectation node.caching_node_state = value
Méthode Retour
create None
delete None
snapshot DGSnapshot
snapshot_svd SVDSnapshot
svd SVDView
finalize None
clear_attr_cache None

node.create() -> NoneMéthode

Crée le nœud s’il est absent ; ne fait rien s’il existe déjà. Le type doit être défini. Utiliser un wrapper concret pour la création habituelle. Un état mémorisé est rejoué avec valeurs et connexions, en mode strict.

Élément Type / comportement
Retour None

RuntimeError si aucun type n’est défini ; erreurs natives de création ou de replay. Le retour est None, pas le wrapper.

node.delete(*, snapshot: bool = True) -> NoneMéthode

Déconnecte les connexions live, détache le wrapper puis supprime le nœud. Sans nœud live, ne fait rien. snapshot=False évite la capture lorsque l’état sera reconstruit autrement.

Élément Type / comportement
Retour None
snapshot bool · défaut True — Conserver un état pour une recréation.

La recréation produit un nouvel objet Maya : ce n’est pas une conservation d’identité ni une opération Undo globale.

node.snapshot(profile: str = "rig") -> DGSnapshotMéthode

Capture et mémorise un dictionnaire d’identité et d’état SVD selon les specs. Les valeurs natives peuvent contenir des objets API : ce résultat n’est pas garanti sérialisable en JSON.

Élément Type / comportement
Retour DGSnapshot
profile str · défaut "rig" — Libellé conservé dans le résultat ; aucun filtre général par profil.

La capture ne sauvegarde pas toute la scène ni tous les attributs dynamiques arbitraires.

node.snapshot_svd(attrs: Iterable[str]) -> SVDSnapshotMéthode

Capture Source / Value / Destinations pour la liste demandée. Renvoie un SVDSnapshot, différent du dictionnaire de snapshot(). Les attributs non résolus lors de la recherche sont ignorés.

Élément Type / comportement
Retour SVDSnapshot
attrs Iterable[str] · défaut — — Noms Maya des attributs à capturer.

RuntimeError sans nœud live. Ne pas passer directement ce conteneur à finalize() comme un DGSnapshot.

node.svd(plug: Plug | om.MPlug | str) -> SVDViewMéthode

Renvoie une vue live en lecture seule de la source, de la valeur et des destinations ; ce n’est pas une capture figée.

Élément Type / comportement
Retour SVDView
plug Plug | om.MPlug | str · défaut — — Plug ou nom Maya d’attribut.

RuntimeError sans nœud live ; vérifier le nom demandé avant utilisation. Les erreurs de résolution dépendent de l’accès au plug.

node.finalize(snapshot: Mapping[str, Any] | None = None, apply_values: bool = True, apply_connections: bool = True, apply_fset: bool = False, strict: bool = False) -> NoneMéthode

Applique toutes les sources, puis les valeurs libres, puis les destinations ; le dispatch FSET activé suit ces phases. Préserve les locks des valeurs adressées et ignore les feuilles déjà pilotées. Sans état explicite ou mémorisé, ne fait rien.

Élément Type / comportement
Retour None
snapshot Mapping[str, Any] | None · défaut None — Dictionnaire à rejouer ; sinon dernier état mémorisé.
apply_values bool · défaut True — Appliquer les valeurs stockables non pilotées.
apply_connections bool · défaut True — Rejouer les sources et destinations autorisées par les flags.
apply_fset bool · défaut False — Exécuter les entrées fset de forme name, args, kwargs.
strict bool · défaut False — Lever l’erreur originale avec contexte ; sinon avertir et poursuivre.

Aucun rollback général : une erreur peut survenir après des mutations. Les connexions existantes et indices d’arrays absents du snapshot ne sont pas globalement supprimés. None ne constitue pas un bilan de succès.

node.clear_attr_cache() -> NoneMéthode

Vide le cache d’attributs de cette instance ; ne supprime aucun nœud et ne vide pas le registre global de wrappers.

Élément Type / comportement
Retour None

Structure du DGSnapshot — dictionnaire Python à champs optionnels :

Champs Type
schema_version, profile, type str
uuid, name, long_name, namespace str | None
is_locked bool | None
svd tuple[dict, ...]
fset tuple[Any, ...]

snapshot() utilise schema_version="dg-1.0". Les entrées SVD portent notamment attr, plug, flags et, selon le cas, sources, value, destinations. Les chemins sérialisés ne deviennent pas des références persistantes par UUID.

Méthodes héritées de Node2
Méthode Retour Description
has_fn(fn_type) bool Tester la compatibilité avec un function set Maya.
clear_node_registry() None Détacher les wrappers enregistrés et vider leur registre partagé.
Attribut Type Valeur / rôle
NODE_TYPE str | None ""
SPEC_LAYERS list[SpecLayer] [get_dg_specs_all]

Attributs définis ou redéfinis ici. NODE_REGISTRY est hérité de Node. COMPATIBLE_MAYA_FN_TYPES est hérité ; pour une classe avec NODE_TYPE explicite, son utilisation dépend aussi de la politique de compatibilité décrite dans le constructeur.

Les types DGSnapshot exportés par ces modules sont des descriptions TypedDict, pas des classes à instancier pour effectuer une capture. Utiliser node.snapshot().

Point Comportement
Identité Le wrapper suit l’objet Maya ; un remplacement portant le même nom n’est pas le même nœud.
Lecture Lecture live prioritaire ; vérifier exists avant les opérations natives.
Specs Décrivent les plugs existants ; n’ajoutent pas automatiquement d’attributs Maya.
Exemples La démonstration crée et supprime uniquement ses propres nœuds nommés avec un suffixe aléatoire.

Exemple autonome pour le Script Editor Python de Maya. Pour l’exécuter depuis mayapy, initialiser maya.standalone avant ce bloc et le fermer ensuite, comme dans la référence Node.

from uuid import uuid4
from weSkel.src.core.node.abstract.dg.lib import DGNode
from weSkel.src.core.node.dg.network.lib import Network
node = Network("api_dg_" + uuid4().hex[:8])
try:
node.create()
assert DGNode(node.dep_fn) is node
node.caching_enabled = True
assert node.caching_enabled.value is True
state = node.snapshot()
assert isinstance(state, dict)
node.caching_enabled = False
node.finalize(state, apply_connections=False, strict=True)
assert node.caching_enabled.value is True
assert node.snapshot_svd(["caching"]) is not None
assert node.svd("caching") is not None
print("DGNode: identity, plugs and replay OK")
finally:
node.delete(snapshot=False)

Résultat attendu : DGNode: identity, plugs and replay OK. Les nœuds de démonstration sont supprimés dans le finally.

Référence du checkpoint SDK 87c3486. Inventaire et exemples vérifiés sur les sources sous Maya 2025.3 et 2026.3 ; cela ne valide pas le package compilé.