title: When is the usage of the Python Ellipsis to be preferred over 'pass'?
body: <p>I was just looking up the way to go for defining an abstract base class in Python, when I found the <code>abc</code> module (<a href="https://docs.python.org/3/library/abc.html" rel="noreferrer">https://docs.python.org/3/library/abc.html</a>).</p>
  
  <p>After a bit of reading I saw the following class:</p>
  
  <pre class="lang-py prettyprint-override"><code>class C(ABC):
      @abstractmethod
      def my_abstract_method(self, ...):
          ...
      @classmethod
      @abstractmethod
      def my_abstract_classmethod(cls, ...):
          ...
  </code></pre>
  
  <p>Wondering about the triple dots, which I found it is called the <code>Ellipsis</code> (<a href="https://docs.python.org/3/library/constants.html#Ellipsis" rel="noreferrer">https://docs.python.org/3/library/constants.html#Ellipsis</a>). I've seen and used it so far only in combination with type hints, where it maked perfectly sense.</p>
  
  <p>But why would one use the Ellipsis in the definition of an abstract method? Personally, I would either do</p>
  
  <pre class="lang-py prettyprint-override"><code>def my_abstract_method(self):
      raise RuntimeError("NotImplemented")
  </code></pre>
  
  <p>or</p>
  
  <pre class="lang-py prettyprint-override"><code>def my_abstract_method(self):
      pass
  </code></pre>
  
  <p>So why is the Ellipsis preferred over <code>pass</code> in the official documentation? Is it just opiniated?</p>