import logging
from pathlib import Path
from pkglts.option.reqs.option import requirements
from pkglts.option_object import Option
from pkglts.version import __version__
LOGGER = logging.getLogger(__name__)
[docs]
class OptionConda(Option):
[docs]
def version(self):
return __version__
[docs]
def root_dir(self):
return Path(__file__).parent
[docs]
def update_parameters(self, cfg):
LOGGER.info("update parameters %s", self._name)
sec = dict(
env_name="{{ base.pkgname }}",
)
cfg[self._name] = sec
[docs]
def check(self, cfg):
invalids = []
env_name = cfg[self._name]['env_name']
if not env_name:
invalids.append("conda.env_name")
if len(env_name) != len(env_name.strip()) or "-" in env_name:
invalids.append("conda.env_name")
return invalids
[docs]
def require_option(self, cfg):
return ['pyproject']
[docs]
def environment_extensions(self, cfg):
channels = set(dep.channel for dep in requirements(cfg)) - {None}
channels_minimal = set(dep.channel for dep in requirements(cfg) if 'install' in dep.intents) - {None}
return {"channels": channels, "channels_minimal": channels_minimal}