class PrefixDatarUnitTests(TestCase): def setUp(self): tempdirdir = gettempdir() dirname = str(uuid4())[:8] self.prefix = join(tempdirdir, dirname) mkdir_p(self.prefix) assert isdir(self.prefix) mkdir_p(join(self.prefix, 'conda-meta')) activate_env_vars = join(self.prefix, PREFIX_STATE_FILE) with open(activate_env_vars, 'w') as f: f.write(ENV_VARS_FILE) self.pd = PrefixData(self.prefix) def tearDown(self): rm_rf(self.prefix) assert not lexists(self.prefix) def test_get_environment_env_vars(self): ex_env_vars = { "ENV_ONE": "one", "ENV_TWO": "you", "ENV_THREE": "me" } env_vars = self.pd.get_environment_env_vars() assert ex_env_vars == env_vars def test_set_unset_environment_env_vars(self): env_vars_one = { "ENV_ONE": "one", "ENV_TWO": "you", "ENV_THREE": "me", } env_vars_add = { "ENV_ONE": "one", "ENV_TWO": "you", "ENV_THREE": "me", "WOAH": "dude" } self.pd.set_environment_env_vars({"WOAH":"dude"}) env_vars = self.pd.get_environment_env_vars() assert env_vars_add == env_vars self.pd.unset_environment_env_vars(['WOAH']) env_vars = self.pd.get_environment_env_vars() assert env_vars_one == env_vars def test_set_unset_environment_env_vars_no_exist(self): env_vars_one = { "ENV_ONE": "one", "ENV_TWO": "you", "ENV_THREE": "me", } self.pd.unset_environment_env_vars(['WOAH']) env_vars = self.pd.get_environment_env_vars() assert env_vars_one == env_vars
def execute_list(args, parser): prefix = get_prefix(args, search=False) or context.active_prefix if not lexists(prefix): raise EnvironmentLocationNotFound(prefix) pd = PrefixData(prefix) env_vars = pd.get_environment_env_vars() if args.json: common.stdout_json(env_vars) else: for k, v in env_vars.items(): print('%s = %s' % (k, v))
def from_environment(name, prefix, no_builds=False, ignore_channels=False, from_history=False): """ Get environment object from prefix Args: name: The name of environment prefix: The path of prefix no_builds: Whether has build requirement ignore_channels: whether ignore_channels from_history: Whether environment file should be based on explicit specs in history Returns: Environment object """ # requested_specs_map = History(prefix).get_requested_specs_map() pd = PrefixData(prefix, pip_interop_enabled=True) variables = pd.get_environment_env_vars() if from_history: history = History(prefix).get_requested_specs_map() deps = [str(package) for package in history.values()] return Environment(name=name, dependencies=deps, channels=list(context.channels), prefix=prefix, variables=variables) precs = tuple(PrefixGraph(pd.iter_records()).graph) grouped_precs = groupby(lambda x: x.package_type, precs) conda_precs = sorted(concatv( grouped_precs.get(None, ()), grouped_precs.get(PackageType.NOARCH_GENERIC, ()), grouped_precs.get(PackageType.NOARCH_PYTHON, ()), ), key=lambda x: x.name) pip_precs = sorted( concatv( grouped_precs.get(PackageType.VIRTUAL_PYTHON_WHEEL, ()), grouped_precs.get(PackageType.VIRTUAL_PYTHON_EGG_MANAGEABLE, ()), grouped_precs.get(PackageType.VIRTUAL_PYTHON_EGG_UNMANAGEABLE, ()), # grouped_precs.get(PackageType.SHADOW_PYTHON_EGG_LINK, ()), ), key=lambda x: x.name) if no_builds: dependencies = ['='.join((a.name, a.version)) for a in conda_precs] else: dependencies = [ '='.join((a.name, a.version, a.build)) for a in conda_precs ] if pip_precs: dependencies.append( {'pip': ["%s==%s" % (a.name, a.version) for a in pip_precs]}) channels = list(context.channels) if not ignore_channels: for prec in conda_precs: canonical_name = prec.channel.canonical_name if canonical_name not in channels: channels.insert(0, canonical_name) return Environment(name=name, dependencies=dependencies, channels=channels, prefix=prefix, variables=variables)
def get_env_vars(prefix): pd = PrefixData(prefix) env_vars = pd.get_environment_env_vars() return env_vars