• Re: [gentoo-user] Re: 17 new packages because pip wants to write poetry

    From Eli Schwartz@21:1/5 to Grant Edwards on Mon Jul 29 21:00:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------9emKrWjK2XtNnw1swjlZai0l
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    On 7/29/24 2:05 PM, Grant Edwards wrote:
    On 2024-07-29, Eli Schwartz <eschwartz@gentoo.org> wrote:

    It turns out dev-python/poetry has nothing to do with poetry, so my AI
    paranoia was unjustified (this time), but one wonders what devs are
    thinking when the decide they add dozens of new dependencies like
    that. Why does pip suddenly need to format (or produce?) both markdown
    and RTF when it's been able to get along fine without them for so many
    years?

    For many years, pip has contained bundled libraries. These libraries
    recently got unbundled, and now you're installing a system copy.

    Yep, I figured that was probably the answer. I (for one) would
    appreciate some sort of notice when such an unbundling happens so that
    I don't waste time trying to track down why emerge suddenly wants to
    install a bunch of new packages. I can't really come up with a good mechanism for that other than news items.


    Well, it is there in the `git log` of the package. And at https://packages.gentoo.org/packages/dev-python/pip/changelog


    Commits on 2024-06-23

    dev-python/pip: Unbundle dependencies


    pip has always "needed to format (or produce?) both markdown and RTF",

    OK, now I'm genuinely curious: what does pip need to do with markdown
    and RTF? My first guess was that its man pages aren't written in nroff
    any more and somehow markdown was being used. [I already had at least
    one markdown implementation installed, but pip apparently demands a
    different one.] But there is no man page for pip. There are a bunch of documents in /usr/share/doc/pip-<ver>, but they're all reStructured Text.

    Oh well, I guess I should be thankful it didn't force LaTeX and pandoc installs.


    Python software loves to depend on python software and hates to depend
    on anything that isn't written in python, so I think you're pretty safe
    there. :)

    As for why it needs to format markdown -- build dependencies of python
    software often do, since they want to render the darned stuff into the https://pypi.org display page for that software and the one and only way
    to do so is to render it into the metadata files which get installed at
    runtime -- and which are also directly displayed on https://pypi.org

    I don't understand it myself, either.

    In this case it's actually a bit worse because pip internally uses, and
    usually bundles a code copy, of https://pypi.org/project/rich/

    "rich" can do a lot of things, including take markdown and print it with
    fancy formatting and colors to your terminal emulator. pip isn't using
    most of the features of rich, but it is *using* rich at all, and
    therefore markdown ends up as a recursive dependency.


    ...

    aside: there are pip manpages, funny you should mention that.

    I could totally add another bdepend on sphinx for this! But I would have
    to package some things first. :(


    --
    Eli Schwartz


    --------------9emKrWjK2XtNnw1swjlZai0l--

    -----BEGIN PGP SIGNATURE-----

    wnsEABYIACMWIQTnFNnmK0TPZHnXm3qEp9ErcA0vVwUCZqfmeQUDAAAAAAAKCRCEp9ErcA0vV4hp AQCPTXuOMZiRG0HwiuqQ/78VSUq4PwdFqeqloOwJJM0nsAEAgzZqI4/DKvZAtSzW1XRzZwb+3Utp REBmdIdecqOo9A4=
    =FhJW
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Eli Schwartz@21:1/5 to Grant Edwards on Mon Jul 29 22:50:01 2024
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------t2LTix1OL0GqBWVs0d06S9RT
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    On 7/29/24 4:09 PM, Grant Edwards wrote:
    Right, but that's only useful after you track down the trigger for the
    new packages. What would be nice is avoiding that "tracking down"
    effort. [I know, I should just relax, hit 'Y', and trust that emerge
    and the devs know what they're doing.]


    That's basically just emerge -t though?


    As for why it needs to format markdown -- build dependencies of
    python software often do, since they want to render the darned stuff
    into the https://pypi.org display page for that software

    Oh. Is that display page (in html?) written into a log somewhere or
    shown during the build?


    It's stored inside an installed file called

    /usr/lib/python3.XX/site-packages/${PN}-${PV}.dist-info/METADATA

    The file format is described at https://packaging.python.org/en/latest/specifications/core-metadata/#description

    Of course, the specific metadata field in question is not actually
    useful for installed packages, only for web repository uploads, but
    there you have it...

    There is some useful metadata in that file, for example pip needs it to
    be able to list which names and versions are installed, and also to
    check whether each python module has its dependencies (or Extras
    dependencies) installed. But the stuff that uses rst and markdown is
    totally unnecessary for this, even though python build systems have to
    add it.


    aside: there are pip manpages, funny you should mention that.

    When installed on Gentoo using dev-python/pip?

    I could totally add another bdepend on sphinx for this! But I would have
    to package some things first. :(

    No thanks, sphinx would pull in 10 more packages. :)

    If I need pip documentation, I can google for it or look at the
    rst.bz2 files install in /usr/share/doc...

    Thanks for tolerating my whinging.


    Gentoo doesn't install the manpages, no.

    We should. And per policy, manpages cannot be disabled by a USE flag: https://projects.gentoo.org/qa/policy-guide/installed-files.html#pg0305

    But what we can do is build the manpages ourselves and add an extra
    SRC_URI to download that. And in this case it's a royal pain to package, including the fact that it requires sphinxcontrib-towncrier which has
    never released any version that isn't an alpha... amazing...


    --
    Eli Schwartz


    --------------t2LTix1OL0GqBWVs0d06S9RT--

    -----BEGIN PGP SIGNATURE-----

    wnsEABYIACMWIQTnFNnmK0TPZHnXm3qEp9ErcA0vVwUCZqgAWgUDAAAAAAAKCRCEp9ErcA0vV1RF AP9oqntduR31swN0dDRsHe4urUOoMxhe4U58XiF3j1bkAAD8DQhHgbmSuekyOb76ViMv4BrfFy3Q AbjCskeAlM8dPwM=
    =huvw
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)