Is it safe to manually call `datamodule.setup()`?

So you have something defined in datamodule.setup() and wants to access in LightningModule? I believe they are connected via trainer. You can use self.trainer.datamodule in LightningModule.

or can just do

datamodule = SomeLightningDataModule()
model = SomeLightningModule()
model.datamodule = datamodule

and access it using self.datamodule in your LightningModule.