# AUTOGENERATED FILE! PLEASE DON'T EDIT
"""These are pretty standard imports that I always
do. I put it here so that I can do::
    from k1lib.imports import *
and everything will be in place"""
import torch; from torch import nn, optim
import torch.nn.functional as F, torch.utils.data as data
import matplotlib.pyplot as plt
import numpy as np, dill as pickle
import k1lib; import k1lib.schedule as schedule
import math, os, time, sys, random, logging, traceback, re, typing, glob
from functools import partial
k1lib.dontWrap()
[docs]class _OptionalImports:
    def __init__(self):
        """Class for importing optional modules. Can...
opt("numpy"): try to import module "numpy". Returns None if can't import
"numpy" in opt: check whether a module is loaded"""
        self.modules = dict()
[docs]    def __call__(self, module:str):
        """Tries to import the module. If successful, return the module,
else return None"""
        if module in self.modules: return self.modules[module]
        try: self.modules[module] = __import__(module)
        except: self.modules[module] = None
        return self.modules[module] 
[docs]    def __contains__(self, module:str):
        """Whether someone already tried to import a module."""
        return module in self.modules 
    def __repr__(self):
        mods = '\n'.join(f"- {e}" for e in self.modules.keys())
        return self.__init__.__doc__ + f"""\n\nLoaded modules:\n{mods}""" 
OptionalImports = _OptionalImports()
datasets = OptionalImports("torchvision.datasets")
transforms = OptionalImports("torchvision.transforms")
IPython = OptionalImports("IPython")