class_docstr: EVA block w/ post-norm and support for swiglu, MLP norm scale, ROPE. 
class_docstr_tok: ["EVA","block","w\/","post-norm","and","support","for","swiglu",",","MLP","norm","scale",",","ROPE","."]
code: def forward(
      self,
      x,
      rope: Optional[torch.Tensor] = None,
      attn_mask: Optional[torch.Tensor] = None,
  ):
      x = x + self.drop_path1(
          self.norm1(self.attn(x, rope=rope, attn_mask=attn_mask))
      )
      x = x + self.drop_path2(self.norm2(self.mlp(x)))
      return x
  
imports: import math
  from typing import Callable, Optional, Tuple, Union
  import torch
  import torch.nn
  import torch.nn.functional
  from torch.utils.checkpoint import checkpoint
  from timm.data import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD, OPENAI_CLIP_MEAN, OPENAI_CLIP_STD
  from timm.layers import PatchEmbed, Mlp, GluMlp, SwiGLU, LayerNorm, DropPath, PatchDropout, RotaryEmbeddingCat, apply_rot_embed_cat, apply_keep_indices_nlc, trunc_normal_, resample_patch_embed, resample_abs_pos_embed, to_2tuple, use_fused_attn
  from ._builder import build_model_with_cfg
  from ._registry import generate_default_cfgs, register_model
label_desc: Use image node_id 2 for calling the EvaBlockPostNorm obj's underlying member method code with example usage: obj.forward(x, rope, attn_mask) and returns: x