Skip to content

Commit cbbe81f

Browse files
committed
organize conda info for coherent ordering
1 parent 6df3749 commit cbbe81f

File tree

3 files changed

+60
-28
lines changed

3 files changed

+60
-28
lines changed

conda/base/context.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,14 @@ def default_prefix(self):
364364
return default_prefix
365365
return join(self.envs_dirs[0], _default_env)
366366

367+
@property
368+
def active_prefix(self):
369+
return os.getenv('CONDA_PREFIX')
370+
371+
@property
372+
def shlvl(self):
373+
return int(os.getenv('CONDA_SHLVL', -1))
374+
367375
@property
368376
def aggressive_update_packages(self):
369377
from ..models.match_spec import MatchSpec

conda/cli/main_info.py

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,9 @@ def get_info_dict(system=False):
214214
if isfile(user_netrc):
215215
netrc_file = user_netrc
216216

217+
from ..core.envs_manager import EnvsDirectory
218+
active_prefix_name = EnvsDirectory.env_name(context.active_prefix)
219+
217220
info_dict = dict(
218221
platform=context.subdir,
219222
conda_version=conda_version,
@@ -226,6 +229,9 @@ def get_info_dict(system=False):
226229
pkgs_dirs=context.pkgs_dirs,
227230
envs_dirs=context.envs_dirs,
228231
default_prefix=context.default_prefix,
232+
active_prefix=context.active_prefix,
233+
active_prefix_name=active_prefix_name,
234+
conda_shlvl=context.shlvl,
229235
channels=channels,
230236
user_rc_path=user_rc_path,
231237
rc_path=user_rc_path,
@@ -267,40 +273,48 @@ def get_info_dict(system=False):
267273

268274

269275
def get_main_info_str(info_dict):
270-
from .._vendor.auxlib.ish import dals
271-
272276
for key in 'pkgs_dirs', 'envs_dirs', 'channels', 'config_files':
273277
info_dict['_' + key] = ('\n' + 26 * ' ').join(info_dict[key])
274278
info_dict['_rtwro'] = ('writable' if info_dict['root_writable'] else 'read only')
275279

276-
builder = []
277-
builder.append(dals("""
278-
Current conda install:
279-
280-
platform : %(platform)s
281-
conda version : %(conda_version)s
282-
conda is private : %(conda_private)s
283-
conda-env version : %(conda_env_version)s
284-
conda-build version : %(conda_build_version)s
285-
python version : %(python_version)s
286-
requests version : %(requests_version)s
287-
root environment : %(root_prefix)s (%(_rtwro)s)
288-
default environment : %(default_prefix)s
289-
envs directories : %(_envs_dirs)s
290-
package cache : %(_pkgs_dirs)s
291-
channel URLs : %(_channels)s
292-
user config file : %(user_rc_path)s
293-
populated config files : %(_config_files)s
294-
netrc file : %(netrc_file)s
295-
offline mode : %(offline)s
296-
user-agent : %(user_agent)s\
297-
""") % info_dict)
280+
format_param = lambda nm, val: "%23s : %s" % (nm, val)
281+
282+
builder = ['']
283+
284+
if info_dict['active_prefix_name']:
285+
builder.append(format_param('active environment', info_dict['active_prefix_name']))
286+
builder.append(format_param('active environment location', info_dict['active_prefix']))
287+
else:
288+
builder.append(format_param('active environment', info_dict['active_prefix']))
289+
290+
if info_dict['conda_shlvl'] >= 0:
291+
builder.append(format_param('shell level', info_dict['conda_shlvl']))
292+
293+
builder.extend((
294+
format_param('user config file', info_dict['user_rc_path']),
295+
format_param('populated config files', info_dict['_config_files']),
296+
format_param('conda version', info_dict['conda_version']),
297+
format_param('conda-build version', info_dict['conda_build_version']),
298+
format_param('python version', info_dict['python_version']),
299+
format_param('base environment', '%s (%s)' % (info_dict['root_prefix'], info_dict['_rtwro'])),
300+
format_param('channel URLs', info_dict['_channels']),
301+
format_param('package cache', info_dict['_pkgs_dirs']),
302+
format_param('envs directories', info_dict['_envs_dirs']),
303+
format_param('platform', info_dict['platform']),
304+
format_param('user-agent', info_dict['user_agent']),
305+
))
298306

299307
if on_win:
300-
builder.append(" administrator : %(is_windows_admin)s" % info_dict)
308+
builder.append(format_param("administrator", info_dict['is_windows_admin']))
301309
else:
302-
builder.append(" UID:GID : %(UID)s:%(GID)s" % info_dict)
310+
builder.append(format_param("UID:GID", '%s:%s' % (info_dict['UID'], info_dict['GID'])))
311+
312+
builder.extend((
313+
format_param('netrc file', info_dict['netrc_file']),
314+
format_param('offline mode', info_dict['offline']),
315+
))
303316

317+
builder.append('')
304318
return '\n'.join(builder)
305319

306320

conda/core/envs_manager.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
import json
66
from logging import getLogger
77
from os import getcwd, listdir
8-
from os.path import basename, dirname, isdir, isfile, join, normpath
8+
from os.path import basename, dirname, isdir, isfile, join, normpath, split as path_split
99

1010
from .. import CondaError
1111
from .._vendor.auxlib.entity import EntityEncoder
1212
from ..base.constants import ENVS_DIR_MAGIC_FILE, ROOT_ENV_NAME
1313
from ..base.context import context
1414
from ..common.compat import with_metaclass
15-
from ..common.path import ensure_pad, expand, right_pad_os_sep
15+
from ..common.path import ensure_pad, expand, right_pad_os_sep, paths_equal
1616
from ..exceptions import CondaValueError, EnvironmentNameNotFound, NotWritableError
1717
from ..gateways.disk.create import create_envs_directory
1818
from ..gateways.disk.test import file_path_is_writable
@@ -164,6 +164,16 @@ def raise_if_not_writable(self):
164164
raise NotWritableError(self.catalog_file)
165165
return True
166166

167+
@classmethod
168+
def env_name(cls, prefix):
169+
if not prefix:
170+
return None
171+
maybe_envs_dir, maybe_name = path_split(prefix)
172+
for envs_dir in context.envs_dirs:
173+
if paths_equal(envs_dir, maybe_envs_dir):
174+
return maybe_name
175+
return prefix
176+
167177
@classmethod
168178
def first_writable(cls, envs_dirs=None):
169179
return cls.all_writable(envs_dirs)[0]

0 commit comments

Comments
 (0)