Skip to content
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

feat: Implement note-related methods #1084

Merged
merged 8 commits into from
Jan 14, 2025
Merged

Conversation

augustebaum
Copy link
Contributor

@augustebaum augustebaum commented Jan 10, 2025

New methods have been added to Project:

# The default is to act on the latest version
project.set_note(key, message, version=-1)

project.get_note(key, message, version=-1)

project.delete_note(key, message, version=-1)

To this end,

  • Item now has an additional attribute, note, which is a str | None
  • ItemRepository has similar methods

The note related methods fail with a KeyError when the key-version combination does not exist, but:

  • get_note returns None if the note is None (no error)
  • delete_note never errors if the key-version combination exists (even if the note is already None, it will be set to None again)

set_note fails with a TypeError if key or message is not a string.

Addresses part of #1041

@augustebaum augustebaum changed the title note commands backend feat: Implement note-related methods Jan 10, 2025
@augustebaum augustebaum force-pushed the note-commands-backend branch from 0acc7c6 to 81d9ce6 Compare January 10, 2025 15:06
Copy link
Contributor

Documentation preview @ 81d9ce6

Copy link
Contributor

github-actions bot commented Jan 10, 2025

Coverage

Coverage Report for backend
FileStmtsMissCoverMissing
venv/lib/python3.12/site-packages/skore
   __init__.py120100% 
   __main__.py8180%19
   exceptions.py30100% 
venv/lib/python3.12/site-packages/skore/cli
   __init__.py50100% 
   cli.py33385%104, 111, 117
   color_format.py43390%35–>40, 41–43
   launch_dashboard.py261539%36–57
   quickstart_command.py14750%37–51
venv/lib/python3.12/site-packages/skore/item
   __init__.py21191%46
   cross_validation_item.py1371093%27–42, 373
   item.py421369%91, 94, 98–118
   item_repository.py61591%12–13, 209–210, 231
   media_item.py70494%15–18
   numpy_array_item.py25193%15
   pandas_dataframe_item.py34195%15
   pandas_series_item.py34195%15
   polars_dataframe_item.py32194%15
   polars_series_item.py27194%15
   primitive_item.py27292%13–15
   sklearn_base_estimator_item.py33195%15
   skrub_table_report_item.py10186%11
venv/lib/python3.12/site-packages/skore/persistence
   __init__.py00100% 
   abstract_storage.py22195%130
   disk_cache_storage.py33195%44
   in_memory_storage.py200100% 
venv/lib/python3.12/site-packages/skore/project
   __init__.py30100% 
   create.py52888%116–122, 132–133, 140–141
   load.py23389%43–45
   open.py140100% 
   project.py63393%109, 143, 147
venv/lib/python3.12/site-packages/skore/sklearn
   __init__.py40100% 
   _base.py141298%168–>173, 184–185
   find_ml_task.py35195%41–>49, 50
   types.py20100% 
venv/lib/python3.12/site-packages/skore/sklearn/_estimator
   __init__.py100100% 
   metrics_accessor.py198298%131, 267
   report.py109098%160–>166, 168–>170
   utils.py11110%1–19
venv/lib/python3.12/site-packages/skore/sklearn/_plot
   __init__.py40100% 
   precision_recall_curve.py126297%200–>203, 313–314
   prediction_error.py75099%289–>297
   roc_curve.py95394%156, 167–>170, 223–224
   utils.py770100% 
venv/lib/python3.12/site-packages/skore/sklearn/cross_validation
   __init__.py20100% 
   cross_validation_helpers.py47490%104–>136, 123–126
   cross_validation_reporter.py35195%177
venv/lib/python3.12/site-packages/skore/sklearn/cross_validation/plots
   __init__.py00100% 
   compare_scores_plot.py29192%10, 45–>48
   timing_plot.py29194%10
venv/lib/python3.12/site-packages/skore/sklearn/train_test_split
   __init__.py00100% 
   train_test_split.py36294%16–17
venv/lib/python3.12/site-packages/skore/sklearn/train_test_split/warning
   __init__.py80100% 
   high_class_imbalance_too_few_examples_warning.py17378%16–18, 80
   high_class_imbalance_warning.py18288%16–18
   random_state_unset_warning.py11187%15
   shuffle_true_warning.py9091%44–>exit
   stratify_is_set_warning.py11187%15
   time_based_column_warning.py22189%17, 69–>exit
   train_test_split_warning.py5180%21
venv/lib/python3.12/site-packages/skore/ui
   __init__.py00100% 
   app.py25571%24, 53–58
   dependencies.py7186%12
   project_routes.py500100% 
venv/lib/python3.12/site-packages/skore/utils
   __init__.py00100% 
   _accessor.py70100% 
   _logger.py21484%14–18
   _show_versions.py310100% 
venv/lib/python3.12/site-packages/skore/view
   __init__.py00100% 
   view.py50100% 
   view_repository.py16283%8–9
TOTAL225513893% 

Tests Skipped Failures Errors Time
408 3 💤 0 ❌ 0 🔥 46.418s ⏱️

@augustebaum augustebaum marked this pull request as ready for review January 10, 2025 16:16
@thomass-dev thomass-dev self-requested a review January 10, 2025 16:28
@augustebaum augustebaum force-pushed the note-commands-backend branch from 81d9ce6 to 1fe38e2 Compare January 13, 2025 15:12
Copy link
Collaborator

@thomass-dev thomass-dev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your work.

There is 2 important comments, about the user API and the type checking in <set|get|delete>_notes.
The other comments are about documentation and typing, which can be applied to all item files.

@thomass-dev
Copy link
Collaborator

thomass-dev commented Jan 14, 2025

@MarieS-WiMLDS fyi, this PR can be considered as a breaking-change because it will intend to get a new field in our persistence.

When calling get_note and delete_note on older skore projects, a meaningless error for the user will be raised:
*** KeyError: 'note'.

Copy link
Collaborator

@thomass-dev thomass-dev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(i don't know why my last request changes is not taken into account by GH)

@augustebaum augustebaum force-pushed the note-commands-backend branch from cbd9291 to 8da0ba8 Compare January 14, 2025 11:28
@thomass-dev thomass-dev merged commit c791e7f into main Jan 14, 2025
14 of 18 checks passed
@thomass-dev thomass-dev deleted the note-commands-backend branch January 14, 2025 11:41
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.

3 participants