class_docstr: Encodes :math:`N` features into the squeezing amplitudes :math:`r \geq 0` or phases :math:`\phi \in [0, 2\pi)`
  of :math:`M` modes, where :math:`N\leq M`.
  
  The mathematical definition of the squeezing gate is given by the operator
  
  .. math::
  
      S(z) = \exp\left(\frac{r}{2}\left(e^{-i\phi}\a^2 -e^{i\phi}{\ad}^{2} \right) \right),
  
  where :math:`\a` and :math:`\ad` are the bosonic creation and annihilation operators.
  
  ``features`` has to be an iterable of at most ``len(wires)`` floats. If there are fewer entries in
  ``features`` than wires, the circuit does not apply the remaining squeezing gates.
  
  Args:
      features (tensor_like): tensor of features
      wires (Any or Iterable[Any]): wires that the template acts on
      method (str): ``'phase'`` encodes the input into the phase of single-mode squeezing, while
          ``'amplitude'`` uses the amplitude
      c (float): value of the phase of all squeezing gates if ``execution='amplitude'``, or the
          amplitude of all squeezing gates if ``execution='phase'``
  
  Raises:
      ValueError: if inputs do not have the correct format
  
  Example:
  
      Depending on the ``method`` argument, the feature vector will be encoded in the phase or the amplitude.
      The argument ``c`` will define the value of the other quantity.
      The default values are :math:`0.1` for ``c`` and ``'amplitude'`` for ``method``.
  
      .. code-block:: python
  
          dev = qml.device('default.gaussian', wires=3)
  
          @qml.qnode(dev)
          def circuit(feature_vector):
              qml.SqueezingEmbedding(features=feature_vector, wires=range(3))
              qml.QuadraticPhase(0.1, wires=1)
              return qml.expval(qml.NumberOperator(wires=1))
  
          X = [1, 2, 3]
  
      >>> print(circuit(X))
          13.018280763205285
  
      And, the resulting circuit is:
  
      >>> print(qml.draw(circuit, show_matrices=False)(X))
      0: ─╭SqueezingEmbedding(M0)──────────┤
      1: ─├SqueezingEmbedding(M0)──P(0.10)─┤  <n>
      2: ─╰SqueezingEmbedding(M0)──────────┤
  
      Using different parameters:
  
      .. code-block:: python
  
          dev = qml.device('default.gaussian', wires=3)
  
          @qml.qnode(dev)
          def circuit(feature_vector):
              qml.SqueezingEmbedding(features=feature_vector, wires=range(3), method='phase', c=0.5)
              qml.QuadraticPhase(0.1, wires=1)
              return qml.expval(qml.NumberOperator(wires=1))
  
          X = [1, 2, 3]
  
      >>> print(circuit(X))
          0.22319028857312428
  
      And, the resulting circuit is:
  
      >>> print(qml.draw(circuit, show_matrices=False)(X))
      0: ─╭SqueezingEmbedding(M0)──────────┤
      1: ─├SqueezingEmbedding(M0)──P(0.10)─┤  <n>
      2: ─╰SqueezingEmbedding(M0)──────────┤
code: def _unflatten(cls, data, metadata) -> "SqueezingEmbedding":
      new_op = cls.__new__(cls)
      Operation.__init__(new_op, *data, wires=metadata[0])
      return new_op
  
imports: import pennylane
  from pennylane.operation import Operation, AnyWires
label_desc: Use image node_id 1 for calling the SqueezingEmbedding obj's underlying member method code with example usage: obj._unflatten(cls, data, metadata) and returns: new_op