Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
dbe3ec2
add get_clearml_task method and test cases
sallycaoyu Mar 22, 2023
b557a21
fix doc
sallycaoyu Mar 22, 2023
8f93dd2
fix doc
sallycaoyu Mar 22, 2023
f322dc2
remove local files
sallycaoyu Mar 22, 2023
7b7eca3
modified get_task and added point1
sallycaoyu Mar 22, 2023
d579afe
remove local files
sallycaoyu Mar 22, 2023
fe90e71
add get_task_bypass test
sallycaoyu Mar 23, 2023
7d1dd2b
modify docstring
sallycaoyu Mar 23, 2023
a782373
fix types
sallycaoyu Mar 23, 2023
0aadcba
add pytest warning context manager
sallycaoyu Mar 23, 2023
c628a28
change task in bypass mode from _Stub to an offline Task
sallycaoyu Mar 24, 2023
f5b87dd
change link docstring fmt
sallycaoyu Mar 24, 2023
47dca59
change docstring fmt
sallycaoyu Mar 24, 2023
be97cde
Merge branch 'master' into clearmllogger-task
vfdev-5 Mar 28, 2023
e972faa
Merge branch 'master' of github.com:pytorch/ignite into clearmllogger…
sallycaoyu Mar 28, 2023
3819618
delete return
sallycaoyu Mar 28, 2023
67ed056
Merge branch 'clearmllogger-task' of github.com:sallycaoyu/ignite int…
sallycaoyu Mar 28, 2023
bb5d49b
Merge branch 'master' into clearmllogger-task
vfdev-5 Mar 30, 2023
2c211d4
Merge branch 'master' into clearmllogger-task
vfdev-5 Mar 30, 2023
8ab771a
remove the mock projects of Task.current() from test_clearml_logger.py
sallycaoyu Mar 30, 2023
7aa7959
change previous mocked Task.current() to create real Task objects
sallycaoyu Mar 30, 2023
3d7b219
remove extra files
sallycaoyu Mar 30, 2023
67f38f9
changed Task.current() to magicmock in test_clearml_logger
sallycaoyu Mar 30, 2023
e0329c1
Merge branch 'master' into clearmllogger-task
vfdev-5 Mar 31, 2023
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
18 changes: 18 additions & 0 deletions ignite/contrib/handlers/clearml_logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,24 @@ def bypass_mode(cls) -> bool:
"""
return getattr(cls, "_bypass", bool(os.environ.get("CI")))

def __getattr__(self, attr: Any) -> Any:
"""
Calls the corresponding method of ``ClearML.Logger``.

Args:
attr: methods of the ClearML.Logger class.
"""
return getattr(self.clearml_logger, attr)

def get_task(self) -> Callable:
"""
Returns the task context that the logger is reporting.

Return:
Returns the desired task object only if bypass mode is set to ``False``.
"""
return self._task

def close(self) -> None:
self.clearml_logger.flush()

Expand Down
27 changes: 27 additions & 0 deletions tests/ignite/contrib/handlers/test_clearml_logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -977,6 +977,33 @@ def update_fn(engine, batch):
assert lr_scheduler_value == loaded_lr_scheduler_value


def test_clearml_logger_getattr_method(dirname):

ClearMLLogger.set_bypass_mode(True)
with ClearMLLogger(output_uri=dirname) as clearml_logger:
# Create a mock clearml.Logger() object
mock_logger = MagicMock()
clearml_logger.clearml_logger = mock_logger

# Test a method called by __getattr__ calls the corresponding method of the mock project.
clearml_logger.report_single_value("accuracy", 0.72)
mock_logger.report_single_value.assert_called_once_with("accuracy", 0.72)

# Test a method called by __getattr__ calls the corresponding classmethod of the mock project's class.
clearml_logger.current_logger()
mock_logger.current_logger.assert_called_once()


def test_clearml_logger_get_task_bypass(dirname):

ClearMLLogger.set_bypass_mode(True)
with ClearMLLogger(output_uri=dirname) as clearml_logger:
task = clearml_logger.get_task()
# In bypass mode, there is no external communication so Task should not be created.
assert isinstance(task, clearml.Task) is False
assert "._Stub" in repr(task)


@pytest.mark.distributed
@pytest.mark.skipif(not idist.has_native_dist_support, reason="Skip if no native dist support")
def test_distrib_gloo_cpu_or_gpu(distributed_context_single_node_gloo):
Expand Down