kopia lustrzana https://github.com/jupyterhub/repo2docker
add docstrings for conda buildpack
rodzic
81a3152527
commit
5aaf78a828
|
@ -1,6 +1,4 @@
|
|||
"""
|
||||
Buildpack for conda environments
|
||||
"""
|
||||
"""BuildPack for conda environments"""
|
||||
import os
|
||||
import re
|
||||
|
||||
|
@ -15,16 +13,48 @@ HERE = os.path.dirname(os.path.abspath(__file__))
|
|||
|
||||
|
||||
class CondaBuildPack(BaseImage):
|
||||
"""A conda BuildPack.
|
||||
|
||||
Uses miniconda since it is more lightweight than Anaconda.
|
||||
|
||||
"""
|
||||
def get_env(self):
|
||||
"""Return environment variables to be set.
|
||||
|
||||
We set `CONDA_DIR` to the conda install directory and
|
||||
the `NB_PYTHON_PREFIX` to the location of the jupyter binary.
|
||||
|
||||
"""
|
||||
return super().get_env() + [
|
||||
('CONDA_DIR', '${APP_BASE}/conda'),
|
||||
('NB_PYTHON_PREFIX', '${CONDA_DIR}'),
|
||||
]
|
||||
|
||||
def get_path(self):
|
||||
"""Return paths (including conda environment path) to be added to
|
||||
the PATH environment variable.
|
||||
|
||||
"""
|
||||
return super().get_path() + ['${CONDA_DIR}/bin']
|
||||
|
||||
def get_build_scripts(self):
|
||||
"""
|
||||
Return series of build-steps common to all Python 3 repositories.
|
||||
|
||||
All scripts here should be independent of contents of the repository.
|
||||
|
||||
This sets up through `install-miniconda.bash` (found in this directory):
|
||||
|
||||
- a directory for the conda environment and its ownership by the
|
||||
notebook user
|
||||
- a Python 3 interpreter for the conda environment
|
||||
- a Python 3 jupyter kernel
|
||||
- a frozen base set of requirements, including:
|
||||
- support for Jupyter widgets
|
||||
- support for JupyterLab
|
||||
- support for nteract
|
||||
|
||||
"""
|
||||
return super().get_build_scripts() + [
|
||||
(
|
||||
"root",
|
||||
|
@ -41,6 +71,20 @@ class CondaBuildPack(BaseImage):
|
|||
}
|
||||
|
||||
def get_build_script_files(self):
|
||||
"""
|
||||
Dict of files to be copied to the container image for use in building.
|
||||
|
||||
This is copied before the `build_scripts` & `assemble_scripts` are
|
||||
run, so can be executed from either of them.
|
||||
|
||||
It's a dictionary where the key is the source file path in the host
|
||||
system, and the value is the destination file path inside the
|
||||
container image.
|
||||
|
||||
This currently adds a frozen set of Python requirements to the dict
|
||||
of files.
|
||||
|
||||
"""
|
||||
files = {
|
||||
'conda/install-miniconda.bash': '/tmp/install-miniconda.bash',
|
||||
}
|
||||
|
@ -69,10 +113,11 @@ class CondaBuildPack(BaseImage):
|
|||
|
||||
@property
|
||||
def python_version(self):
|
||||
"""
|
||||
Detect the Python version for a given environment.yml
|
||||
"""Detect the Python version for a given `environment.yml`
|
||||
|
||||
Will return 'x.y' if version is found (e.g '3.6'),
|
||||
or a Falsy empty string '' if not found.
|
||||
|
||||
Will return 'x.y' if found, or Falsy '' if not.
|
||||
"""
|
||||
environment_yml = self.binder_path('environment.yml')
|
||||
if not os.path.exists(environment_yml):
|
||||
|
@ -109,6 +154,8 @@ class CondaBuildPack(BaseImage):
|
|||
return self.python_version and self.python_version.split('.')[0] == '2'
|
||||
|
||||
def get_assemble_scripts(self):
|
||||
"""Return series of build-steps specific to this source repository.
|
||||
"""
|
||||
assembly_scripts = []
|
||||
environment_yml = self.binder_path('environment.yml')
|
||||
env_name = 'kernel' if self.py2 else 'root'
|
||||
|
@ -124,4 +171,6 @@ class CondaBuildPack(BaseImage):
|
|||
return super().get_assemble_scripts() + assembly_scripts
|
||||
|
||||
def detect(self):
|
||||
"""Check if current repo should be built with the Conda BuildPack.
|
||||
"""
|
||||
return os.path.exists(self.binder_path('environment.yml')) and super().detect()
|
||||
|
|
Ładowanie…
Reference in New Issue