title: How should I specify default values on Pydantic fields with "Validate Always" to satisfy type checkers?
body: <p>My type checker moans at me when I use snippets like this one <a href="https://pydantic-docs.helpmanual.io/usage/validators/#validate-always" rel="nofollow noreferrer">from the Pydantic docs</a>:</p>
  <pre class="lang-py prettyprint-override"><code>from datetime import datetime
  
  from pydantic import BaseModel, validator
  
  
  class DemoModel(BaseModel):
      ts: datetime = None  # Expression of type &quot;None&quot; cannot be 
                           # assigned to declared type &quot;datetime&quot;
  
      @validator('ts', pre=True, always=True)
      def set_ts_now(cls, v):
          return v or datetime.now()
  </code></pre>
  <p>My workarounds so far have been:</p>
  <pre class="lang-py prettyprint-override"><code>ts: datetime = datetime(1970, 1, 1)  # yuck
  </code></pre>
  <pre class="lang-py prettyprint-override"><code>ts: datetime = None  # type: ignore
  </code></pre>
  <pre class="lang-py prettyprint-override"><code>ts: Optional[datetime] = None  # Not really true. `ts` is not optional.
  </code></pre>
  <p>Is there a preferred way out of this conundrum?</p>
  <p>Or is there a type checker I could use which doesn't mind this?</p>