class_docstr: The :obj:`Layout` class id designed for processing a list of layout elements
  on a page. It stores the layout elements in a list and the related `page_data`,
  and provides handy APIs for processing all the layout elements in batch. `
  
  Args:
      blocks (:obj:`list`):
          A list of layout element blocks
      page_data (Dict, optional):
          A dictionary storing the page (canvas) related information
          like `height`, `width`, etc. It should be passed in as a
          keyword argument to avoid any confusion.
          Defaults to None.
class_docstr_tok: ["The",":","obj",":","`","Layout","`","class","id","designed","for","processing","a","list","of","layout","elements","on","a","page",".","It","stores","the","layout","elements","in","a","list","and","the","related","`","page_data","`",",","and","provides","handy","APIs","for","processing","all","the","layout","elements","in","batch",".","`","Args",":","blocks","(",":","obj",":","`","list","`",")",":","A","list","of","layout","element","blocks","page_data","(","Dict",",","optional",")",":","A","dictionary","storing","the","page","(","canvas",")","related","information","like","`","height","`",",","`","width","`",",","etc",".","It","should","be","passed","in","as","a","keyword","argument","to","avoid","any","confusion",".","Defaults","to","None","."]
docstr: Shift all layout elements by user specified amounts on x and y axis respectively. If shift_distance is one
  numeric value, the element will by shifted by the same specified amount on both x and y axis.
  
  Args:
      shift_distance (:obj:`numeric` or :obj:`Tuple(numeric)` or :obj:`List[numeric]`):
          The number of pixels used to shift the element.
  
  Returns:
      :obj:`Layout`:
          A new layout object with all the elements shifted in the specified values.
docstr_tok: ["Shift","all","layout","elements","by","user","specified","amounts","on","x","and","y","axis","respectively",".","If","shift_distance","is","one","numeric","value",",","the","element","will","by","shifted","by","the","same","specified","amount","on","both","x","and","y","axis",".","Args",":","shift_distance","(",":","obj",":","`","numeric","`","or",":","obj",":","`","Tuple","(","numeric",")","`","or",":","obj",":","`","List","[","numeric","]","`",")",":","The","number","of","pixels","used","to","shift","the","element",".","Returns",":",":","obj",":","`","Layout","`",":","A","new","layout","object","with","all","the","elements","shifted","in","the","specified","values","."]
code: def shift(self, shift_distance):
      """
      Shift all layout elements by user specified amounts on x and y axis respectively. If shift_distance is one
      numeric value, the element will by shifted by the same specified amount on both x and y axis.
  
      Args:
          shift_distance (:obj:`numeric` or :obj:`Tuple(numeric)` or :obj:`List[numeric]`):
              The number of pixels used to shift the element.
  
      Returns:
          :obj:`Layout`:
              A new layout object with all the elements shifted in the specified values.
      """
      return self.__class__(
          [ele.shift(shift_distance) for ele in self],
          page_data=self.page_data,
      )
  
imports: from typing import List, Union, Dict, Dict, Any, Optional
  from collections.abc import MutableSequence, Iterable
  from copy import copy
  import pandas
  from .base import BaseCoordElement, BaseLayoutElement
  from .layout_elements import Interval, Rectangle, Quadrilateral, TextBlock, ALL_BASECOORD_ELEMENTS, BASECOORD_ELEMENT_NAMEMAP, BASECOORD_ELEMENT_INDEXMAP
label_desc: Use image node_id 17 for calling the Layout obj's underlying member method code with example usage: obj.shift(shift_distance) and returns: self