import torch


"""
tensor_factory_functions defines the list of torch functions that create tensors.
The list is grabbed by searching through native_functions.yaml by the following
regular expression:

  cat native_functions.yaml | grep 'func:' | grep -v "Tensor.*->" | grep "[-]>.*Tensor"

It's possible that new tensor factory functions are added making this list stale.
Use at your own risk or regenerate the list.
"""
tensor_factory_functions = (
    torch._cudnn_init_dropout_state,
    torch.arange,
    torch.bartlett_window,
    torch.blackman_window,
    torch._empty_affine_quantized,
    torch.empty_strided,
    torch.eye,
    torch.full,
    torch.from_file,
    torch.hann_window,
    torch.hamming_window,
    torch.kaiser_window,
    torch.linspace,
    torch.logspace,
    torch.ones,
    torch.scalar_tensor,
    torch.rand,
    torch.randint,
    torch.randn,
    torch.randperm,
    torch.range,
    torch._efficientzerotensor,
    torch.zeros,
    torch.tril_indices,
    torch.triu_indices,
    # Note: the following functions match the regular expression search above but
    # they are not available in the torch module. Comment out.
    # torch._sparse_coo_tensor_with_dims,
    # torch.fft_fftfreq,
    # torch.fft_rfftfreq,
) + (
    # torch.tensor is special since it's not in native_functions.yaml
    # add it separately
    torch.tensor,
)
