Re: Converting PyPI to feeds

Thomas Leonard <[email protected]> Fri, 10 Mar 2017 17:59:19 +0000
Newsgroups gmane.comp.file-systems.zero-install.devel
Message-ID <CAG4opy95uL--iziCROmGv9Ay6ppbFABx9Dx_wdF+mc2d2Te4Pw@mail.gmail.com>
On 10 March 2017 at 16:21, Tim Diels <[email protected]> wrote:
> I figured out that versions are lists of lists and thus 1 < 1.0 because [1]
> < [1, 0]. So, I don't see a way of converting Python version specifiers to
> Zero Install constraints, due to the lack of zero padding in the dotted
> lists of versions.
>
> One workaround is to pad the versions with zeros according to the longest
> version of the package to convert (E.g. a package with versions 1, 2.2,
> 3.3.3 will zero pad versions to match num.num.num). When, later, a component
> (referring to a '.num') is added, all versions will need to be changed to
> increase padding by one component (E.g. when adding 4.4.4.4). Version
> contraints will need to be padded as well (e.g. ==1 becomes ==1.0.0.0), so
> when a component is added, all constraints need to be updated as well. A
> feed can be required by a feed outside the pypi_to_zi project and thus that
> feed would break when a version component is added. So, this workaround is
> not really an option.

Or, you could strip trailing zeros, so 3.0.0 becomes 3.

> So how could we make this work? It appears it is needed to either:
>
> - change the versioning scheme to add zero padding
> - or support multiple versioning schemes. E.g. like one of these approaches:
>
>   <implementation version='pep440:1.0>
>   <implementation version='1.0' version_scheme='pep440'>
>   <interface><versioning_scheme>pep440  <!-- or only at interface level, as
> you might not want to support using multiple versioning schemes in the same
> interface -->
>
> Cheers,
> Tim
>
> On 9 March 2017 at 18:52, Tim Diels <[email protected]> wrote:
>>
>> Dear Thomas, all,
>>
>> I need input on these problems encountered while converting Python version
>> specifiers to ZI constraints:
>>
>> 1. in Zero Install, version 1 < 1.0 < 1.0.0. In Python, version 1 == 1.0
>> == 1.0.0. E.g. the specifier '==1' would have to be converted to constraint
>> '1..1.0.0.0...' (infinite zeros). Also, how do 1.0.0 and 1.1 compare in Zero
>> Install? Should 1 be interpreted as 1.(-1) perhaps?
>> 2. <version after=... not-after=...> will need to be implemented. Or
>> `version=` should support an & operator for intersection. This is to support
>> '<=version' for example.
>>
>> Thanks,
>> Cheers,
>> Tim
>
>
>
> ------------------------------------------------------------------------------
> Announcing the Oxford Dictionaries API! The API offers world-renowned
> dictionary content that is easy and intuitive to access. Sign up for an
> account today to start using our lexical data to power your apps and
> projects. Get started today and enter our developer competition.
> http://sdm.link/oxford
> _______________________________________________
> Zero-install-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/zero-install-devel
>



-- 
talex5 (GitHub/Twitter)        http://roscidus.com/blog/
GPG: 5DD5 8D70 899C 454A 966D  6A51 7513 3C8F 94F6 E0CC
GPG: DA98 25AE CAD0 8975 7CDA  BD8E 0713 3F96 CA74 D8BA

------------------------------------------------------------------------------
Announcing the Oxford Dictionaries API! The API offers world-renowned
dictionary content that is easy and intuitive to access. Sign up for an
account today to start using our lexical data to power your apps and
projects. Get started today and enter our developer competition.
http://sdm.link/oxford