8000 Fix log level in conda/core/prefix_data.py by mrakitin · Pull Request #9998 · conda/conda · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Fix log level in conda/core/prefix_data.py #9998

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 22, 2021
Merged

Conversation

mrakitin
Copy link
Contributor

Description

I was trying to programmatically access the output of conda list --show-channel-url output with the following code:

$ ipython
Python 3.7.7 (default, May  6 2020, 04:59:01)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.15.0 -- An enhanced Interactive Python. Type '?' for help.

2020-06-11T13:57:14.681110 [1] ▶ import os

2020-06-11T13:57:18.032566 [2] ▶ from conda.cli.main_list import list_packages

2020-06-11T13:57:22.554033 [3] ▶ list_packages(os.environ['CONDA_PREFIX'], show_channel_urls=True)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-3-a2ddd7e778c4> in <module>
----> 1 list_packages(os.environ['CONDA_PREFIX'], show_channel_urls=True)

~/anaconda3/envs/pyzbar/lib/python3.7/site-packages/conda/cli/main_list.py in list_packages(prefix, regex, format, show_channel_urls)
     43         result.append('# %-23s %-15s %15s  Channel' % ("Name", "Version", "Build"))
     44
---> 45     installed = sorted(PrefixData(prefix, pip_interop_enabled=True).iter_records(),
     46                        key=lambda x: x.name)
     47

~/anaconda3/envs/pyzbar/lib/python3.7/site-packages/conda/core/prefix_data.py in iter_records(self)
    134
    135     def iter_records(self):
--> 136         return itervalues(self._prefix_records)
    137
    138     def iter_records_sorted(self):

~/anaconda3/envs/pyzbar/lib/python3.7/site-packages/conda/core/prefix_data.py in _prefix_records(self)
    163     @property
    164     def _prefix_records(self):
--> 165         return self.__prefix_records or self.load() or self.__prefix_records
    166
    167     def _load_single_record(self, prefix_record_json_path):

~/anaconda3/envs/pyzbar/lib/python3.7/site-packages/conda/common/io.py in decorated(*args, **kwds)
     86         def decorated(*args, **kwds):
     87             with self:
---> 88                 return f(*args, **kwds)
     89         return decorated
     90

~/anaconda3/envs/pyzbar/lib/python3.7/site-packages/conda/core/prefix_data.py in load(self)
     71         if lexists(_conda_meta_dir):
     72             for meta_file in fnmatch_filter(listdir(_conda_meta_dir), '*.json'):
---> 73                 self._load_single_record(join(_conda_meta_dir, meta_file))
     74         if self._pip_interop_enabled:
     75             self._load_site_packages()

~/anaconda3/envs/pyzbar/lib/python3.7/site-packages/conda/core/prefix_data.py in _load_single_record(self, prefix_record_json_path)
    166
    167     def _load_single_record(self, prefix_record_json_path):
--> 168         log.trace("loading prefix record %s", prefix_record_json_path)
    169         with open(prefix_record_json_path) as fh:
    170             try:

AttributeError: 'Logger' object has no attribute 'trace'

2020-06-11T13:57:28.527579 [4] ▶ %debug
> /Users/mrakitin/anaconda3/envs/pyzbar/lib/python3.7/site-packages/conda/core/prefix_data.py(168)_load_single_record()
    166
    167     def _load_single_record(self, prefix_record_json_path):
--> 168         log.trace("loading prefix record %s", prefix_record_json_path)
    169         with open(prefix_record_json_path) as fh:
    170             try:

ipdb> p log
<Logger conda.core.prefix_data (WARNING)>
ipdb> p dir(log)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_cache', '_log', 'addFilter', 'addHandler', 'callHandlers', 'critical', 'debug', 'disabled', 'error', 'exception', 'fatal', 'filter', 'filters', 'findCaller', 'getChild', 'getEffectiveLevel', 'handle', 'handlers', 'hasHandlers', 'info', 'isEnabledFor', 'level', 'log', 'makeRecord', 'manager', 'name', 'parent', 'propagate', 'removeFilter', 'removeHandler', 'root', 'setLevel', 'warn', 'warning']
ipdb>

Proposed fix

With the proposed fix, it works as expected:

ipython
Python 3.7.7 (default, May  6 2020, 04:59:01)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.15.0 -- An enhanced Interactive Python. Type '?' for help.

2020-06-11T14:07:43.032975 [1] ▶ from conda.cli.main_list import list_packages

