A validation library for Python that uses a fluent interface and lambda expressions for building strongly-typed validation rules.
The original library is written in .NET.
This module has been translated by @p-hzamora.
If you use FluentValidation in a commercial project, please sponsor the project financially. FluentValidation is developed and supported by @JeremySkinner for free in his spare time and financial sponsorship helps keep the project going. You can sponsor the project via either GitHub sponsors or OpenCollective.
- Installation
- Creating your first validator
- Chaining Validator
- Throwing Exceptions
- Complex Properties
- Collections
-
- NotNull Validator
- NotEmpty Validator
- NotEqual Validator
- Equal Validator
- Length Validator
- MaxLength Validator
- MinLength Validator
- Less Than Validator
- Less Than Or Equal Validator
- Greater Than Validator
- Greater Than Or Equal Validator
- Predicate Validator
- Regular Expression Validator
- Email Validator
- Credit Card Validator
- Enum Validator
- Enum Name Validator
- Empty Validator
- Null Validator
- Exclusive Between Validator
- Inclusive Between Validator
- PrecisionScale Validator
FluentValidation can be installed using the pip
package manager.
pip install fluent_validation
from fluent_validation import AbstractValidator
def BeAValidPostcode(postcode:str)->bool:
# custom postcode validating logic goes here
class CustomerValidator(AbstractValidator[Customer]):
def __init__(self)-> None:
super().__init__(Customer)
self.rule_for(lambda x: x.Surname).not_empty()
self.rule_for(lambda x: x.Forename).not_empty().with_message("Please specify a first name")
self.rule_for(lambda x: x.Discount).not_equal(0).when(lambda x: x.HasDiscount)
self.rule_for(lambda x: x.Address).length(20, 250)
self.rule_for(lambda x: x.Postcode).must(BeAValidPostcode).with_message("Please specify a valid postcode")
customer = Customer()
validator = CustomerValidator()
# Execute the validator
results = validator.validate(customer)
# Inspect any validation failures.
success = results.is_valid
failures = results.errors
FluentValidation is copyright © 2008-2022 .NET Foundation, Jeremy Skinner and other contributors and is licensed under the Apache2 license.
The original project is sponsored by the following organisations whose support help keep this project going:
- Microsoft for their financial contribution
- JetBrains for providing licenses to their developer tools
The original project is part of the .NET Foundation.