-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Integrate mypy into development process (part of #116) #120
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This isn't really a fix since we're just ignoring the line, however, in this case we can make a safe assumption that the typing is correct.
…ators According to OOP principles, overriding the return type of validate() in a subclass in an incompatible way (e.g. date is not a subclass of str) is not allowed. However, with our validators it absolutely makes sense to use base validators and convert their output to different types (e.g. string to date).
binaryDiv
added
testing
Related to testing (e.g. unit tests)
refactoring
Code refactoring, clean up and other code maintenance work.
labels
Apr 30, 2024
flauschzelle
approved these changes
Apr 30, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
refactoring
Code refactoring, clean up and other code maintenance work.
testing
Related to testing (e.g. unit tests)
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR integrates mypy as a static type checker into the development environment and the CI pipeline. To do that, it fixes a bunch of typing issues in the library code. It solves a part of #116 (but not all of it as that would be too big of a scope).
List of general changes:
no_implicit_reexport
)List of code changes:
isinstance
instead oftype(...) is
)FloatToDecimalValidator
:min_value
/max_value
will not be cast to string if specified as integer anymore (see commit)EnumValidator
: Improve type checking of Enum class when creating the validator (9cbf9f9)DataclassValidator
: (0b6ed6e)dataclasses.Field
with type parameter (requires extra code because in Python 3.8 it is not a Generic yet)Pattern
type hints for regex patterns (usestyping.Pattern
for now, becausere.Pattern
is not yet parametrized in Python 3.8) (a0d0f54)ValidataclassMixin
: Add a# type: ignore[call-overload]
for the warning aboutasdict
(28110ce)# type: ignore[override]
forvalidate()
overrides in validator classes that return different types than their base validators (e.g.DecimalValidator
returningDecimal
, which is not compatible withStringValidator
returningstr
) (712ac98)# type: ignore
for sentinel object creation (3965efe)unset_to_none()
: Useisinstance(value, UnsetValueType)
instead ofis UnsetValue
(again, sentinels are weird) (5ceea74)DateTimeRange
andDateTimeOffsetRange
(f7dd402)