Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > cz.comp.lang.python > #3345

Re: [python] Je k dispozici novější verze?

Path csiph.com!feeder.erje.net!1.eu.feeder.erje.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.am4!peer.am4.highwinds-media.com!news.highwinds-media.com!fx24.am4.POSTED!not-for-mail
Received-SPF pass (Address passes the Sender Policy Framework) SPF=MAILFROM; sender=encukou@gmail.com; remoteip=::ffff:209.85.128.45; remotehost=; helo=mail-wm1-f45.google.com; receiver=hugo.zagamma.cz;
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=cgeowMZqujZaU7iBmWwtWcb6G/kJdHySdI9o9MhfAo4=; b=Kw6PL+JqJ8/H9/J8lvkBKgbSBNeIEVTYiQXXJTrbR0NVYvXX1OfmEZqXgnBPOqAWqj 82k4XNM8phm/aJaY4X3cp1n4pLFI4y57fi6wKIYLdduvC7mNCQFBeb+7vhwGmgpeKObu ae8TlBR80uQulJ11DEo8qIPeQLCGJ+uR/erMcQWXqU9F800nKFcLTpfC1m3/ubSvIYLx 2/3mTJXmWBkexw6YFB0VQsXU6Wg9erSc20+TBce6fZujOMS06wwfSnLmXvLMp7dbQuhO QYImsnvs4+qHDWdLe3589lO2CZ8RLJflIdkLHGchrWaZ6HcB2PNq7dbxWlTkwkiJfRGq 2yTA==
X-Google-DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=cgeowMZqujZaU7iBmWwtWcb6G/kJdHySdI9o9MhfAo4=; b=JFY3XWJlNrZx6XLftsGBqdG/fdVzlYqkcY8zQNnPXupdPpnt7Q/4sCujUQXAWJCjIc Za7P62sC9Dp1EB8Jh0CxyZ6F/tBwyEfc7baR4oJIBlMOUCn0NHG5sdvQpFAJ0i3Aabqq OLKeoULQ89zMvoJ/HgUYmEiuGc02xxyY6ySf5L/6XgCGRIZ6dxc0oGHSZq5v0tuC/OJe m1cURwUyi50aovTII1/pd8tj0ugxu/eU7zcycGFhOkloov+7WAwBzflIezMcGlhAOBiU 0XX8mHclXgjpZSh4It1AaJ6tpZGCRyjAQk0OCMj5jkBnxK+K3/eFX9LRhWcQBg7BBq5d 6hLg==
X-Gm-Message-State AA+aEWZ4D9R+WoFK22dko2Zx9rTM43tr/cEF982t6zXhJ9bzMKM0g1Vj +gr/tfqL1Rjgf1k7HoPJEJI=
X-Google-Smtp-Source AFSGD/WsCejOBBuZ7EakNqjLJHC5Clxb2fiXsmGEwrblFH5lZXkEpIc0RBXnYSyrtamRqvYRZv8Z5Q==
X-Received by 2002:a1c:af08:: with SMTP id y8mr9704125wme.94.1543914621584; Tue, 04 Dec 2018 01:10:21 -0800 (PST)
Old-Return-Path <encukou@gmail.com>
From Petr Viktorin <encukou@gmail.com>
User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.1
MIME-Version 1.0
In-Reply-To <CA+yMeXWigPJmhXiH+LZNnPNji2QJuG5D377b1nUsMaMAtHSZtA@mail.gmail.com>
Content-Type text/plain; charset=utf-8; format=flowed
Content-Language en-US
Content-Transfer-Encoding 8bit
Subject Re: [python] Je k dispozici novější verze?
X-BeenThere python@py.cz
X-Mailman-Version 2.1.26
Precedence list
List-Id Konference PyCZ <python.py.cz>
List-Unsubscribe <http://www.py.cz/mailman/options/python>, <mailto:python-request@py.cz?subject=unsubscribe>
List-Archive <http://www.py.cz/pipermail/python/>
List-Post <mailto:python@py.cz>
List-Help <mailto:python-request@py.cz?subject=help>
List-Subscribe <http://www.py.cz/mailman/listinfo/python>, <mailto:python-request@py.cz?subject=subscribe>
Newsgroups cz.comp.lang.python
Message-ID <mailman.15.1543914624.30592.python@py.cz> (permalink)
X-Mailman-Original-Message-ID <4d90521b-02ca-7cae-a60b-d190f9e9ebc9@gmail.com>
X-Mailman-Original-References <CA+yMeXXVrMg51usTXa4dHt+54itf2Vd323OS7GU3ujpYNXT=3g@mail.gmail.com> <CAFhEBECDMhvupHiqjEBoE5nwBkAKamb3xBF-69mQv0F3a_qoyg@mail.gmail.com> <CA+yMeXXOEEmksRvH5bc6pHoORpDu=oxeDYkR84rLfpfri4HBhg@mail.gmail.com> <CAK9Q5BQzBoSJhmJffax1C=OHCKYXhc6+Va3g+GGhZ4X7f8kdUw@mail.gmail.com> <CA+yMeXWMVfEx4_YFJFykQPBB4fUDz3gZFHfuutDthfOcYXu1OQ@mail.gmail.com> <CAK9Q5BQ+Nnv0rUfX+Rw=2BDz1W_vtvDGqOiNNr5Z_6Y=S+uGQA@mail.gmail.com> <CA+yMeXVbnHoonkWd3xXSSOaRrkh+ec88p-LLguMSZ56L8gJfRA@mail.gmail.com> <CAK9Q5BRsXAhiMOs6yEgNso4hRC0nxiswccob23+bn4L-1XORHA@mail.gmail.com> <CA+yMeXWigPJmhXiH+LZNnPNji2QJuG5D377b1nUsMaMAtHSZtA@mail.gmail.com>
References <CA+yMeXXVrMg51usTXa4dHt+54itf2Vd323OS7GU3ujpYNXT=3g@mail.gmail.com> <CAFhEBECDMhvupHiqjEBoE5nwBkAKamb3xBF-69mQv0F3a_qoyg@mail.gmail.com> <CA+yMeXXOEEmksRvH5bc6pHoORpDu=oxeDYkR84rLfpfri4HBhg@mail.gmail.com> <CAK9Q5BQzBoSJhmJffax1C=OHCKYXhc6+Va3g+GGhZ4X7f8kdUw@mail.gmail.com> <CA+yMeXWMVfEx4_YFJFykQPBB4fUDz3gZFHfuutDthfOcYXu1OQ@mail.gmail.com> <CAK9Q5BQ+Nnv0rUfX+Rw=2BDz1W_vtvDGqOiNNr5Z_6Y=S+uGQA@mail.gmail.com> <CA+yMeXVbnHoonkWd3xXSSOaRrkh+ec88p-LLguMSZ56L8gJfRA@mail.gmail.com> <CAK9Q5BRsXAhiMOs6yEgNso4hRC0nxiswccob23+bn4L-1XORHA@mail.gmail.com> <CA+yMeXWigPJmhXiH+LZNnPNji2QJuG5D377b1nUsMaMAtHSZtA@mail.gmail.com> <4d90521b-02ca-7cae-a60b-d190f9e9ebc9@gmail.com>
Lines 54
X-Complaints-To abuse@usenet-news.net
NNTP-Posting-Date Tue, 04 Dec 2018 09:10:24 UTC
Organization usenet-news.net
Date Tue, 4 Dec 2018 10:10:19 +0100
X-Received-Bytes 7497
X-Received-Body-CRC 115405415
Xref csiph.com cz.comp.lang.python:3345

