Skip to content

feat: implement dataclasses support for voluptuous schemas#533

Open
doubledare704 wants to merge 1 commit intoalecthomas:masterfrom
doubledare704:feature/dataclasses-support
Open

feat: implement dataclasses support for voluptuous schemas#533
doubledare704 wants to merge 1 commit intoalecthomas:masterfrom
doubledare704:feature/dataclasses-support

Conversation

@doubledare704
Copy link
Contributor

Resolves GitHub issue #409 by adding comprehensive dataclasses support:

Features:

  • DataclassSchema class for automatic schema creation from dataclasses
  • create_dataclass_schema() function for functional API
  • is_dataclass() utility for dataclass detection
  • Automatic type validation from dataclass field annotations
  • Support for default values and default_factory functions
  • Seamless integration with existing voluptuous validators
  • Type annotation handling for List[T], Optional[T], etc.
  • Full backward compatibility with existing schemas

Implementation:

  • Added voluptuous/dataclasses_support.py with core functionality
  • Added comprehensive test suite (19 tests covering all scenarios)
  • Added examples/dataclasses_example.py with usage examples
  • Updated README.md with documentation and examples
  • Integrated into main voluptuous module with graceful fallback

Code Quality:

  • All tests pass (162 existing + 19 new = 181 total)
  • Zero flake8 violations
  • Zero mypy type errors
  • Black and isort formatting applied
  • Requires Python 3.7+ for dataclasses support

Breaking Changes: None
Backward Compatibility: Full

Resolves GitHub issue alecthomas#409 by adding comprehensive dataclasses support:

Features:
- DataclassSchema class for automatic schema creation from dataclasses
- create_dataclass_schema() function for functional API
- is_dataclass() utility for dataclass detection
- Automatic type validation from dataclass field annotations
- Support for default values and default_factory functions
- Seamless integration with existing voluptuous validators
- Type annotation handling for List[T], Optional[T], etc.
- Full backward compatibility with existing schemas

Implementation:
- Added voluptuous/dataclasses_support.py with core functionality
- Added comprehensive test suite (19 tests covering all scenarios)
- Added examples/dataclasses_example.py with usage examples
- Updated README.md with documentation and examples
- Integrated into main voluptuous module with graceful fallback

Code Quality:
- All tests pass (162 existing + 19 new = 181 total)
- Zero flake8 violations
- Zero mypy type errors
- Black and isort formatting applied
- Requires Python 3.7+ for dataclasses support

Breaking Changes: None
Backward Compatibility: Full
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant