|
234 | 234 | <li class="toctree-l2 current active"><a class="current reference internal" href="#">3.7. Data Classes</a></li>
|
235 | 235 | <li class="toctree-l2"><a class="reference internal" href="typing.html">3.8. Typing</a></li>
|
236 | 236 | <li class="toctree-l2"><a class="reference internal" href="pathlib.html">3.9. pathlib</a></li>
|
| 237 | +<li class="toctree-l2"><a class="reference internal" href="pydantic.html">3.10. Pydantic</a></li> |
237 | 238 | </ul>
|
238 | 239 | </li>
|
239 | 240 | <li class="toctree-l1 has-children"><a class="reference internal" href="../Chapter3/Chapter3.html">4. Pandas</a><input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-4"><i class="fa-solid fa-chevron-down"></i></label><ul>
|
@@ -516,7 +517,6 @@ <h2> Contents </h2>
|
516 | 517 | <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#frozen-true-make-your-data-classes-read-only">3.7.2. frozen=True: Make Your Data Classes Read-Only</a></li>
|
517 | 518 | <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#compare-between-two-data-classes">3.7.3. Compare Between Two Data Classes</a></li>
|
518 | 519 | <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#post-init-add-init-method-to-a-data-class">3.7.4. Post-init: Add Init Method to a Data Class</a></li>
|
519 |
| -<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#simplify-data-validation-with-pydantic">3.7.5. Simplify Data Validation with Pydantic</a></li> |
520 | 520 | </ul>
|
521 | 521 | </nav>
|
522 | 522 | </div>
|
@@ -752,46 +752,6 @@ <h2><span class="section-number">3.7.4. </span>Post-init: Add Init Method to a D
|
752 | 752 | </div>
|
753 | 753 | </div>
|
754 | 754 | </section>
|
755 |
| -<section id="simplify-data-validation-with-pydantic"> |
756 |
| -<h2><span class="section-number">3.7.5. </span>Simplify Data Validation with Pydantic<a class="headerlink" href="#simplify-data-validation-with-pydantic" title="Permalink to this heading">#</a></h2> |
757 |
| -<p>Dataclasses require manual implementation of validation.</p> |
758 |
| -<p>On the other hand, Pydantic offers built-in validation that automatically validates data and provides informative error messages. This makes Pydantic particularly useful when working with data from external sources.</p> |
759 |
| -<div class="cell docutils container"> |
760 |
| -<div class="cell_input docutils container"> |
761 |
| -<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">pydantic</span> <span class="kn">import</span> <span class="n">BaseModel</span> |
762 |
| - |
763 |
| - |
764 |
| -<span class="k">class</span> <span class="nc">Dog</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span> |
765 |
| - <span class="n">names</span><span class="p">:</span> <span class="nb">str</span> |
766 |
| - <span class="n">age</span><span class="p">:</span> <span class="nb">int</span> |
767 |
| - |
768 |
| - |
769 |
| -<span class="n">dog</span> <span class="o">=</span> <span class="n">Dog</span><span class="p">(</span><span class="n">names</span><span class="o">=</span><span class="s2">"Bim"</span><span class="p">,</span> <span class="n">age</span><span class="o">=</span><span class="s2">"ten"</span><span class="p">)</span> |
770 |
| -</pre></div> |
771 |
| -</div> |
772 |
| -</div> |
773 |
| -<div class="cell_output docutils container"> |
774 |
| -<div class="output traceback highlight-ipythontb notranslate"><div class="highlight"><pre><span></span><span class="gt">---------------------------------------------------------------------------</span> |
775 |
| -<span class="ne">ValidationError</span><span class="g g-Whitespace"> </span>Traceback (most recent call last) |
776 |
| -<span class="n">Cell</span> <span class="n">In</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">line</span> <span class="mi">9</span> |
777 |
| -<span class="g g-Whitespace"> </span><span class="mi">5</span> <span class="n">names</span><span class="p">:</span> <span class="nb">str</span> |
778 |
| -<span class="g g-Whitespace"> </span><span class="mi">6</span> <span class="n">age</span><span class="p">:</span> <span class="nb">int</span> |
779 |
| -<span class="ne">----> </span><span class="mi">9</span> <span class="n">dog</span> <span class="o">=</span> <span class="n">Dog</span><span class="p">(</span><span class="n">names</span><span class="o">=</span><span class="s2">"Bim"</span><span class="p">,</span> <span class="n">age</span><span class="o">=</span><span class="s2">"ten"</span><span class="p">)</span> |
780 |
| - |
781 |
| -<span class="nn">File ~/book/venv/lib/python3.11/site-packages/pydantic/main.py:164,</span> in <span class="ni">BaseModel.__init__</span><span class="nt">(__pydantic_self__, **data)</span> |
782 |
| -<span class="g g-Whitespace"> </span><span class="mi">162</span> <span class="c1"># `__tracebackhide__` tells pytest and some other tools to omit this function from tracebacks</span> |
783 |
| -<span class="g g-Whitespace"> </span><span class="mi">163</span> <span class="n">__tracebackhide__</span> <span class="o">=</span> <span class="kc">True</span> |
784 |
| -<span class="ne">--> </span><span class="mi">164</span> <span class="n">__pydantic_self__</span><span class="o">.</span><span class="n">__pydantic_validator__</span><span class="o">.</span><span class="n">validate_python</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">self_instance</span><span class="o">=</span><span class="n">__pydantic_self__</span><span class="p">)</span> |
785 |
| - |
786 |
| -<span class="ne">ValidationError</span>: 1 validation error for Dog |
787 |
| -<span class="n">age</span> |
788 |
| - <span class="n">Input</span> <span class="n">should</span> <span class="n">be</span> <span class="n">a</span> <span class="n">valid</span> <span class="n">integer</span><span class="p">,</span> <span class="n">unable</span> <span class="n">to</span> <span class="n">parse</span> <span class="n">string</span> <span class="k">as</span> <span class="n">an</span> <span class="n">integer</span> <span class="p">[</span><span class="nb">type</span><span class="o">=</span><span class="n">int_parsing</span><span class="p">,</span> <span class="n">input_value</span><span class="o">=</span><span class="s1">'ten'</span><span class="p">,</span> <span class="n">input_type</span><span class="o">=</span><span class="nb">str</span><span class="p">]</span> |
789 |
| - <span class="n">For</span> <span class="n">further</span> <span class="n">information</span> <span class="n">visit</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">errors</span><span class="o">.</span><span class="n">pydantic</span><span class="o">.</span><span class="n">dev</span><span class="o">/</span><span class="mf">2.5</span><span class="o">/</span><span class="n">v</span><span class="o">/</span><span class="n">int_parsing</span> |
790 |
| -</pre></div> |
791 |
| -</div> |
792 |
| -</div> |
793 |
| -</div> |
794 |
| -</section> |
795 | 755 | </section>
|
796 | 756 |
|
797 | 757 | <script type="text/x-thebe-config">
|
@@ -861,7 +821,6 @@ <h2><span class="section-number">3.7.5. </span>Simplify Data Validation with Pyd
|
861 | 821 | <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#frozen-true-make-your-data-classes-read-only">3.7.2. frozen=True: Make Your Data Classes Read-Only</a></li>
|
862 | 822 | <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#compare-between-two-data-classes">3.7.3. Compare Between Two Data Classes</a></li>
|
863 | 823 | <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#post-init-add-init-method-to-a-data-class">3.7.4. Post-init: Add Init Method to a Data Class</a></li>
|
864 |
| -<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#simplify-data-validation-with-pydantic">3.7.5. Simplify Data Validation with Pydantic</a></li> |
865 | 824 | </ul>
|
866 | 825 | </nav></div>
|
867 | 826 |
|
|
0 commit comments