-
Notifications
You must be signed in to change notification settings - Fork 174
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
output: adding output handler list to emission_tracker for extensible…
… output management, rework BaseOutput with separate api contracts for live/cold/task calls (#459) Co-authored-by: inimaz <[email protected]>
- Loading branch information
Showing
8 changed files
with
198 additions
and
91 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -110,6 +110,7 @@ venv.bak/ | |
|
||
# idea | ||
.idea/ | ||
*.iml | ||
|
||
# Sphinx | ||
docs/_build/ | ||
|
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 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,24 @@ | ||
from abc import ABC, abstractmethod | ||
from typing import List | ||
|
||
from codecarbon.output_methods.emissions_data import EmissionsData | ||
from codecarbon.output_methods.emissions_data import EmissionsData, TaskEmissionsData | ||
|
||
|
||
class BaseOutput(ABC): | ||
class BaseOutput: | ||
""" | ||
An abstract class that requires children to inherit a single method, | ||
`out` which is used for persisting data. This could be by saving it to a file, | ||
posting to Json Box, saving to a database, sending a slack message etc. | ||
An abstract class defining possible contracts for an output strategy, a strategy implementation can save emissions | ||
data to a file, posting to Json Box, saving to a database, sending a Slack message etc. | ||
Each method is responsible for a different part of the EmissionsData lifecycle: | ||
- `out` is used by termination calls such as emissions_tracker.flush and emissions_tracker.stop | ||
- `live_out` is used by live measurement events, e.g. the iterative update of prometheus metrics | ||
- `task_out` is used by terminate calls such as emissions_tracker.flush and emissions_tracker.stop, but uses | ||
emissions segregated by task | ||
""" | ||
|
||
@abstractmethod | ||
def out(self, data: EmissionsData): | ||
def out(self, total: EmissionsData, delta: EmissionsData): | ||
pass | ||
|
||
def live_out(self, total: EmissionsData, delta: EmissionsData): | ||
pass | ||
|
||
def task_out(self, data: List[TaskEmissionsData], experiment_name: str): | ||
pass |
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 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
Oops, something went wrong.