Here you can see the full list of changes between each WTForms-Alchemy release.
- Dropped support for Python 3.8 and earlier. The minimum supported Python version is now 3.9.
- Dropped support for SQLAlchemy 1.3 and earlier. The minimum supported SQLAlchemy version is now 1.4.
- Added support for Python 3.10–3.13.
- Added support for SQLAlchemy 2.0.
- Added support for WTForms 3.2. The minimum supported WTForms version is now 3.1.
- Dropped WTForms 1.0 support
- Added WTForms 3.0 and SA 1.4 support
- Dropped py35 support
- Dropped py27, py33 and py34 support
- Added support for JSON type in TypeMap (#142, pull request courtesy of fedExpress)
- Fixed QuerySelectField.query allowing no results (#136, pull request courtesy of TrilceAC)
- Fixed UnknownTypeException being thrown correctly for unsupported types (#131, pull request courtesy of tvuotila)
- Added SQLAlchemy 1.2 support
- Fixed GroupedQuerySelectMultipleField validator to support empty data (#123, pull request courtesy of superosku)
- Fixed GroupedQuerySelectMultipleField validator (#121, pull request courtesy of superosku)
- Fixed ChoiceType conversion for Enums (#112, pull request courtesy of fayazkhan)
- Added GroupedQueryMultipleSelectField (#113, pull request courtesy of adarshk7)
- Updated SQLAlchemy-Utils requirement to 0.32.6
- Fixed PhoneNumberType conversion (#102)
- Dropped python 2.6 support
- Made PhoneNumberField work correctly together with DataRequired (#101, pull request courtesy of jmagnusson)
- Moved GroupedQuerySelectField from WTForms-Components package to WTForms-Alchemy
- Moved WeekdaysField from WTForms-Components package to WTForms-Alchemy
- Moved PhoneNumberField from WTForms-Components package to WTForms-Alchemy
- Moved Unique validator from WTForms-Components package to WTForms-Alchemy
- Added QuerySelectField and QuerySelectMultipleField which were deprecated from
WTForms as of version 2.1
- Removed ClassMap's inheritance sorting. This never really worked properly and resulted in weird undeterministic bugs on Python 3.
- Added support for callables in type map argument
- Added flake8 checks
- Added isort checks
- Fixed country import caused by SQLAlchemy-Utils 0.30.0
- Update SQLAlchemy-Utils dependency to 0.30.0
- Made all default validators configurable in model_form_factory
- Added support for disabling default validators
- Added support for composite primary keys in ModelFieldList
- Added support for URLType of SQLAlchemy-Utils
- Fix ModelFieldList handling of simultaneous deletes and updates
- Fix various issues with new-style classes
- Added CountryField
- Added CountryType to CountryField conversion
- Fixed various issues with column aliases
- Added WeekDaysType to WeekDaysField conversion
- Fixed ChoiceType coercion for SelectFields
- New configuration option: attr_errors
- Min and max info attributes generate NumberRange validator for Numeric, Float, IntRangeType and NumericRangeType columns
- Updated SQLAlchemy-i18n optional dependency to 0.8.2
- Added support for SQLAlchemy-Utils range types IntRange, NumericRange, DateRange and DateTimeRange
- Deprecated support for NumberRangeField
- Updated SQLAlchemy-Utils dependency to 0.23.1
- Updated WTForms-Components dependency to 0.9.0
- Added configurable default validators
- Fixed ModelFieldList processing
- Replaced assign_required configuration option with not_null_validator for more fine grained control of not null validation
- Replaced not_null_str_validator with not_null_validator_type_map
- Support for hybrid properties that return column properties
- Better exception messages for properties that are not of type ColumnProperty
- Support for class level type map customization
- Smarter object value inspection for ModelFieldList
- Changed ModelFieldList default population strategy to 'update' instead of 'replace'
- Fixed property alias handling (issue #46)
- Initial WTForms 2.0 support
- New configuration options: not_null_validator, not_null_str_validator
- Form fields now generated in class initialization time rather than on form object initialization
- Added Numeric type scale to DecimalField places conversion
- Declaration order of model fields now preserved in generated forms
- Added Python 2.6 support (supported versions now 2.6, 2.7 and 3.3)
- Enhanced coerce func generator
- TypeDecorator derived type support SelectField coerce callable generator
- Added support for SQLAlchemy-Utils ChoiceType
- Updated SQLAlchemy-Utils dependency to 0.18.0
- Fixed None value handling in string stripping when strip_string_fields option is enabled
- Python 3 support
- ModelFormMeta now configurable
- Form generation now understands column aliases
- Length validators only assigned to string typed columns
- Model column_property methods now skipped in model generation process
- Updated SQLAlchemy-Utils dependency to 0.16.7
- Updated SQLAlchemy-i18n dependency to 0.6.3
- Added configuration skip_unknown_types to silently skip columns with types WTForms-Alchemy does not understand
- DecimalField with scales and choices now generate SelectField as expected
- TSVectorType columns excluded by default
- String typed columns now convert to WTForms-Components StringFields instead of WTForms TextFields
- HTML5 step widget param support added
- Updated WTForms-Components dependency to 0.6.6
- TypeDecorator support added
- Fixed _obj setting to better cope with wtforms_components unique validator
- Fixed min and max arg handling when using zero values
- Fixed ModelFieldList object population when using 'update' population strategy
- Updated WTForms-Components dependency to 0.6.3
- Made type conversion use WTForms-Components HTML5 fields
- DataRequired validator now added to not nullable booleans by default
- SQLAlchemy-i18n support added
- Updated WTForms dependency to 1.0.4
- Updated WTForms-Components dependency to 0.5.5
- EmailType now converts to HTML5 EmailField
- Integer now converts to HTML5 IntegerField
- Numeric now converts to HTML5 DecimalField
- Date now converts to HTML5 DateField
- DateTime now converts to HTML5 DateTimeField
- Fixed trim function for None values
- Column trim option added for fine-grained control of string field trimming
- Bug fix: strip_string_fields applied only for string fields
- Possibility to give default configuration for model_form_factory function
- strip_string_fields configuration option
- Updated SQLAlchemy-Utils dependency to 0.10.0
- Updated WTForms-Components dependency to 0.5.4
- Added support for ColorType
- Added custom widget support
- Added custom filters support
- Updated SQLAlchemy-Utils dependency to 0.9.1
- Updated WTForms-Components dependency to 0.5.2
- Fixed Email validator auto-assigning for EmailType
- Smarter type conversion for subclassed types
- Fixed ModelFormField update handling
- Updated SQLAlchemy dependency to 0.8
- Completely rewritten ModelFieldList implementation
- Updated WTForms-Components dependencies
- Updated docs
- Updated WTForms-Components and SQLAlchemy-Utils dependencies
- Disalbed length validation for PhoneNumberType
- Added conversion from NumberRangeType to NumberRangeField
- Added conversion from PhoneNumberType to PhoneNumberField
- Moved custome fields, validators and widgets to WTForms-Components package
- Added handling of form_field_class = None
- Added custom field class attribute
- Better exception messages
- New unique validator syntax
- API documentation
- Enhanced unique validator
- Documented new unique validator
- Another fix for empty choices handling
- Fixed empty choices handling for string fields
- If validator
- Chain validator
- DateRange validator
- SelectField with optgroup support
- Added smart one-to-one and one-to-many relationship population
- Initial public release