code: def tx(self, *args, **kwargs):
      
      if 0 == len(args): return TX(self) 
      ops = []
      for op in args:
        if isinstance(op, list):            ops += op
        elif isinstance(op, (str,unicode)): ops.append(op)
      if 'debug' in kwargs: pp(ops)
      tx_proc ="[ %s ]" % "".join(ops)
      x = self.rest('POST', self.uri_db, data={"tx-data": tx_proc})
      return x
docs: Executes a raw tx string, or get a new TX object to work with.
  
      Passing a raw string or list of strings will immedately transact 
      and return the API response as a dict.
      >>> resp = tx('{:db/id #db/id[:db.part/user] :person/name "Bob"}')
      {db-before: db-after: tempids: }
  
      This gets a fresh `TX()` to prepare a transaction with.
      >>> tx = db.tx()
  
      New `E()` object with person/fname and person/lname attributes
      >>> person = tx.add('person/',   {'fname':'John', 'lname':'Doe'})
  
      New state and city objects referencing the state
      >>> state  = tx.add('loc/state', 'WA')
      >>> city   = tx.add('loc/city',  'Seattle', 'isin', state)
  
      Add person/city, person/state, and person/likes refs to the person entity
      >>> person.add('person/', {'city': city, 'state': state, 'likes': [city, state]})
  
      Excute the transaction
      >>> resp = tx.tx()        
  
      The resolved entity ids for our person
      >>> person.eid, state.eid, city.eid
  
      Fetch all attributes, behave like a dict
      >>> person.items()
      >>> person.iteritems()
  
      Access attribute as an attribute
      >>> person['person/name']
  
      See `TX()` for options.