from .base import AbstractLocalizer
from .local import BatchedLocalizer, LocalLocalizer
from .remote import RemoteLocalizer

__all__ = [
    'BatchedLocalizer',
    'LocalLocalizer',
    'RemoteLocalizer'
]

# * `CANINE`: The current canine version
# * `CANINE_BACKEND`: The name of the current backend type
# * `CANINE_ADAPTER`: The name of the current adapter type
# * `CANINE_ROOT`: The path to the staging directory
# * `CANINE_COMMON`: The path to the directory where common files are localized
# * `CANINE_OUTPUT`: The path to the directory where job outputs will be staged during delocalization
# * `CANINE_JOB_VARS`: A colon separated list of the names of all variables generated by job inputs
# * `CANINE_JOB_INPUTS`: The path to the directory where job inputs are localized
# * `CANINE_JOB_ROOT`: The path to the working directory for the job. Equal to CWD at the start of the job. Output files should be written here

# $CANINE_ROOT: staging dir
#   /common: common inputs
#   /outputs: output dir (unused?)
#       /{jobID}: job specific output
#   /jobs/{jobID}: job staging dir
#       setup.sh: setup script
#       script.sh: main script
#       teardown.sh: teardown script
#       /inputs: job specific input
#       /workspace: job starting cwd and output dir
