class_docstr: 2x2 transformation matrix plus offset, a.k.a. Affine transform.
  Transform instances are immutable: all transforming methods, eg.
  rotate(), return a new Transform instance.
  
  :Example:
  
          >>> t = Transform()
          >>> t
          <Transform [1 0 0 1 0 0]>
          >>> t.scale(2)
          <Transform [2 0 0 2 0 0]>
          >>> t.scale(2.5, 5.5)
          <Transform [2.5 0 0 5.5 0 0]>
          >>>
          >>> t.scale(2, 3).transformPoint((100, 100))
          (200, 300)
  
  Transform's constructor takes six arguments, all of which are
  optional, and can be used as keyword arguments::
  
          >>> Transform(12)
          <Transform [12 0 0 1 0 0]>
          >>> Transform(dx=12)
          <Transform [1 0 0 1 12 0]>
          >>> Transform(yx=12)
          <Transform [1 0 12 1 0 0]>
  
  Transform instances also behave like sequences of length 6::
  
          >>> len(Identity)
          6
          >>> list(Identity)
          [1, 0, 0, 1, 0, 0]
          >>> tuple(Identity)
          (1, 0, 0, 1, 0, 0)
  
  Transform instances are comparable::
  
          >>> t1 = Identity.scale(2, 3).translate(4, 6)
          >>> t2 = Identity.translate(8, 18).scale(2, 3)
          >>> t1 == t2
          1
  
  But beware of floating point rounding errors::
  
          >>> t1 = Identity.scale(0.2, 0.3).translate(0.4, 0.6)
          >>> t2 = Identity.translate(0.08, 0.18).scale(0.2, 0.3)
          >>> t1
          <Transform [0.2 0 0 0.3 0.08 0.18]>
          >>> t2
          <Transform [0.2 0 0 0.3 0.08 0.18]>
          >>> t1 == t2
          0
  
  Transform instances are hashable, meaning you can use them as
  keys in dictionaries::
  
          >>> d = {Scale(12, 13): None}
          >>> d
          {<Transform [12 0 0 13 0 0]>: None}
  
  But again, beware of floating point rounding errors::
  
          >>> t1 = Identity.scale(0.2, 0.3).translate(0.4, 0.6)
          >>> t2 = Identity.translate(0.08, 0.18).scale(0.2, 0.3)
          >>> t1
          <Transform [0.2 0 0 0.3 0.08 0.18]>
          >>> t2
          <Transform [0.2 0 0 0.3 0.08 0.18]>
          >>> d = {t1: None}
          >>> d
          {<Transform [0.2 0 0 0.3 0.08 0.18]>: None}
          >>> d[t2]
          Traceback (most recent call last):
            File "<stdin>", line 1, in ?
          KeyError: <Transform [0.2 0 0 0.3 0.08 0.18]>
class_docstr_tok: ["2x2","transformation","matrix","plus","offset",",","a.k.a",".","Affine","transform",".","Transform","instances","are","immutable",":","all","transforming","methods",",","eg",".","rotate","(",")",",","return","a","new","Transform","instance",".",":","Example",":",">",">",">","t","=","Transform","(",")",">",">",">","t","<","Transform","[","1","0","0","1","0","0","]",">",">",">",">","t.scale","(","2",")","<","Transform","[","2","0","0","2","0","0","]",">",">",">",">","t.scale","(","2.5",",","5.5",")","<","Transform","[","2.5","0","0","5.5","0","0","]",">",">",">",">",">",">",">","t.scale","(","2",",","3",")",".transformPoint","(","(","100",",","100",")",")","(","200",",","300",")","Transform","'s","constructor","takes","six","arguments",",","all","of","which","are","optional",",","and","can","be","used","as","keyword","arguments",":",":",">",">",">","Transform","(","12",")","<","Transform","[","12","0","0","1","0","0","]",">",">",">",">","Transform","(","dx=12",")","<","Transform","[","1","0","0","1","12","0","]",">",">",">",">","Transform","(","yx=12",")","<","Transform","[","1","0","12","1","0","0","]",">","Transform","instances","also","behave","like","sequences","of","length","6",":",":",">",">",">","len","(","Identity",")","6",">",">",">","list","(","Identity",")","[","1",",","0",",","0",",","1",",","0",",","0","]",">",">",">","tuple","(","Identity",")","(","1",",","0",",","0",",","1",",","0",",","0",")","Transform","instances","are","comparable",":",":",">",">",">","t1","=","Identity.scale","(","2",",","3",")",".translate","(","4",",","6",")",">",">",">","t2","=","Identity.translate","(","8",",","18",")",".scale","(","2",",","3",")",">",">",">","t1","==","t2","1","But","beware","of","floating","point","rounding","errors",":",":",">",">",">","t1","=","Identity.scale","(","0.2",",","0.3",")",".translate","(","0.4",",","0.6",")",">",">",">","t2","=","Identity.translate","(","0.08",",","0.18",")",".scale","(","0.2",",","0.3",")",">",">",">","t1","<","Transform","[","0.2","0","0","0.3","0.08","0.18","]",">",">",">",">","t2","<","Transform","[","0.2","0","0","0.3","0.08","0.18","]",">",">",">",">","t1","==","t2","0","Transform","instances","are","hashable",",","meaning","you","can","use","them","as","keys","in","dictionaries",":",":",">",">",">","d","=","{","Scale","(","12",",","13",")",":","None","}",">",">",">","d","{","<","Transform","[","12","0","0","13","0","0","]",">",":","None","}","But","again",",","beware","of","floating","point","rounding","errors",":",":",">",">",">","t1","=","Identity.scale","(","0.2",",","0.3",")",".translate","(","0.4",",","0.6",")",">",">",">","t2","=","Identity.translate","(","0.08",",","0.18",")",".scale","(","0.2",",","0.3",")",">",">",">","t1","<","Transform","[","0.2","0","0","0.3","0.08","0.18","]",">",">",">",">","t2","<","Transform","[","0.2","0","0","0.3","0.08","0.18","]",">",">",">",">","d","=","{","t1",":","None","}",">",">",">","d","{","<","Transform","[","0.2","0","0","0.3","0.08","0.18","]",">",":","None","}",">",">",">","d","[","t2","]","Traceback","(","most","recent","call","last",")",":","File","``","<","stdin",">","''",",","line","1",",","in","?","KeyError",":","<","Transform","[","0.2","0","0","0.3","0.08","0.18","]",">"]
code: def __repr__(self):
      return "<%s [%g %g %g %g %g %g]>" % (
          (self.__class__.__name__,) + self
      )
  
imports: import math
  from typing import NamedTuple
  from dataclasses import dataclass
label_desc: Use image node_id 15 for calling the Transform obj's underlying member method code with example usage: obj.__repr__() and returns: unknown