Re: [Distutils] the usecase of continious integration based release-management (which could use more support on the ds2 side)

2011-03-23 Thread Reinout van Rees

On 23-03-11 20:20, Ronny Pfannschmidt wrote:

personally all i ever want to do to release a new version is::

   $vcs tag $version
   $vcs push

currently that would require various nasty hacks to get the version
meta-data static on sdist and to grab the version number in a setup hook


This means a bit of machinery on the server side, basically.

I'm doing this on my laptop with zest.releaser (see pypi).
I just enter "fullrelease" and press enter a few times and it is ready.
It grabs the version number from setup.py.
It proposes that version number as the new tag.
It then increases the version number and commits that one (with a dev 
marker).


It does a bit more, like updating your changelog with a new header after 
releasing and by recording your release date in that very same changelog.


=> I think this is best handled on the client's side: the tag you're 
making is tied to quite a lot of things and I think setup.py's version 
is the best source of that.



Reinout


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


Re: [Distutils] the usecase of continious integration based release-management (which could use more support on the ds2 side)

2011-03-23 Thread Ronny Pfannschmidt
On Wed, 2011-03-23 at 22:47 +, Alexis Métaireau wrote:
> Le 23/03/2011 19:20, Ronny Pfannschmidt a écrit :
> > Hi,
> 
> Hey ronny !
> 
> > i'd like to propose making the work-flow of creating releases by just
> > pushing vcs tags to a ci system as easy as possible
> 
> That's an usage a lot of people have, +1 to make it easy to do in a few
> steps.
> 
> > personally all i ever want to do to release a new version is::
> > 
> >   $vcs tag $version
> >   $vcs push
> 
> Do you mean "pysetup upload" (or whatever similar), or are you thinking
> about a vcs hook that generates the setup.cfg and upload for you ?

"pysetup upload" would happen somewhere else, most likely a continious
build/integration server

> 
> What tools are we talking about ? distutils? distutils2?
> setuptools/distribute?
> 
mostly distutils2, the rest is in deprecation/better not change limbo
anyway

> The way to do it with distutils2 would be to register a hook able to get
> information from the vcs and put it in the setup.cfg.
> 
i tried hacking that up, it also needs a hook in the sdist command to
statically put the data there
> 
> > a) provide a hook to get the version, make the version static on
> > sdist/upload
> >  pro: straightforward, simple
> >  cons: kind of a hack
> 
> why are you considering it a hack ? seems the right way to me.

its the implementation of a single dynamic metadata item as kind of
special case

> > b) provide support for multiple setup-hooks and support for command
> > mixin's
> >  
> >  pro: generic way to do it
> >  cons: needs more code, more stuff in setup.cfg
> 
> multiple setup-hooks ? Doesnt seems clear to me, can you clarify ?
> 
people might want to do more than just the hook for the version
it shouldn't be necessary to manually write functions that combine those
hooks, if all that's necessary is call in order


signature.asc
Description: This is a digitally signed message part
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] the usecase of continious integration based release-management (which could use more support on the ds2 side)

2011-03-23 Thread Ben Finney
Greg Ewing  writes:

> In my projects I tend to keep the definitive version number in the
> Makefile, and have a make target that generates a version.py file from
> it. This is convenient because the Makefile often needs the version
> number for other things like creating release tarballs. Tagging vcs
> commits would be another use.

I often do something similar, but IMO simpler: the definitive version
string (note: version strings are rarely single numbers!) is kept as the
sole content of a file at the top of the project tree, named ‘version’.

That way, it's available equally to anything that can read text content
from a file – the Makefile, any program code, even many configuration
files.

