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

docs(project): Add docstrings to functions in project #541

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 85 additions & 9 deletions skore/src/skore/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ def __init__(
@singledispatchmethod
def put(self, key: str, value: Any, on_error: Literal["warn", "raise"] = "warn"):
"""Add a value to the Project.
If an item with the same key already exists, it replaces the value with the new one.
Copy link
Member

Choose a reason for hiding this comment

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

If an item with the same key already exists, its value is replaced by the new one.


If `on_error` is "raise", any error stops the execution. If `on_error`
is "warn" (or anything other than "raise"), a warning is shown instead.
Expand Down Expand Up @@ -87,9 +88,9 @@ def put_several(

Parameters
----------
key_to_value : dict[str, Any]
key_to_value: dict[str, Any]
The key-value pairs to put in the Project. Keys must be strings.
on_error : "warn" or "raise", optional
on_error: "warn" or "raise", optional
Upon error (e.g. if a key is not a string), whether to raise an error or
to print a warning. Default is "warn".

Expand All @@ -112,7 +113,17 @@ def put_item(self, key: str, item: Item):
self.item_repository.put_item(key, item)

def get(self, key: str) -> Any:
"""Get the value corresponding to `key` from the Project."""
"""Get and returns the value corresponding to `key` from the Project.
Copy link
Member

Choose a reason for hiding this comment

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

Returns the value corresponding to key from the Project.

Parameters
----------
key: str
The key corresponding to the item to get.

Raises
------
KeyError
Renders KeyError if the input key doesn't correspond to any item.
Copy link
Member

Choose a reason for hiding this comment

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

Raises a KeyError if the key does not correspond to any item.

"""
item = self.get_item(key)

if isinstance(item, PrimitiveItem):
Expand All @@ -131,31 +142,96 @@ def get(self, key: str) -> Any:
raise ValueError(f"Item {item} is not a known item type.")

def get_item(self, key: str) -> Item:
"""Add the Item corresponding to `key` from the Project."""
"""Get and returns the Item corresponding to `key` from the Project.
Copy link
Member

Choose a reason for hiding this comment

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

Returns the item corresponding to key from the Project.

Parameters
----------
key: str
The key corresponding to the item to get.

Attributes
----------
created_at: DateTime
DateTime when the item was created.
updated_at: DateTime
DateTime of the last modification.
primitive: Any
Value corresponding to the item.

Raises
------
KeyError
Renders KeyError if the input key doesn't correspond to any item."""
Copy link
Member

Choose a reason for hiding this comment

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

Raises a KeyError if the key does not correspond to any item.

return self.item_repository.get_item(key)

def list_item_keys(self) -> list[str]:
"""List all item keys in the Project."""
"""List all item keys in the Project.
Returns
-------
List:
Returns the list of items keys. Each key is a string.
If the project contains no item, returns an empty list.
"""
return self.item_repository.keys()

def delete_item(self, key: str):
"""Delete an item from the Project."""
"""Delete an item from the Project.
Copy link
Member

Choose a reason for hiding this comment

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

Deletes the item corresponding to key from the Project.

Parameters
----------
key: str
The key corresponding to the item to delete.

Raises
------
KeyError
Renders KeyError if the input key doesn't correspond to any item.
Copy link
Member

Choose a reason for hiding this comment

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

Raises a KeyError if the key does not correspond to any item.

"""
self.item_repository.delete_item(key)

def put_view(self, key: str, view: View):
"""Add a view to the Project."""
self.view_repository.put_view(key, view)

def get_view(self, key: str) -> View:
"""Get the view corresponding to `key` from the Project."""
"""Get the view corresponding to `key` from the Project.
Copy link
Member

Choose a reason for hiding this comment

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

Returns the view corresponding to key from the Project.

Parameters
----------
key: str
The key corresponding to the item to get.

Attributes
----------
layout: List[str]
A list of the keys of items, in the same order as displayed.

Raises
------
KeyError
Renders KeyError if the input key doesn't correspond to any item.
Copy link
Member

Choose a reason for hiding this comment

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

Raises a KeyError if the key does not correspond to any view.

"""
return self.view_repository.get_view(key)

def delete_view(self, key: str):
"""Delete the view corresponding to `key` from the Project."""
"""Delete the view corresponding to `key` from the Project.
Parameters
----------
key: str
The key corresponding to the view to delete.

Raises
------
KeyError
Renders KeyError if the input key doesn't correspond to any view.
Copy link
Member

Choose a reason for hiding this comment

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

Raises a KeyError if the key does not correspond to any view.

"""
return self.view_repository.delete_view(key)

def list_view_keys(self) -> list[str]:
"""List all view keys in the Project."""
"""List all view keys in the Project.
Returns
-------
List:
Returns the list of view keys. Each key is a string.
If the project contains no view, returns an empty list.
"""
return self.view_repository.keys()


Expand Down