Show key headers only | View raw


On 12/4/18 8:11 AM, Petr Blahoš wrote:
[...]
> Já jsem to na začátku neřekl jasně, Chtěl jsem pouze použít ty funkce 
> pipu, které umí vyextrahovat verzi z názvy souboru,
> a verze porovnat. Protože to číslování verzí, když uvážíme veškeré bety 
> a rc a různé formáty je zatraceně složitý, takže
> by bylo lepší použít už existující funkce spíš než to psát, a to i 
> přesto, že ty balíčky, o kterých mluvíme jsou moje, takže
> to jejich schéma verzování znám, a můžu to postavit přímo na ně.

Ahoj!
pip není knihovna, nemá veřejné funkce. Jeho vnitřnosti se mění dost 
často na to, aby se nevyplatilo ho importovat. Určité části pipu se 
postupně reimplementují ve znovupoužitelných knihovnách, ale parsování 
jmen wheel souborů v tomhle myslím není moc priorita. Naštěstí je 
relativně jednoduché.

Jména wheelů jsou standardizována v [PEP 427]. Části jména souboru jsou 
oddělené pomlčkama, a verze je druhá část. (Specifikace dál říká, že ty 
části jsou navíc pozměněné aby obsahovaly jen písmena/čísla/tečku. Ale 
validní verze nemůže obsahovat jiné znaky, takže ji lze z jména wheelu 
korektně získat.)

Verze a jejich porovnání jsou standardizovány v [PEP 440], ale tam je to 
trochu složitější než `name.split('-')[1]`. Naštěstí na porovnávání 
verzí existuje oficiální knihovna [packaging]. Chceš třídu 
`packaging.version.Version`.

----

Implementace v pipu je ještě složitější, protože pip se umí postarat i o 
starší způsoby verzování, které už by jako wheel nemělo být možné vydat. 
(Ani se nedají rozumně zakódovat do jména wheelu.) Tyhle způsoby nebyly 
standardizované; "správně" je porovnat byl ideál kterému se dá 
přibližovat, ale nedá se ho dosáhnout.
Pro úplnost: na verze pip aktuálně používá [heuristiku] která se snaží 
být kompatibilní s [distutils.version], jehož [nedokumentované] třídy 
LooseVersion a StrictVersion jsou sbírka černé magie (s odpovídajícím 
komentářem!), resp. nepovedený pokus to nějak vyřešit.
Asi si dokážeš představit, že udržovat kód který takové věci dělá není 
jednoduché. To je asi hlavní důvod proč samotný pip nemá API a je 
tendence standardizované/korektní části dávat z pipu ven do knihoven 
jako `packaging`.


[PEP 427]: https://www.python.org/dev/peps/pep-0427/#file-name-convention
[PEP 503]: https://www.python.org/dev/peps/pep-0503/#normalized-names
[packaging]: https://packaging.pypa.io/en/latest/version/
[heuristiku]: 
https://github.com/pypa/pip/blob/873662179aebbf5eacdf681078f47bbfe5ee6149/src/pip/_vendor/distlib/version.py
[distutils.version]: 
https://github.com/python/cpython/blob/master/Lib/distutils/version.py
[nedokumentované]: 
https://docs.python.org/3/distutils/apiref.html#module-distutils.version

Back to cz.comp.lang.python | Previous | Next | Find similar


Thread

Re: [python]  Je k dispozici novější verze? Petr Viktorin <encukou@gmail.com> - 2018-12-04 10:10 +0100

csiph-web