The Overview page for Pydantic offers the following Rationale 
<https://pydantic-docs.helpmanual.io/#rationale>, which makes me think that 
it might be of interest to Leo's users and Leo's developers: 

«So *pydantic* uses some cool new language features, but why should I 
actually go and use it?

*plays nicely with your IDE/linter/brain *There's no new schema definition 
micro-language to learn. If you know how to use python type hints, you know 
how to use *pydantic*. Data structures are just instances of classes you 
define with type annotations, so auto-completion, linting, mypy 
<https://pydantic-docs.helpmanual.io/usage/mypy/>, IDEs (especially PyCharm 
<https://pydantic-docs.helpmanual.io/pycharm_plugin/>), and your intuition 
should all work properly with your validated data.

*dual use **pydantic's* BaseSettings 
<https://pydantic-docs.helpmanual.io/usage/settings/> class allows 
*pydantic* to be used in both a "validate this request data" context and in 
a "load my system settings" context. The main differences are that system 
settings can be read from environment variables, and more complex objects 
like DSNs and python objects are often required.*fast *In benchmarks 
<https://pydantic-docs.helpmanual.io/benchmarks/> *pydantic* is faster than 
all other tested libraries.

*validate complex structures *use of recursive *pydantic* models 
<https://pydantic-docs.helpmanual.io/usage/models/#recursive-models>
, typing's standard types 
<https://pydantic-docs.helpmanual.io/usage/types/#standard-library-types> (e.g. 
List, Tuple, Dictetc.) 
and validators <https://pydantic-docs.helpmanual.io/usage/validators/> allow 
complex data schemas to be clearly and easily defined, validated, and 
parsed.

*extensible**pydantic* allows custom data types 
<https://pydantic-docs.helpmanual.io/usage/types/#custom-data-types> to be 
defined or you can extend validation with methods on a model decorated with 
the validator <https://pydantic-docs.helpmanual.io/usage/validators/>
 decorator.

*dataclasses integration *As well as BaseModel, *pydantic* provides a 
dataclass <https://pydantic-docs.helpmanual.io/usage/dataclasses/> decorator 
which creates (almost) vanilla python dataclasses with input data parsing 
and validation.»
On Sunday, April 25, 2021 at 8:18:57 AM UTC-4 David Szent-Györgyi wrote:

> These links might be of interest to Edward and others developing Python 
> code, including Leo. 
>
> First, a praise of property-based testing 
> <https://increment.com/testing/in-praise-of-property-based-testing/>, 
> with examples that differentiate it from example-based testing. 
>
> Second, Hypothesis, «a Python library for creating unit tests which are 
> simpler to write and more powerful when run, finding edge cases in your 
> code you wouldn’t have thought to look for. It is stable, powerful and easy 
> to add to any existing test suite.
>
> It works by letting you write tests that assert that something should be 
> true for every case, not just the ones you happen to think of.»
>
> Third, Pydantic, «Data validation and settings management using python 
> type annotations. *pydantic* enforces type hints at runtime, and provides 
> user friendly errors when data is invalid. Define how data should be in 
> pure, canonical python; validate it with *pydantic*.» This includes 
> support for "custom" (user-defined) types. Pydantic uses type hinting from 
> Versions 3.6 and later of Python. 
>
> A plug-in for Pydantic supports Hypothesis. Used together, Pydantic 1.8 
> and Hypothesis v5.29.0 allow Hypothesis to automatically load support for 
> custom types like PaymentCardNumber (a credit-card number) and 
> PositiveFloat. Current releases are Pydantic 1.8.1 and Hypothesis 6.10.0. 
>
> Documentation for Hypothesis on Read the Docs 
> <https://hypothesis.readthedocs.io/en/latest/>
> Hypothesis on PyPi <https://pypi.org/project/hypothesis/>
> Installing Hypothesis from source 
> <https://github.com/HypothesisWorks/hypothesis/blob/master/CONTRIBUTING.rst>
>
> Documentation for Pydantic on Help Manual 
> <https://pydantic-docs.helpmanual.io>
> Documentation for Pydantic's Hypothesis plug-in 
> <https://pydantic-docs.helpmanual.io/hypothesis_plugin/>
> Pydantic on PyPi <https://pypi.org/project/pydantic/>
> Pydantic on GitHub <https://github.com/samuelcolvin/pydantic>
>

-- 
You received this message because you are subscribed to the Google Groups 
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to leo-editor+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/leo-editor/f1d2a257-151b-403b-aaeb-2a5397a6835fn%40googlegroups.com.

Reply via email to