# 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, matplotlib
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, warnings
from functools import partial
from typing import List, Tuple, Callable, Union, Iterator
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, force=False):
"""Tries to import the module. If successful, return the module,
else return None
:param force: If True, then errors out if can't import module"""
if module in self.modules: m = self.modules[module]
else:
try: m = __import__(module)
except: m = None
if force and m is None: raise ImportError(f"Can't import module `{module}`. Please install it first.")
self.modules[module] = m; return m
[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")