On 6/5/20 1:43 PM, Miro Hrončok wrote:
On 05. 06. 20 11:51, Tomas Orsava wrote:
## PyPI parity

Every Python package in Fedora **SHOULD** also be available on [the Python Package Index](https://pypi.org) (PyPI).

The command `pip install PROJECTNAME` **MUST** install the same package (possibly in a different version), install nothing, or fail with a reasonable error message.


What should I imagine under "reasonable error message"?

One that explains the situation. Not a segfault.
I think it's fine to leave this to the packager.


Maybe I'm missing some context, but I'm lost. Are we proposing to add new functionality to pip that somehow handles this? Or how could the packager influence pip's error message?

Try:

    $ pip install fedora


|$ pip install fedora||
||Defaulting to user installation because normal site-packages is not writeable||
||Collecting fedora||
||  Downloading fedora-0.tar.gz (2.0 kB)||
||Building wheels for collected packages: fedora||
||  Building wheel for fedora (setup.py) ... error||
||  ERROR: Command errored out with exit status 1:||
||   command: /usr/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-d5gw3ura/fedora/setup.py'"'"'; __file__='"'"'/tmp/pip-install-d5gw3ura/fedora/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-baiub5ca||
||       cwd: /tmp/pip-install-d5gw3ura/fedora/||
||  Complete output (72 lines):||
||  running bdist_wheel||
||  running build||
||  running build_py||
||------------------------------------------------------------------------||
||  # `fedora` on PyPI||
||
||  This dummy project is not installable.||
||  You probably want `python-fedora` instead.||
||
||
||  ## pyproject.toml tool.fedora namespace||
||
||  The [PEP 518](https://www.python.org/dev/peps/pep-0518/#tool-table) declares|| ||  that a project can use the subtable `tool.$NAME` if `pyproject.toml` if,||
||  and only if, they own the entry for `$NAME` in the Cheeseshop/PyPI.||
||
||  That's what this project is for.||
||  We own the entry for `fedora`, so we could use `tool.fedora` in .||
||
||  ## python-fedora||
||
||  The Fedora Infra's [python-fedora](https://github.com/fedora-infra/python-fedora)||
||  project provides an importable module named `fedora`.||
||
||  This goes against the convention that PyPI distribution names should||
||  match the module names.||
||  But, python-fedora pre-dates wide use of that convention, and the issue||
||  is hard to fix now.||
||
||  Please install `python-fedora` to get the Fedora Infra's package.||
||
||  ### Please: Don't install packages blindly||
||
||  When you see the exception:||
||
||  ```||
||  ModuleNotFoundError: No module named 'foo'||
||  ```||
||
||  … please research the actual requirements instead of going directly for||
||  `pip install foo`.||
||  The project (distribution) name may differ from the module(s) it||
||  provides.||
||
||------------------------------------------------------------------------||
||  Traceback (most recent call last):||
||    File "<string>", line 1, in <module>||
||    File "/tmp/pip-install-d5gw3ura/fedora/setup.py", line 38, in <module>||
||      zip_safe=False,||
||    File "/home/torsava/.local/lib/python3.7/site-packages/setuptools/__init__.py", line 144, in setup||
||      return distutils.core.setup(**attrs)||
||    File "/usr/lib64/python3.7/distutils/core.py", line 148, in setup||
||      dist.run_commands()||
||    File "/usr/lib64/python3.7/distutils/dist.py", line 966, in run_commands||
||      self.run_command(cmd)||
||    File "/usr/lib64/python3.7/distutils/dist.py", line 985, in run_command||
||      cmd_obj.run()||
||    File "/home/torsava/.local/lib/python3.7/site-packages/wheel/bdist_wheel.py", line 223, in run||
||      self.run_command('build')||
||    File "/usr/lib64/python3.7/distutils/cmd.py", line 313, in run_command||
||      self.distribution.run_command(command)||
||    File "/usr/lib64/python3.7/distutils/dist.py", line 985, in run_command||
||      cmd_obj.run()||
||    File "/usr/lib64/python3.7/distutils/command/build.py", line 135, in run||
||      self.run_command(cmd_name)||
||    File "/usr/lib64/python3.7/distutils/cmd.py", line 313, in run_command||
||      self.distribution.run_command(command)||
||    File "/usr/lib64/python3.7/distutils/dist.py", line 985, in run_command||
||      cmd_obj.run()||
||    File "/tmp/pip-install-d5gw3ura/fedora/setup.py", line 20, in run||
||      '"fedora" is not installable. You probably want python-fedora.'||
||  ValueError: "fedora" is not installable. You probably want python-fedora.||
||  ----------------------------------------||
||  ERROR: Failed building wheel for fedora||
||  Running setup.py clean for fedora||
||Failed to build fedora||
||Installing collected packages: fedora||
||    Running setup.py install for fedora ... error||
||    ERROR: Command errored out with exit status 1:||
||     command: /usr/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-d5gw3ura/fedora/setup.py'"'"'; __file__='"'"'/tmp/pip-install-d5gw3ura/fedora/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-6ta5hb06/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/torsava/.local/include/python3.7m/fedora||
||         cwd: /tmp/pip-install-d5gw3ura/fedora/||
||    Complete output (74 lines):||
||    running install||
||    running build||
||    running build_py||
||------------------------------------------------------------------------||
||    # `fedora` on PyPI||
||
||    This dummy project is not installable.||
||    You probably want `python-fedora` instead.||
||
||
||    ## pyproject.toml tool.fedora namespace||
||
||    The [PEP 518](https://www.python.org/dev/peps/pep-0518/#tool-table) declares|| ||    that a project can use the subtable `tool.$NAME` if `pyproject.toml` if,||
||    and only if, they own the entry for `$NAME` in the Cheeseshop/PyPI.||
||
||    That's what this project is for.||
||    We own the entry for `fedora`, so we could use `tool.fedora` in .||
||
||    ## python-fedora||
||
||    The Fedora Infra's [python-fedora](https://github.com/fedora-infra/python-fedora)||
||    project provides an importable module named `fedora`.||
||
||    This goes against the convention that PyPI distribution names should||
||    match the module names.||
||    But, python-fedora pre-dates wide use of that convention, and the issue||
||    is hard to fix now.||
||
||    Please install `python-fedora` to get the Fedora Infra's package.||
||
||    ### Please: Don't install packages blindly||
||
||    When you see the exception:||
||
||    ```||
||    ModuleNotFoundError: No module named 'foo'||
||    ```||
||
||    … please research the actual requirements instead of going directly for||
||    `pip install foo`.||
||    The project (distribution) name may differ from the module(s) it||
||    provides.||
||
||------------------------------------------------------------------------||
||    Traceback (most recent call last):||
||      File "<string>", line 1, in <module>||
||      File "/tmp/pip-install-d5gw3ura/fedora/setup.py", line 38, in <module>||
||        zip_safe=False,||
||      File "/home/torsava/.local/lib/python3.7/site-packages/setuptools/__init__.py", line 144, in setup||
||        return distutils.core.setup(**attrs)||
||      File "/usr/lib64/python3.7/distutils/core.py", line 148, in setup||
||        dist.run_commands()||
||      File "/usr/lib64/python3.7/distutils/dist.py", line 966, in run_commands||
||        self.run_command(cmd)||
||      File "/usr/lib64/python3.7/distutils/dist.py", line 985, in run_command||
||        cmd_obj.run()||
||      File "/home/torsava/.local/lib/python3.7/site-packages/setuptools/command/install.py", line 61, in run||
||        return orig.install.run(self)||
||      File "/usr/lib64/python3.7/distutils/command/install.py", line 556, in run||
||        self.run_command('build')||
||      File "/usr/lib64/python3.7/distutils/cmd.py", line 313, in run_command||
||        self.distribution.run_command(command)||
||      File "/usr/lib64/python3.7/distutils/dist.py", line 985, in run_command||
||        cmd_obj.run()||
||      File "/usr/lib64/python3.7/distutils/command/build.py", line 135, in run||
||        self.run_command(cmd_name)||
||      File "/usr/lib64/python3.7/distutils/cmd.py", line 313, in run_command||
||        self.distribution.run_command(command)||
||      File "/usr/lib64/python3.7/distutils/dist.py", line 985, in run_command||
||        cmd_obj.run()||
||      File "/tmp/pip-install-d5gw3ura/fedora/setup.py", line 20, in run||
||        '"fedora" is not installable. You probably want python-fedora.'||
||    ValueError: "fedora" is not installable. You probably want python-fedora.||
||    ----------------------------------------||
||ERROR: Command errored out with exit status 1: /usr/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-d5gw3ura/fedora/setup.py'"'"'; __file__='"'"'/tmp/pip-install-d5gw3ura/fedora/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-6ta5hb06/install-record.txt --single-version-externally-managed --user --prefix= --compile --install-headers /home/torsava/.local/include/python3.7m/fedora Check the logs for full command output.|


I see what you mean.
On the other hand, that's a pretty horrible error message format (posting in it's entirety for others to consider).

Is there no better way to achieve this? For a few packages it's ok, but I would be weary of introducing this to too many packages.

In the proposal there's talk of blocking the name on PyPI. Is this the way the blocking will be achieved?

_______________________________________________
python-devel mailing list -- python-devel@lists.fedoraproject.org
To unsubscribe send an email to python-devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/python-devel@lists.fedoraproject.org

Reply via email to