Re: [Distutils] PEP 426, round 733 ;)

2013-02-16 Thread Philippe Ombredanne
On Tue, Feb 5, 2013 at 6:44 AM, Nick Coghlan  wrote:
> The version scheme is not going to change. The point of PEP 386 was,
> to a very large extent, to define a scheme that *existing PyPI
> projects* either already comply with, or will require only minor
> cosmetic changes to comply with (such as inserting an extra period to
> turn X.YdevN into X.Y.devN). []
> We already know the most likely outcome of such an effort: people will simply 
> stick
> with v1.1 of the metadata scheme and continuing to use the existing
> packaging tools, as migrating to the new ones would require a whole
> lot pointless busywork to redesign their build processes and
> workflows.
This is in fact  the killer argument here, i.e. even though I may not
like all that much
some of the supported proposed scheme, the practicality of adopting
and supporting
existing practices trumps IMHO all other arguments.
So any objections I brought here about the version schemes are
addressed by your answers :)
I particularly like the wording you have in the PEP where you
explicitly support but do not encourage more byzantine version
schemes.

-- 
Philippe Ombredanne

+1 650 799 0949 | pombreda...@nexb.com
DejaCode Enterprise at http://www.dejacode.com
nexB Inc. at http://www.nexb.com
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-06 Thread Nick Coghlan
On Thu, Feb 7, 2013 at 11:50 AM, Donald Stufft  wrote:
> I'm not against the change in particular though. The reference impl in
> distutils2
> protected against really high version numbers, I'm not sure what the logic
> behind
> that was except for protecting against "dates" as a version number. Might be
> there
> was a particular case they were making sure was rational. Only mentioning
> here
> because major only project numbers can get big which reminded me!

So long as the numeric component is monotonically increasing, there is
no problem with a date-based versioning scheme under PEP 386 or PEP
426. If distutils2 was ruling them out, it was applying an additional
constraint not present in the spec.

(Date based versioning is actually one of the use cases I intended to
include in the next PEP draft - ".postN" releases are quite handy for
that use case, as they make it easy to do hotfix releases while still
retaining a purely date-based scheme for the numeric component)

Cheers,
Nick.



