A dynamic password validation system with preconfigured modes and rule-based design
Project description
🔐 Advanced Password Validator
A dynamic, rule-based password validation system for Python. Supports configurable validation rules and pre-set security modes to suit different application needs.
🚀 Features
- ✅ Rule-based architecture — plug & play validation rules
- 🔁 Preconfigured modes:
lenient,moderate,strict - 🔒 Supports: min/max length, symbols, blacklist, common password checks, etc.
- 📂 Compare passwords to a list of over 30000 already-registered passwords for added security
- 🧪 Designed for unit testing & integration
📦 Installation
pip install advanced_password_validator
poetry add advanced_password_validator
🌎 Code Usage:
An overview of a common coding example utilizing the advanced_password_validator to validate a password using customizable rules
from advanced_password_validator import PasswordValidator, Mode
# Instantiate a validator object:
validator = PasswordValidator(
min_length = 8, # Integer / Defaults to None
max_length = 65, # Integer / Defaults to None
require_uppercase = True, # Boolean / Defaults to False
require_numbers = True, # Boolean / Defaults to False
require_symbols = True, # Boolean / Defaults to False
no_spaces = True, # Boolean / Defaults to False
must_include_char = None, # String / Defaults to None
no_repeating_chars = 5, # Integer / Defaults to None
blacklisted_pattern = False, # Boolean / Defaults to False
not_common = False, # Boolean / Defaults to False
mode = None # Mode (Enum) / Defaults to None
)
# validate against password strings:
password_valid1 = validator.validate("ThisIsSuperValid123+")[0]
password_valid2 = validator.validate("nouppercase123+")[0]
password_valid3 = validator.validate("NoNumbers++")[0]
print(password_valid1) # <= Returns True
print(password_valid2) # <= Returns False
print(password_valid3) # <= Returns False
0️⃣ Return Type
The validate method returns a tuple: (bool, list)
- [0] = a boolean value determining if the password passed the validation
- [1] = a list of errors based on what Rules the password didn't pass (the list will be empty if validation passes)
📜 Rules Overview:
A rudimentary overview of the rules that can enabled for custom validation
| Rules | Description |
|---|---|
| min_length | Specifies the minimum length required for the password (Integer) |
| max_length | Specifies the maximum length possible for the password (Integer) |
| require_uppercase | Specifies if the password must include at least 1 uppercase letter (Boolean) |
| require_numbers | Specifies if the password must include at least 1 digit (Boolean) |
| require_symbols | Specifies if the password must include at least 1 special character (Boolean) |
| no_spaces | Specifies if the password can include spaces (Boolean) |
| must_include_char | Specifies one of more required characters in the password (String) |
| no_repeating_chars | Specifies how many sequentially, repeating characters can be included in the password (Integer) |
| blacklisted_pattern | Specifies whether to check the password against a list of blacklisted patterns (Boolean) |
| not_common | Specifies whether to check the password against a list of commonly used passwords (Boolean) |
| mode | Specifies whether to use one of the 3 preconfigured modes (Mode) |
🤖 Preconfigured Modes:
The advanced password validator package supports 3 preconfigured validator modes:
- Lenient
- Moderate
- Strict Each of these individual modes come preconfigured with different values, and are meant to be utilised for quick out-of-the-box solutions.
from advanced_password_validator import PasswordValidator, Mode
validator = PasswordValidator(
mode=Mode.lenient
)
# The mode param takes in a Mode-object (Enum) - Mode.lenient, Mode.moderate, Mode.strict
Lenient
- min_length = 8
- max_length = 65
Moderate
- min_length = 8
- max_length = 65
- require_uppercase = True
- require_numbers = True
- no_spaces = True
- no_repeating_chars = 4
Strict
- min_length = 12
- max_length = 65
- require_uppercase = True
- require_numbers = True
- require_symbols = True
- no_spaces = True
- no_repeating_chars = 3
- blacklisted_pattern = True
- not_common = True
📄 License Details:
This project is licensed under the MIT License – see the LICENSE section for further details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file advanced_password_validator-0.1.0.tar.gz.
File metadata
- Download URL: advanced_password_validator-0.1.0.tar.gz
- Upload date:
- Size: 150.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8e156c65d0693c01301b279e749ca5c4dd668bad0c9817cccfa9e49cdd1b80f
|
|
| MD5 |
1ba5fe60fdbfb9a11bd0943f05fea4f8
|
|
| BLAKE2b-256 |
2b4b94f39eb4bdbafa2951004ba2a82d9aecf152e0f48a5d61659576707736bc
|
File details
Details for the file advanced_password_validator-0.1.0-py3-none-any.whl.
File metadata
- Download URL: advanced_password_validator-0.1.0-py3-none-any.whl
- Upload date:
- Size: 147.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97d5f253e03487a18d8fe1b4648cfae96e0f9155903124837305cb08ae76f950
|
|
| MD5 |
9fa2b65c08d167b937f52d4b1c269b0c
|
|
| BLAKE2b-256 |
788aaffad7184ec038d8e19fb6b02b078da01b4f6e313b1dc3c60aa444e69c49
|