-- 
 \   “I went to a general store. They wouldn't let me buy anything |
  `\ specifically.” —Steven Wright |
_o__)  |
Ben Finney

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


Re: [Distutils] the usecase of continious integration based release-management (which could use more support on the ds2 side)

2011-03-23 Thread Ronny Pfannschmidt
On Wed, 2011-03-23 at 16:59 -0400, Mark Sienkiewicz wrote:
> Ronny Pfannschmidt wrote:
> > Hi,
> >
> > i'd like to propose making the work-flow of creating releases by just
> > pushing vcs tags to a ci system as easy as possible
> >
> > personally all i ever want to do to release a new version is::
> >
> >   $vcs tag $version
> >   $vcs push
> >
> > currently that would require various nasty hacks to get the version
> > meta-data static on sdist and to grab the version number in a setup hook
> >   
> 
> Maybe you should go the other way:  Put the version number in your 
> source code.  Make a short script that picks out the version number and 
> constructs a tag name for the vcs.  Raise an error if the tag already 
> exists.
> 

i never ever want to have a version number of the project outside of a
vcs tag inside the vcs repo

also its convient to automatically imply different version numbers for
each commit (which includes a dev marker + a revision id)

> This method is easy to implement for your project alone, it is easy to 
> distribute to others who want to do the same thing, and there are no 
> nasty hacks involved.  For example,
>  
> % python tagdist.py
> You didn't change the version number!
> % emacs setup.cfg
> % python tagdist.py
> Tagging release 0.0.2
> %
> 
> If you find it works well in practice, you might then propose to move 
> the script into "python setup.py tagdist".



signature.asc
Description: This is a digitally signed message part
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] the usecase of continious integration based release-management (which could use more support on the ds2 side)

2011-03-23 Thread Alexis Métaireau
Le 23/03/2011 19:20, Ronny Pfannschmidt a écrit :
> Hi,

Hey ronny !

> i'd like to propose making the work-flow of creating releases by just
> pushing vcs tags to a ci system as easy as possible

That's an usage a lot of people have, +1 to make it easy to do in a few
steps.

> personally all i ever want to do to release a new version is::
> 
>   $vcs tag $version
>   $vcs push

Do you mean "pysetup upload" (or whatever similar), or are you thinking
about a vcs hook that generates the setup.cfg and upload for you ?

What tools are we talking about ? distutils? distutils2?
setuptools/distribute?

The way to do it with distutils2 would be to register a hook able to get
information from the vcs and put it in the setup.cfg.


> a) provide a hook to get the version, make the version static on
> sdist/upload
>  pro: straightforward, simple
>  cons: kind of a hack

why are you considering it a hack ? seems the right way to me.

> b) provide support for multiple setup-hooks and support for command
> mixin's
>  
>  pro: generic way to do it
>  cons: needs more code, more stuff in setup.cfg

multiple setup-hooks ? Doesnt seems clear to me, can you clarify ?

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


Re: [Distutils] the usecase of continious integration based release-management (which could use more support on the ds2 side)

2011-03-23 Thread Greg Ewing

Mark Sienkiewicz wrote:

Maybe you should go the other way:  Put the version number in your 
source code.  Make a short script that picks out the version number and 
constructs a tag name for the vcs.


In my projects I tend to keep the definitive version number
in the Makefile, and have a make target that generates a
version.py file from it. This is convenient because the
Makefile often needs the version number for other things
like creating release tarballs. Tagging vcs commits would
be another use.

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


Re: [Distutils] the usecase of continious integration based release-management (which could use more support on the ds2 side)

2011-03-23 Thread Mark Sienkiewicz

Ronny Pfannschmidt wrote:

Hi,

i'd like to propose making the work-flow of creating releases by just
pushing vcs tags to a ci system as easy as possible

personally all i ever want to do to release a new version is::

  $vcs tag $version
  $vcs push

currently that would require various nasty hacks to get the version
meta-data static on sdist and to grab the version number in a setup hook
  


Maybe you should go the other way:  Put the version number in your 
source code.  Make a short script that picks out the version number and 
constructs a tag name for the vcs.  Raise an error if the tag already 
exists.


This method is easy to implement for your project alone, it is easy to 
distribute to others who want to do the same thing, and there are no 
nasty hacks involved.  For example,


% python tagdist.py
You didn't change the version number!
% emacs setup.cfg
% python tagdist.py
Tagging release 0.0.2
%

If you find it works well in practice, you might then propose to move 
the script into "python setup.py tagdist".


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


Re: [Distutils] pythonv: let's also make sure the standard Python install includes an "isolated" python

2011-03-23 Thread Mark Sienkiewicz

Fred Drake wrote:

On Fri, Mar 18, 2011 at 9:50 PM, Greg Ewing  wrote:
  

We don't have to make it look so Windows-like, though. We could
use something more cheerful such as 'python.nothisisnotthedirectory'.



Yes, but... the sad part is that a turd has to be added, or the name
changed in even less satisfactory ways.  Case-senselessness is still
senseless.

/me mourns the loss of case-sense in "pop" operating systems.
  


Actually, "loss" is not quite what happened here.  Unix-derived systems 
(Unix, Linux, *BSD) are somewhat unusual in having case-sensitive file 
systems.  Of the alphabet soup of operating systems that I've used, I 
can remember case sensitive files systems in the Unix-like systems, Plan 
9, and Apple II DOS -- but the Apple II doesn't have lower case letters 
on the keyboard/display, so I'm not sure it counts.


I used to think that case-sensitive identifiers are a good idea, but I 
now think that it is just too error-prone to use identifiers that differ 
only in case.  Also, it's not portable... :)


b.t.w.  The extension is ".cfg" because RT-11 stored file names in a 
character set called "Radix 50" that could pack 3 characters into a 16 
bit word.  CP/M pretty obviously copied RT-11, MS-DOS copied CP/M, and 
MS Windows was originally a GUI framework for MS-DOS.  Meanwhile, Unix 
initially ran on other DEC systems, so a lot of early Unix users had 
contact with RT-11 or its descendants, and re-used some of the same 
conventions.


So, "We use .cfg because we have calling it that since 1970..."  
Interesting, but perhaps not a particularly compelling reason. :)


>sniff< - what's that smell?  Oh yeah -- old farts...

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


[Distutils] the usecase of continious integration based release-management (which could use more support on the ds2 side)

2011-03-23 Thread Ronny Pfannschmidt
Hi,

i'd like to propose making the work-flow of creating releases by just
pushing vcs tags to a ci system as easy as possible

personally all i ever want to do to release a new version is::

  $vcs tag $version
  $vcs push

currently that would require various nasty hacks to get the version
meta-data static on sdist and to grab the version number in a setup hook


there are various ways to ease this, the ones i imagined are

a) provide a hook to get the version, make the version static on
sdist/upload
 pro: straightforward, simple
 cons: kind of a hack

b) provide support for multiple setup-hooks and support for command
mixin's
 
 pro: generic way to do it
 cons: needs more code, more stuff in setup.cfg


signature.asc
Description: This is a digitally signed message part
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


Re: [Distutils] New buildout options: checksums and allow-omitted-checksums

2011-03-23 Thread Marius Gedminas
On Tue, Mar 22, 2011 at 12:51:35PM +1300, Greg Ewing wrote:
> Thomas Lotze wrote:
> 
> >After some further offline discussion, I'd like to suggest using MD5 as
> >the default algorithm, though.
> 
> Warnings against using md5 are mainly about cryptographic
> security, aren't they? For just detecting accidental
> corruption it should still be good enough.

Yes, that's my understanding too.

(My only point for raising this was to consider a future-proof syntax for
specifying the checksums, so that we're not locked in the past when the
world moves on.)

Marius Gedminas
-- 
At most companies, programmers aren't trusted with words that a user might
actually see (and for good reason, much of the time).
-- Joel Spolski


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


Re: [Distutils] issues with namespace packages on Debian Squeeze and Python 2.6

2011-03-23 Thread Jim Fulton
On Wed, Mar 23, 2011 at 9:42 AM, Reinout van Rees  wrote:
> On 22-03-11 18:57, Carl Meyer wrote:
>>>
>>> Only: buildout cannot detect the eggs in their non-standard locations as
>>> >  buildout obviously doesn't have the ubuntu setuptools' fix...
>>
>> This sounds more likely to be caused by not having the site.py changes I
>> mentioned above. IIRC buildout 1.5 uses "python -S" to avoid the
>> automatic import of site.py, so it would never see the Debian/Ubuntu
>> modifications in site.py. As long as buildout uses "-S", I think the
>> only fix for that would be for buildout's "detect system-wide eggs"
>> feature to add in explicit workaround/support for dist-packages. This is
>> what virtualenv does.
>
> Just making sure: you're suggesting a debian-specific workaround in
> buildout?
>
> Buildout maintainers: would adding such a workaround be OK with you?

I abhor screwing w site.py, but buildout is already doing so. I
believe it copies site.py so it *should* work with debian
modifications.  I don't really understand this code and honestly don't
want to.  It was contributed by someone at and for Ubuntu so I'd
expect it to work with debian.  I would submit a bug report and
hopefully, they'll look at it.

In the long term, I'd really like to move this (site.py copying) code
out of buildout into recipes, as I don't want to maintain it.  In the
longer term, I'd love this to get addresses by the pythonv work
somehow. :)

Jim

--
Jim Fulton
http://www.linkedin.com/in/jimfulton
___
Distutils-SIG maillist  -  Distutils-SIG@python.org
http://mail.python.org/mailman/listinfo/distutils-sig


[Distutils] [issue123] [PATCH] Tolerate responses with multiple Content-Length headers

2011-03-23 Thread Tres Seaver

New submission from Tres Seaver :

Some servers (e.g., wwwsearch.sourceforge.net) apparently send multiple
'Content-Length' headers, which causes setuptools to barf trying to convert
a ', ' string to an integer.

This bug breaks installing 'mechanize', which lists wwwsearch.sourceforge.net
as its Download-URL, and therefore causes a bunch of Zope-related tests to fail
(e.g., https://mail.zope.org/pipermail/cmf-tests/2011-March/014576.html ).

The attached patch uses 'headers.getheaders('Content-Length')[0] to use only
the first value found.

--
assignedto: pje
files: setuptools-multi_content_length.patch
messages: 598
nosy: pje, tseaver
priority: urgent
status: unread
title: [PATCH] Tolerate responses with multiple Content-Length headers
Added file: 
http://bugs.python.org/setuptools/file75/setuptools-multi_content_length.patch

___
Setuptools tracker 

___=== modified file 'setuptools/package_index.py'
--- setuptools/package_index.py	2010-02-01 16:42:04 +
+++ setuptools/package_index.py	2011-03-23 14:06:46 +
@@ -550,7 +550,9 @@
 bs = self.dl_blocksize
 size = -1
 if "content-length" in headers:
-size = int(headers["Content-Length"])
+# Some servers return multiple Content-Length headrers :(
+content_length = headers.getheaders("Content-Length")[0]
+size = int(content_length)
 self.reporthook(url, filename, blocknum, bs, size)
 tfp = open(filename,'wb')
 while True:

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


Re: [Distutils] issues with namespace packages on Debian Squeeze and Python 2.6

2011-03-23 Thread Leonardo Rochael Almeida
Maybe not a debian-specific workaround, but a setting like:

  [buildout]
  additional-site-packages =
  /usr/lib/python2.6/dist-packages
  /usr/local/lib/python2.6/dist-packages

On Wed, Mar 23, 2011 at 14:42, Reinout van Rees  wrote:
> On 22-03-11 18:57, Carl Meyer wrote:
>>>
>>> Only: buildout cannot detect the eggs in their non-standard locations as
>>> >  buildout obviously doesn't have the ubuntu setuptools' fix...
>>
>> This sounds more likely to be caused by not having the site.py changes I
>> mentioned above. IIRC buildout 1.5 uses "python -S" to avoid the
>> automatic import of site.py, so it would never see the Debian/Ubuntu
>> modifications in site.py. As long as buildout uses "-S", I think the
>> only fix for that would be for buildout's "detect system-wide eggs"
>> feature to add in explicit workaround/support for dist-packages. This is
>> what virtualenv does.
>
> Just making sure: you're suggesting a debian-specific workaround in
> buildout?
>
> Buildout maintainers: would adding such a workaround be OK with you?
>
>
> Reinout
>
> ___
> 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] issues with namespace packages on Debian Squeeze and Python 2.6

2011-03-23 Thread Reinout van Rees

On 22-03-11 18:57, Carl Meyer wrote:

Only: buildout cannot detect the eggs in their non-standard locations as
>  buildout obviously doesn't have the ubuntu setuptools' fix...

This sounds more likely to be caused by not having the site.py changes I
mentioned above. IIRC buildout 1.5 uses "python -S" to avoid the
automatic import of site.py, so it would never see the Debian/Ubuntu
modifications in site.py. As long as buildout uses "-S", I think the
only fix for that would be for buildout's "detect system-wide eggs"
feature to add in explicit workaround/support for dist-packages. This is
what virtualenv does.


Just making sure: you're suggesting a debian-specific workaround in 
buildout?


Buildout maintainers: would adding such a workaround be OK with you?


Reinout

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