-- 
Nick Coghlan   |   ncogh...@gmail.com   |   Brisbane, Australia
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-06 Thread Donald Stufft
On Wednesday, February 6, 2013 at 8:23 PM, Nick Coghlan wrote:
> The one *actual* change I will be making to the version scheme in the
> next draft is to allow Fedora/Firefox/Chrome style version numbering
> where there are only major releases, with no minor marker. Since the
> version scheme also constrains what is permitted inside version
> specifiers, this will also serve to permit things like
> "Requires-Python: 2" as a shorthand for "Requires-Python: >= 2.0, < 3"
> (and similar in Requires-Dist and Setup-Requires-Dist for other
> projects where major releases may contain backwards incompatible
> changes, and thus cross-version compatibility should be explicitly
> indicated with more permissive specifiers like ">=2.6, >=3.2, <4")
> 
Fedora/Firefox really don't have minor version numbers at all? Chrome
does have minor (actually way more than that 
http://d.stufft.io/image/3g0b07221P3l).

I'm not against the change in particular though. The reference impl in 
distutils2
protected against really high version numbers, I'm not sure what the logic 
behind
that was except for protecting against "dates" as a version number. Might be 
there
was a particular case they were making sure was rational. Only mentioning here
because major only project numbers can get big which reminded me!

___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-06 Thread Nick Coghlan
On Thu, Feb 7, 2013 at 4:17 AM,   wrote:
> Mine wasn't an objection: it was a plain refusal.

Your preferred lexicographically sorted scheme is completely compliant
with both PEP 386 and PEP 426. It merely expects users to write their
requirements as ">= 1.1, < 1.1.90" if they don't want to accidentally
download pre-releases. By contrast, starting with PEP 426,
alphanumeric pre-releases will be excluded by default (while still
allowing users to explicitly request them when necessary).

I'll be updating the PEP to include some simpler examples of compliant
versioning schemes projects may actually want to use, as well as
including more rationale for the complexity of the overall scheme
(still not as much as PEP 386, but at least some). The sole current
example, which includes *every* feature of the version scheme in a
single list is intended as a stress test for metadata processors,
rather than as any kind of guide to possible versioning schemes. I now
realise this is potentially confusing for users looking for guidance
on the kinds of versioning schemes they can use while still remaining
within the format defined by the PEP.

The one *actual* change I will be making to the version scheme in the
next draft is to allow Fedora/Firefox/Chrome style version numbering
where there are only major releases, with no minor marker. Since the
version scheme also constrains what is permitted inside version
specifiers, this will also serve to permit things like
"Requires-Python: 2" as a shorthand for "Requires-Python: >= 2.0, < 3"
 (and similar in Requires-Dist and Setup-Requires-Dist for other
projects where major releases may contain backwards incompatible
changes, and thus cross-version compatibility should be explicitly
indicated with more permissive specifiers like ">=2.6, >=3.2, <4")

Regards,
Nick.

-- 
Nick Coghlan   |   ncogh...@gmail.com   |   Brisbane, Australia
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-06 Thread a.cavallo
Mine wasn't an objection: it was a plain refusal.


On Wed 06/02/13 18:00, "Daniel Holth" dho...@gmail.com wrote:
> On Wed, Feb 6, 2013 at 11:37 AM,  wrote:
> Feel free to adopt whatever you think is the "best" practice: I dont
> understand
> whats wrong with 1.1.99 instead the "magic" 1.2b2.
> 
> I followed these "lengthy discussions" .. if an agreement was found
> and was
> technically sound why do you think people still arguing about that?
> And were
> talking years not hours to come up with those peps.
> 
> Its non-adopted, non-final predecessor turns 8 in April.
> Unfortunately these kinds of things can be argued endlessly.
> 
> I like a joke from time to time: python -c print "1.2.dev1"  "1.2.1" -> False
> Even easier in my unicors populated universe.
> 
> Ill simply ignore anything about those peps, for what it matters
> 
> In that case after these last objections are dropped lets accept this
> PEP. Hooray! You can start generating Metadata 1.3 today with
> bdist_wheel, and distribute already understands the Provides-Extra:
> feature used to represent setuptools extras.
> Description-in-body-section is also trouble-free with no changes to
> pkg_resources.
> 
> As a comparison, rubygems says
> (http://guides.rubygems.org/patterns/#prerelease-gems [1])
> 
> Many gem developers have versions of their gem ready to go out for
> testing or “edge” releases before a big gem release. RubyGems
> supports the concept of “prerelease” versions, which could be
> betas, alphas, or anything else that isn’t worthy of a real gem
> release yet. 
> 
> Taking advantage of this is easy. All you need is one or more
> letters in the gem version. For example, here’s what a prerelease
> gemspec’s version field might look like: 
> 
> Gem::Specification.new do |s| s.name [2] = "hola" s.version =
> "1.0.0.pre" 
> 
> Other prerelease version numbers might include 2.0.0.rc1, or
> 1.5.0.beta.3. It just has to have a letter in it, and you’re set.
> These gems can then be installed with the --pre flag, like so: 
> 
> Daniel Holth
> 
> 
> 
> Links:
> --
> [1] http://guides.rubygems.org/patterns/#prerelease-gems
> [2] http://s.name
> 
> 


___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-06 Thread Daniel Holth
On Wed, Feb 6, 2013 at 11:37 AM,  wrote:

> Feel free to adopt whatever you think is the "best" practice: I don't
> understand
> what's wrong with 1.1.99 instead the "magic" 1.2b2.
>
> I followed these "lengthy discussions" .. if an agreement was found and was
> technically sound why do you think people still arguing about that? And
> we're
> talking years not hours to come up with those peps.
>

Its non-adopted, non-final predecessor turns 8 in April. Unfortunately
these kinds of things can be argued endlessly.

I like a joke from time to time: python -c 'print "1.2.dev1" < "1.2.1"' ->
> False
> Even easier in my unicors populated universe.
>

I'll simply ignore anything about those peps, for what it matters
>

In that case after these last objections are dropped let's accept this PEP.
Hooray! You can start generating Metadata 1.3 today with bdist_wheel, and
distribute already understands the Provides-Extra: feature used to
represent setuptools extras. Description-in-body-section is also
trouble-free with no changes to pkg_resources.


As a comparison, rubygems says (
http://guides.rubygems.org/patterns/#prerelease-gems)

Many gem developers have versions of their gem ready to go out for testing
or “edge” releases before a big gem release. RubyGems supports the concept
of “prerelease” versions, which could be betas, alphas, or anything else
that isn’t worthy of a real gem release yet.

Taking advantage of this is easy. All you need is one or more letters in
the gem version. For example, here’s what a prerelease gemspec’s
versionfield might look like:

Gem::Specification.new do |s|
  s.name = "hola"
  s.version = "1.0.0.pre"

Other prerelease version numbers might include 2.0.0.rc1, or 1.5.0.beta.3.
It just has to have a letter in it, and you’re set. These gems can then be
installed with the --pre flag, like so:

Daniel Holth
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-06 Thread a.cavallo
Feel free to adopt whatever you think is the "best" practice: I don't understand
what's wrong with 1.1.99 instead the "magic" 1.2b2.

I followed these "lengthy discussions" .. if an agreement was found and was
technically sound why do you think people still arguing about that? And we're
talking years not hours to come up with those peps.

I like a joke from time to time: python -c 'print "1.2.dev1" < "1.2.1"' -> False
Even easier in my unicors populated universe.

I'll simply ignore anything about those peps, for what it matters.


On Wed 06/02/13 17:01, "Erik Bray" erik.m.b...@gmail.com wrote:
> On Tue, Feb 5, 2013 at 10:53 AM, Donald Stufft  d.stu...@gmail.com> wrote:
> On Tuesday, February 5, 2013 at 10:49 AM, a.cav
> a...@cavallinux.eu wrote:
>
> > Or until when somebody will explain if X.Y.devN
> comes before of after
> X.Y.N...
> >
> > Easy, before.
> 
> Which is explained in the PEP pretty clearly I thought. But if you're
> still not sure there were lengthy discussions on this very mailing
> list that led to that decision.  For what it's worth, there were
> people who argued the opposite too, but eventually it seems like a
> consensus was reached.
> 
> 
> 


___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-06 Thread Erik Bray
On Tue, Feb 5, 2013 at 10:53 AM, Donald Stufft  wrote:
> On Tuesday, February 5, 2013 at 10:49 AM, a.cava...@cavallinux.eu wrote:
>
> Or until when somebody will explain if X.Y.devN comes before of after
> X.Y.N...
>
> Easy, before.

Which is explained in the PEP pretty clearly I thought. But if you're
still not sure there were lengthy discussions on this very mailing
list that led to that decision.  For what it's worth, there were
people who argued the opposite too, but eventually it seems like a
consensus was reached.
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-06 Thread Erik Bray
On Tue, Feb 5, 2013 at 9:08 AM, Daniel Holth  wrote:
> On Tue, Feb 5, 2013 at 7:54 AM, Donald Stufft 
> wrote:
>>
>> On Tuesday, February 5, 2013 at 5:35 AM, a.cava...@cavallinux.eu wrote:
>>
>> Ideally it would be something that connects to the source revision number
>> (as in
>> subversion) or the integral id or even a timestamp (that's what an
>> exported
>> version must be).
>>
>> Timestamp or reversion number is not overall useful number for a version
>> and
>> here's why: Django (for example) maintains older versions for a set period
>> of time,
>> If you do it via timestamps than 1.1.1 which happens to be released after
>> 1.2.0 (because
>> of a security issue or glaring bug) will be considered "newer". Handwaving
>> the problem
>> away with a source revision number or timestamp ignores a fundamental
>> property
>> of a version
>
>
> What pkg_resources does for sorting is to append "final" for sorting. So the
> sorting is really just a, b, c, f. This scheme has been important for 8+
> years now. PEP 386, from 2009, narrows the allowed versions. Now the salient
> part of PEP 386 has been incorporated into Metadata 1.3.
>
> 1.0.0a0
> 1.0.0b0
> 1.0.0c0 ~= 1.0.0rc0
> 1.0.0 == 1.0.0f
>
> The "marketing pre-release" feature exists to allow publishers to put
> immature versions of their software on pypi where they can be easily
> downloaded. Recently SQLAlchemy did this but had to delete the beta release
> from pypi because too many deployments upgraded to an unstable version
> without realizing it. Once the tools are updated it will be easy to install
> a beta release with pip if and only if you specifically ask for it.

Yes, this is incredibly useful and I'm glad it was incorporated into
this PEP.  For the Astropy project for example we recently release
version 0.2b2 and we absolutely want to be able to put it on PyPI for
users to test out.  But as the current situation stands we can't do
that because 0.2b2 then becomes the "latest" version, and the one the
gets installed when users expecting the latest stable release do `pip
install astropy`.

So instead we've just been adding the pre-final release to testpypi
and pointing people there. And that's not really meant to be a
reliable service.  So...yeah.  A++ for adding this requirement.
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-05 Thread Donald Stufft
On Tuesday, February 5, 2013 at 10:49 AM, a.cava...@cavallinux.eu wrote: 
> Or until when somebody will explain if X.Y.devN comes before of after X.Y.N...
> 
> 

Easy, before.
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-05 Thread a.cavallo

I respectfully disagree, for what it matters I will ignore the whole stuff.

These PEPs have been around for ages. And I supsect they will be around until 
the
end of times.
Or until when somebody will explain if X.Y.devN comes before of after X.Y.N...

On Tue 05/02/13 15:44, "Nick Coghlan" ncogh...@gmail.com wrote:
> On Wed, Feb 6, 2013 at 12:15 AM,   a...@cavallinux.eu> wrote:
>
> > Not quite correct: 1.1.x and 1.2.x are two separate
> branches in Django.
>
> > So along the 1.1.x branch the timestamp identifies
> what comes first and after.
> Think of a plane where the coordinates are the
> timestamp and the branch: to
> compare you need fix one of the two (the branch in
> this case).
>
> > BTW the fact that in your mind 1.2.x comes later
> than 1.1.x is because you're
> already "sorting" them adding a semantic value built
> into the version *LABEL*.
> For a counter example how would compare then 1.x and
> 2.x: is 2.x continuing along
> 1.x or is it a completely unrelated source? And that
> *cannot* be captured.
>
> > My point in suggesting a timestamp is because it
> freeze the repository state in a
> unique way: scms have already that concept built
> into it (even distributed scm
> have that!).
> 
> The version scheme is not going to change. The point of PEP 386 was,
> to a very large extent, to define a scheme that *existing PyPI
> projects* either already comply with, or will require only minor
> cosmetic changes to comply with (such as inserting an extra period to
> turn X.YdevN into X.Y.devN).
> 
> In other words, the intent was not to invent a new versioning scheme,
> but merely to formalise a subset of one that already existed in the
> wild. One of the main goals of PEP 426 is to *lower* barriers to
> adoption for the new metadata standard, not to create new ones -
> throwing away the work that went into creating the PEP 386 versioning
> scheme would be a foolish waste of time and energy. Even the problem
> with the sorting of dev releases was enough to hinder adoption of v1.2
> of the metadata - there's no way we're going to try to enforce a more
> radical shift in the community approaches versioning. We already know
> the most likely outcome of such an effort: people will simply stick
> with v1.1 of the metadata scheme and continuing to use the existing
> packaging tools, as migrating to the new ones would require a whole
> lot pointless busywork to redesign their build processes and
> workflows.
> 
> Regards,
> Nick.
> 
> -- 
> Nick Coghlan   |   ncoghlan@g
> mail.com   |   Brisbane, Australia
> 
> 


___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-05 Thread Nick Coghlan
On Wed, Feb 6, 2013 at 1:06 AM, Philippe Ombredanne
 wrote:
> On Tue, Feb 5, 2013 at 3:08 PM, Daniel Holth  wrote:
>> The "marketing pre-release" feature exists to allow publishers to put
>> immature versions of their software on pypi where they can be easily
>> downloaded. Recently SQLAlchemy did this but had to delete the beta release
>> from pypi because too many deployments upgraded to an unstable version
>> without realizing it. Once the tools are updated it will be easy to install
>> a beta release with pip if and only if you specifically ask for it.
>
> May be  versioning scheme is trying to take on too much on itself that
> could possibly be solved elsewhere in a simpler way?
> Immature software distribution is a requirement that makes perfect
> sense --but even that is not in the scope of this PEP -- could it
> better addressed by having a something like Pypi "release channels"
> instead  ie some separate indexes for unstable/alpha/bleeding edge
> packages that responsible and consenting adults could use as they
> please or something similar?
> This is FWIW a common practice on Debian.

That is in no way simpler than telling installation tool developers:
"Do not install pre-releases, unless a user or developer specifically
asks for them".

Cheers,
Nick.

-- 
Nick Coghlan   |   ncogh...@gmail.com   |   Brisbane, Australia
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-05 Thread Philippe Ombredanne
On Tue, Feb 5, 2013 at 3:08 PM, Daniel Holth  wrote:
> The "marketing pre-release" feature exists to allow publishers to put
> immature versions of their software on pypi where they can be easily
> downloaded. Recently SQLAlchemy did this but had to delete the beta release
> from pypi because too many deployments upgraded to an unstable version
> without realizing it. Once the tools are updated it will be easy to install
> a beta release with pip if and only if you specifically ask for it.

May be  versioning scheme is trying to take on too much on itself that
could possibly be solved elsewhere in a simpler way?
Immature software distribution is a requirement that makes perfect
sense --but even that is not in the scope of this PEP -- could it
better addressed by having a something like Pypi "release channels"
instead  ie some separate indexes for unstable/alpha/bleeding edge
packages that responsible and consenting adults could use as they
please or something similar?
This is FWIW a common practice on Debian.


-- 
Philippe Ombredanne

+1 650 799 0949 | pombreda...@nexb.com
DejaCode Enterprise at http://www.dejacode.com
nexB Inc. at http://www.nexb.com
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-05 Thread Nick Coghlan
On Wed, Feb 6, 2013 at 12:15 AM,   wrote:
>
> Not quite correct: 1.1.x and 1.2.x are two separate branches in Django.
>
> So along the 1.1.x branch the timestamp identifies what comes first and after.
> Think of a plane where the coordinates are the timestamp and the branch: to
> compare you need fix one of the two (the branch in this case).
>
> BTW the fact that in your mind 1.2.x comes later than 1.1.x is because you're
> already "sorting" them adding a semantic value built into the version *LABEL*.
> For a counter example how would compare then 1.x and 2.x: is 2.x continuing 
> along
> 1.x or is it a completely unrelated source? And that *cannot* be captured.
>
> My point in suggesting a timestamp is because it freeze the repository state 
> in a
> unique way: scms have already that concept built into it (even distributed scm
> have that!).

The version scheme is not going to change. The point of PEP 386 was,
to a very large extent, to define a scheme that *existing PyPI
projects* either already comply with, or will require only minor
cosmetic changes to comply with (such as inserting an extra period to
turn X.YdevN into X.Y.devN).

In other words, the intent was not to invent a new versioning scheme,
but merely to formalise a subset of one that already existed in the
wild. One of the main goals of PEP 426 is to *lower* barriers to
adoption for the new metadata standard, not to create new ones -
throwing away the work that went into creating the PEP 386 versioning
scheme would be a foolish waste of time and energy. Even the problem
with the sorting of dev releases was enough to hinder adoption of v1.2
of the metadata - there's no way we're going to try to enforce a more
radical shift in the community approaches versioning. We already know
the most likely outcome of such an effort: people will simply stick
with v1.1 of the metadata scheme and continuing to use the existing
packaging tools, as migrating to the new ones would require a whole
lot pointless busywork to redesign their build processes and
workflows.

Regards,
Nick.

-- 
Nick Coghlan   |   ncogh...@gmail.com   |   Brisbane, Australia
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-05 Thread a.cavallo

Not quite correct: 1.1.x and 1.2.x are two separate branches in Django.

So along the 1.1.x branch the timestamp identifies what comes first and after.
Think of a plane where the coordinates are the timestamp and the branch: to
compare you need fix one of the two (the branch in this case).

BTW the fact that in your mind 1.2.x comes later than 1.1.x is because you're
already "sorting" them adding a semantic value built into the version *LABEL*.
For a counter example how would compare then 1.x and 2.x: is 2.x continuing 
along
1.x or is it a completely unrelated source? And that *cannot* be captured.

My point in suggesting a timestamp is because it freeze the repository state in 
a
unique way: scms have already that concept built into it (even distributed scm
have that!). 

On Tue 05/02/13 13:54, "Donald Stufft" donald.stu...@gmail.com wrote:
> On Tuesday, February 5, 2013 at 5:35 AM, a.cava...@cavallinux.eu
> wrote:
> Ideally it would be something that connects to the source revision
> number (as in
> subversion) or the integral id or even a timestamp (that's what an
> exported
> version must be).
> Timestamp or reversion number is not overall useful number for a
> version and
> here's why: Django (for example) maintains older versions for a set
> period of time,
> If you do it via timestamps than 1.1.1 which happens to be released
> after 1.2.0 (because
> of a security issue or glaring bug) will be considered "newer".
> Handwaving the problem
> away with a source revision number or timestamp ignores a fundamental
> property
> of a version.
> 
> 


___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-05 Thread Donald Stufft
On Tuesday, February 5, 2013 at 9:08 AM, Daniel Holth wrote:
> What if we replaced this with semver? Last fall I argued that PEP 386 sucked 
> and that we should use semver. Unfortunately semver is less similar to the 
> longstanding sort order than the proposed scheme, there would be a lot of - 
> and + in the version numbers, and package tools would be more likely to have 
> to implement both PEP 386 and semver to work properly. It would result in a 
> minimal amount of win. I can live with the PEP 386 style version numbers and 
> will stick to using Major.Minor.Micro for my projects. 
To be honest I like semver. But I think it's a large enough break in backwards 
compatibility that the 
specific syntax of a semver version doesn't really make much sense to move to. 
However the semantic part of semver, which in my opinion is the important part, 
absolutely could be applied to the proposed scheme.
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-05 Thread Daniel Holth
On Tue, Feb 5, 2013 at 7:54 AM, Donald Stufft wrote:

> On Tuesday, February 5, 2013 at 5:35 AM, a.cava...@cavallinux.eu wrote:
>
>  Ideally it would be something that connects to the source revision number
> (as in
> subversion) or the integral id or even a timestamp (that's what an exported
> version must be).
>
>  Timestamp or reversion number is not overall useful number for a version
> and
> here's why: Django (for example) maintains older versions for a set period
> of time,
> If you do it via timestamps than 1.1.1 which happens to be released after
> 1.2.0 (because
> of a security issue or glaring bug) will be considered "newer". Handwaving
> the problem
> away with a source revision number or timestamp ignores a fundamental
> property
> of a version
>

What pkg_resources does for sorting is to append "final" for sorting. So
the sorting is really just a, b, c, f. This scheme has been important for
8+ years now. PEP 386, from 2009, narrows the allowed versions. Now the
salient part of PEP 386 has been incorporated into Metadata 1.3.

1.0.0a0
1.0.0b0
1.0.0c0 ~= 1.0.0rc0
1.0.0 == 1.0.0f

The "marketing pre-release" feature exists to allow publishers to put
immature versions of their software on pypi where they can be easily
downloaded. Recently SQLAlchemy did this but had to delete the beta release
from pypi because too many deployments upgraded to an unstable version
without realizing it. Once the tools are updated it will be easy to install
a beta release with pip if and only if you specifically ask for it.

What if we replaced this with semver? Last fall I argued that PEP 386
sucked and that we should use semver. Unfortunately semver is less similar
to the longstanding sort order than the proposed scheme, there would be a
lot of - and + in the version numbers, and package tools would be more
likely to have to implement both PEP 386 and semver to work properly. It
would result in a minimal amount of win. I can live with the PEP 386 style
version numbers and will stick to using Major.Minor.Micro for my projects.
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-05 Thread Donald Stufft
On Tuesday, February 5, 2013 at 5:35 AM, a.cava...@cavallinux.eu wrote:
> Ideally it would be something that connects to the source revision number (as 
> in
> subversion) or the integral id or even a timestamp (that's what an exported
> version must be).

Timestamp or reversion number is not overall useful number for a version and
here's why: Django (for example) maintains older versions for a set period of 
time,
If you do it via timestamps than 1.1.1 which happens to be released after 1.2.0 
(because
of a security issue or glaring bug) will be considered "newer". Handwaving the 
problem
away with a source revision number or timestamp ignores a fundamental property
of a version.
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-05 Thread a.cavallo
I followed in the past the discussion that lead to the pep. I've lost any
interest in it because I had a clear perception there was more interest in
"splitting the hair" that solving any real problem, *and that was years ago*. 
That alone should trigger some doubt about the validity of the points made. 


My whole point would be: if walks like a duck sounds like a duck *don't call it 
a
plane*.
*If a version has to be enforced* it'd better sommething simple as a
major.minor[.micro] or an integer or a timestamp for that matter. Something that
could be "simply" sorted without requiring magic handling.

Ideally it would be something that connects to the source revision number (as in
subversion) or the integral id or even a timestamp (that's what an exported
version must be).

BTW Rpm has a "version" and (as fallback) an Epoch field overriding the version
to "repair" such a problem: not used often these days, but it is there.






On Tue 05/02/13 09:08, "Ronald Oussoren" ronaldousso...@mac.com wrote:
> 
> On 4 Feb, 2013, at 20:59, Antonio Cavallo  a...@cavallinux.eu> wrote:
> > > Because the version number is just more
> complicated? The details have been ...
> 
> > Nope, the whole point is it shouldn't. If that has
> to be enforced why adding "marketing alert" to it? Why choosing something
> complex over something simple?
> 
> > In the correct world (mine where unicorns live
> freely) I should be able to retrieve the code that goes with an installed
> package just using that version and rebuild it (in a repeatable
> way)!
> 
> > Or you're talking about a "label" instead a version?
> In which case you shouldn't really compare them!
> I'm talking about version numbers in the real world and those just aren't
> that simple. The scheme described in the PEP is fairly complex, but as Nick
> mentioned not all features will be used at the same time. The scheme also
> gives a clear and sane meaning to almost all version numbers actually used
> on PyPI, please check the archives to see the discussions that led to this
> PEP.
> That doesn't mean that the documentation can't nudge users towards a simple
> major.minor[.micro] scheme, possibly referencing semantic versioning.
> Ronald
> 
> 


___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-05 Thread Ronald Oussoren

On 4 Feb, 2013, at 20:59, Antonio Cavallo  wrote:

> > Because the version number is just more complicated? The details have been 
> > ...
> 
> Nope, the whole point is it shouldn't. If that has to be enforced why adding 
> "marketing alert" to it? Why choosing something complex over something simple?
> 
> In the correct world (mine where unicorns live freely) I should be able to 
> retrieve the code that goes with an installed package just using that version 
> and rebuild it (in a repeatable way)!
> 
> Or you're talking about a "label" instead a version? In which case you 
> shouldn't really compare them!

I'm talking about version numbers in the real world and those just aren't that 
simple. The scheme described in the PEP is fairly complex, but as Nick 
mentioned not all features will be used at the same time. The scheme also gives 
a clear and sane meaning to almost all version numbers actually used on PyPI, 
please check the archives to see the discussions that led to this PEP.

That doesn't mean that the documentation can't nudge users towards a simple 
major.minor[.micro] scheme, possibly referencing semantic versioning.

Ronald
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-04 Thread Nick Coghlan
On 5 Feb 2013 02:01,  wrote:
>
> I agree *completely* with Philippe here.
>
> If a version standard will be enforced what's the point of making it more
> complicated that a sequential number or something along x.y.z? In the end
that's
> what the version number is.

Because to get broad adoption we need a scheme that is sufficiently
expressive to cover the development practices of the vast majority of
current PyPI projects.

Lexicographic sorting doesn't cut it, while the scheme that was thrashed
out a few years ago in PEP 386 does. The only problem was the sorting
position of top level "dev" releases (which didn't match existing
practice), and that's why ".dev" joined no suffix at all and ".post" as
being sorted out of lexical order.

No sane project would use all of the possible combinations. In particular,
dev and post releases of alphas, betas and release candidates are expected
to be rather rare. However, when you take the superset of all those
individually simpler project specific schemes (excluding the unorderable
ones like code names), this kind of thing is what you're going to get.

>
>
>
>
> On Mon 04/02/13 16:31, "Philippe Ombredanne" pombreda...@nexb.com wrote:
> > On Mon, Feb 4, 2013 at 2:10 PM, Nick Coghlan  > mail.com> wrote:
> > As usual, PEP inline below and on the web
> > at
> > http://www.python.org/dev/peps/pep-0426/
> >> Version scheme
> > > ==
> > > Version numbers must comply with the following
> > scheme::
> > N.N[.N]+[{a|b|c|rc}N][.postN][.devN]
> > >
> > > Version numbers which do not comply with this scheme
> > are an error. Projects
> > which wish to use non-compliant version numbers must
> > restrict themselves
>
> > IMHO a version (or eventually its dot-separated segments with
> > precedence from left to right) should increase when sorted
> > lexicographically so it is never ambiguous for a human reading a list
> 
> > Are we trying to make a version -- which is an engineering must --
> > into something that  has also some semantics about the level of
> > completion of a project or some "marketing" alert on the level of
> > maturity of a software release? Could we stay instead in the realm of
> > engineering?
> >
> > I think that trying to inject things like alpha, beta, post,  dev,
> > release candidates and the likes in this is trying to bake in too many
> > things that are eventually just the practices of some  projects and
> > should not be the frozen practice baked in a PEP.  Instead, this
> > should be left to project authors to define their own scheme as long
> > as it sorts lexicographically (eventually by segments, with precedence
> > from left to right).
> >
> > --
> > Philippe Ombredanne
> >
> > +1 650 799 0949 | pombredanne@n
> > exB.com
> DejaCode Enterprise at http://www.dejacode.com
> nexB Inc. at http://www.nexb.com
> ___
> > Distutils-SIG maillist  -  Distutils-SIG@python.org
> > http://mail.python.org/mailman/listinfo/distutils-sig
> >
> >
>
>
> ___
> Distutils-SIG maillist  -  Distutils-SIG@python.org
> http://mail.python.org/mailman/listinfo/distutils-sig
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-04 Thread Vinay Sajip
Nick Coghlan  gmail.com> writes:

> 
> (I think we're getting pretty close now...)
> 

I've implemented parsing -> tuple for versions as specified in the PEP, to test
parsing and sorting:

https://gist.github.com/4709696

Please let me know if you spot anything wrong with the code.

Regards,

Vinay Sajip

___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-04 Thread Antonio Cavallo
> Because the version number is just more complicated? The details have 
been ...


Nope, the whole point is it shouldn't. If that has to be enforced why 
adding "marketing alert" to it? Why choosing something complex over 
something simple?


In the correct world (mine where unicorns live freely) I should be able 
to retrieve the code that goes with an installed package just using that 
version and rebuild it (in a repeatable way)!


Or you're talking about a "label" instead a version? In which case you 
shouldn't really compare them!





Ronald Oussoren wrote:

On 4 Feb, 2013, at 17:00, a.cava...@cavallinux.eu wrote:


I agree *completely* with Philippe here.

If a version standard will be enforced what's the point of making it more
complicated that a sequential number or something along x.y.z? In the end that's
what the version number is.


Because the version number is just more complicated? The details have been
discussed at length (and then some more) on this list, but just consider the 
common
scheme of alpha, beta and release-candidate releases.

Without special support you'd end up with a version 1.0 being older than 1.0rc1.

Ronald





On Mon 04/02/13 16:31, "Philippe Ombredanne" pombreda...@nexb.com wrote:

On Mon, Feb 4, 2013 at 2:10 PM, Nick Coghlan  wrote:
As usual, PEP inline below and on the web
at
http://www.python.org/dev/peps/pep-0426/

Version scheme
==
Version numbers must comply with the following

scheme::
N.N[.N]+[{a|b|c|rc}N][.postN][.devN]

Version numbers which do not comply with this scheme

are an error. Projects
which wish to use non-compliant version numbers must
restrict themselves
IMHO a version (or eventually its dot-separated segments with
precedence from left to right) should increase when sorted
lexicographically so it is never ambiguous for a human reading a list



Are we trying to make a version -- which is an engineering must --
into something that  has also some semantics about the level of
completion of a project or some "marketing" alert on the level of
maturity of a software release? Could we stay instead in the realm of
engineering?

I think that trying to inject things like alpha, beta, post,  dev,
release candidates and the likes in this is trying to bake in too many
things that are eventually just the practices of some  projects and
should not be the frozen practice baked in a PEP.  Instead, this
should be left to project authors to define their own scheme as long
as it sorts lexicographically (eventually by segments, with precedence
from left to right).

--
Philippe Ombredanne

+1 650 799 0949 | pombredanne@n
exB.com

DejaCode Enterprise at http://www.dejacode.com
nexB Inc. at http://www.nexb.com
___

Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig




___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig



___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-04 Thread Ronald Oussoren

On 4 Feb, 2013, at 17:00, a.cava...@cavallinux.eu wrote:

> I agree *completely* with Philippe here.
> 
> If a version standard will be enforced what's the point of making it more
> complicated that a sequential number or something along x.y.z? In the end 
> that's
> what the version number is.

Because the version number is just more complicated? The details have been
discussed at length (and then some more) on this list, but just consider the 
common
scheme of alpha, beta and release-candidate releases. 

Without special support you'd end up with a version 1.0 being older than 1.0rc1.

Ronald

> 
> 
> 
> 
> On Mon 04/02/13 16:31, "Philippe Ombredanne" pombreda...@nexb.com wrote:
>> On Mon, Feb 4, 2013 at 2:10 PM, Nick Coghlan > mail.com> wrote:
>> As usual, PEP inline below and on the web
>> at
>> http://www.python.org/dev/peps/pep-0426/
>>> Version scheme
>>> ==
>>> Version numbers must comply with the following
>> scheme::
>>N.N[.N]+[{a|b|c|rc}N][.postN][.devN]
>>> 
>>> Version numbers which do not comply with this scheme
>> are an error. Projects
>> which wish to use non-compliant version numbers must
>> restrict themselves
> 
>> IMHO a version (or eventually its dot-separated segments with
>> precedence from left to right) should increase when sorted
>> lexicographically so it is never ambiguous for a human reading a list
> 
>> Are we trying to make a version -- which is an engineering must --
>> into something that  has also some semantics about the level of
>> completion of a project or some "marketing" alert on the level of
>> maturity of a software release? Could we stay instead in the realm of
>> engineering?
>> 
>> I think that trying to inject things like alpha, beta, post,  dev,
>> release candidates and the likes in this is trying to bake in too many
>> things that are eventually just the practices of some  projects and
>> should not be the frozen practice baked in a PEP.  Instead, this
>> should be left to project authors to define their own scheme as long
>> as it sorts lexicographically (eventually by segments, with precedence
>> from left to right).
>> 
>> -- 
>> Philippe Ombredanne
>> 
>> +1 650 799 0949 | pombredanne@n
>> exB.com
> DejaCode Enterprise at http://www.dejacode.com
> nexB Inc. at http://www.nexb.com
> ___
>> Distutils-SIG maillist  -  Distutils-SIG@python.org
>> http://mail.python.org/mailman/listinfo/distutils-sig
>> 
>> 
> 
> 
> ___
> Distutils-SIG maillist  -  Distutils-SIG@python.org
> http://mail.python.org/mailman/listinfo/distutils-sig

___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-04 Thread a.cavallo
I agree *completely* with Philippe here.

If a version standard will be enforced what's the point of making it more
complicated that a sequential number or something along x.y.z? In the end that's
what the version number is.




On Mon 04/02/13 16:31, "Philippe Ombredanne" pombreda...@nexb.com wrote:
> On Mon, Feb 4, 2013 at 2:10 PM, Nick Coghlan  mail.com> wrote:
> As usual, PEP inline below and on the web
> at
> http://www.python.org/dev/peps/pep-0426/
>> Version scheme
> > ==
> > Version numbers must comply with the following
> scheme::
> N.N[.N]+[{a|b|c|rc}N][.postN][.devN]
> >
> > Version numbers which do not comply with this scheme
> are an error. Projects
> which wish to use non-compliant version numbers must
> restrict themselves

> IMHO a version (or eventually its dot-separated segments with
> precedence from left to right) should increase when sorted
> lexicographically so it is never ambiguous for a human reading a list

> Are we trying to make a version -- which is an engineering must --
> into something that  has also some semantics about the level of
> completion of a project or some "marketing" alert on the level of
> maturity of a software release? Could we stay instead in the realm of
> engineering?
> 
> I think that trying to inject things like alpha, beta, post,  dev,
> release candidates and the likes in this is trying to bake in too many
> things that are eventually just the practices of some  projects and
> should not be the frozen practice baked in a PEP.  Instead, this
> should be left to project authors to define their own scheme as long
> as it sorts lexicographically (eventually by segments, with precedence
> from left to right).
> 
> -- 
> Philippe Ombredanne
> 
> +1 650 799 0949 | pombredanne@n
> exB.com
DejaCode Enterprise at http://www.dejacode.com
nexB Inc. at http://www.nexb.com
___
> Distutils-SIG maillist  -  Distutils-SIG@python.org
> http://mail.python.org/mailman/listinfo/distutils-sig
> 
> 


___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-04 Thread Daniel Holth
On Mon, Feb 4, 2013 at 10:31 AM, Philippe Ombredanne
wrote:

> On Mon, Feb 4, 2013 at 2:10 PM, Nick Coghlan  wrote:
> > As usual, PEP inline below and on the web at
> > http://www.python.org/dev/peps/pep-0426/
> > Version scheme
> > ==
> > Version numbers must comply with the following scheme::
> > N.N[.N]+[{a|b|c|rc}N][.postN][.devN]
> >
> > Version numbers which do not comply with this scheme are an error.
> Projects
> > which wish to use non-compliant version numbers must restrict themselves
> > to metadata v1.1 (PEP 314) or earlier, as those versions do not mandate
> > a particular versioning scheme.
> >
> > Suffixes and ordering
> > -
> > The following suffixes are the only ones allowed at the given level of
> the
> > version hierarchy and they are ordered as listed.
> > Within a numeric release (``1.0``, ``2.7.3``)::
> >.devN, aN, bN, cN, rcN, , .postN
>
> Are we trying to mix in too many thing in a versioning scheme?
>
> IMHO a version (or eventually its dot-separated segments with
> precedence from left to right) should increase when sorted
> lexicographically so it is never ambiguous for a human reading a list
> of versioned components, sorts naturally in most filesystems and tools
> and is easy to implement.
> With the proposed scheme, I can picture myself having to call some
> code each time I need compare two package versions and scratching my
> head otherwise.
> Having been involved in defining version schemes in the past for
> Eclipse, I came then to the conclusion that anything that does not
> sort lexicographically is probably a bad idea.
>
>
> Are we trying to make a version -- which is an engineering must --
> into something that  has also some semantics about the level of
> completion of a project or some "marketing" alert on the level of
> maturity of a software release? Could we stay instead in the realm of
> engineering?
>
> I think that trying to inject things like alpha, beta, post,  dev,
> release candidates and the likes in this is trying to bake in too many
> things that are eventually just the practices of some  projects and
> should not be the frozen practice baked in a PEP.  Instead, this
> should be left to project authors to define their own scheme as long
> as it sorts lexicographically (eventually by segments, with precedence
> from left to right)


It's weird, but we need to maintain sort order with
https://bitbucket.org/tarek/distribute/src/tip/pkg_resources.py?at=default#cl-1948for
the subset of version numbers that fit the new regex. This issue has
been discussed at length.
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] PEP 426, round 733 ;)

2013-02-04 Thread Philippe Ombredanne
On Mon, Feb 4, 2013 at 2:10 PM, Nick Coghlan  wrote:
> As usual, PEP inline below and on the web at
> http://www.python.org/dev/peps/pep-0426/
> Version scheme
> ==
> Version numbers must comply with the following scheme::
> N.N[.N]+[{a|b|c|rc}N][.postN][.devN]
>
> Version numbers which do not comply with this scheme are an error. Projects
> which wish to use non-compliant version numbers must restrict themselves
> to metadata v1.1 (PEP 314) or earlier, as those versions do not mandate
> a particular versioning scheme.
>
> Suffixes and ordering
> -
> The following suffixes are the only ones allowed at the given level of the
> version hierarchy and they are ordered as listed.
> Within a numeric release (``1.0``, ``2.7.3``)::
>.devN, aN, bN, cN, rcN, , .postN

Are we trying to mix in too many thing in a versioning scheme?

IMHO a version (or eventually its dot-separated segments with
precedence from left to right) should increase when sorted
lexicographically so it is never ambiguous for a human reading a list
of versioned components, sorts naturally in most filesystems and tools
and is easy to implement.
With the proposed scheme, I can picture myself having to call some
code each time I need compare two package versions and scratching my
head otherwise.
Having been involved in defining version schemes in the past for
Eclipse, I came then to the conclusion that anything that does not
sort lexicographically is probably a bad idea.


Are we trying to make a version -- which is an engineering must --
into something that  has also some semantics about the level of
completion of a project or some "marketing" alert on the level of
maturity of a software release? Could we stay instead in the realm of
engineering?

I think that trying to inject things like alpha, beta, post,  dev,
release candidates and the likes in this is trying to bake in too many
things that are eventually just the practices of some  projects and
should not be the frozen practice baked in a PEP.  Instead, this
should be left to project authors to define their own scheme as long
as it sorts lexicographically (eventually by segments, with precedence
from left to right).

-- 
Philippe Ombredanne

+1 650 799 0949 | pombreda...@nexb.com
DejaCode Enterprise at http://www.dejacode.com
nexB Inc. at http://www.nexb.com
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig