classification
Title: Distutils blows up with an incorrect pypirc, should be caught
Type: behavior Stage: resolved
Components: Distutils Versions: Python 3.7, Python 3.6, Python 3.5, Python 2.7
process
Status: closed Resolution: out of date
Dependencies: Superseder:
Assigned To: Nosy List: Tommy Carpenter, berker.peksag, dstufft, eric.araujo, steve.dower
Priority: normal Keywords: patch

Created on 2017-03-24 14:24 by Tommy Carpenter, last changed 2021-02-03 18:21 by steve.dower. This issue is now closed.

Files
File name Uploaded Description Edit
issue29895_test.diff berker.peksag, 2017-05-14 06:33 review
Messages (4)
msg290090 - (view) Author: Tommy Carpenter (Tommy Carpenter) Date: 2017-03-24 14:24
Full details and stacktrace are at: http://stackoverflow.com/questions/43001446/python-pypi-configparser-blowing-up-when-pointing-to-certain-repo/43001770#43001770

Essentially, I had an index-servers section that listed a repo, that was not listed in the remainder of the .pypirc file. Instead of distutils catching this, it blows up in an obscure ConfigParsing error.
msg293637 - (view) Author: Berker Peksag (berker.peksag) * (Python committer) Date: 2017-05-14 06:33
Thanks for the report, Tommy. I think the configparser exception is pretty descriptive here. You had a .pypirc file like the following:

    [distutils]
    index-servers = 
      pypi
      global

    [pypi]
    username:spam
    password:eggs

You passed -r global and you got:

    Traceback (most recent call last):
      ...
    ConfigParser.NoSectionError: No section: 'global'

Which says you don't have a section named 'global' in your .pypirc.

There are three options here:

a) do nothing
b) catch configparser.NoSectionError and raise a distutils exception with better wording. Since we don't have DistutilsConfigError, I'm not sure which one is more appropriate here.
c) ignore configparser.NoSectionError if server name cannot be found in sections in PyPIRCCommand._read_pypirc(). IMO this is the worst option.

Here is a test case to demonstrate the problem described at the SO question.
msg293860 - (view) Author: Tommy Carpenter (Tommy Carpenter) Date: 2017-05-17 17:05
Hi,

I think option B might be best, because the issue was that I didn't know at first that the problem was in my .pypirc. I think this stack trace is not the most elegant way for the user to figure that out. Maybe catching this and then presenting a human readable error to the user would be better.
msg386351 - (view) Author: Steve Dower (steve.dower) * (Python committer) Date: 2021-02-03 18:21
Distutils is now deprecated (see PEP 632) and all tagged issues are being closed. From now until removal, only release blocking issues will be considered for distutils.

If this issue does not relate to distutils, please remove the component and reopen it. If you believe it still requires a fix, most likely the issue should be re-reported at https://github.com/pypa/setuptools
History
Date User Action Args
2021-02-03 18:21:24steve.dowersetstatus: open -> closed

nosy: + steve.dower
messages: + msg386351

resolution: out of date
stage: resolved
2017-05-17 17:05:27Tommy Carpentersetmessages: + msg293860
2017-05-14 06:33:07berker.peksagsetfiles: + issue29895_test.diff
versions: + Python 3.5, Python 3.6, Python 3.7
nosy: + berker.peksag

messages: + msg293637

keywords: + patch
2017-03-24 14:24:33Tommy Carpentercreate