2020-06-11T14:07:49.404903 [2] ▶ import os

2020-06-11T14:07:53.128245 [3] ▶ list_packages(os.environ['CONDA_PREFIX'], show_channel_urls=True)
Out[3]:
(0,
 ['# packages in environment at /Users/mrakitin/anaconda3/envs/pyzbar:',
  '#',
  '# Name                    Version                   Build  Channel',
  'appnope                   0.1.0                    pypi_0    pypi',
  'attrs                     19.3.0                     py_0    defaults',
  'backcall                  0.2.0                    pypi_0    pypi',
  'blas                      1.0                         mkl    defaults',
  'ca-certificates           2020.1.1                      0    defaults',
  'certifi                   2020.4.5.1               py37_0    defaults',
  'cffi                      1.14.0           py37hc512035_1    defaults',
  'chardet                   3.0.4                 py37_1003    defaults',
  'conda                     4.8.3                    py37_0    defaults',
  'conda-package-handling    1.6.1            py37h1de35cc_0    defaults',
  'cryptography              2.9.2            py37ha12b0ac_0    defaults',
  'decorator                 4.4.2                    pypi_0    pypi',
  'freetype                  2.9.1                hb4e5f40_0    defaults',
  'idna                      2.9                        py_1    defaults',
  'importlib-metadata        1.6.0                    py37_0    defaults',
  'importlib_metadata        1.6.0                         0    defaults',
  'intel-openmp              2019.4                      233    defaults',
  'ipython                   7.15.0                   pypi_0    pypi',
  'ipython-genutils          0.2.0                    pypi_0    pypi',
  'jedi                      0.17.0                   pypi_0    pypi',
  'jpeg                      9b                   he5867d9_2    defaults',
  'libcxx                    10.0.0                        1    defaults',
  'libedit                   3.1.20181209         hb402a30_0    defaults',
  'libffi                    3.3                  h0a44026_1    defaults',
  'libgfortran               3.0.1                h93005f0_2    defaults',
  'libpng                    1.6.37               ha441bb4_0    defaults',
  'libtiff                   4.1.0                hcb84e12_1    defaults',
  'lz4-c                     1.9.2                h0a44026_0    defaults',
  'mkl                       2019.4                      233    defaults',
  'mkl-service               2.3.0            py37hfbe908c_0    defaults',
  'mkl_fft                   1.0.15           py37h5e564d8_0    defaults',
  'mkl_random                1.1.1            py37h959d312_0    defaults',
  'more-itertools            8.3.0                      py_0    defaults',
  'ncurses                   6.2                  h0a44026_1    defaults',
  'numpy                     1.18.1           py37h7241aed_0    defaults',
  'numpy-base                1.18.1           py37h3304bdc_1    defaults',
  'olefile                   0.46                     py37_0    defaults',
  'openssl                   1.1.1g               h1de35cc_0    defaults',
  'packaging                 20.3                       py_0    defaults',
  'parso                     0.7.0                    pypi_0    pypi',
  'pexpect                   4.8.0                    pypi_0    pypi',
  'pickleshare               0.7.5                    pypi_0    pypi',
  'pillow                    7.1.2            py37h4655f20_0    defaults',
  'pip                       20.0.2                   py37_3    defaults',
  'pluggy                    0.13.1                   py37_0    defaults',
  'prompt-toolkit            3.0.5                    pypi_0    pypi',
  'ptyprocess                0.6.0                    pypi_0    pypi',
  'py                        1.8.1                      py_0    defaults',
  'pycosat                   0.6.3            py37h1de35cc_0    defaults',
  'pycparser                 2.20                       py_0    defaults',
  'pygments                  2.6.1                    pypi_0    pypi',
  'pyopenssl                 19.1.0                   py37_0    defaults',
  'pyparsing                 2.4.7                      py_0    defaults',
  'pysocks                   1.7.1                    py37_0    defaults',
  'pytest                    5.4.3            py37hc8dfbb8_0    conda-forge',
  'python                    3.7.7                hf48f09d_4    defaults',
  'python_abi                3.7                     1_cp37m    conda-forge',
  'readline                  8.0                  h1de35cc_0    defaults',
  'requests                  2.23.0                   py37_0    defaults',
  'ruamel_yaml               0.15.87          py37h1de35cc_0    defaults',
  'setuptools                47.1.1                   py37_0    defaults',
  'six                       1.15.0                     py_0    defaults',
  'sqlite                    3.31.1               h5c1f38d_1    defaults',
  'tk                        8.6.8                ha441bb4_0    defaults',
  'tqdm                      4.46.0                     py_0    defaults',
  'traitlets                 4.3.3                    pypi_0    pypi',
  'urllib3                   1.25.8                   py37_0    defaults',
  'wcwidth                   0.1.9                      py_0    defaults',
  'wheel                     0.34.2                   py37_0    defaults',
  'xz                        5.2.5                h1de35cc_0    defaults',
  'yaml                      0.1.7                hc338f04_2    defaults',
  'zipp                      3.1.0                      py_0    defaults',
  'zlib                      1.2.11               h1de35cc_3    defaults',
  'zstd                      1
8000
.4.4                h1990bb4_3    defaults'])

2020-06-11T14:07:59.723440 [4] ▶

Env info:

$ python -VV
Python 3.7.7 (default, May  6 2020, 04:59:01)
[Clang 4.0.1 (tags/RELEASE_401/final)]

$ env | sort -u | grep -i conda_
CONDA_DEFAULT_ENV=pyzbar
CONDA_EXE=/Users/mrakitin/anaconda3/bin/conda
CONDA_PREFIX=/Users/mrakitin/anaconda3/envs/pyzbar
CONDA_PROMPT_MODIFIER=(pyzbar)
CONDA_PYTHON_EXE=/Users/mrakitin/anaconda3/bin/python
CONDA_SHLVL=1

$ conda list --show-channel-url
# packages in environment at /Users/mrakitin/anaconda3/envs/pyzbar:
#
# Name                    Version                   Build  Channel
appnope                   0.1.0                    pypi_0    pypi
attrs                     19.3.0                     py_0    defaults
backcall                  0.2.0                    pypi_0    pypi
blas                      1.0                         mkl    defaults
ca-certificates           2020.1.1                      0    defaults
certifi                   2020.4.5.1               py37_0    defaults
cffi                      1.14.0           py37hc512035_1    defaults
chardet                   3.0.4                 py37_1003    defaults
conda                     4.8.3                    py37_0    defaults
conda-package-handling    1.6.1            py37h1de35cc_0    defaults
cryptography              2.9.2            py37ha12b0ac_0    defaults
decorator                 4.4.2                    pypi_0    pypi
freetype                  2.9.1                hb4e5f40_0    defaults
idna                      2.9                        py_1    defaults
importlib-metadata        1.6.0                    py37_0    defaults
importlib_metadata        1.6.0                         0    defaults
intel-openmp              2019.4                      233    defaults
ipython                   7.15.0                   pypi_0    pypi
ipython-genutils          0.2.0                    pypi_0    pypi
jedi                      0.17.0                   pypi_0    pypi
jpeg                      9b                   he5867d9_2    defaults
libcxx                    10.0.0                        1    defaults
libedit                   3.1.20181209         hb402a30_0    defaults
libffi                    3.3                  h0a44026_1    defaults
libgfortran               3.0.1                h93005f0_2    defaults
libpng                    1.6.37               ha441bb4_0    defaults
libtiff                   4.1.0                hcb84e12_1    defaults
lz4-c                     1.9.2                h0a44026_0    defaults
mkl                       2019.4                      233    defaults
mkl-service               2.3.0            py37hfbe908c_0    defaults
mkl_fft                   1.0.15           py37h5e564d8_0    defaults
mkl_random                1.1.1            py37h959d312_0    defaults
more-itertools            8.3.0                      py_0    defaults
ncurses                   6.2                  h0a44026_1    defaults
numpy                     1.18.1           py37h7241aed_0    defaults
numpy-base                1.18.1           py37h3304bdc_1    defaults
olefile                   0.46                     py37_0    defaults
openssl                   1.1.1g               h1de35cc_0    defaults
packaging                 20.3                       py_0    defaults
parso                     0.7.0                    pypi_0    pypi
pexpect                   4.8.0                    pypi_0    pypi
pickleshare               0.7.5                    pypi_0    pypi
pillow                    7.1.2            py37h4655f20_0    defaults
pip                       20.0.2                   py37_3    defaults
pluggy                    0.13.1                   py37_0    defaults
prompt-toolkit            3.0.5                    pypi_0    pypi
ptyprocess                0.6.0                    pypi_0    pypi
py                        1.8.1                      py_0    defaults
pycosat                   0.6.3            py37h1de35cc_0    defaults
pycparser                 2.20                       py_0    defaults
pygments                  2.6.1                    pypi_0    pypi
pyopenssl                 19.1.0                   py37_0    defaults
pyparsing                 2.4.7                      py_0    defaults
pysocks                   1.7.1                    py37_0    defaults
pytest                    5.4.3            py37hc8dfbb8_0    conda-forge
python                    3.7.7                hf48f09d_4    defaults
python_abi                3.7                     1_cp37m    conda-forge
readline                  8.0                  h1de35cc_0    defaults
requests                  2.23.0                   py37_0    defaults
ruamel_yaml               0.15.87          py37h1de35cc_0    defaults
setuptools                47.1.1                   py37_0    defaults
six                       1.15.0                     py_0    defaults
sqlite                    3.31.1               h5c1f38d_1    defaults
tk                        8.6.8                ha441bb4_0    defaults
tqdm                      4.46.0                     py_0    defaults
traitlets                 4.3.3                    pypi_0    pypi
urllib3                   1.25.8                   py37_0    defaults
wcwidth                   0.1.9                      py_0    defaults
wheel                     0.34.2                   py37_0    defaults
xz                        5.2.5                h1de35cc_0    defaults
yaml                      0.1.7                hc338f04_2    defaults
zipp                      3.1.0                      py_0    defaults
zlib                      1.2.11               h1de35cc_3    defaults
zstd                      1.4.4                h1990bb4_3    defaults

@mrakitin mrakitin requested a review from a team as a code owner June 11, 2020 18:10
@cla-bot cla-bot bot added the cla-signed [bot] added once the contributor has signed the CLA label Jun 11, 2020
@mrakitin
Copy link
Contributor Author

Also, git grep log.trace in the root of the repo revealed the following occurrences of log.trace(...):

$ git grep log.trace
conda/base/context.py:                log.trace("Tried envs_dir but not writable: %s", envs_dir)
conda/common/_logic.py:            log.trace('Eliminating %d/%d terms for bound violation' % (nprune, nterms))
conda/common/_logic.py:                log.trace('Beginning peak minimization')
conda/common/_logic.py:                log.trace('Beginning sum minimization')
conda/common/_logic.py:            log.trace("Initial range (%d,%d)" % (lo, hi))
conda/common/_logic.py:                    log.trace('Bisection attempt: (%d,%d), (%d+%d) clauses' %
conda/common/_logic.py:                    log.trace("Bisection failure, new range=(%d,%d)" % (lo, hi))
conda/common/_logic.py:                    log.trace("Bisection success, new range=(%d,%d)" % (lo, hi))
conda/core/package_cache_data.py:            log.trace("package cache directory '%s' does not exist", self.pkgs_dir)
conda/core/package_cache_data.py:        log.trace("adding to package cache %s", package_tarball_full_path)
conda/core/path_actions.py:        log.trace("linking %s => %s", self.source_full_path, self.target_full_path)
conda/core/path_actions.py:            log.trace("reversing link creation %s", self.target_prefix)
conda/core/path_actions.py:            log.trace("ignoring prefix update for symlink with source path %s",
conda/core/path_actions.py:        log.trace("copying %s => %s", self.source_full_path, self.intermediate_path)
conda/core/path_actions.py:            log.trace("rewriting prefixes in %s", self.target_full_path)
conda/core/path_actions.py:        log.trace("linking %s => %s", source_path, self.target_full_path)
conda/core/path_actions.py:        log.trace("making menu for %s", self.target_full_path)
conda/core/path_actions.py:            log.trace("removing menu for %s", self.target_full_path)
conda/core/path_actions.py:        log.trace("touching nonadmin %s", self.target_full_path)
conda/core/path_actions.py:            log.trace("removing nonadmin file %s", self.target_full_path)
conda/core/path_actions.py:        log.trace("compiling %s", ' '.join(self.target_full_paths))
conda/core/path_actions.py:            log.trace("reversing pyc creation %s", ' '.join(self.target_full_paths))
conda/core/path_actions.py:        log.trace("creating python entry point %s", self.target_full_path)
conda/core/path_actions.py:            log.trace("reversing python entry point creation %s", self.target_full_path)
conda/core/path_actions.py:#         log.trace("creating application entry point %s => %s",
conda/core/path_actions.py:#         log.trace("creating application softlink via %s %s => %s",
conda/core/path_actions.py:#             log.trace('%r', e)
conda/core/path_actions.py:        log.trace("creating linked package record %s", self.target_full_path)
conda/core/path_actions.py:        log.trace("reversing linked package record creation %s", self.target_full_path)
conda/core/path_actions.py:        log.trace("updating environment history %s", self.target_full_path)
conda/core/path_actions.py:            log.trace("moving %s => %s", self.hold_path, self.target_full_path)
conda/core/path_actions.py:        log.trace("registering environment in catalog %s", self.target_prefix)
conda/core/path_actions.py:            log.trace("renaming %s => %s", self.target_short_path, self.holding_short_path)
conda/core/path_actions.py:            log.trace("reversing rename %s => %s", self.holding_short_path, self.target_short_path)
conda/core/path_actions.py:        log.trace("removing menu for %s ", self.target_prefix)
conda/core/path_actions.py:        log.trace("re-creating menu for %s ", self.target_prefix)
conda/core/path_actions.py:        log.trace("unregistering environment in catalog %s", self.target_prefix)
conda/core/path_actions.py:        log.trace("caching url %s => %s", self.url, self.target_full_path)
conda/core/path_actions.py:            log.trace("moving %s => %s", self.hold_path, self.target_full_path)
conda/core/path_actions.py:        log.trace("extracting %s => %s", self.source_full_path, self.target_full_path)
conda/core/path_actions.py:            log.trace("moving %s => %s", self.hold_path, self.target_full_path)
conda/core/solve.py:                log.trace("using PrefixGraph to remove records for %s", spec)
conda/gateways/disk/__init__.py:        log.trace("retrying %s/%s %s() in %g sec",
conda/gateways/disk/__init__.py:            log.trace(repr(e))
conda/gateways/disk/__init__.py:        log.trace('making directory %s', path)
conda/gateways/disk/__init__.py:    log.trace('making directory %s', path)
conda/gateways/disk/__init__.py:    #     log.trace("chowning %s:%s %s", uid, gid, path)
conda/gateways/disk/__init__.py:            log.trace("Failed to set permissions to 2775 on %s (%d %d)",
conda/gateways/disk/create.py:    log.trace("writing json to file %s", file_path)
conda/gateways/disk/create.py:        log.trace("creating hard link %s => %s", src, dst)
conda/gateways/disk/create.py:        log.trace("soft linking %s => %s", src, dst)
conda/gateways/disk/create.py:            log.trace("soft linking %s => %s", src, dst)
conda/gateways/disk/create.py:    log.trace("copying %s => %s", src, dst)
conda/gateways/disk/create.py:            log.trace("hard linking %s => %s", src, dst)
conda/gateways/disk/create.py:        log.trace(command)
conda/gateways/disk/create.py:        log.trace("creating package cache directory '%s'", pkgs_dir)
conda/gateways/disk/create.py:            log.trace("cannot create package cache directory '%s'", pkgs_dir)
conda/gateways/disk/create.py:        log.trace("creating envs directory '%s'", envs_dir)
conda/gateways/disk/create.py:            log.trace("cannot create envs directory '%s'", envs_dir)
conda/gateways/disk/delete.py:        log.trace("rm_rf %s", path)
conda/gateways/disk/delete.py:            log.trace("rm_rf failed. Not a link, file, or directory: %s", path)
conda/gateways/disk/delete.py:                log.trace("no such file or directory: %s", path)
conda/gateways/disk/permissions.py:        log.trace('chmod +x %s', path)
conda/gateways/disk/test.py:    log.trace("checking path is writable %s", path)
conda/gateways/disk/test.py:            log.trace("hard link supported for %s => %s", source_file, dest_dir)
conda/gateways/disk/test.py:            log.trace("hard link IS NOT supported for %s => %s", source_file, dest_dir)
conda/gateways/disk/test.py:        log.trace("hard link IS NOT supported for %s => %s", source_file, dest_dir)
conda/gateways/disk/test.py:    log.trace("checking soft link capability for %s => %s", source_file, dest_dir)
conda/gateways/disk/update.py:        log.trace("in-place update path locked for %s", file_full_path)
conda/gateways/disk/update.py:        log.trace("renaming %s => %s", source_path, destination_path)
conda/gateways/disk/update.py:                log.trace("Could not rename %s => %s due to errno [%s]. Falling back"
conda/gateways/disk/update.py:        log.trace("cannot rename; source path does not exist '%s'", source_path)
conda/gateways/disk/update.py:        log.trace("touching path %s", path)
conda/gateways/disk/update.py:            #     log.trace("chowning %s:%s %s", uid, gid, path)
conda/gateways/subprocess.py:        log.trace(formatted_output)
conda/plan.py:            log.trace("action {0} not in actions".format(op))
conda/plan.py:            log.trace("action {0} has None value".format(op))

Is it worth for me to change these places as well? Thanks!

@mrakitin
Copy link
Contributor Author

Currently supported logging levels: https://docs.python.org/3/library/logging.html#logging-levels.

@danielballan
Copy link

Conda uses Python logging's API to add a "TRACE" level that is less than "DEBUG", and it monkey-patches the Logger class to add a corresponding trace method.

def trace(self, message, *args, **kwargs):
if self.isEnabledFor(TRACE):
self._log(TRACE, message, args, **kwargs)
logging.addLevelName(TRACE, "TRACE")
logging.Logger.trace = trace

@danielballan
Copy link

Apparently that module isn't always getting exec-ed, or least not before the first time that Logger.trace is used by another module.

Copy link
Contributor
@mcg1969 mcg1969 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for this! Now that CI is unstuck I am inclined to see this in, but I don't know enough about the intent of the logging design. Will need to get another core contributor to look this over.

@@ -165,7 +165,7 @@ def _prefix_records(self):
return self.__prefix_records or self.load() or self.__prefix_records

def _load_single_record(self, prefix_record_json_path):
log.trace("loading prefix record %s", prefix_record_json_path)
log.info("loading prefix record %s", prefix_record_json_path)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The more I think about it, the more I think that info is the wrong loglevel. It's more likely that the right answer is either 1) debug or 2) patching conda/core/prefix_data.py so that it picks up the trace option properly.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kalefranz @mingwandroid thoughts? ^^^

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the review, @mcg1969.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mrakitin of course! I'd love for @kalefranz to see this but he's out right for a bit. When he gets back I'll check in with him.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @mcg1969 and @kalefranz! Just encountered the same issue with programmatic access of the conda package list, and remembered I proposed a fix. It would be great to not celebrate an anniversary for this PR 😄. What would you recommend to unblock it? Thanks!

Copy link
Member
@jezdez jezdez left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

491f278 added the TRACE log level, which on hindsight seems to have been to work around a test setup issue. (#3833 has the full changes that this was included in).

Since I don't know what the reasons for any of these things were, I'm inclined to:

  1. call the TRACE logging level a technical debt we need to clean up by removing it, since it's a non-standard logging level and not what most Python users would expect
  2. ask @mrakitin to update this patch to use log.debug instead of log.info to reduce the chance of spamming our users

@jezdez jezdez added the type::tech-debt identifies or resolves some technical debt label Jun 1, 2021
@mrakitin
Copy link
Contributor Author
mrakitin commented Jun 1, 2021

491f278 added the TRACE log level, which on hindsight seems to have been to work around a test setup issue. (#3833 has the full changes that this was included in).

Since I don't know what the reasons for any of these things were, I'm inclined to:

1. call the TRACE logging level a technical debt we need to clean up by removing it, since it's a non-standard logging level and not what most Python users would expect

2. ask @mrakitin to update this patch to use `log.debug` instead of `log.info` to reduce the chance of spamming our users

Thanks, @jezdez! I updated the log level for (2), as suggested.

@mrakitin
Copy link
Contributor Author

Hi again, is there anything that is blocking this PR from merging? Thanks!

@jezdez
Copy link
Member
jezdez commented Jun 22, 2021

Hi again, is there anything that is blocking this PR from merging? Thanks!

Nope, thanks for the update. We were just working on other things.

9E81

@jezdez jezdez merged commit e3efd1c into conda:master Jun 22, 2021
@mrakitin mrakitin deleted the fix-log-level branch June 22, 2021 13:56
@mrakitin
Copy link
Contributor Author

Hi @jezdez, no worries, thanks for merging this PR!

@jezdez jezdez added this to the 4.10.2 milestone Jun 25, 2021
FaustinCarter pushed a commit to FaustinCarter/conda that referenced this pull request Nov 27, 2021
* Fix log level in conda/core/prefix_data.py

* Change the logging level to debug in _load_single_record()

Co-authored-by: Michael C. Grant <mcg@cvxr.com>
@github-actions github-actions bot added the locked [bot] locked due to inactivity label Jun 26, 2022
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jun 26, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
cla-signed [bot] added once the contributor has signed the CLA locked [bot] locked due to inactivity type::tech-debt identifies or resolves some technical debt
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants
0