[ENH] refactor: updated OpenMLEvaluation to use dataclass decorator#1559
Merged
fkiraly merged 6 commits intoopenml:mainfrom Jan 2, 2026
Merged
[ENH] refactor: updated OpenMLEvaluation to use dataclass decorator#1559fkiraly merged 6 commits intoopenml:mainfrom
fkiraly merged 6 commits intoopenml:mainfrom
Conversation
Signed-off-by: rohansen856 <rohansen856@gmail.com>
geetu040
suggested changes
Dec 26, 2025
Collaborator
geetu040
left a comment
There was a problem hiding this comment.
In the order list, also fix the first item "Uploader Date" to "Upload Date"
openml/evaluations/evaluation.py
Outdated
| "OpenML Run URL", | ||
| "Task ID", | ||
| "OpenML Task URL" "Flow ID", | ||
| "OpenML Task URLFlow ID", |
Collaborator
There was a problem hiding this comment.
Suggested change
| "OpenML Task URLFlow ID", | |
| "OpenML Task URL", | |
| "Flow ID", |
Collaborator
There was a problem hiding this comment.
@rohansen856 you dropped the "OpenML Flow URL" in the new commit
Contributor
Author
There was a problem hiding this comment.
@geetu040 added the missing field and pushed the commit (12 total fields double checked).
Signed-off-by: rohansen856 <rohansen856@gmail.com>
Contributor
Author
|
@geetu040 updated the order list with required items. Ready for review! |
Signed-off-by: rohansen856 <rohansen856@gmail.com>
geetu040
approved these changes
Dec 31, 2025
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1559 +/- ##
==========================================
+ Coverage 52.71% 52.72% +0.01%
==========================================
Files 36 36
Lines 4325 4326 +1
==========================================
+ Hits 2280 2281 +1
Misses 2045 2045 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
JATAYU000
pushed a commit
to JATAYU000/openml-python
that referenced
this pull request
Jan 8, 2026
…#1559) I have Refactored the `OpenMLEvaluation` class from a traditional Python class to use the `@dataclass` decorator to reduce boilerplate code and improve code maintainability. #### Metadata * Reference Issue: openml#1540 * New Tests Added: No * Documentation Updated: No * Change Log Entry: Refactored the `OpenMLEvaluation` class to use the `@dataclass` #### Details Edited the `OpenMLEvaluation` class in `openml\evaluations\evaluation.py` to use `@dataclass` decorator. This significantly reduces the boilerplate code in the following places: - Instance Variable Definitions **Before:** ```python def __init__( self, run_id: int, task_id: int, setup_id: int, flow_id: int, flow_name: str, data_id: int, data_name: str, function: str, upload_time: str, uploader: int, uploader_name: str, value: float | None, values: list[float] | None, array_data: str | None = None, ): self.run_id = run_id self.task_id = task_id self.setup_id = setup_id self.flow_id = flow_id self.flow_name = flow_name self.data_id = data_id self.data_name = data_name self.function = function self.upload_time = upload_time self.uploader = uploader self.uploader_name = uploader_name self.value = value self.values = values self.array_data = array_data ``` **After:** ```python run_id: int task_id: int setup_id: int flow_id: int flow_name: str data_id: int data_name: str function: str upload_time: str uploader: int uploader_name: str value: float | None values: list[float] | None array_data: str | None = None ``` - _to_dict Method Simplification **Before:** ```python def _to_dict(self) -> dict: return { "run_id": self.run_id, "task_id": self.task_id, "setup_id": self.setup_id, "flow_id": self.flow_id, "flow_name": self.flow_name, "data_id": self.data_id, "data_name": self.data_name, "function": self.function, "upload_time": self.upload_time, "uploader": self.uploader, "uploader_name": self.uploader_name, "value": self.value, "values": self.values, "array_data": self.array_data, } ``` **After:** ```python def _to_dict(self) -> dict: return asdict(self) ``` All tests are passing with accordnce to the changes: ```bash PS C:\Users\ASUS\Documents\work\opensource\openml-python> pytest tests/test_evaluations/ ======================================= test session starts ======================================= platform win32 -- Python 3.14.0, pytest-9.0.2, pluggy-1.6.0 rootdir: C:\Users\ASUS\Documents\work\opensource\openml-python configfile: pyproject.toml plugins: anyio-4.12.0, flaky-3.8.1, asyncio-1.3.0, cov-7.0.0, mock-3.15.1, rerunfailures-16.1, timeout-2.4.0, xdist-3.8.0, requests-mock-1.12.1 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function collected 13 items tests\test_evaluations\test_evaluation_functions.py ............ [ 92%] tests\test_evaluations\test_evaluations_example.py . [100%] ================================= 13 passed in 274.80s (0:04:34) ================================== ```
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
I have Refactored the
OpenMLEvaluationclass from a traditional Python class to use the@dataclassdecorator to reduce boilerplate code and improve code maintainability.Metadata
OpenMLEvaluationto Use Dataclass #1540OpenMLEvaluationclass to use the@dataclassDetails
Edited the
OpenMLEvaluationclass inopenml\evaluations\evaluation.pyto use@dataclassdecorator. This significantly reduces the boilerplate code in the following places:Before:
After:
Before:
After:
All tests are passing with accordnce to the changes: