class_docstr: A `Composable` object made of a sequence of `!Composable`.
  
  The object is usually created using `!Composable` operators and methods.
  However it is possible to create a `!Composed` directly specifying a
  sequence of `!Composable` as arguments.
  
  Example::
  
      >>> comp = sql.Composed(
      ...     [sql.SQL("insert into "), sql.Identifier("table")])
      >>> print(comp.as_string(conn))
      insert into "table"
  
  `!Composed` objects are iterable (so they can be used in `SQL.join` for
  instance).
docstr: Return a new `!Composed` interposing the *joiner* with the `!Composed` items.
  
  The *joiner* must be a `SQL` or a string which will be interpreted as
  an `SQL`.
  
  Example::
  
      >>> fields = sql.Identifier('foo') + sql.Identifier('bar')  # a Composed
      >>> print(fields.join(', ').as_string(conn))
      "foo", "bar"
docstr_tok: ["Return","a","new","`","!","Composed","`","interposing","the","*","joiner","*","with","the","`","!","Composed","`","items",".","The","*","joiner","*","must","be","a","`","SQL","`","or","a","string","which","will","be","interpreted","as","an","`","SQL","`",".","Example",":",":",">",">",">","fields","=","sql.Identifier","(","'foo","'",")","+","sql.Identifier","(","'bar","'",")","#","a","Composed",">",">",">","print","(","fields.join","(","'",",","'",")",".as_string","(","conn",")",")","``","foo","''",",","``","bar","''"]
code: def join(self, joiner):
      """
      Return a new `!Composed` interposing the *joiner* with the `!Composed` items.
  
      The *joiner* must be a `SQL` or a string which will be interpreted as
      an `SQL`.
  
      Example::
  
          >>> fields = sql.Identifier('foo') + sql.Identifier('bar')  # a Composed
          >>> print(fields.join(', ').as_string(conn))
          "foo", "bar"
  
      """
      if isinstance(joiner, str):
          joiner = SQL(joiner)
      elif not isinstance(joiner, SQL):
          raise TypeError(
              "Composed.join() argument must be a string or an SQL"
          )
  
      return joiner.join(self)
  
imports: import string
  from psycopg2 import extensions
label_desc: Use image node_id 6 for calling the Composed obj's underlying member method code with example usage: obj.join(joiner) and returns: joiner