# Copyright The PyTorch Lightning team. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import os from unittest import mock from pytorch_lightning import Trainer from pytorch_lightning.demos.boring_classes import BoringModel def test_passing_no_env_variables(): """Testing overwriting trainer arguments.""" trainer = Trainer() model = BoringModel() assert trainer.logger is not None assert trainer.max_steps == -1 assert trainer.max_epochs is None trainer = Trainer(logger=False, max_steps=1) trainer.fit(model) assert trainer.logger is None assert trainer.max_steps == 1 assert trainer.max_epochs == -1 @mock.patch.dict(os.environ, {"PL_TRAINER_LOGGER": "False", "PL_TRAINER_MAX_STEPS": "7"}) def test_passing_env_variables_only(): """Testing overwriting trainer arguments.""" trainer = Trainer() assert trainer.logger is None assert trainer.max_steps == 7 @mock.patch.dict(os.environ, {"PL_TRAINER_LOGGER": "True", "PL_TRAINER_MAX_STEPS": "7"}) def test_passing_env_variables_defaults(): """Testing overwriting trainer arguments.""" trainer = Trainer(False, max_steps=42) assert trainer.logger is None assert trainer.max_steps == 42 @mock.patch.dict(os.environ, {"CUDA_VISIBLE_DEVICES": "0,1", "PL_TRAINER_DEVICES": "2"}) @mock.patch("pytorch_lightning.utilities.device_parser.num_cuda_devices", return_value=2) @mock.patch("pytorch_lightning.utilities.device_parser.is_cuda_available", return_value=True) def test_passing_env_variables_devices(cuda_available_mock, device_count_mock): """Testing overwriting trainer arguments.""" trainer = Trainer() assert trainer.num_devices == 2 trainer = Trainer(accelerator="gpu", devices=1) assert trainer.num_devices == 1