Skip to content

Commit 4106e2f

Browse files
VozftchatonSkafteNickiSeanNaren
authored
Fix COMET_EXPERIMENT_KEY environment variable usage in comet logger (#4230)
* Fix COMET_EXPERIMENT_KEY environment variable usage * Remove unused arg * Update comet.py * Add test by Lothiraldan * remove blank Co-authored-by: chaton <[email protected]> Co-authored-by: Nicki Skafte <[email protected]> Co-authored-by: Sean Naren <[email protected]>
1 parent 6878f3b commit 4106e2f

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

pytorch_lightning/loggers/comet.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,6 @@ def experiment(self):
187187

188188
if self._future_experiment_key is not None:
189189
os.environ["COMET_EXPERIMENT_KEY"] = self._future_experiment_key
190-
self._future_experiment_key = None
191190

192191
try:
193192
if self.mode == "online":
@@ -212,7 +211,9 @@ def experiment(self):
212211
**self._kwargs,
213212
)
214213
finally:
215-
os.environ.pop("COMET_EXPERIMENT_KEY", None)
214+
if self._future_experiment_key is not None:
215+
os.environ.pop("COMET_EXPERIMENT_KEY")
216+
self._future_experiment_key = None
216217

217218
if self._experiment_name:
218219
self._experiment.set_name(self._experiment_name)
@@ -278,6 +279,9 @@ def version(self) -> str:
278279
if self._experiment_key is not None:
279280
return self._experiment_key
280281

282+
if "COMET_EXPERIMENT_KEY" in os.environ:
283+
return os.environ["COMET_EXPERIMENT_KEY"]
284+
281285
if self._future_experiment_key is not None:
282286
return self._future_experiment_key
283287

tests/loggers/test_comet.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414
import os
15-
from unittest.mock import patch
15+
from unittest.mock import patch, DEFAULT
1616

1717
import pytest
1818

@@ -99,6 +99,37 @@ def test_comet_logger_experiment_name(comet):
9999
comet_experiment().set_name.assert_called_once_with(experiment_name)
100100

101101

102+
@patch('pytorch_lightning.loggers.comet.comet_ml')
103+
def test_comet_logger_manual_experiment_key(comet):
104+
"""Test that Comet Logger respects manually set COMET_EXPERIMENT_KEY."""
105+
106+
api_key = "key"
107+
experiment_key = "96346da91469407a85641afe5766b554"
108+
109+
instantation_environ = {}
110+
111+
def save_os_environ(*args, **kwargs):
112+
nonlocal instantation_environ
113+
instantation_environ = os.environ.copy()
114+
115+
return DEFAULT
116+
117+
# Test api_key given
118+
with patch.dict(os.environ, {"COMET_EXPERIMENT_KEY": experiment_key}):
119+
with patch('pytorch_lightning.loggers.comet.CometExperiment', side_effect=save_os_environ) as comet_experiment:
120+
logger = CometLogger(api_key=api_key)
121+
122+
assert logger.version == experiment_key
123+
124+
assert logger._experiment is None
125+
126+
_ = logger.experiment
127+
128+
comet_experiment.assert_called_once_with(api_key=api_key, project_name=None)
129+
130+
assert instantation_environ["COMET_EXPERIMENT_KEY"] == experiment_key
131+
132+
102133
@patch('pytorch_lightning.loggers.comet.CometOfflineExperiment')
103134
@patch('pytorch_lightning.loggers.comet.comet_ml')
104135
def test_comet_logger_dirs_creation(comet, comet_experiment, tmpdir, monkeypatch):

0 commit comments

Comments
 (0)