-
Notifications
You must be signed in to change notification settings - Fork 4
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
In TaggedTable
override methods of Table
that return a Table
#58
Comments
Blocked by #190. |
Converning the I guess in a proper statically-typed language like Java, this would be the way to go (subclass can only throw fewer or more concrete exceptions than the parent class), but I'm not sure how this is typically done in Python. |
Only put it in the docstring of the subclass. |
Regarding the That could not be achieved by overriding. Instead, one could add a check in the Might be worth a new issue, though. |
No, only the |
Turns out this behaviour of letting the subclass throw more exceptions is problematic. Some of the tests (e.g. Now while we could just go ahead and change the tests to use So, we either need to change the signature/docstring of the method in the parent class to make clear that the method can always throw the exception, so the caller must be prepared to handle it. |
For simplicity and uniformity, implement the first solution proposed by @zzril : "Change the signature/docstring of the method in the parent class to make clear that the method can always throw the exception, so the caller must be prepared to handle it." For uniformity, apply the same schema if similar cases occur in the future (allways make sure that the supertype's contract is general enought). |
Alright. Some of the ML tests currently use So, we will have to implement a Example from test_classifier.py: def test_should_include_complete_input_table(self, classifier: Classifier, valid_data: TaggedTable) -> None:
fitted_regressor = classifier.fit(valid_data)
prediction = fitted_regressor.predict(valid_data.remove_columns(["target"]))
assert prediction.remove_columns(["target"]) == valid_data.remove_columns(["target"]) |
End of day status report by @zzril: Implemented the above solution, except for the "keep_only" method of |
Closes #58. ### Summary of Changes * Overrode methods in `TaggedTable` inherited from `Table` to maintain tagging. * Introduced new exceptions to be thrown when the overriden method cannot be applied * Added tests. --------- Co-authored-by: megalinter-bot <[email protected]> Co-authored-by: Alexander Gréus <[email protected]> Co-authored-by: Alexander <[email protected]> Co-authored-by: patrikguempel <[email protected]> Co-authored-by: Simon Breuer <[email protected]>
## [0.15.0](v0.14.0...v0.15.0) (2023-07-13) ### Features * Add copy method for tables ([#405](#405)) ([72e87f0](72e87f0)), closes [#275](#275) * add gaussian noise to image ([#430](#430)) ([925a505](925a505)), closes [#381](#381) * add schema conversions when adding new rows to a table and schema conversion when creating a new table ([#432](#432)) ([6e9ff69](6e9ff69)), closes [#404](#404) [#322](#322) [#127](#127) [#322](#322) [#127](#127) * add test for empty tables for the method `Table.sort_rows` ([#431](#431)) ([f94b768](f94b768)), closes [#402](#402) * added color adjustment feature ([#409](#409)) ([2cbee36](2cbee36)), closes [#380](#380) * added test_repr table tests ([#410](#410)) ([cb77790](cb77790)), closes [#349](#349) * discretize table ([#327](#327)) ([5e3da8d](5e3da8d)), closes [#143](#143) * Improve error handling of TaggedTable ([#450](#450)) ([c5da544](c5da544)), closes [#150](#150) * Maintain tagging in methods inherited from `Table` class ([#332](#332)) ([bc73a6c](bc73a6c)), closes [#58](#58) * new error class `OutOfBoundsError` ([#438](#438)) ([1f37e4a](1f37e4a)), closes [#262](#262) * rename several `Table` methods for consistency ([#445](#445)) ([9954986](9954986)), closes [#439](#439) * suggest similar columns if column gets accessed that doesnt exist ([#385](#385)) ([6a097a4](6a097a4)), closes [#203](#203) ### Bug Fixes * added the missing ids in parameterized tests ([#412](#412)) ([dab6419](dab6419)), closes [#362](#362) * don't warn if `Imputer` transforms column without missing values ([#448](#448)) ([f0cb6a5](f0cb6a5)) * Warnings raised by underlying seaborn and numpy libraries ([#425](#425)) ([c4143af](c4143af)), closes [#357](#357)
🎉 This issue has been resolved in version 0.15.0 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
Is your feature request related to a problem?
Now that
TaggedTable
is a subclass ofTable
, it also inherits some methods that return a newTable
. However, currently those methods lose the tags, since aTable
simply doesn't know about them. Methods that remove taggedColumn
s mustthrow an
IllegalSchemaModificationException
.Desired solution
Override the methods and return a new
TaggedTable
instead.Possible alternatives (optional)
No response
Screenshots (optional)
No response
Additional Context (optional)
No response
The text was updated successfully, but these errors were encountered: